Если вам когда-либо случалось оказаться на необитаемом острове, знания о том, как управлять процессом децентрализованного консенсуса, или, другими словами, управлять примитивным блокчейном вручную, могут оказаться очень полезными. Все, что вам нужно, это пару «выживших» на необитаемом острове, этот материал, ручка и несколько листов бумаги.

Давайте окунемся в эту классическую историю, когда несколько бесстрашных героев выживают в результате кораблекрушения и оказываются на необитаемом острове, где-то в южной части Тихого океана. Имена наших героев: Хьюго, Сойер, Кейт и Джек.

Небольшой спойлер: выжившие пытаются создать революционно-новую валюту, под названием «IslandCoin», в надежде избавиться от подобия традиционной экономики.

Выжившие согласны, что такая схема честна, при условии, что каждый из них получит по 100 монет. Поскольку у них нет никакого металла для создания прочного аналога монет, они будут использовать клочки бумаги в виде валюты.

По причине того, что выжившие не питают сильного доверия друг другу, то они не смогли договориться о том, кто будет следить за резервом «островных денег». Единственный способ поддерживать баланс в безопасности — поддерживать его всем вместе.

Давайте же, наконец, начнем. Какова же наша цель?

По сути все довольно просто. Единственное, что нам нужно — это поддерживать простую таблицу балансов. В таблице указывается, сколько IslandCoin у каждого из выживших. Особенность заключается в том, что каждый из выживших должен владеть копией этого листа с таблицей балансов — это и есть децентрализованная часть нашей новой экономики.

Также стоит следить за тем, чтобы на всех четырех листах с таблицами балансов была одинаковая информация — это консенсусная часть нашей экономики.

Итак, как же должен выглядеть такой лист с таблицей балансов?

Этот лист является первым документом, с которым выжившие единогласно согласны, поэтому его мы обозначили как «День #1». Откуда получилось такое распределение монет? Ранее мы согласились, что будет справедливо, если каждому из выживших будет выделено по 100 штук монеты IslandCoin. Также нам нужно, чтобы кто-то записал все это. Не важно кто, поэтому пускай это будет Хьюго. Он будет первым, кто представит такой лист остальным выжившим и должен убедиться, что остальные тоже сделали себе копию этого листа (да, забыл упомянуть, на острове есть многофункциональный принтер, со встроенным сканером).

Поскольку предполагается, что выжившие будут тратить монеты, то к концу каждого дня, все они должны сверяться и делать копии утвержденных листов с обновленными балансами.

Еще одним важным аспектом является индивидуальное подтверждение листа обновленных балансов. Поскольку в группе выживших отсутствует взаимное доверие, каждый из них подписывает ежедневно-представляемый отчет по балансам, но только если они согласны с указанными суммами.

Сколько человек должно подписать такой лист, чтобы он считался окончательным и утвержденным?

Для этого необходимо достичь консенсуса, так что хватит элементарного большинства.

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

Почему бы не делать все четыре подписи на всех копиях?

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

Все зависят от одного, а это, по сути, централизует процесс.

Тогда зачем нам нужно большинство? Почему недостаточно двух подписей?

Потому что в таком случае, двое других выживших способны подписать другую версию листа с балансами, которая не соответствует. Поэтому мы не можем иметь две противоречивые версии «реальностей», которые считаются окончательными.

На утро День #2, Кейт хочет купить один помидор. Хьюго продает ей помидоры по цене 2 монеты за помидор. Тогда она передает Хьюго 2 монеты, хватает лист бумаги и сразу же записывает на нем транзакцию следующего вида:

Поскольку у Кейт это первая финансовая операция, то она так ее и записывает. Вдобавок, Кейт ставит подпись. Нам необходимо ее подпись, чтобы никто не смог выдать себя за нее.

День #2 приближается к концу, и группа выживших хочет свериться с обновленным листов балансов. Хьюго опубликовал отчетность балансов за первый день и собрал со всех подписи. Правильным будет, если каждый день публиковать результаты проведшего дня будет новый человек. Поэтому все согласны использовать следующий порядок: Хьюго, Сойер, Кейт, Джек, затем снова Хьюго, Сойер и т. д.

Это означает, что ответственным за публикацию статуса балансов за второй день станет Сойер.

Сойер публикует отчет балансов за день, в котором также отображается транзакция Кейт:

Этот отчет еще не окончателен, поскольку только Сойер подписал его. Сойеру необходимо собрать большинство, поэтому он просит каждого проверить и подписать этот лист.

Подлинность листа легко проверяема.

