Какво е доказателство за работа (PoW)?
Начало
Статии
Какво е доказателство за работа (PoW)?

Какво е доказателство за работа (PoW)?

Напреднал
Публикувано Dec 6, 2018Актуализирано Dec 12, 2022
8m

Въведение

Доказателството за работа (обикновено съкратено на PoW) е механизъм за предотвратяване на двойно харчене. Повечето големи криптовалути използват това като свой алгоритъм за консенсус. Точно това наричаме метод за осигуряване на книгата на криптовалутата.

Доказателството за работа беше първият консенсусен алгоритъм, който се появи и към днешна дата остава доминиращият. То е въведено от Сатоши Накамото в бялата книга за биткойн от 2008 г., но самата технология е замислена много преди това. 

HashCash на Адам Бек е ранен пример за алгоритъм за доказателство за работа в дните преди криптовалутата. Като изисква от подателите да извършат малко количество изчисления, преди да изпратят имейл, получателите биха могли да смекчат спама. Това изчисление не би струвало на практика нищо за легитимен подател, но бързо се оказва много работа за някой, който изпраща имейли масово.


Какво е двойно харчене?

Двойното харчене възниква, когато едни и същи средства се изразходват повече от веднъж. Терминът се използва почти изключително в контекста на дигиталните пари – в края на краищата, ще ви е трудно да похарчите едни и същи физически пари два пъти. Когато плащате за кафе днес, вие предавате пари в брой на касиер, който вероятно ги заключва в каса. Не можете да отидете до кафенето отсреща и да платите още едно кафе със същата сметка.

В схемите за цифрови пари има възможност да го направите. Със сигурност сте дублирали компютърен файл преди – просто го копирате и поставяте. Можете да изпратите един и същ файл по имейл до десет, двадесет, петдесет души. 

Тъй като цифровите пари са само данни, трябва да попречите на хората да копират и харчат едни и същи единици на различни места. В противен случай вашата валута ще се срине за нула време. 

За по-задълбочен поглед върху двойното харчене, вижте Обяснение на двойното харчене.


Защо е необходимо доказателство за работа?

Ако сте прочели нашето ръководство за блокчейн технологията, ще знаете, че потребителите излъчват трансакции към мрежата. Тези трансакции обаче не се считат за валидни веднага. Това се случва само когато бъдат добавени към блокчейна. 
Блокчейнът е голяма база данни, която всеки потребител може да види, за да може да провери дали средствата са били изразходвани преди. Представете си го така: вие и трима приятели имате бележник. Всеки път, когато някой от вас иска да прехвърли всички единици, които използвате, вие го записвате – Алис плаща на Боб пет единици, Боб плаща на Керъл две единици и т.н.
Тук има още една сложност – всеки път, когато правите трансакция, вие се позовавате на трансакцията, от която идват средствата. Така че, ако Боб плащаше на Керъл с две единици, записът всъщност би изглеждал така: Боб плаща на Керъл две единици от тази по-ранна трансакция с Алис.

Сега имаме начин да проследим единиците. Ако Боб се опита да извърши друга трансакция, използвайки същите единици, които току-що изпрати на Керъл, всички ще разберат веднага. Групата няма да позволи на трансакцията да бъде добавена към бележника.

Сега това може да работи добре в малка група. Всички се познават, така че вероятно ще се споразумеят кой от приятелите трябва да добави трансакции в бележника. Ами ако искаме група от 10 000 участници? Идеята за бележника не се мащабира добре, защото никой не иска да се довери на непознат да я управлява.

Тук идва доказателството за работа. То гарантира, че потребителите не харчат пари, които нямат право да харчат. Чрез използване на комбинация от теория на игрите и криптография, PoW алгоритъм позволява на всеки да актуализира блокчейна според правилата на системата.


Как работи PoW?

Нашият бележник по-горе е блокчейнът. Но ние не добавяме трансакции една по една – вместо това ги обединяваме в блокове. Обявяваме трансакциите в мрежата, след което потребителите, създаващи блок, ще ги включат в кандидат-блок. Трансакциите ще се считат за валидни само след като техният кандидат-блок стане потвърден блок, което означава, че е добавен към блокчейна.

Добавянето на блок обаче не е евтино. Доказателството за работа изисква копач (потребителят, създаващ блока) да използва някои от собствените си ресурси за привилегията. Този ресурс е изчислителна мощност, която се използва за хеширане на данните на блока, докато се намери решение на пъзел.
Хеширането на данните на блока означава, че ги предавате през функция за хеширане, за да генерирате хеш на блока. Хешът на блока работи като „пръстов отпечатък“ – той е самоличност за вашите входни данни и е уникален за всеки блок.

На практика е невъзможно да се обърне хеш на блока, за да се получат входните данни. Познавайки даден вход обаче, за вас е тривиално да потвърдите, че хешът е правилен. Просто трябва да подадете входа чрез функцията и да проверите дали изходът е същият.

В доказателството за работа трябва да предоставите данни, чийто хеш отговаря на определени условия. Но не знаете как да стигнете до там. Единствената ви възможност е да прехвърлите данните си през хеш функция и да проверите дали отговарят на условията. Ако не стане, ще трябва леко да промените данните си, за да получите различен хеш. Промяната на дори един знак във вашите данни ще доведе до напълно различен резултат, така че няма начин да се предвиди какъв може да бъде изходът.

