Шрифт:
Интервал:
Закладка:
Надежный реестр с универсальным доступом решил бы проблему двойных трат, дав возможность торговцам, да и кому угодно, удостовериться, что потенциальный покупатель действительно владеет теми биткоинами, которые, по его словам, он создал, и что он не потратил их в другом месте.
Кто же должен отвечать за создание, поддержание и обеспечение целостности такого реестра? Это не может быть банк, компания – эмитент кредитных карт или они оба, поскольку весь смысл системы, предложенной Накамото, заключается в том, что она не должна опираться на существующие финансовые учреждения и правительства. Система должна функционировать независимо от них. По сути, она должна оставаться работоспособной, будучи децентрализованной (не привязанной к каким-либо организациям и учреждениям) и независимой от того, как участники производят обмен. Но как примирить такую философию радикальной и постоянной децентрализации с потребностью в едином, постоянном и достоверном реестре?
Это можно сделать с помощью хитроумного сочетания математики и программирования, приправленных здоровой дозой личной материальной заинтересованности. Накамото предложил сетевую систему, которая действует следующим образом.
1. Когда происходит транзакция между покупателями и продавцами, информация об этом передается по системе.
2. Специализированные компьютеры, называемые узлами (или нодами), периодически собирают все транзакции и удостоверяются в их легитимности: они проверяют, что использованные биткоины не были потрачены ранее. Набор признанных хорошими транзакций за определенный период называется блоком.
3. Выполняя работу с транзакциями, узлы соревнуются друг с другом, пытаясь подсчитать короткую числовую сводку для текущего блока, называемую хешем. В этом соревновании выигрывает узел, который первым находит хеш правильной формы. Его поиск производится методом проб и ошибок; это требует большого объема вычислений и называется также «доказательством выполнения работы». Чем большими вычислительными мощностями располагает узел, тем с большей вероятностью он первым выполнит задачу. Доказательство работы включается в блок таким образом, что другой узел может поменять содержимое блока только в том случае, если заново выполнит аналогичную работу.
4. Победивший узел – первый, который успешно доказал выполнение работы, – передает законченный блок в систему. В качестве награды ему разрешается создать и оставить у себя некоторое заранее определенное число биткоинов[700]. Сам факт их создания также записывается в блок.
5. Другие узлы повторно проверяют этот блок, удостоверяясь, что все заключенные в нем транзакции законны, а также изучают доказательство выполнения работы. У них есть серьезный стимул делать это, поскольку при обнаружении незаконных транзакций или неверно выполненных доказательств работы весь блок станет недействительным, а все связанные с ним биткоины – бесхозными.
6. Как только узлы убедятся, что какой-то блок корректен и полон, они переходят к следующему, пытаясь провести доказательство работы для него, и весь процесс повторяется. Накамото спроектировал систему так, чтобы создавать новый блок и выдавать награду в биткоинах примерно один раз в 10 минут. Он заметил, что «регулярное добавление постоянного количества новых денег аналогично работе золотодобытчиков, расходующих ресурсы для добавления золота в обращение»[701]. Аналогия была принята, и люди и организации, управляющие узлами по всему миру, теперь называются майнерами[702] биткоинов.
ЭТА ШТУКА ДЕЙСТВИТЕЛЬНО МОЖЕТ РАБОТАТЬ
Многие из тех, кто прочел статью Накамото, поверили, что описанную им систему можно создать и что она будет иметь большую ценность. Математика и программирование, кажется, сработали. Еще более впечатляет, что сработали стимулы.
Майнеры могут заниматься своей деятельностью без координирования и совершенно самостоятельно. Их единственная мотивация – желание получить биткоины, а не альтруизм или коллективизм, поэтому система добивается своих целей и развивается. Участники не испытывают потребности координировать работу, им нужно только передавать информацию о своих сделках и готовые блоки. Было бы лучше, если бы майнеры не координировали свои действия, поскольку это может легко и быстро привести к сговору: вдруг некая группа майнеров решит, например, менять прошлые записи так, чтобы переписать все биткоины на себя.
Блестящий проект Накамото предлагал два основных способа защиты от подобных атак. Первый – доказательство работы, или требующая большого объема вычислений задача по нахождению правильного хеш-кода для блока. С каждым новым блоком она становится экспоненциально сложнее, поскольку блоки математически соединяются. Атакующим пришлось бы заново проводить доказательство работы не только для интересующего их блока, но и для каждого блока во всей цепи, то есть для каждого когда-либо созданного. Поскольку блоки неразрывно соединены, полная запись обо всех прошлых транзакциях называется блокчейном[703].
Тот факт, что доказательство работы становится все более сложным, имеет еще один важный эффект. Объем вычислительных ресурсов, необходимых для того, чтобы взять под контроль всю платежную систему Биткоин[704], растет со временем экспоненциально, и такая работа быстро становится нерентабельной. Многие майнеры сочли целесообразным продолжать инвестиции в специализированное аппаратное обеспечение для майнинга в надежде выиграть соревнование за биткоины. Чтобы взять под контроль всю систему, атакующий должен превзойти суммарные расходы всех остальных.