If you're seeing this message, it means we're having trouble loading external resources on our website.

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Биткойн: блокчейн на трансакциите

Механиката на блокчейн на биткойн транзакции, която е конструкция, генерирана от биткойн майнерс и функционира като глобална книга за запис и валидиране на биткойни. Създадено от Зулфикар Рамзан.

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.

Видео транскрипция

Последният съществен и необходим елемент, за да разбереш начина на работа на Биткойн, е т.нар. верига от транзакционни блокове. Ако си спомняш, в предишното видео имахме интересен пример за потребителката Алис, която искаше да изпрати някакъв брой биткойни на потребителя Боб. Това, което Алис трябваше да направи, за да осъществи тази транзакция, беше да създаде нещо като запис, съдържащ информация относно транзакцията и подписан с ключа за подписване на Алис. Той също така съдържаше публичните ключове за верификация на Алис и Боб. Както споменахме, тази информация за транзакцията беше обявена публично в цялата екосистема на Биткойн, до всички звена в мрежата от тип потребител към потребител. Различните звена в екосистемата на Биткойн ще са на разположение, за да получат информацията относно тази транзакция. Но освен това те ще получат информация за много други транзакции, които се извършват по това време. Това, което те ще направят, е да включат записа на тази транзакция в счетоводната книга на всички транзакции, извършени някога в Биткойн системата. Всяко звено започва, като взема всички получени транзакции, които все още не са включени в нея. Това се отнася за всички транзакции, които са се случили в определен период от време. Има множество Биткойн транзакции, които се реят из пространството. Тези звена (т.нар. копачи на биткойни) ще получат информацията за всички тези различни транзакции и ще започнат да ги включват в общата история. Първата им цел е да съставят т.нар. транзакционен блок от тези транзакции. Ако си спомняш аналогията със счетоводната книга, една Биткойн транзакция съответства на потенциален запис в счетоводната книга, а един транзакционен блок съответства на една страница в счетоводната книга, на която имаш описани множество транзакции. Целта на копача на биткойни е да вземе тази страница и да я добави към глобалната, изчерпателна счетоводна книга. За да се заловят с подобен тип работа, звената първо трябва да вземат всички транзакции, разпространени в публичното пространство. Да кажем, че са публикувани тези четири транзакции. Те ще хешират тези транзакции по двойки в дървовидна структура. Ще вземат тези две транзакции и ще приложат криптографска хеш функция върху данните им, за да получат съответното резюме. Същото важи и за тези двете. След това ще вземат тези две резюмета и ще ги хешират, за да получат една единствена хеш стойност. Това резюме на практика обхваща всички транзакции, получени от тези звена, които все още не са включени. Тогава тази резюмирана стойност ще бъде комбинирана с хеш стойността на транзакционния блок, който последно е бил приет от мрежата. Можеш да си представиш, че в мрежата ще има поредица от транзакционните блокове, които са приети до момента. Всъщност, както току-що споменах, всеки транзакционен блок включва в себе си предишния. Този транзакционен блок ще включва в себе си предходния, а този ще включва транзакционния блок преди него. Това продължава буквално до времето на създаването на биткойн. Това е моментът, от който започва да тече времето в Биткойн системата, когато то е било равно на нула. Те ще вземат този последен блок и ще го комбинират с най-новия. Разбираш, че това не е индивидуален блок, защото всеки блок съдържа в себе си предходния. Вече не работим с отделни, независими блокове от транзакции, а с верига от блокове, която буквално започва от началото на цялата Биткойн система. При цялото това комбиниране, накрая, в следствие на криптографското хеширане ще получиш последователност от числа. Тази последователност ще е извлечена от събирането на всички блокове в едно цяло. Ще получиш последователност от числа, която можеш да вземеш и да конвертираш в задача от протокол за доказване на извършената работа. Направих отделно видео за тези протоколи, което те насърчавам да изгледаш, за да получиш по-добра представа за начина им на работа. Накратко, Биткойн звеното, което копае, трябва да вземе задачата и да произведе друга последователност от числа, която типично се нарича доказателство за извършена работа. То трябва да има много специфично математическо свойство. Това означава следното: Ако вземеш числата от заданието и тези от доказателството и направиш обща последователност от числа, която да подадеш като входни данни на криптографска хеш функция, резултатът трябва да има голям брой водещи нули. Не трябва да е съставен изцяло от нули, но голяма част от водещите му битове или префиксът му трябва да се състои от нули. Ако се замислиш за момент, имайки предвид, че резултатът на криптографската функция изглежда доста произволен, е малко вероятно, че коя да е последователност ще послужи като доказателство, което започва с голям брой водещи нули. Така че обикновено копачът на биткойни трябва да опита много на брой възможности, за да извади късмет и да попадне на такава последователност от числа, която отговаря на това статистически рядко срещано свойство. Трудността при намирането на такова доказателство, както се досещаш, зависи от броя на водещите нули, които се изискват. Колкото повече водещи нули изискваш като доказателство, толкова повече време ще отнеме решаването на задачата за намирането на това доказателство, което да работи за дадената задача. Колкото по-малко нули се изискват, толкова по-малко време ще отнеме. Точният брой нужни нулеви битове в Биткойн протокола се променя с времето. Калибрира се. Проектирано е такова, че средното време в цялата системата да бъде около 10 минути. Искаш да отнема около 10 минути на едно звено да генерира валидно доказателство, но имай предвид, че по тази задача работят паралелно много звена. Да кажем, че в някакъв момент това доказателство е открито. Копачът на биткойни ще обяви резултатите си в цялата мрежа от тип потребител към потребител. Ще обяви доказателството (заедно с цялата задача) до всички звена. Така те ще разберат, че някой е открил това доказателство. Ще оставят всичко останало, което правят в момента, и ще започнат да работят на базата на това ново доказателство. Помни, че доказателството за тази нова задача ще включва в себе си всички предишни транзакционни блокове. Така че реално ще започнат работа върху обновената верига от транзакционни блокове. Ще започнат да включват новопристигащите транзакции в този нов транзакционен блок. Има няколко неща, които искам да отбележа тук. На първо място, като част от работата по създаването на тези транзакционни блокове и включването им във веригата от транзакционни блокове, на копачите на биткойни е даден специален малък бонус – позволено им е да включат в този транзакционен блок специално звено за себе си. Това звено е малка награда (ще използвам зеленикавия цвят за нея). Могат да вземат първия транзакционен елемент, първия транзакционен запис, и да добавят в него тази награда за себе си. Стойността на тази награда ще се променя във времето. Искам да подчертая, че тази транзакция обикновено се нарича монетна или генерираща транзакция. Така се добавят нови монети в Биткойн системата. Всеки път, когато някой успее да изчисли доказателство, ще има възможност да създаде собствена транзакция като възнаграждение – специална малка награда за усилията да се открие доказателството и да се добави нов транзакционен блок към текущата верига от транзакционни блокове в Биткойн. Смятам, че в това има смисъл. Тези звена използват значителна изчислителна мощ, за да откриват доказателствата, а това означава, че някой някъде трябва да плаща за електричеството и т.н. Също така искам да отбележа, че в допълнение към тази монетна награда, звената, които успешно копаят биткойни, получават и таксите за транзакциите, указани в съответните записи. Ако си спомняш, всеки, който създава транзакция в Биткойн, може да задели определена сума (един биткойн или част от биткойн) за звеното, което успее да открие работещо доказателство и да добави транзакцията към общата верига от транзакционни блокове на Биткойн. Звеното, което свърши тази работа успешно, ще получи като награда и таксата за транзакцията. Тя може да стане доста голяма, защото това звено няма да получи таксата само за една транзакция, а за всички транзакции, които се появят в текущия блок. Ще получи сбора за всички тези различни транзакции. Второто, което искам да отбележа, е, че е възможно две звена да открият доказателството за извършена работа независимо едно от друго и да се опитат някак да го добавят към съществуващата верига. Получава се някакво странно раздвояване на веригата. Ако това се случи, потребителите в Биткойн мрежата ще разрешат конфликта, като се придържат към най-дългата верига. Това не означава непременно тази, която включва най-много транзакции, а тази, която има най-високата сложност за изчисляване на доказателството за извършена работа за всеки от транзакционните си блокове. На практика ще гледаме количеството работа, което е било необходимо за създаването на веригата, съобразно доказателството за извършена работа. Веригата, която предполага най-голям обем свършена работа, ще бъде миропомазана – тя ще бъде приета от всички. Може да има несъответствия, поради забавяния в мрежата и т.н., но идеята е, че след няколко рунда конфликтите ще се разрешат, стига повечето звена да са коректни и да се придържат към имплементацията на протокола. Тъй като копачите на биткойни ги генерират, според мен възниква един интересен въпрос: Как се управлява и контролира паричният поток в Биткойн? Ще поговоря за тази концепция в следващото видео.