В основе Биткоина лежат три основных технологических компонента:
– Собственно блокчейн (база данных).
– Одноранговые (пиринговые – P2P) сети.
– Механизм консенсуса (майнинг – PoW).
Биткоин не сможет существовать, если какой-либо из этих компонентов отсутствует. Поэтому для понимания Биткоина важно понимание каждого составляющего его компонента.
Попросту говоря, блокчейн – это всего лишь способ структурирования данных. Вот и всё! Это регистр, гроссбух (ledger): файл, который отслеживает записи бухгалтерского учета.
Как уже было сказано выше, этот файл сравним с книгой, которая никогда не заканчивается.
Как и страницы книги, блоки блокчейна заполняются информацией. Все блоки помимо номеров имеют метку времени, которая выполняет особую функцию. Новый блок всегда добавляется после блока с самой последней меткой времени. Таким образом формируется цепочка.
Блокчейны используют криптографию, чтобы отследить изменение информации в любом блоке (странице этой бесконечной книги). Это свойство делает блокчейн хорошей структурой данных, чтобы отслеживать сохранность записи чего-либо ценного и важного.
Как мы уже знаем, в блокчейне Биткоина блоки содержат информацию о транзакциях. В каждом блоке указано, какое количество биткоинов передается с какого адреса и на какой.
Поскольку блокчейн Биткоина использовался для отслеживания движения всех биткоинов с момента их создания, всегда можно проверить и точно знать, кому и сколько принадлежит биткоинов. Текущее состояние блокчейна Биткоина показывает «кто чем владеет». Но также всегда можно отследить, как биткоины попали на тот или иной адрес.
Транзакция происходит только после её включения в блок и добавления блока в цепочку. Следовательно, когда блок добавляется в цепочку, биткоины перемещаются с адреса на адрес и состояние блокчейна обновляется.
Это означает, что любой может проверить, действительно ли кто-то совершил транзакцию на его адрес или нет, просто проверив текущее состояние блокчейна. Разумеется, чтобы это сделать, блокчейн должен быть общедоступным. Здесь на помощь приходят одноранговые сети.
Если бы блокчейн хранился только на одном компьютере (сервере) и вдруг оказалось бы, что он отключенный, то это было бы очень неприятно, если не сказать больше. На самом деле, текущее состояние блокчейна загружается, синхронизируется и предоставляется многими компьютерами во всем мире.
Эти компьютеры называются «узлами» или «нодами» (nodes), и они работают совместно в одноранговой (peer-to-peer – P2P) сети, чтобы гарантировать, что блокчейн является безопасным и актуальным. Каждый из этих узлов хранит полную, обновленную (актуальную) версию блокчейна. Каждый раз, когда добавляется новый блок, все узлы обновляют свой блокчейн. Использование одноранговой сети имеет определенные преимущества:
– Всегда можно проверить состояние блокчейна, используя программу-проводник – т. н. Блокчейн-эксплорер (Blockchain explorer) или Блок-эксплорер (Block explorer).
– Не надо полагаться только на одну сторону, чтобы знать истинное состояние блокчейна.
– Не надо полагаться на безопасность одного сервера, чтобы знать, что блокчейн защищен.
– Потенциальному злоумышленнику придется одновременно взломать тысячи узлов, а не один сервер.
– Всегда есть уверенность, что блокчейн никогда не исчезнет, потому что для этого придется отключить или уничтожить все узлы, которых тысячи по всему миру.
Это все очень важно, но вышеизложенное не означает, что блокчейн только из-за этого оказывается достаточно надежным, чтобы использоваться для хранения транзакций.
Например, как узнать, что все транзакции в блокчейне верны? Как узнать, что в блоках нет недействительных транзакций? И если есть разные версии блокчейна, откуда мы узнаем, которые из них являются истинными?
Все эти опасения весьма изобретательно решаются консенсусным механизмом, использование которого стало возможным, в первую очередь, благодаря одноранговой сети.
Одноранговые сети и блокчейн (база данных) существовали и до Биткоина.
Однако, до появления Биткоина считалось невозможным достичь консенсуса между узлами в одноранговой сети (т.н. проблема Византийских генералов) для создания децентрализованной цифровой денежной системы.
«Задача о византийских генералах» формулируется так. Несколько генералов, каждый во главе своего легиона, осадили город. Каждый из них знает, что половины всех их войск достаточно, чтобы взять город при одновременной атаке – но, если атака не будет одновременной, то сил не хватит, они потерпят поражение. Связываться друг с другом генералы могут только через гонцов, возможности проверить подлинность доставленных депеш нет, и есть основания подозревать, что некоторые из генералов – изменники, которые будут отправлять остальным ложные сведения. Какова должна быть стратегия переговоров генералов о едином времени штурма города, если нет ни взаимного доверия, ни единого верховного командования, а вероятность попыток помешать штурму ложными сообщениями велика?
В 2009 году гениальный Сатоши Накамото, загадочный и анонимный основатель Биткоина, объединил блокчейн с механизмом достижения консенсуса, основанным на криптографии.
Консенсусный механизм Биткоина – это то место, где происходит настоящая магия: он позволяет узлам в одноранговой сети работать вместе, не зная друг о друге и не доверяя друг другу.
Механизм консенсуса – это просто набор правил, который согласовывается узлами в сети, запуская программное обеспечение сети. Эти правила обеспечивают, чтобы сеть работала по назначению и оставалась синхронизированной.
Консенсусный протокол устанавливает такие правила:
– каким образом блоки должны быть добавлены в блокчейн,
– когда блоки считаются действительными,
– как разрешаются конфликты.