Страница 8 из 9
На сегодняшний день команда разработчиков Ethereum, одного из самых популярных блокчейнов, работает над внедрением алгоритма Casper – это улучшенная версия Proof-of-Stake. Внедрение этого алгоритма позволит существенно увеличить количество транзакций, которые сможет обрабатывать Ethereum.
Существуют и более редкие виды консенсуса.
Delegated-Proof-of-Stake – «делегированное доказательство доли» – похож на Proof-of-Stake только названием. Важное отличие заключается в том, что все владельцы токенов могут выбрать представителя своих интересов внутри этого блокчейна. Фактически выбирается несколько нод от 21 до 100, которые проверяют блоки. Если выбранная нода работает плохо: добавляет невалидные транзакции, пропускает блоки, не обрабатывает транзакции, – то она будет удалена из списка майнеров и переизбрана. Этот алгоритм используют EOS, Steemit, BitShares. За счет объединения майнеров он позволяет существенно увеличить скорость проверки транзакций, а значит, и пропускную способность блокчейна. Например, EOS использует этот механизм для масштабирования до миллиона транзакций в секунду.
Proof-of-Activiti – доказательство активности. В таком блокчейне есть несколько нод-админов, которые проверяют транзакции и выдают результат всем остальным. Остальные просто копируют то, что проверили админы. Этот алгоритм носит очень централизованный характер: чтобы стать админом такой сети, нужно пройти проверку и подтверждение от уже действующих админов. Этот алгоритм чаще всего используется в непубличных закрытых блокчейнах, которые работают в замкнутом сообществе либо в компаниях. Примером такого блокчейна является Kovan. Kovan – это тестовый блокчейн для программистов, которые разрабатывают проекты на Ethereum. В Kovan существуют несколько администраторов, которые проверяют транзакции участников и бесплатно выдают токены, которые нужны участникам для проведения тестов.
Итак, при помощи консенсуса определяется, какой блок с транзакциями будет добавлен в блокчейн и какой майнер получит за это вознаграждение.
Блоки внутри блокчейна
А теперь давайте наконец-то разберемся, что такое блок и как он устроен?
Майнер собирает проверенные транзакции в блок, добавляет блоку заголовок (идентификатор) и подпись – это хэш блока. В разных блокчейнах структура блока и его отдельных частей может различаться. Например, в блоках биткойна есть еще место для тех самых дополнительных данных, которые майнеры могут менять, добиваясь нужного хэша. Общий принцип везде одинаковый: заголовок, транзакции, подпись.
Рис. 3. Структура блока
Сколько транзакций помещается в одном блоке, зависит от блокчейна, так как максимальный размер блока жестко запрограммирован. Например, в Bitcoin максимальный размер блока – 1 Мб. Из-за этого в биткойн-сообществе периодически появляются идеи, как можно увеличить размер блока. Во втором полугодии 2017 г. активно обсуждалась идея, как можно использовать место, зарезервированное в блоке для служебной информации, под транзакции, тем самым увеличив емкость блока практически в два раза.
Цепочки блоков
Из проверенных блоков формируется цепочка, в которой каждый новый блок ссылается на предыдущие.
Рис. 4. Цепочка блоков
Для блока № 1 формируется хэш из содержимого его транзакций. В хэш блока № 2 включены транзакции из этого блока + хэш блока № 1. В хэш блока № 3 кроме его транзакций попадет хэш блока № 2. Таким образом формируется цепочка. Если удалить какой-то из блоков или подменить транзакции внутри него, то изменятся хэши и такой блок выпадет из цепочки.
Если новый добавляемый блок не ссылается на предыдущий, то он автоматически будет отвергнут цепочкой, а значит, транзакции из него останутся в реестре непроверенных и будут замайнены другим майнером в последующих блоках.
Конкуренция цепочек
Итак, кошельки подписывают транзакции и отправляют их в реестр. Майнеры наперегонки проверяют эти транзакции и собирают их в блоки. Мы уже знаем, что в блокчейне есть консенсус, который выберет блок, если сразу несколько майнеров добавят блоки одновременно (такое случается постоянно, так как майнеров много и все стремятся успеть получить награду за блок).
Но при этом в блокчейне есть такое понятие – конкуренция цепочек блоков. Откуда же возникает конкуренция, если консенсус так красиво решает спорные ситуации?
Все дело в скорости. Бывают ситуации, когда блок с транзакциями был добавлен в цепочку, а уже после этого появился более красивый блок с таким же номером. В этом случае, подчиняясь правилам консенсуса, блокчейн переключится на этот более красивый блок. Вознаграждение, которое было начислено майнеру-владельцу несчастливого блока, исчезнет и появится новое вознаграждение у другого майнера.
Причем возможны ситуации, когда несчастливым оказывается не один блок, а цепочка из нескольких блоков.
Представьте: где-то живет гениальный программист, который собрал свой собственный супермощный компьютер и майниттранзакции биткойна. Допустим, у него произошел сбой отправки сообщений в Интернет. И вот его компьютер вычислил один блок, а передать эту информацию другим нодам в блокчейн не может. Потом его компьютер вычислил второй блок, за ним третий, и тут связь появилась, и кошелек выгрузил в блокчейн информацию сразу про три созданных блока. Если окажется, что в этой цепочке больше нулей в начале хэша, то блокчейн сразу же разрушит уже сложившуюся цепочку из трех последних блоков и переключится на нашу.
Именно по этой причине внутри блокчейна так важно количество подтверждений. Считается, что современная компьютерная техника не дает возможности собрать цепочку из шести более красивых хэшей.
Поэтому и существует правило, что перевод биткойна полностью завершен, когда у него есть шесть подтверждений. Это значит, что уже шесть блоков ссылаются на нашу транзакцию, а цепочка из шести блоков не может быть заменена на другую версию.
Конечно, остается вариант, что в один прекрасный день будет изобретен супермощный компьютер или прилетят инопланетяне со своей чудо-техникой и смогут моментально вычислять очень красивые цепочки гораздо длиннее шести блоков. Надо признать, что, конечно, существует риск прилета инопланетного компьютерного разума, мечтающего сломать наш блокчейн, или более вероятный риск – появление сверхмощных квантовых компьютеров, которые будут производить вычисления в разы быстрее, чем привычная нам техника.
Однако мне кажется, что такой разум столь же успешно сможет взломать и обычную банковскую систему, просто моментально подбирая самые сложные комбинации паролей.
Давайте соберем в одну картинку, как же работает блокчейн.
Рис. 5
Блокчейн – это сеть из участников. Когда появляется новый участник, он подключается к этой сети с помощью специальной программы-кошелька. Если при подключении к блокчейну участник скачивает весь архив с данными (весь блокчейн), то его кошелек начинает выполнять роль ноды. Бывают ноды, которые просто хранят информацию, а бывают ноды-майнеры, которые верифицируют транзакции и собирают их в блоки. Майнеры за свою работу получают награду – токены, монеты, используемые внутри блокчейна. Майнеры собирают проверенные транзакции в блоки и объединяют блоки в цепочки. Когда майнер
добавляет новый блок, все ноды сохраняют у себя информацию об этом блоке и платеж считается проведенным. Это вкратце общая схема работы. Если вас интересуют подробности, то можно посмотреть запись одного из докладов, посвященного устройству блокчейна: http://bit.ly/2vwSnqP