Как блокчейн поможет вам на необитаемом острове

Делитесь и голосуйте:

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

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

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

День 1

Наши герои попытаются создать инновационную валюту IslandCoin, которая положит конец извращенной бартерной экономике, господствующей в их обществе. Они соглашаются, что будет справедливо, если в начале у каждого будет по 100 монет. Металла у них нет, чеканить монету не из чего, так что придется обходиться несколькими листками бумаги. Но быстро выясняется, что они недостаточно доверяют друг другу, чтобы поручить кому-то одному следить за изменением состояния счетов, так что им придется заниматься этим совместно.

Какую задачу мы решаем? Очень простую: нам нужна таблица счетов, которая будет показывать, сколько монет находится у каждого из наших героев. Теперь о децентрализации: проблема в том, что у нас не будет одного листа бумаги, который был бы истиной в последней инстанции — в нашем коллективе все равны, и каждый из героев должен иметь возможность вести собственную версию таблицы. И, естественно, мы надеемся, что цифры на всех четырех листах бумаги в конечном итоге сойдутся (это к вопросу о консенсусе).

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

Откуда берутся текущие балансы? Мы начали с договоренности, что все члены нашего коллектива получают по 100 монет. Один из выживших — пусть это будет Коля — пишет бумагу с балансами. Он публикует ее, и каждый из его товарищей получает копию (мы забыли сказать, что каким-то чудом на острове оказался работающий ксерокс).

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

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

Сколько людей должны подписать документ, чтобы он считался утвержденным? Нам нужно достичь консенсуса, поэтому это должно быть большинство. Поскольку всего в нашем коллективе 4 человека, большинство — это 3 или больше. Бумага, изображенная на картинке, подписана всеми четырьмя участниками, так что ее можно считать утвержденной. Почему мы не требуем, чтобы на бумаге были все четыре подписи? Потому что это значит, что один человек может все испортить, ведь если Сережа отправится на рыбалку, жизнь всего коллектива будет парализована, — слишком большая власть оказывается в руках одного человека. Почему, тем не менее, нам необходимо большинство? Почему недостаточно двух подписей? Потому что, если бы их было достаточно достаточно, двое (например, Коля и Сережа) могли бы подписать одну версию балансов, а другие двое — другую, не соответствующую действительности. А две противоречивые, и при этом окончательные версии реальности — это слишком.

День 2

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

Это первое действие Кати, поэтому она ставит на листе номер 1. Кроме того, она подписывает этот документ. Ее подпись необходима, чтобы никто не смог сфабриковать перевод от ее имени.

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

Пока это не окончательный документ, поскольку его подписал только Сережа. Теперь ему нужно собрать подписи товарищей, так что он подходит к каждому и просит поставить автограф. И этот документ очень легко проверить. Во-первых, человек, который ставит подпись, может найти у себя бумагу с балансом за предыдущий — в данном случае первый — день. Далее он смотрит список переводов, который состоит из одного пункта: деньги переводила только Катя. Этот перевод легко проверяется; мы можем убедиться, что он действительно подписан Катей, и что у Кати есть на балансе достаточно монет, чтобы перевести их Коле.

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

День 3

Наступает третий день. Система работает хорошо, и все начинают тратить свои монеты. Коля хочет купить у Сережи вязанку дров за 10 монет, Сережа хочет купить у Вани лекарство за 25 монет, а Ваня мечтает о помидоре и договорился с Колей на 2 монеты. Каждый из них берет кусок бумаги и описывает передачу денег.

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

Но Ваня не успевает вовремя принести Кате свой запрос на перевод средств, и, когда он прибегает, дневной баланс уже сформирован.

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

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

День 4

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

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

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

День 5

Наступает пятый день, и сегодня очередь Коли. Уже несколько дней идет дождь, и Коля хочет спать в сухости и тепле, так что он просит Сережу построить ему небольшую деревянную хижину. Сережа хочет получить за эту работу 200 монет, но у Коли всего 98 монет. Коле приходит в голову сумасшедшая идея: ведь сегодня он публикует баланс, почему бы не добавить в него перевод этой суммы Сереже?

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

Коля подписывает документ, несмотря на наличие в нем явно бессмысленной строчки, и, чтобы его утвердить, ему нужно собрать еще две подписи. Когда он приходит с Сереже и Кате, они замечают, что в предыдущем опубликованном отчете (от третьего дня) у Коли было 92 монеты. Как же он может отправить 200 монет Сереже? Они отказываются подписывать этот баланс, пока он не поправит ошибку и не удалит неправильный перевод. Он неохотно соглашается и публикует новый, правильный баланс, который они и подписывают.

Это обновление является окончательным, поскольку под ним стоит 3 подписи.

День 6

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

Теперь Ване легко синхронизироваться с коллективом. Он видит, что под всеми обновлениями стоят не меньше трех подписей, поэтому он может быть спокоен. Кроме того, он может проверить все сам, имея эти отчеты и последний отчет, который у него был (отчет второго дня). В общем, Ваня может участвовать в дальнейших финансовых отношениях, как будто он ничего не пропустил.

Судя по всему, система работает! Да, она очень проста, но для нужд наших островитян ее вполне достаточно.

Вывод

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

Идеальная ли это реализация блокчейна? Вероятно, нет; многое можно улучшить. Например, наш протокол рассчитан на четырех жителей острова. Что будет, если завтра новый корабль потерпит кораблекрушение и к нашим выжившим присоединится еще один человек? Будет ли протокол соответствовать новой ситуации? Сейчас он подразумевает контролируемый доступ, а что, если хочется сделать доступ свободным? Что будет, если мы захотим добавить доказательство выполнения работы (Proof of Work) или доказательство доли владения (Proof of Stake). Но об этом в другой раз.

Государство и общество

Ждем новостей

Нет новых страниц

Следующая новость