Начало здесь: //infostart.ru/public/988498/
Итак, у нас уже есть способ гарантированно обнаружить изменение "задним числом". В принципе, мы уже сейчас могли бы построить работоспособную систему. Каждый участник, отправляя базу далее по цепочке, запоминает поледний хеш. Когда до него дойдет очередь в следующий раз, он сравнит запомненный хеш, с тем, что присутствует в базе. Если они не совпадут, он просто не станет передавать полученную им от предыдущего участника базу, а передаст дальше базу, которая есть у него сейчас (и в которой точно нет изменений задним числом).
Но это будет работать только в нашей упрощенной системе, где обмен происходит в строго установленном порядке. А что делать, если у нас каждый может в любой момент времени обмениваться информацией с любым участником? Как в таких условиях обеспечить надежность транзакций? И как такое вобще возможно?
Здесь мы возвращаемся к вопросу, который был поставлен в предыдущей части. Могут ли люди самостоятельно, без помощи внешней силы, прийти к согласию. При том, что каждый обладает свободой воли. А некоторые свободой недоброй воли. Эта задача была сформулирована еще до появления криптовалют, в конце прошлого века. Она называется задачей византийских генералов и формулируется примерно так:
В ночь перед решающим сражением византийские генералы обмениваются сообщениями для того, чтобы принять совместное решение: атаковать врага или отступить. Им важно, чтобы решение было общим. Если значительна часть из них атакует, а другая значительная часть отступит, то кампания будет проиграна. Всем известно, что среди них есть какое-то количество предателей (но неизвестно кто именно), которые будут саботировать процесс принятия такого решения. Есть ли у лояльных генералов надежный способ выработать общее решение?
Было доказано, что в общем случае решение возможно при количестве честных генералов в 2/3 от общего числа плюс один.
Такой результат выглядел очень обнадеживающе. Для этой задачи находились новые, все более изощренные решения, и, наконец, в 2009 году было предложено такое, которое легло в основу первой криптовалюты. В этом решении использовалось другое изобретение конца прошлого века, т.н. "доказательство работы". Изначально оно было придумано для защиты от спама и DOS-атак. Но вернемся к нашим 1С-никам, и посмотрим как это работает.
Допустим, они все еще придерживаются последовательной схемы передачи базы от одного участника к другому. Но решили усложнить жизнь потенциальному злоумышленнику. Как вы помните, изменение прошлых записей должно сопровождаться пересчетом всех хэш-ключей, начиная с момента изменения. Превратим получение ключа в сложную задачу. Для этого добавим еще одно поле в наш документ и назовем его, скажем, "Добавка". Это поле будет участвовать в формировании ключа особым образом. Мы будем перебирать все возможные значения и пробовать подставлять их в это поле до тех пор, пока не получим "красивый" ключ. Например, такой в котором первые два символа будут "0". Обратите внимание на то, что подобрать такое значение будет не просто. А вот в плане проверки все останется по прежнему. Проверка будет работать все так же быстро.
Представим теперь, что большинство участников решило не тратить свои вычислительные ресурсы, а предоставить эту работу другим. А те, немногие, которые решили заниматься поиском "красивых" ключей, в качестве компенсации за это берут со всех прочих небольшую комиссию. Т.е. если вы обычный участник, то вы просто делаете платеж и подписываете его. Вы не заполняете поля "Добавка", "НачальныйКлюч" и "КонечныйКлюч". За вас это сделают другие участники, которых называют "майнерами". Такой участник соберет все необработанные еще платежи, найдет для них "красивый" хэш, и запишет результат в базу.
Самый простой (но, разумеется, не единственный) способ вознаградить этого участника - договориться, что сам факт оформления такого блока означает увеличение счета оформившего на некоторую величину. Для обычного же участника все это будет означать, что его платеж может быть в двух состояниях: "не обработан" или "обработан". Соответственно, сделка может считаться состоявшейся тогда, когда платеж будет обработан.
Если посмотреть внимательно на эту схему, то станет понятно, что уже можно отказаться от строгой последовательности в передаче базы от одного участника к другому. Обычные участники просто передают в сеть подписанные платежи. Участники-майнеры собирают эти платежи в блоки и строят из этих блоков блокчейн. Да, конечно же, несколько майнеров будут работать параллельно с одними и теми же платежами. Но кто-то сделает свою работу быстрее. Этот кто-то и получит свое вознаграждение, а результаты его работы будут признаны всеми остальными и займут свое место в блокчейне.
Примерно так это и работает в самой первой криптовалютной сети известной как Биткоин. Я не буду далее углубляться в технические детали. Я думаю гипотетическая база 1С, которую я описал, дает достаточно ясное представление. Вместо этого, давайте обратим внимание на один удивительный факт. Я только что сказал, что действия одного участника будут приняты всеми. Сейчас-то мы знаем, что это работает. Но 10 лет назад это было неочевидно. Была просто некая теория. Абсолютное большинство людей, тогда, в 2009 году, сказали бы вам, что это не будет работать. Потому что каждый будет "тянуть одеяло на себя". А люди по природе своей не способны договориться друг с другом. Самое ценное во всей этой истории - не "математическая игрушка разума", как выразился предыдущий автор. И даже не очередная IT-технология. Самое ценное - это практическое доказательство того, что общество обладает свойством договариваться и приходить к согласию.
Вернемся к самой первой статье, в ответ на которую я стал все это писать (//infostart.ru/public/986126/). С самого заголовка у автора чувствуется какое-то неприятие самой идеи криптовалют. Причем, как видно, автор и сам не понимает - в чем причина. Сначала он говорит о том, что система технически не совершенна и неспособна обеспечить действительно массовую обработку платежей. А через пару абзацев сам же себя поправляет, и теперь говорит, что технические проблемы, конечно же решаемы, а проблема совсем в другом. В том, что... ну не может такого быть, чтобы люди сами себе сделали хорошо. В этом он не одинок. "Криптоскептиков" довольно много. Давайте попробуем разобраться - в чем они правы, и в чем не правы.
Первым делом надо признать что они правы в том, что биткоин не стал тем, что от него ожидали. Эта сеть не стала платежной системой и, по всей вероятности, уже и не станет. Проблема здесь, конечно же не техническая. Но и не та, что сразу приходит на ум противникам криптовалют. Дескать, биткоин - ничего не значащая пустышка, кто ее у вас будет принимать? Они, наверное, очень удивятся, но проблема была прямо противоположного характера. Дело было не в том, что никто не хотел принимать биткоины. Дело было в том, что никто не хотел их отдавать. К тому моменту, как биткоин приобрел более или менее широкую известность, все уже успели наслушаться ужасных историй про то, как кто-то купил себе пиццу, а мог бы чуть подождать и купить квартиру в центре Манхеттена. Кто, после этого, в здравом уме будет расплачиваться биткоинами?
Без чьей-либо злой воли, а просто сам-собой, биткоин ушел в лапы спекулянтов. Что тут скажешь. Такова судьба многих пионеров. Неправильно делать из этой истории вывод, что криптовалюты в принципе работать не будут. Как я уже говорил выше, биткоин вполне убедительно продемонстрировал - на что способны свободно и самостоятельно действующие участники. И, в этом смысле, эксперимент следует признать скорее чересчур удачным.
Уже совсем скоро мы с вами станем свидетелями новой, куда более зрелой, попытки запустить платежную систему на основе блокчейна. Криптовалюта Павла Дурова на начальных этапах своего существования будет защищена от резких колебаний курса. Планируется, что в связи с этим, она будет не интересна для спекулянтов. Конечно, какой Дуров разработчик, мы так или иначе знаем, а какой он экономист - нет. Но до сих пор он демонстрировал крайне серьезный подход к тому, что делает. Хватит ли ему тех денег, что он собрал, мы узнаем в ближайшие месяцы.
В чем же все-таки неправы "криптоскептики"? Пообщавшись со многими из них, я для себя понял следующее. Все их аргументы (как бы они ни выражались) сводятся, по большому счету, к одному. Есть некий "большой дядя", назовем его так. Этот дядя готов применять насилие, для защиты своих интересов. И он не допустит никакой людской самодеятельности. И, между прочим, говорят они, и хорошо, что не допустит. Потому что люди сами для себя могут сделать только плохое. Если вдуматься - глубоко иррациональная позиция. Какой такой дядя? Откуда он взялся? Инопланетяне завезли? Конечно же, нет никакого "дяди" и никаких "дядиных" интересов. Есть плод общественного согласия, саму возможность которого скептики так категорически отрицают. Есть общество, с присущей ему способностью приходить к согласию. А технологии блокчейна и криптовалют - всего лишь одно из доказательств этого. Здесь мы имеем дело не просто с какой-то новой компьютерной технологией. Гораздо важнее то, что здесь новые социальные практики. Отмахиваться от них также глупо, как пытаться игнорировать социальные сети и мессенджеры. Надо разбираться в том, как они работают, чтобы сознательно участвовать в этом процессе. И я надеюсь, что моя статья хоть немного вам в этом помогла.