Съдържание
- Разбиране на Blockchain
- Справяне с двойно харчене
- Доказателство за работа и „добив“
Една от основните проблеми на всеки разработчик на криптовалута е проблемът с двойното харчене. Това се отнася до честотата на отделно харчене на баланс на тази криптовалута повече от веднъж, което ефективно създава несъответствие между записа на разходите и сумата на тази налична криптовалута, както и начина, по който се разпределя.
Проблемът с двойните разходи е проблем, който няма пари; ако платите за сандвич с банкнота от 10 долара, обърнете тази сметка на производителя на сандвича, не можете да се обърнете и да похарчите същите тези 10 долара другаде. Транзакция, използваща цифрова валута като биткойн, обаче, се извършва изцяло цифрово. Това означава, че е възможно да копирате данните за транзакцията и да ги препродадете така, че един и същ BTC да бъде изразходван многократно от един собственик. По-долу ще разгледаме как разработчиците на криптовалути са се застраховали, че не могат да се случат двойни разходи.
Ключови заведения
- Технически проблем, възникващ с понятието цифрова валута, е възможността някой да дублира цифровите пари и да ги харчи едновременно на две или повече места. Този проблем с двойното харчене се предотвратява в криптовалути, базирани на blockchain, като Bitcoin от използване на механизъм за консенсус, известен като доказателство за работа (PoW). Този PoW се осъществява от децентрализирана мрежа от „миньори“, които не само осигуряват верността на миналите транзакции в счетоводната книга на blockchain, но също така откриват и предотвратяват двойното харчене,
Разбиране на Blockchain
Блокчейнът, който подбива цифрова валута като биткойн, не е в състояние да предотврати двойното харчене самостоятелно. По-скоро всички различни транзакции, включващи съответната криптовалута, са публикувани в блокчейна, където те са отделно проверени и защитени чрез процес на потвърждение. В случай на биткойни и много други криптовалути транзакции, потвърдени по този начин, стават необратими; те са публикувани публично и се поддържат вечно.
Биткойн беше първата голяма дигитална валута, която реши проблема с двойните разходи. Той направи това чрез прилагане на този механизъм за потвърждение и поддържане на обща, универсална книга. По този начин блокчейнът за биткойни съхранява записи на транзакциите с печат във времето, които се връщат към основаването на криптовалутата през 2009 г.
По отношение на биткойн, "блок" е файл с трайно записани данни. Всички скорошни транзакции се записват на блокове, подобно на книга за борсови транзакции на борса. Информация от блокове се добавя в книгата на всеки няколко минути; всички възли в мрежата поддържат копие на главната книга. Потребителите могат да се ориентират в blockchain за биткойни и да преглеждат транзакциите само по отношение на количеството. Подробности за самоличността на купувача и продавача при всяка транзакция са защитени от криптиране на високо ниво, което също защитава главната книга от подправяне от външни източници. Когато блокчейн регистърът се актуализира, всичките биткойни са и портфейлите.
Справяне с двойно харчене
Представете си, че имате 1 BTC и се опитвате да го изразходвате два пъти в две отделни транзакции. Можете да опитате да направите това, като изпратите един и същ BTC до два отделни адреса на биткойн портфейла. След това и двете транзакции ще влязат в пула от непотвърдени транзакции. Първата транзакция ще бъде одобрена чрез механизма за потвърждение и след това проверена в следващия блок. Втората транзакция обаче ще бъде призната за невалидна чрез процеса на потвърждение и няма да бъде проверена. Ако и двете транзакции бъдат изтеглени от пула за потвърждение едновременно, транзакцията с най-голям брой потвърждения ще бъде включена в блокчейн, а другата ще бъде изхвърлена.
Въпреки че това ефективно се занимава с въпроса за двойните разходи, не е без проблемите му. Например, предвиденият получател на втората (неуспешна) транзакция не би участвал в самата транзакция, при което се проваля и въпреки това това лице няма да получи биткойн, който той или тя е очаквал. Много търговци изчакват поне 6 потвърждения на транзакция (което означава, че 6 блока транзакции са добавени към блокчейн след въпросната транзакция). В този момент търговецът може спокойно да приеме, че транзакцията е валидна.
В тази система остават други уязвимости, които биха могли да позволят атаки с двойно изразходване. Например, ако нападателят по някакъв начин е в състояние да контролира поне 51% от мощността на мрежата, той или тя може да поеме двойни разходи. Ако нападателят по някакъв начин беше в състояние да получи контрол върху тази много изчислителна мощ, той или тя може да обърне транзакции и да създаде отделен, частен блокчейн. Бързият растеж на биткойн обаче на практика гарантира, че този тип атака е невъзможна. (За повече информация вижте Пазете се от тези пет биткойн измами)
Доказателство за работа и „Минно дело“
А сега нека да разберем малко повече технически. Начинът, по който потребителите откриват подправяне, като опит за двойно изразходване на практика, е чрез хеши, дълги низове от числа, които служат като доказателство за работа (PoW). Поставете даден набор от данни чрез хеш функция (bitcoin използва SHA-256), и той някога ще генерира само един хеш. Поради "лавиновия ефект", дори и малка промяна в която и да е част от оригиналните данни ще доведе до напълно неузнаваем хеш. Независимо от размера на оригиналния набор от данни, хешът, генериран от дадена функция, ще бъде една и съща дължина. Хешът е еднопосочна функция: не може да се използва за получаване на оригиналните данни, само за да се провери дали данните, генерирали хеша, съвпадат с оригиналните данни.
Генерирането на всякакъв хеш за набор от биткойн транзакции би било тривиално за модерен компютър, така че за да превърне процеса в „работа“, биткойн мрежата задава определено ниво на „трудност“. Тази настройка се регулира така, че нов блок да бъде "миниран" - добавен към блокчейн чрез генериране на валиден хеш - приблизително на всеки 10 минути. Задаването на трудност се осъществява чрез установяване на "цел" за хеша: колкото по-ниска е целта, толкова по-малък е наборът на валидни хешове и по-трудно е да се генерира такъв. На практика това означава хеш, който започва с дълъг низ от нули: хешът за блок # 429818 например е 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Този блок съдържа 2012 транзакции, включващи малко над 1000 биткойни, както и заглавката на предишния блок. Ако потребителят промени една сума на транзакцията с 0, 0001 биткойн, полученият хеш ще бъде неузнаваем и мрежата ще отхвърли измамата.
Тъй като даден набор от данни може да генерира само един хеш, как миньорите се уверяват, че генерират хеш под целта? Те променят входа, като добавят цяло число, наречено nonce ("число, използвано веднъж"). След като бъде намерен валиден хеш, той се излъчва към мрежата и блокът се добавя към блокчейна.
Добивът е състезателен процес, но е по-скоро лотария, отколкото състезание. Средно някой ще генерира приемливо доказателство за работа на всеки десет минути, но кой ще бъде, е предположението на някой. Миньорите се обединяват, за да увеличат шансовете си за минни блокове, което генерира такси за транзакции и за ограничено време награда на новосъздадените биткойни.
Доказателството за работа прави изключително трудно да се промени всеки аспект на блокчейна, тъй като такова изменение ще изисква повторно изкопаване на всички следващи блокове. Освен това затруднява потребителя или групата потребители да монополизират изчислителната мощ на мрежата, тъй като машините и мощността, необходими за изпълнение на хеш функциите, са скъпи.