Вас, возможно, несколько обеспокоит тот момент, что, если вы будете использовать биткойн, вся история когда-либо сделанных вами транзакций будет публично доступна. Это только частично правда, и мы обсудим этот момент далее, в главе об анонимности. Публичный гроссбух содержит только биткойн-адреса и суммы. В нем нет какой-либо личной или опознаваемой информации. Другими словами, если я посылаю 50 биткойнов с адреса А моему другу Джо с адресом Б, весь мир видит, что 50 биткойнов отправлены с адреса А на адрес Б, но никто не может определить, что адрес А принадлежит мне и адрес Б принадлежит Джо. Так что, когда я гляжу на блокчейн, все, что я вижу – это балансы адресов и транзакции с одного адреса на другой – ничто из этой информации не ставит под удар конфиденциальность людей, осуществляющих эти транзакции.
Другой момент, который необходимо понять, и который мы еще не обсуждали, состоит в том, что, в отличие от электронной почты, где вы можете иметь только один адрес, или, по крайней мере, небольшое количество адресов, количество биткойн-адресов, которые могут быть у человека, не ограничено. Фактически это поощряется, и большинство биткойн клиентов настроены по умолчанию таким образом, чтобы каждая транзакция использовала новый адрес. Давайте еще раз рассмотрим пример отправки 50 биткойнов моему другу Джо, сейчас мы уже знаем немного больше. Когда я прошу Джо сказать мне его биткойн-адрес, он, как правило, не называет мне адрес, содержащий всю сумму его богатства, а создаст абсолютно новый адрес, на котором вообще нет биткойнов, и я отправляю 50 биткойнов на этот новый адрес. Биткойн-программы не требуют от вас управления балансом каждого адреса индивидуально, они могут показать вам общий баланс всех адресов, которые вы когда-либо создавали. Если взглянуть на дело с моей стороны, вряд ли у меня есть адрес, содержащий точную сумму денег, которую я хочу отослать Джо. Например, у меня может быть биткойн-адрес А, на котором есть 30 биткойнов, и биткойн-адрес Б с 35 биткойнами. В нашем примере программа автоматически сгенерирует транзакцию, которая возьмет 30 биткойнов с адреса А, потом 20 – с адреса Б, отправит эти 50 биткойнов на адрес Джо, а также отправит оставшиеся 15 биткойнов на новый адрес В, который она автоматически сгенерировала для меня. И у Джо, и у меня могут быть сотни или тысячи адресов, содержащих маленькие суммы денег, которые вместе составляют наше полное биткойн-состояние. Ни один из нас не может видеть адресов другого, кроме тех, которые используются в транзакции.
Исключением из этого правила будет случай, когда я получаю одну транзакцию на большую сумму денег, скажем, миллион долларов в биткойнах. Если после этого я захочу потратить 1 биткойн с этого адреса, получатель сможет увидеть, что я имею в своем распоряжении около миллиона долларов в биткойнах, что я не хотел бы раскрывать. Достаточно сказать, что для счастливчиков, оказавшихся в таком положении, существуют техники, позволяющие скрыть это богатство, разбрасывающие деньги по множеству адресов – современные программы делают этот процесс тривиальным.
Теперь, когда мы знаем, что такое блокчейн, как он на самом деле работает? Вопрос, возможно, стоит сформулировать так: как мы можем обеспечить непротиворечивую запись транзакций в децентрализованном окружении? Первое, что нужно понять о блокчейне, это то, что он называется блокчейном потому, что состоит из цепочки последовательных блоков. Блок – это группа транзакций. Угадайте, с какой частотой генерируются блоки? Примерно раз в 10 минут. Наверное, вы начали понимать, что существует связь между блокчейном и добычей биткойна, и если вы предположили это, вы правы.
Глава десятая. Добыча биткойна
Помните, в Главе четвертой мы сказали, что добыча биткойна помимо введения биткойнов в экономику преследует также две других цели. Она обеспечивает обработку платежей и безопасность сети. Давайте теперь рассмотрим, каким образом эти задачи выполняются в процессе добычи биткойна. Выше мы упоминали, что, когда транзакция начата, она отправляется в биткойн-сеть. Что это означает на самом деле? Биткойн-клиенты (то есть программы) пытаются соединиться со множеством других биткойн-клиентов, которые называют «пиры». Обычно каждый отдельный клиент соединен с 8-20 другими пирами. Некоторые из этих пиров – обычные пользователи, осуществляющие транзакции, и небольшое число этих пиров могут быть майнерами. Когда биткойн-клиент получает сведения о биткойн-транзакции, они передаются от клиента к клиенту до тех пор, пока через короткий промежуток времени не будут получены одним или несколькими биткойн-майнерами.
Биткойн-майнеры делают ещё кое-что помимо решения хеш-задачи и введения биткойнов в экономику: они обеспечивают важную функцию создания блокчейна по одному блоку за раз. Когда биткойн-майнер получает сведения о транзакции, сперва проверяется ее подлинность, и затем она записывается в блок локально, на компьютере биткойн-майнера. Если биткойн-майнер успешно решил задачу, решение задачи включается в блок как его часть вместе со всеми транзакциями, созданными за прошедшие 10 минут. Затем блок закрывается, распространяется по интернету, и процесс начинается заново. Любой другой в сети может независимо проверить, что транзакции в блоке подлинные и что решение хеш-задачи, известное также как «доказательство работы», верно. Любые последующие майнеры, которые решили задачу, игнорируются, их блоки больше не подходят, и процесс начинается заново. Таким образом блокчейн – это последовательность блоков, содержащих транзакции за данный десятиминутный период. Каждый блок математически связан с предыдущим блоком, так что можно тривиальным (для компьютера!) образом проверить весь блокчейн на достоверность, не анализируя при этом отдельные транзакции.
И это приводит нас к третьей цели, которой достигают биткойн-майнеры: безопасности сети. Действия, предпринимаемые для решения криптографической хеш-задачи, служат не только интересам майнера, они также нужны для защиты от нечестных майнеров, расходующих деньги дважды, что называют «двойной тратой». Если взять более ранний пример, где я посылаю 50 биткойнов Джо, пусть взамен Джо присылает мне книгу, которую я у него купил (по сегодняшним ценам это была бы довольно дорогая книга). В то же время, что если я попробую отправить те же самые 50 биткойнов другому человеку перед тем, как первая транзакция успела стать обработанной и проверенной? Предполагая, что я уже получил товар от Джо, будет проблематично, если биткойн-сеть каким-то образом примет мой платеж другому участнику и позже отклонит изначальный платеж, который я отправил Джо. Децентрализованная добыча биткойна решает эту проблему.
Когда я отправляю транзакцию для Джо в биткойн-сеть, Джо почти мгновенно сможет ее увидеть (обычно через несколько секунд). В это время транзакция видна, но еще не включена в блок майнером. Если это транзакция с небольшой суммой, или транзакция между участниками, которые доверяют друг другу, видимость транзакции в сети будет обычно считаться приемлемой, однако, при определенных усилиях с моей стороны, все еще возможно дважды потратить средства, отправив в сеть другую транзакцию, которая использует те же самые средства – но для транзакций с небольшой суммой требуемые усилия, вероятно, не будут стоить затраченного времени (к тому же, разумеется, есть еще и риск быть пойманным). По прошествии приблизительно 10 минут мы можем ожидать, что моя транзакция будет теперь официально включена биткойн-майнером в последний блок блокчейна. В этом момент транзакция имеет «одно подтверждение». Теперь, если вы примете во внимание, что в мире тысячи специальных компьютеров, добывающих биткойн, вероятность, что я сумею обмануть Джо: дважды потратить свои средства и успешно добыть блок, который отвергнет транзакцию для Джо, очень мала. Для транзакций со средними или большими суммами обычно считается благоразумным подождать 3-6 подтверждений, или, другими словами, подождать, когда будут добыты 3-6 последовательных блоков (от 30 до 60 минут), чтобы быть абсолютно уверенным в транзакции. Чтобы успешно осуществить двойную трату, в этом случае нужно будет успешно добыть подряд 6 блоков, отклоняющих транзакцию. Чтобы достичь этого, нужно контролировать примерно 50 % от общей вычислительной мощности биткойн-сети. Как вы можете видеть, это делает попытку двойной траты крайне сложной и дорогой, что прежде всего перевешивает, в общем случае, любые преимущества двойной траты. Вы также можете видеть, что по мере того, как растет биткойн-сеть, увеличивается количество майнеров и возрастает трудность хеш-задачи, двойная трата становится еще более сложной для нечестного майнера. Именно так биткойн-майнеры обеспечивают безопасность сети.