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

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

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

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

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

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

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

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

Искам да опиша една въображаема, или фиктивна, Биткойн транзакция. След това ще поговорим за това как някой би могъл да се опита да измами системата. И защо това не само е трудно от математическа гледна точка, но и противоречи на икономическите стимули, заложени в Биткойн системата, които насърчават коректно поведение. Да приемем, че човек на име Дан иска да си поръча пица със сирене от Пицарията на Пийт. Да кажем, че Пицарията на Пийт приема Биткойн плащания и едно парче пица струва 1 биткойн. Представи си, че Дан е получил 5 биткойна от братовчедка си Карол. Може Карол (обозначена със С) да е дала на Дан 5 биткойна. Oбозначавам ги с оградено В. Дан иска да използва 1 от тези 5 биткойна, за да си купи пица от Пийт. Биткойн клиентът на Дан ще създаде запис на транзакция, която съдържа информация за това как Дан е получил тези биткойни. В този случай ще съдържа информация за транзакцията между Карол (отбелязана със С) и Дан за 5 биткойна. След това описва желанието на Дан да даде един от тези биткойни на Пийт (ще го обозначим с Р), както и рестото от 4 биткойна, които Дан ще получи обратно. Биткойн системата е изградена така, че налага да се посочи рестото – каквото влезе в Биткойн системата, трябва да излезе от другия край. Не можеш да имаш транзакция, в която числата не си съответстват. Остатъкът е или ресто, или може да се ползва за транзакционна такса например. Но в този пример за простота ще приема, че няма транзакционна такса. Тя ще бъде 0. Ще се фокусираме само върху ситуацията, при която всичко е отчетено в транзакцията. Този транзакционен запис ще бъде обявен публично в целия свят на Биткойн. Пийт, в частност, ще получи копие на тази транзакция, но всички останали в Биткойн системата също ще получат такова. Ако си спомняш, в Биткойн има специални звена, или участници, известни като копачи на биткойни. Те отговарят за това всичко в транзакцията да е коректно от глобална перспектива. Те гледат пълния списък с транзакции. Този транзакционен запис е публичен и се нарича верига от транзакционни блокове. Сложил съм описание на верига от транзакционни блокове тук. Тази верига от транзакционни блокове съдържа история на всяка една транзакция, настъпила в Биткойн системата от времето на първия блок, който е известен като "генезисен" блок. Всеки може да провери всяка една транзакция, защото тази информация е публична. В частност Биткойн копачите ще проверят дали Дан в някакъв момент е получил пет биткойна от някой друг (в този случай това беше братовчедката му Карол); дали Дан не се е опитал да похарчи тези биткойни преди това и т.н. Всички тези копачи на биткойни заедно се опитват да обработят последните транзакции, които още не са записани. Това включва не само транзакцията между Дан и Пийт, но и всички останали транзакции, случващи се по това време. Копачите на биткойни ще разгледат всички тези транзакции наведнъж и ще се опитат да разберат как да формират транзакционен блок от тях. След което ще добавят този транзакционен блок към края на текущата верига от транзакционни блокове. Вероятно си спомняш от предишни видеа, че за да може един копач на биткойни да добави транзакционен блок към веригата от транзакционни блокове, той трябва да реши задачата, известна като доказателство за извършена работа. Биткойн системата е измислена (или по-скоро настроена) така, че на един копач да му трябва средно около 10 минути да реши задачата. Важно е тук да се подчертае, че на всеки един отделен копач може да му трябва повече време за решаване на задачата. Може да отнеме дори година или две. Но тъй като толкова много копачи работят по задачата едновременно, немуниемо един от тях ще извади късмет и ще я реши много бързо. Всяко от тези доказателства за извършена работа, свързано с определен транзакционен блок, се асоциира с определена сложност, която представлява трудността за решаването на задачата. Представи си някакви стойности. Ще ги наречем D със суфикс N. Последната сложност ще бъде D със суфикс N минус 1. Това са стойности, които показват колко трудно е било да се намери доказателството за извършена работа. Ако погледнеш цялата верига, Биткойн се интересува от трудността на цялостното ѝ създаване. Причината това да е толкова важно е, че трудността на създаването на веригата, или нейната сложност, се използва от Пийт и останалите получатели на биткойни, за да разберат дали транзакцията е достоверна. Колкото повече работа е била извършена по цялата верига, толкова по-голямо доверие ще имат те в тази транзакция. Това се дължи на начина, по който Биткойн работи при наличието на повече от една верига. Да кажем, че има злонамерен потребител или закъснение при получаването на някое съобщение. Ако по някаква причина е налична повече от една верига от транзакционни блокове, според протокола на Биткойн всеки трябва да работи с тази, върху която е работено най-много. Пренебрегваме веригите, по-които е било работено по-малко и вземаме предвид само тази, по-която е работено най-много. В Биткойн системата тази верига често се нарича "най-дългата" верига в системата. Този термин всъщност е объркващ, защото под най-дълга верига не се има предвид физически дълга. Ще сложа равенство тук, за да обясня какво означава. Има се предвид веригата, по която е работено най-много. Това се определя от стойностите, които отразяват различните сложности. Ако събереш тези числа, ще получиш сложността на цялата верига. Ние ще се интересуваме от тази верига, по която е работено най-много и която наричаме най-дългата верига. Сега нека си представим, че Дан е некоректен. Да кажем, че Пийт е получил биткойна си от Дан. Изчаква малко. Вижда дълга верига, която завършва с транзакция. Изпраща пицата на Дан. Дан изяжда пицата и решава, че не иска да се държи почтено. Иска да измами Пийт или да излъже системата. Той ще се опита да направи това, като създаде друга транзакция, с която зачислява петте биткойна, които получи от Карол, на друг. Да го наречем Фред. Фред може да е скритата самоличност на Дан или негов приятел. Няма значение кой е Фред, защото знаем, че не е пълноправният собственик на тези биткойни. Дан ще се опита да вземе тези 5 биткойна, които получи от Карол, и да ги зачисли на Фред. Ясно е, че не искаме да позволяваме това, защото това означава, че Дан ще успее да използва тези 5 биткойна двукратно. На практика ще ги похарчи два пъти. Очевидно едната от тези транзакции трябва да се счита за измама, а другата да бъде приета. Важно е да се има предвид, че ако Дан просто се опита да похарчи тези монети два пъти, без да прикрие следите си, всеки ще разбере, че Дан злоупотребява. От наличната най-дълга верига от транзакционни блокове се вижда (тази от началото на видеото), че Дан вече е похарчил тези монети, така че не трябва да му се разрешава да ги ползва отново. Така че самият Дан трябва да създаде различна верига от транзакционни блокове, която съдържа само лъжливата транзакция. Това е транзакцията до Фред. В тази верига ще липсва транзакцията до Пийт и Дан ще се надява всички да приемат тази нова верига за вярната. Както си спомняш, всеки в Биткойн приема веригата от транзакционни блокове, по-която е работено най-много (най-дългата верига, за която говорихме), така че Дан има шанс. Има надежда, че ще успее да прокара измамната си схема. Истинският въпрос сега е какви са шансовете му? За да успее, Дан трябва да започне с предишната верига от транзакционни блокове и да се опита да добави към нея различна транзакция. Вместо предишната транзакция, с която превежда пари на Пийт, той ще се опита да създаде нова, лъжлива транзакция между него и Фред, която да добави към веригата от транзакционни блокове. Добре. Измамната транзакция между Дан и Фред ще е в този нов блок. На жаргона на Биткойн това се нарича "разклонение" и под него се разбира, че има повече от една версия на историята. Някой се е опитал да прикрие следите си или да промени историята, която познаваме. Това означава, че има повече от една версия на това, което се е случило. В този пример едното разклонение е валидно, а другото – лъжливо. Валидното разклонение за нас е това, в което Дан е платил на доставчика си Пийт за пицата. Лъжливата е следващата транзакция, която Дан се опита да направи до Фред със същите биткойни. Но помни, че всеки транзакционен блок, добавен към веригата, трябва да съдържа доказателство за извършената работа. В противен случай никой няма да приеме веригата. Така че ако Дан иска да излъже системата, той трябва тайно да реши сам задачата. Предизвикателството за Дан е, че е в малко неизгодна позиция, защото вече има по-дълга верига, която хората са започнали да приемат. Имай предвид, че тя е публично достъпна и другите звена може да са започнали да работят въз основа на нея. Средно на всеки десет минути някой я разширява. Налична е тази по-дълга верига от транзакционни блокове, а Дан иска да я фалшифицира, така че трябва да създаде своя верига. За да бъде достоверна, тя трябва да бъде най-дългата налична. На практика той трябва да намери всички тези доказателства за извършена работа, за да създаде по-дълга верига, като при това изпревари съществуващата верига. Това означава, че вероятно ще трябва да намери повече от едно доказателство за извършена работа, ако се надява да създаде верига, по-дълга от наличната. Ако успее да създаде най-дългата верига, може да накара хората да ползват нея. Той иска това, защото тази верига съдържа лъжливата транзакция вместо другата, с която даде пари на Пийт. За да намира доказателства за извършена работа, Дан трябва впрегне цялата изчислителна мощ, с която разполага. Трябва да започне работа по намирането на доказателства, а за това няма известни бързи начини. Ако помнiш видеата за доказателствата за извършена работа, да успееш в намирането им е нещо като да спечелиш лотария. Има начини, но те зависят от изчислителната мощ, с която разполагаш. Колко повече изчислителна мощ имаш, толкова повече лотарийни билети притежаваш. Дори с един лотариен билет имаш шанс да спечелиш лотарията, но е много по-вероятно да спечели този, който държи много билети в ръцете си. Дори да успееш да спечелиш лотарията с малък брой билети, вероятността това да се случва отново и отново, няколко пъти поред, става все по-малка. Точно това трябва да направи Дан. Трябва да спечели лотарията няколко пъти, за да създаде по-голяма верига. Ключовото тук е с колко изчислителна мощ разполага Дан в сравнение с всички коректни звена в системата взети заедно. Ще я наречем коректна изчислителна мощ, под което имам предвид изчислителната мощ на всички звена, които се държат коректно. Всички коректни копачи на биткойни в системата. Ако общата им изчислителна мощ е по-голяма от тази на Дан, тогава Биткойн системата ще бъде в безопасност, тъй като на Дан ще му е трудно да създаде тази измамна транзакционна верига преди всички коректни участници. Те ще печелят лотарията по-често и така ще създадат по-дългата верига. Дан ще трябва да води доста неравна битка. Теоретично е възможно Дан да разполага с огромна изчислителна мощ. Може да е заможен или да разполага с големи ресурси, но му трябват изключително много, за да успее. Повече от тези на всички легитимни участници. Това е една причина веригата от транзакционни блокове да е сигурна. Малко вероятно е отделен човек да разполага с такава изчислителна мощ. Сигурността на Биткойн има и друг аспект. Ако Дан разполага с изчислителната мощ да намира тези доказателства за извършена работа, вероятно ще е по-изгодно да я използва за легитимно копаене на биткойни, вместо да води тази неравна битка за разклонението на веригата от транзакционни блокове. Може би си спомняш, че копачите на биткойни, които успеят да открият доказателството за извършена работа получават награда под формата на биткойни и транзакционна такса за всяка транзакция в блока, който са проверили. Така че има икономически стимул Дан да се държи коректно. В заключение на това видео ще повторя, че сигурността на Биткойн транзакциите идва от, на първо място, математическата бариера, която затруднява разделянето на веригата от транзакционни блокове по нечестен начин, както и от икономическите стимули да се държиш коректно и да копаеш биткойни са себе си.