Если вы когда-либо окажетесь на необитаемом острове, вам могут оказаться полезными знания о том как управлять процессом децентрализованного консенсуса, или, другими словами, управлять очень простым блокчейном вручную. Всё, что вам нужно, это несколько выживших ребят, этот пост, ручка и пару лисков бумаги.
Если вы не уверены, что этот навык полезен для вашего выживания, обязательно прочитайте пост о том, как блокчейн может значительно улучшить жизнь на острове.
Давайте вернемся к оригинальной истории и пройдем весь путь с нашими бесстрашными героями, которые потерпели крушение и оказались на необитаемом острове где-то в южной части Тихого океана — Хьюго, Сойер, Кейт и Джек.
Краткий обзор: группа ребят пытается реализовать IslandCoin — революционную новую валюту, которая положит конец разрушенной экономике бартера на острове. Все согласились, что будет справедливо, если изначально у каждого будет 100 монет. Поскольку у них нет металла для чеканки монет, они должны cделать их с помощью нескольких листов бумаги. Столкнувшись с проблемой доверия, группа не смогла договориться о том, чтобы один человек следил за остатками. Их единственный вариант — поддерживать балансы всем вместе.
Мы начнем с того, что наш случай использования на острове, вероятно, является самой простой реализацией блокчейна. В будущих статьях мы можем исследовать другие реализации и привязать их к таким понятиям, как «Proof of Work» и «Proof of Stake», что поможет нам увидеть их преимущества и недостатки. Но пока давайте начнем так просто, как это получится.
Что мы пытаемся достичь? На самом деле всё очень просто — мы пытаемся поддерживать простую таблицу балансов на листе бумаги. В этой таблице будет показано, сколько монет у каждого из наших героев. Хитрость заключается в том, что у нас не будет единственного листа бумаги, который бы служил источником истины — нам нужно чтобы они все были одинаковыми, при этом позволить каждому в команде поддерживать свою собственную версию — это децентрализованная часть. И, естественно, мы надеемся, что все 4 листа бумаги в конечном итоге будут показывать одно и то же — это консенсусная часть.
Итак, как будет выглядеть этот лист бумаги?
День 1.
Подписано Хьюго, подписано Сойером, подписано Кейт, подписано Джеком.
у Джека 100 монет.
у Кейт 100 монет,
у Сойера 100 монет,
У Хьюго сейчас 100 монет,
Этот лист является первым, с которым все согласны, поэтому его обозначили как день 1. Откуда взялись эти балансы? Ранее мы согласились, что будет честно, если у каждого изначально будет 100 монет. Нам также понадобится один из оставшихся в живых, чтобы написать эту бумагу. На самом деле не важно кто, давайте возьмем Хьюго. Он обнародует эту бумагу для всех и убедится, что каждый сохранил себе копию (на острове есть удивительная копировальная машина, о которой я забыл упомянуть).
Поскольку ожидается, что баланс монет будет меняться, мы будем создавать обновленный лист в конце каждого дня. Возможно, не всегда именно Хьюго будет публиковать обновления — мы хотим, чтобы всё было как можно честнее.
Еще одна важная часть: из-за отсутствия взаимного доверия каждый в группе подтверждает обновление статуса индивидуально. Этого можно добиться простым способом, если каждый из выживших будет подписывать каждый документ, но только если они согласны с тем, что написано в нем.
Сколько людей должно подписать документ, чтобы он считался окончательным и утвержденным? Нам нужно достичь консенсуса, поэтому подписать должно большинство. Поскольку у нас всего 4 человека, большинство из них – это хотя бы 3 из 4. Бумага, приведенная выше, была подписана всеми четырьмя, значит она безусловно окончательная. Почему мы не требуем всех четырех подписей на всех бумагах? Потому что это позволит одному человеку подвергнуть опасности весь процесс. Если Сойер отправится на рыбалку на несколько дней, команда не сможет обновить балансы, пока он не вернётся — это даёт одному человеку слишком много власти. Почему же нам нужно большинство? Почему недостаточно 2 из 4 подписей? Потому что, если мы требуем только 2 из 4, мы можем в итоге получить ситуацию, когда два человека (например, Хьюго и Сойер) подпишут одну версию балансов, а другие 2 человека (Кейт и Джек) подпишут другую версию, которая не соответствует первой. Мы не можем получить две противоречивых версии, которые считаются окончательными.
Утром второго дня Кейт хочет купить помидор. Хьюго продает помидоры по 2 монеты за штуку. Она хочет передать 2 монеты Хьюго. Кейт берет новый лист бумаги и записывает перевод на него:
Кейт действие 1: перевод 2 монеты Хьюго — подписано Кейт
Это первое действие Кейт, поэтому она так его и назвала. Кроме того, Кейт подписала этот документ. У нас должна быть её подпись, чтобы никто не мог подделать перевод с её счета.
Приближается конец второго дня, и команда хочет обнародовать обновленный набор балансов. Хьюго публиковал документ в первый день и собрал все подписи. Имеет смысл делать это по очереди. Команда соглашается использовать простой ротационный порядок: Хьюго, Сойер, Кейт, Джек, Хьюго, Сойер и т. д. Это означает, что за обнародование документа о статусе на второй день ответственным будет Сойер. В представленном им документе отражается трансфер Кейт:
День 2.
Подписано Сойером.
у Джека 100 монет.
у Кейт 98 монет,
у Сойера 100 монет,
Кейт действие 1: перевод 2 монеты Хьюго — подписано Кейт
Теперь у Хьюго сейчас 102 монеты,
Этот документ, который сделал Сойер, ещё не окончательный, потому что он подписан только Сойером. Ему нужно собрать больше подписей. Сойер проходит через команду и просит каждого проверить (верифицировать) и подписать его. Этот документ очень легко проверить. Во-первых, верификатор должен посмотреть в своих документах бумагу статуса, которая показывает балансы за предыдущий день (в данном случае – день 1). Далее, верификатор должен просмотреть новый список транзакций. В этом случае у нас есть только перевод Кейт. Эту транзакцию легко проверить: мы можем убедиться, что она действительно подписана Кейт, и мы можем убедиться, что у Кейт действительно есть монеты на её балансе, чтобы отдать эту сумму Хьюго.
Когда каждый житель острова завершает процесс проверки и подписывает бумагу, Сойер теперь у Соера на руках окончательный документ за второй день, чтобы обнародовать его для всех. Все делают копию и ложатся спать счастливые и довольные.
День 2.
Подписано Хьюго, подписано Сойером, подписано Кейт, подписано Джеком.
у Джека 100 монет.
у Кейт 98 монет,
у Сойера 100 монет,
Кейт действие 1: перевод 2 монеты Хьюго — подписано Кейт
Теперь у Хьюго 102 монеты,
Наступает день 3. Система работает хорошо, и все с удовольствием тратят свои монеты. Хьюго хочет купить дрова у Сойера за 10 монет. Сойер хочет получить таблетки от Джека за 25 монет, а Джек голодный и хочет заплатить 2 монеты Хьюго чтобы купить помидор. Каждый из них создаёт лист бумаги, в котором подробно описывается их трансфер:
Хьюго действие 1: перевод 10 монет Сойеру — подписано Хьюго
Джек действие 1: перевод 2 монеты Хьюго -подписано Джеком.
Сойер действие 1: перевод 25 монет Джеку — подписано Сойером
Приближается вечер. Сегодняшние балансы публикует Кейт. Чтобы быть уверенным, что Кейт включит эти переводы в своё предложение документа, каждый из них должен предоставить ей копию своего поручения о переводе. На самом деле имеет смысл давать копии всем, потому что человек, желающий выполнить перевод, не обязательно помнит, чья очередь сегодня публиковать обновление. Джек задерживается с передачей копии его поручения Кейт, и к тому времени, когда он приносит его, баланс за день уже написан:
День 3.
Подписано Кейт.
у Джека 125 монет.
у Кейт 98 монет,
у Сойера 85 монет,
Теперь у Хьюго 92 монеты,
Сойер действие 1: перевод 25 монет Джеку — подписано Сойером
Хьюго действие 1: перевод 10 монет Сойеру — подписано Хьюго
Джек разочарован тем, что этот баланс не включает его трансфер. Это означает, что Хьюго не получит плату Джека за помидор и не даст Джеку помидор на ужин. Сегодня Джек будет спать голодным. Он злой уходит искать что-то ещё, чтобы поесть, и не подписывает предложенный Кейт документ за этот день. К счастью, Кейт может получить достаточное количество подписей от остальных членов команды:
День 3.
Подписано Кейт, подписано Сойером, подписано Хьюго.
у Джека 125 монет.
у Кейт 98 монет,
у Сойера 85 монет,
Теперь у Хьюго 92 монеты,
Сойер действие 1: перевод 25 монет Джеку — подписано Сойером
Хьюго действие 1: перевод 10 монет Сойеру — подписано Хьюго
Кейт получила 3 подписи на документе, каждая из которых подтверждает, что балансы действительно соответствуют переводам и вчерашним балансам. У нас есть большинство, поэтому этот статус-лист считается окончательным.
День 4, и никто не знает, где Джек. Он ловил рыбу накануне, попал в шторм и не вернулся в лагерь. Это может быть проблемой, потому что сегодня очередь Джека опубликовать обновление баланса. Кейт хочет сделать пару платежей сегодня, она пишет их на листе бумаги и даёт копию всем:
Кейт действие 2: перевод 10 монет Сойеру — подписано Кейт
Кейт действие 3: перевод 2 монеты Хьюго — подписано Кейт
Приближается вечер, а Джек всё ещё не вернулся. Как и договаривались ранее, сегодня очередь Джека опубликовать балансы, но его нигде не найти, поэтому обновление баланса в этот день пропущено.
День 5, и сегодня Хьюго ответственный за публикацию ежедневного обновления. Уже несколько дней шёл дождь, и Хьюго хочет, чтобы спать было теплее. Он просит Сойера построить ему небольшую деревянную хижину. Сойер хочет 200 монет за работу. Это проблема для Хьюго, потому что у него только 92 монеты. У Хьюго появляется сумасшедшая идея: он тот, кто публикует баланс сегодня, почему бы не добавить безумный трансфер этой суммы Сойеру в любом случае?
Хьюго действие 2: перевод 200 монет Сойеру — подписано Хьюго
Сегодня нет других переводов. У Хьюго есть трансферы Кейт со вчерашнего дня, и трансфер Джека от позавчера, который так не был произведён. Он добавляет все это вместе со своим новым безумным переводом:
День 5 (день 4 пропущен).
Подписано Хьюго.
у Джека 123 монеты.
у Кейт 86 монет,
у Сойера 295 монет,
Теперь у Хьюго 0 монет,
Джек действие 1: перевод 2 монеты Хьюго -подписано Джеком.
Хьюго действие 2: перевод 200 монет Сойеру — подписано Хьюго
Кейт действие 3: перевод 2 монеты Хьюго — подписано Кейт
Кейт действие 2: перевод 10 монет Сойеру — подписано Кейт
Хьюго подписывает это обновление, хотя его трансфер на самом деле не имеет смысла. Чтобы сделать это обновление статуса окончательным, ему нужно собрать ещё 2 подписи. Когда он подходит к Сойеру и Кейт, они замечают, что на предыдущем окончательном балансе (с 3-го дня) у Хьюго было 92 монеты. Как он может отправить 200 монет Сойеру? Они отказываются подписывать этот баланс, пока он не исправит эту ошибку и не удалит этот недействительный трансфер. Хьюго неохотно соглашается и публикует новый баланс, который является правильным. Они в итоге подписывают его:
День 5 (день 4 пропущен).
Подписано Хьюго, подписано Кейт, подписано Сойером.
у Джека 123 монеты.
у Кейт 86 монет,
у Сойера 95 монет,
Теперь у Хьюго 96 монет,
Джек действие 1: перевод 2 монеты Хьюго -подписано Джеком.
Кейт действие 3: перевод 2 монеты Хьюго — подписано Кейт
Кейт действие 2: перевод 10 монет Сойеру — подписано Кейт
Это обновление баланса является окончательным, поскольку содержит 3 подписи.
Утром 6 дня Джек наконец-то возвращается в лагерь. У него была тяжелая пара дней со штормом и прочими неприятностями. Он не участвовал в обсуждениях за последние два дня и пропустил объявления о новых трансферах и публикациях новых обновлений баланса. Он действительно не знает, сколько монет у него есть. Он просит первого выжившего, которого он встретил, дать ему последние обновления, которые он пропустил. Ему дали окончательное обновление на 5-й день и утвержденное обновление Кейт, опубликованное в 3-й день.
Для Джека легко синхронизироваться с остальной частью группы. Он может убедиться, что эти обновления баланса действительно были подписаны как минимум 3 раза, поэтому он может быть относительно спокоен, что они в порядке. Он также может выполнить вычисления самостоятельно на основе этих обновлений и последнего обновления, которое у него есть (от второго дня). Это позволит Джеку участвовать в сегодняшних трансферах так, как будто он ничего не пропустил.
Система работает хорошо. Правда, она немного упрощена, но этого достаточно для потребностей островных жителей. Ну и конечно же, у нас не может быть функционального блокчейна без White Рaper! Команда садится и празднует достижение, опубликовав этот замечательный документ:
Island Coin White Paper
Почему это можно считать блокчейном? Во-первых, каждый лист бумаги, опубликованный ежедневно, представляет собой блок. Каждый блок пронумерован и указывает на предыдущий, образуя цепочку блоков. Чтобы проверить текущее состояние остатков, любой наблюдатель должен начинать с начала цепи (день 1 – Генезис-блок) и проверять каждый из блоков один за другим подряд. Балансы строятся один за другим.
Это идеальная реализация блокчейна? Возможно, нет. Его можно во многом улучшить. Например, он обслуживает только этих четырёх жителей. Что произойдет, если кто-то ещё потерпит крушение на острове? Будет ли этот протокол приспособлен и к ним? Кроме того, в настоящее время этот протокол эксклюзивный; как мы можем превратить его в инклюзивный? Что делать, если мы хотим изменить его, с использованием Proof of Work или, возможно, Proof of Stake?
Источник: bitnovosti.com
Если статья была полезной для Вас и Вы захотите пройти научится инвестированию, то рекомендуем Вам пройти БЕСПЛАТНЫЙ тренинг на эту тему https://goo.gl/eTgyXD
Ссылка на криптовалютную биржу Abcc https://goo.gl/YUEH4x
Ссылка на топовою криптовалютную биржу Binance https://goo.gl/QEuNBy
Ссылка на биржу Exmo https://goo.gl/4pLb8n
Ссылка на первый криптовалютный банк Virrex https://virrex.io/ref32047 Финансово-Инвестиционный холдинг : https://goo.gl/qGTkjo
Инвестирование в стартапы https://goo.gl/xdbbJg
@marichi, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
@arcange Спасибо)
@marichi, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Вы получили первый ответ
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Чтобы поддержать вашу работу, я также проголосовал за ваш пост!
@golosboard спасибо)
@marichi , для вас пунктуация не существует? И вы не в курсе, что за навязчивую рекламу могут флаговать?
Флагую ваш коммент и этот пост, в ответ на ваши флаги под комментами на пост про сахар и за рекламу.
При продолжении банкета готов опустить вашу репу до нуля.
Вопросы есть?
@roman1973 убираю флаги с коментов к тому посту. просто слишком много там негативных коментариев а новечкам тут продвигаться при такой реакции трудновато)
@marichi
1+2=потеря денежки.
Новичками были все, но не все начинают с флагов. Тем более, с репутацией ниже, чем у флагуемого, даже не стоит рыпаться, почти никода. Не поможет.
В ответ убираю флаги с вашего поста.
С.
@roman1973 Спасибо