Как подтверждается транзакция?
В системе Биткоин, если вы хотите отправить биткоин кому-то, это будет похоже на «отправку» камней Рай островитянами Япа. Вместо того чтобы фактически отправлять биткоины, вы уведомляете узлы и майнеров о том, кто является новым владельцем монет в блокчейне. Затем они передают эту информацию другим; но чтобы избежать какой-либо противоречивой информации, ни одно из ваших намерений не подтверждается сразу – они остаются неподтвержденными. Транзакция подтверждается только после ее включения в так называемый «блок». В алгоритмах «Доказательства доли владения» и «Доказательства значимости» время, когда один из участников, исходя из значимости или суммы ставки, первым может выбрать, какие транзакции включены, является фиксированным. Например, каждые 3 секунды, каждые 60 секунд или через любой другой произвольный интервал времени, заданный в алгоритме блокчейн. В «Доказательстве выполнения работ», тот, кто первым выполнил работу, тот и определяет состав блока, то есть подтверждает транзакцию в первый раз. Давайте рассмотрим это с точки зрения майнеров.
Майнеры наблюдают за транслируемыми транзакциями. Как только они обнаруживают транзакцию, то добавляют ее в свой пул
[10] неподтвержденных транзакций. В то же время майнеры должны выполнить определенную работу. Все это полностью автоматизировано и происходит в фоновом режиме с молниеносной скоростью. Работа, которую они должны выполнить, – это вычисление сложных криптографических значений, которые можно сделать только путем повторения. Это похоже на сборку пазла. Каждый получает пазл с определенным количеством кусочков, и кто первым собирает пазл, тот побеждает. Кусочки пазла – это транзакции, которые не только состоят из нескольких фиксированных точек, но и содержат множество переменных. Например, один кусочек – это последняя часть пазла, которая была собрана первой. Каждый майнер использует тот же самый кусочек пазла для новой попытки. Затем майнеры выбирают транзакции, которые они хотят включить в этот пазл, и пытаются собрать его. Поскольку большинство блокчейн-систем разрешают только определенное количество транзакций на блок, майнеры должны выбирать транзакции. Скорее всего, они выбирают транзакции с самым высоким вознаграждением, которое они могут получить, если они выиграют.
Существует много возможностей, поэтому шансы того, что разные майнеры собирают разные пазлы (блоки), очень высоки. Блоки-пазлы структурированы таким образом, что они не могут быть собраны без добавления так называемого числа nonce.
Как находить блоки?
Nonce – это случайный кусочек (число), который должен найти каждый майнер, чтобы включить его в блок. Чтобы это число было валидным, законченный пазл должен выглядеть определенным образом. Представьте себе, что этот последний кусочек – недостающее звено, устраняющее все дыры. В зависимости от того, как выглядят другие кусочки пазла и как майнер складывает их вместе, кусочек nonce должен иметь очень специфическую форму. Проблема в том, что майнер не видит, подходит или нет этот кусочек пазла. Майнеры перебирают буквально триллионы кусочков nonce, пока не находят правильный. На блокчейн-языке это называется «нахождение нового блока».
[РЕЖИМ БОТАНА]
Фактически майнеру удалось вычислить несколько криптографических алгоритмов SHA256, угадывая рандомный вход для фиксированного выхода.
[РЕЖИМ БОТАНА ВЫКЛЮЧЕН]
Как только майнер найдет правильное решение, он передает этот блок нескольким другим узлам и другим майнерам, которые изучают блок-пазл, убеждаются, что он правильный, и только затем пересылают его дальше.
Как вы знаете по собственному опыту, требуются лишь секунды, чтобы посмотреть на пазл и убедиться, верно он собран или нет. Однако для его сборки требуется несколько минут, часов или даже дней. Если вы когда-нибудь с ужасом смотрели на пазл из тысячи элементов, то знаете, что я имею в виду. То же самое относится и к криптографии с блокчейном; для создания блока-пазла требуется всего лишь один майнер и всего несколько миллисекунд, чтобы проверить, верен ли чей-то блок-пазл и будет ли он принят в качестве следующего блока в блокчейне.
Как блоки соединяются в блокчейне?
Готовый блок нумеруется посредством временной метки. Майнер, который нашел блок, получает транзакционные сборы за все транзакции, включенные в блок, а также получает награду сверх этого. В случае Биткоина это вышеупомянутые 12,5 биткоина за блок (однако со временем их становится все меньше и меньше). Если транзакция является частью этого блока, то она подтверждается в первый раз. В течение нескольких миллисекунд многие тысячи или даже миллионы майнеров копируют этот блок и начинают майнинг на новом блоке, используя последний кусочек пазла последнего блока, добавляя новые кусочки и пытаясь найти число nonce, которое приводит к верной сборке блока. Когда новый блок найден, следующий блок использует часть предыдущего блока и так далее. Любой новый блок находится поверх старого блока, и именно так и создается нумерация.
[ВАЖНО]
Выражаясь криптографически, все блоки соединены вместе в цепь – таким образом формируется блокчейн.
Первый блок в блокчейне – это генезис-блок (genesis block). В системе Биткоин он был создан Сатоши Накамото 3 января 2009 года. Сегодня у нас есть сотни тысяч блоков поверх него – все они соединены вместе с помощью криптографии. Вы не можете изменить какой-либо блок в середине, так как он уничтожит всю дальнейшую цепочку блоков. Это очень важно для понимания неизменности блокчейна. Если вы хотите изменить прошлое, вам придется отменить все следующие блоки (пазлы) и начать с нуля. Если вы просто измените одну транзакцию (кусочек пазла), то этот пазл (блок) и, следовательно, все следующие пазлы (блоки) изменятся.
Почти во всех случаях требуется больше усилий, чтобы изменить блокчейн, чем получить от него изменения.
[ВАЖНО]
Поэтому блокчейн и выглядит неизменяемой историей транзакций, с которой соглашается сообщество.
В случае с Биткоином, как только транзакция подтверждена 4 или 5 раз (от 3 до 4 других блоков над ней), что занимает около 40–50 минут, она считается неизменной. Сделка в Биткоине довольно безопасна, даже если она подтверждается только один раз, и особенно если она небольшая. Никто не стал бы вкладывать несколько тысяч долларов компьютерного времени, – а это затраты на майнинг нового блока, – просто чтобы украсть у вас несколько долларов! Это бессмысленно с экономической точки зрения. В общих чертах даже транзакция стоимостью в сотни тысяч долларов считается неизменной после 4 или 5 транзакций в Биткоин, благодаря криптографии.