В резултат на това, ако искате да създадете блок, играете игра на отгатване. Обикновено приемате информация за всички трансакции, които искате да добавите, и някои други важни данни, след което хеширате всичко заедно. Но тъй като вашият набор от данни няма да се промени, трябва да добавите част от информация, която е променлива. В противен случай винаги ще получавате същия хеш като изход. Тези променливи данни са това, което наричаме nonce. Това е число, което ще променяте при всеки опит, така че всеки път получавате различен хеш. И това е, което ние наричаме копаене.

Накратко, копаенето е процес на събиране на блокчейн данни и хеширането им заедно с еднократен номер, докато не намерите конкретен хеш. Ако намерите хеш, който отговаря на условията, определени от протокола, вие получавате правото да излъчвате новия блок към мрежата. В този момент другите участници в мрежата актуализират своите блокчейни, за да включат новия блок.

За основните криптовалути днес тези условия е много трудно да бъдат удовлетворени. Колкото по-висок е хешрейтът в мрежата, толкова по-трудно е да се намери валиден хеш. Това се прави, за да се гарантира, че блоковете няма да бъдат намерени твърде бързо.

Както можете да си представите, опитът да отгатнете огромни количества хешове може да струва скъпо на вашия компютър. Вие губите изчислителни цикли и електричество. Но протоколът ще ви възнагради с криптовалута, ако намерите валиден хеш.

Нека обобщим какво знаем досега:

  • Копаенето е скъпо.
  • Вие получавате възнаграждение, ако създадете валиден блок.
  • Познавайки даден вход, потребителят може лесно да провери неговия хеш – потребителите, които не копаят, могат да проверят дали блокът е валиден, без да изразходват много изчислителна мощност.

Дотук добре. Но какво ще стане, ако се опитате да измамите? Какво ви пречи да поставите куп измамни трансакции в блока и да създадете валиден хеш?

Ето къде идва криптографията с публичен ключ. Няма да навлизаме в дълбочина в тази статия, но вижте Какво е криптография с публичен ключ? за изчерпателен поглед върху това. Накратко, ние използваме някои чисти криптографски трикове, които позволяват на всеки потребител да провери дали някой има право да премести средствата, които се опитва да похарчи.
Когато създавате трансакция, вие я подписвате. Всеки в мрежата може да сравни вашия подпис с вашия публичен ключ и да провери дали съвпадат. Те също така ще проверят дали действително можете да изразходвате средствата си и дали сумата на вашите входове е по-висока от сумата на вашите изходи (т.е. че не харчите повече, отколкото имате).

Всеки блок, който включва невалидна трансакция, ще бъде автоматично отхвърлен от мрежата. За вас е скъпо дори да се опитате да мамите. Ще губите собствените си ресурси без никаква награда.

В това се крие красотата на доказателството за работа: тя прави маменето скъпо начинание и е изгодно да действате честно. Всеки рационален копач ще търси възвръщаемост на инвестициите, така че може да се очаква да се държат по начин, който гарантира приходи.



Искате да започнете с криптовалута? Купете биткойн в Binance!



Доказателство за работа срещу доказателство за залог

Има много консенсусни алгоритми, но един от най-очакваните е доказателство за залог (PoS). Концепцията датира от 2011 г. и е внедрена в някои по-малки протоколи. Но все още не е реализирано приемане в нито един от големите блокчейни.
В системите с доказателство за залог копачите се заменят с валидатори. Няма участие в копаене и няма състезание за отгатване на хешове. Вместо това потребителите се избират на случаен принцип – ако бъдат избрани, те трябва да предложат (или да „изсекат“) блок. Ако блокът е валиден, те ще получат награда, съставена от таксите от трансакциите на блока.
Все пак не може да бъде избран всеки потребител – протоколът ги избира въз основа на редица фактори. За да отговарят на условията, участниците трябва да заключат залог, който е предварително определена сума от нативната валута на блокчейна. Залогът работи като гаранция: точно както обвиняемите влагат голяма сума пари, за да ги демотивират от пропускане на процеса, валидаторите заключват залог, за да демотивират измамата. Ако действат нечестно, техният залог (или част от него) ще бъде взет.
Доказателството за залог има някои предимства пред доказателството за работа. Най-забележителното е по-малкият въглероден отпечатък – тъй като в PoS няма нужда от ферми за копаене с висока мощност, консумираната електроенергия е само част от тази, консумирана при PoW. 

Въпреки това, то не е близо до постиженията на PoW. Въпреки че може да се възприеме като разточителен, копането е единственият консенсусен алгоритъм, който се е доказал в мащаб. За малко повече от десетилетие той осигури трансакции на стойност трилиони долари. За да се каже със сигурност дали PoS може да се конкурира със сигурността му, залагането трябва да бъде правилно тествано на практика. 


Заключителни мисли

Доказателството за работа беше оригиналното решение на проблема с двойното харчене и се оказа надеждно и сигурно. Биткойн доказа, че не се нуждаем от централизирани субекти, за да предотвратим двойното изразходване на едни и същи средства. С умно използване на криптография, хеш функции и теория на игрите, участниците в децентрализирана среда могат да се споразумеят за състоянието на финансова база данни.