Во-первых, верификатор должен найти в своем собственном сборнике листов тот самый лист, в котором отображаются все балансы за предыдущий день (в нашем случае — День#1).

Затем, верификатор должен просмотреть новый список транзакций. В нашем случае, у нас есть только транзакция, сделанная со стороны Кейт.

Транзакция легко верифицируется, поскольку мы видим подпись Кейт и мы знаем, сколько у нее ранее было на счету монет, чтобы передать необходимую сумму Хьюго.

После проверки и подписи всеми выжившими, Сойер получает окончательный, соглашенный всеми лист балансов за второй день, готовый для копирования. Все делают копию этого листа и ложатся спать счастливыми и довольными.

День #3. Наша система функционирует отлажено, и все довольны нашей экономикой.

Хьюго хочет купить дрова у Сойера за 10 монет;

Сойер желает приобрести таблетки у Джека за 25 монет;

Джек жаждет съесть помидор и намеревается передать 2 монеты для Хьюго, чтобы купить одну штуку.

Каждый из них создает новый клочок бумаги и детально описывают свою транзакцию:

Вечер уже на носу, а ответственная за публикацию отчетности балансов — Кейт. Чтобы убедиться, что Кейт добавит все транзакции, которые были осуществлены за день, каждый из выживших должен предоставить ей копию своего запроса на транзакцию.

Практичным будет предоставлять копию транзакции всем, поскольку желающий выполнить транзакцию, не обязательно помнит, кто сегодня ответственен за подведение отчета балансов.

Джек задерживается предоставить свою копию транзакции Кейт, и к моменту, когда он, наконец, приносит требуемый лист, Кейт уже публикует отчет балансов:

Для Джека это полное фиаско. Из-за того, что опубликованный статус балансов за день не включает его транзакцию, то Хьюго не получит плату за помидор, а Джек, в свою очередь, не получит помидор. Похоже, Джек сегодня будет спать голодным. Он в гневе отправляется искать себе что-нибудь перекусить и поэтому не подписывает отчет балансов Кейт за День #3.

К счастью, Кейт получает достаточное для утверждения обновления балансов большинство:

Кейт удалось получить три подписи, каждая из которых подтверждает, что представленные балансы соответствуют транзакциям и вчерашним балансам.

На календаре День #4, и никто не знает, куда подевался Джек. Ранее он отправился ловить рыбу, однако застиг шторм и до сих пор никто не знает, что с ним случилось. Похоже у нас проблема, поскольку сегодня очередь Джека публиковать обновление балансов.

Кейт хочет осуществить пару транзакций, поэтому она фиксирует транзакции на листе и делится со всеми копией транзакции:

Темнеет, а Джек так и не вернулся. Вдобавок его черед вечером представлять обновление балансов. Но поскольку он так и не явился, то все решают пропустить обновление балансов за этот день.

День #5, и вновь Хьюго ответственен за публикацию обновления балансов. Сильный дождь льет как из ведра уже несколько дней, и Хьюго решает попросить Сойера построить небольшую деревянную хижину. Стоимость услуги составляет 200 монет.

Похоже, опять проблема, ведь у Хьюго только 98 монет.

И тут у Хьюго рождается в голове безумнейшая идея. Раз он сегодня ответственен за публикацию обновленных балансов, так почему бы просто не взять и не добавить самому эту транзакцию?

Сегодня все равно нет никаких других транзакций. У Хьюго есть транзакция Кейт за вчерашний день, и позавчерашняя транзакция Джека, которая так и не была оформлена. Поэтому он решает добавить свою безумную транзакцию:

Хьюго подписывает обновление балансов за День #5 и вроде бы все отлично, да вот только для утверждения обновления необходимо как минимум подписи. Попросив Сойера и Кейт подписать обновление балансов, те замечают, что на листе за предыдущий (День #3) у Хьюго было только 92 монеты.

Как он умудрился отправить 200 монету Сойеру? Таким образом, они отказываются подписать это обновление до тех пор, пока Хьюго не уберет ошибку и не удалит недействительную транзакцию.

Хьюго с неохотой соглашается исправить ошибку и публикует новый, правильный отчет по балансам. Все согласны и подписывают его:

На утро День #6, наконец-то появляется Джек.

Поскольку он отсутствовал все эти дни, то понятие не имеет о том, сколько у него осталось средств и знать не знает об осуществленных транзакциях, а также изменения балансов.

Встретив первого выжившего, Джек просит предоставить последние обновления балансов. Ему дают обновление за День #5, а также утвержденное обновление Кейт, за День #4.

Джек легко синхронизирует отчетность с остальными членами группы выживших. Вдохновленная изобретением группа выживших решает отметить такой триумф, публикуя следующую техническую документацию IslandCoin:

Почему же это считается блокчейном, спросите вы.

Для начала, каждый лист бумаги, опубликованный ежедневно, представляет собой блокчейн-блок. Каждый блок нумеруется и ссылается на прошлый, создавая таким образом цепь блоков. Для проверки текущего состояния остатков, любой наблюдатель должен начинать с начала цепи (День #1 — это, называемый в крипто-сообществе, Генезис блок) и проверять каждый из блоков один за другим. Балансы строятся постепенно.

Безупречна ли такая блокчейн-технология? Скорее всего нет. Ее можно улучшить во многих отношениях, вот только это уже другая история.