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

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

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

Биткойн: записи на трансакции

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

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

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

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

Същността на биткойна е низ от електронни подписи, които отразяват маршрута на монетата през екосистемата на биткойн. Мисля, че всъщност концептуално е по-лесно да се гледа на биткойните като на множество от записи в счетоводна книга, отколкото като на физически монети. Защото, ако се замислиш, в една счетоводна книга има история на транзакциите, което се случва и при биткойна. Докато физическата монета е до известна степен безпаметна – няма история за това къде е била в миналото си. В този контекст можеш да гледаш на транзакциите като на електронно подписана от една страна декларация, че възнамерява да прехвърли част от своите биткойни на други страни. Когато казвам, че една страна притежава определен брой биткойни имам предвид, че има регистрирани предишни транзакции, одобрени от всички останали, при които страната, която сега превежда биткойните, е била получател на тези биткойни. Осъзнавам, че е малко заплетено и за да ти помогна да разбереш по-добре механиките на една транзакция, ще покажа един пример за това, което се случва в контекста на една реална биткойн транзакция. Да кажем, че имаме страна, която ще кръстим Алис. Това е приетото име за една от страните в криптографските схеми. Алис иска да прехвърли няколко биткойна на Боб. Да кажем, че възнамерява да прехвърли 50 биткойна на Боб. Помни, че всеки, който прави транзакции в екосистемата на биткойн, не прави това с истинското си име, не използва действителното си име, а индивидуална идентичност (псевдоним) в екосистемата на биткойн. Тази идентичност или псевдоним всъщност отговаря на ключ за верификация от схема за електронно подписване. Да кажем, че в този случай идентификаторът на Алис в системата наистина е някакъв публичен ключ за верификация, който ще наречем КВ на А (ключа за верификация на Алис), а в контекста на Боб публичният ключ за верификация ще е КВ на Б. Това са ключовете, които се използват в схемите за електронен подпис. Можем да приемем, че Алис е генерирала този ключ в даден момент и го е направила публичен. Боб е направил същото. Сега те имат тези идентичности в системата, които са просто последователности от числа, отговарящи на публични ключове за верификация в контекста на криптографски електронен подпис. Ясно ли е дотук? Помни, че тези стойности отговарят на частните – всеки, който има публичен ключ, има съответстващ частен ключ, който се асоциира с публичния. В този случай ще наречем частния ключ, или секретния ключ, какъвто е всъщност, ключ за подписване, в този контекст – КП на Алис, а ключът за подписване на Боб ще е КП на Боб. Нали? Те ще пазят тези ключове лично за себе си. Да кажем, че в миналото самата Алис е получила три биткойн транзакции от други страни. Да кажем, че е получила 25 биткойна от Карол с ключ за верификация, който ще наречем КВ на К. Да кажем, че е получила 20 биткойна от Дейвид и още 20 от Тед. Тези биткойни отговарят на различните хора, които са предоставили биткойни на Алис в миналото. Виждаш, че Алис сега има 65 биткойна общо, което е резултатът от 20 плюс 20 плюс 25. Има достатъчно, за да преведе 50 от тези биткойни на Боб, нали? Като начало транзакцията от Алис към Боб за 50 биткойна ще съдържа информация за тези предходни транзакции. В екосистемата на биткойн е била записана всяка от тези транзакции, при които Алис е получила биткойни. Те ще бъдат публично достъпни, както всяка друга транзакция. Алис може да вземе тези транзакции, представени под някаква форма, и да ги включи в новата си транзакция към Боб. Основната идея е, че тя е получила тези биткойни преди и иска да преведе някаква част от тях на Боб. Всъщност в този контекст не е необходимо тя да включва пълната информация за тези транзакции в записа на транзакцията за Боб. Вместо това тя може да вземе тази информация и да приложи криптографска хеш функция върху нея, за да получи поредица от резюмета на транзакциите. В този случай тя ще има резюме, което отговаря на транзакцията от Карол, друго резюме, което отговаря на транзакцията от Дейвид, и трето – отговарящо на транзакцията от Тед. Тя ще включи всяко от тези резюмета в записа на транзакцията си. Това позволява на теб, както и на всеки друг, да провериш историята на собствеността на тези биткойни. Можеш просто да вземеш предходните записи на транзакции, които са публични, и да приложиш върху тях криптографски хеш функции Можеш да провериш, че ако приложиш криптографските хеш функции върху записите на тези транзакции, ще получиш резюметата Р на К, Р на Д и Р на Т. Тъй като използваме криптографски хеш функции, това ти дава някакъв вид криптографска гаранция, че Алис е крайният получател на тези транзакции от различни страни. Можем да се възползваме от историята, която водим и проверяваме по този начин. Нали така? Имаме някаква гаранция, че Алис не може лесно да излъже системата, защото използваме тези криптографски хеш функции. В тази част на транзакцията… Ще ги оградя, за да виждаш къде са записани данните на транзакцията. В тази част на транзакцията имаме информация за притежаваните от Алис 65 биткойна. В транзакцията има достатъчно данни за всеки, който иска да провери, че тя ги притежава. Можеш да гледаш на тази част от транзакцията като на входните ѝ данни. В допълнение към входните данни на транзакцията обикновено има и изходна част. Ще сложа изходната част тук горе, но нека я обознача. Като начало, в изходната част Алис трябва да включи списък от получатели на нейните биткойни. Тъй като Алис иска да преведе тези биткойни на Боб, тя трябва да посочи идентификатора на Боб в системата. Както споменахме по-рано, това е публичният ключ на Боб. Така че тя ще спомене КВ на Б, както и количеството биткойни, които възнамерява да му преведе. Както казахме по-рано, ще приемем, че Алис иска да преведе на Боб точно 50 от биткойните си. Тя ще отбележи числото 50. На практика ще отбележи друго число, но то ще съответства на 50 биткойна за Боб. Тъй като Алис има 65 биткойна и дава само 50 от тях на Боб, трябва да получи ресто. Тя може да укаже, че ще получи 14 от тези биткойни обратно под формата на ресто. Така 14 от тези биткойни ще бъдат зачислени обратно на публичния ключ на Алис. Това, което Алис ще направи тогава, е да вземе всички данни от транзакцията, входните и изходните данни, и да ги подпише електронно. Ще използва своя ключ за подписване, за да подпише електронно всички тези данни, както би направила с електронен подпис. След това ще добави този подпис към действителното съдържание на записа на транзакцията. Това на практика ще обвърже идентичността на Алис със самия запис на транзакцията. Причината за това е, че използваме схема за електронен подпис. Всеки, който притежава публичния ключ на Алис, който е обществено достъпен, може да провери, че само Алис би могла да създаде този блок. Поне на теория само Алис може да произведе подпис, който отговаря на публичния ѝ ключ, защото тя е единственият човек, който притежава частен ключ за подписване, отговарящ на нейния публичен ключ. Тогава данните на транзакцията ще бъдат обявени в публичното пространство до всички участници и звена в биткойн мрежата. Всеки в нея ще разбере, че КВ на А се опитва да изпрати 50 биткойна на КВ на Б. В този момент може да забелязваш леко разминаване – Алис имаше 65 биткойна като входни данни, но като резултат има само 50 плюс 14, или 64 отчетени биткойна. Така че възниква въпросът какво се е случило с липсващия биткойн? Този висящ биткойн, който не е отчетен, всъщност ще бъде използван като такса за транзакцията. Алис на практика заявява, че оставащият биткойн трябва да се предостави като такса за транзакцията на т.нар. копач на биткойни. Както споменах в предишното видео, копачът на биткойни е единица в биткойн системата и всъщност всеки може да бъде такъв. Това е звено в биткойн мрежата, което спомага за по-обстойната валидация на тази транзакция. Какво имам предвид под по-обстойна валидация? Ако се замислиш, до този момент използвахме само криптографско хеширане и електронно подписване, за да проверим, че Алис е притежавала нужните биткойни в системата в даден момент. Тя не само обяви публично намерението си да прехвърли част от биткойните на Боб, но подписа електронно това (да речем) публично изявление, в резултат на което публичният ѝ ключ за верификация, който я идентифицира в биткойн системата, сега е обвързан с тази транзакция. Но това, което Боб все още не знае, макар да знае и да може да провери всичко дотук, е дали Али не се е опитала да прехвърли същите тези биткойни на някой друг малко преди това. Може да има трета страна. Да кажем, че Алис има приятелка, която се казва Ева. Може Алис да е решила да изпрати тези биткойни не само на Боб, но и на Ева. В този момент Боб няма гаранция, че Алис не се опитва да му прави номера. Уловката е, че макар всички транзакции, за които говорихме, да са обществено достояние, тъй като биткойн системата го изисква, все още ни трябва механизъм, и то децентрализиран, който не изисква намесата на доверена трета страна, за установяване на реда, по който са се извършили транзакциите. По този начин можем да проверяваме съмненията за двукратно използване на биткойни. С това изискване, с този децентрализиран времеви отпечатък, е свързана ключовата роля на копачите на биткойни в екосистемата на биткойн. Ще поговорим за начина, по който работи това, както и за работата с времевите отпечатъци в следващите видеа.