Биткоин, как первая в мире криптовалюта принес в мир множество новшеств. Однако, как и Ньютон, Сатоши Накамото видел далеко, стоя на плечах титанов. Все наслышаны о майнинге, процессе упаковки блокчейна. Также многим известно, что майнеры занимаются обсчетом хешей и поиском одного из правильных решений некой математической головоломки. Если посмотреть на этот процесс со стороны, то можно догадаться, что майнинг, по сути своей — это лотерея. Сети совершенно не важно кто именно найдет блок, главное, чтобы это произошло примерно вовремя.
Полученный в результате майнинга блок должен быть принят остальной сетью. Поэтому сеть предъявляет к этому блоку некоторое условие. Удовлетворение условия приводит сеть в состояние согласия, т.е. консенсуса, отсюда и название — алгоритм консенсуса. Система поощряет корректное поведение, а некорректно себя вести и рисковать быть отвергнутым остальной сетью элементарно невыгодно. В основе алгоритма консенсуса Биткоин лежит т.н. Proof-of-Work, с него и начнем.
Proof of Work (PoW)
Для того, чтобы кто попало не мог предъявить сети права на найденный блок, сеть требует доказательств. В данном случае “доказательства работы”. Впервые о proof-of-work заговорили еще в 1997, за 12 лет до создания Биткоин. Тогда эта система называлась Hashcash и предлагалась к использованию для борьбы со спамом на почтовых серверах. Видя входящее соединение от отправителя письма, сервер мог выдать вычислительное задание, которое отправителю предлагалось решить, и чем более подозрительным был отправитель, тем сложнее было для него задание. По замыслу, отправка писем в больших количествах потребовала бы от спамеров больших вычислительных мощностей, что делало бы спаминг финансово невыгодным. Идея казалась настолько удачной, что Microsoft встроила аналог Hashcash в свой почтовый сервер Exchange, но алгоритмы машинного обучения справлялись с этой задачей лучше.
В 2009-ом Сатоши Накамото выступил с идеей создания цифровых децентрализованных наличных под названием Bitcoin, где доказательство работы состояло в поиске хеша блока вместе со всеми его транзакциями. Хеш — это очень большое число, своего рода подпись данных, должен был удовлетворять одному важному условию — его цифровое значение должно быть меньше некоторого определенного числа, которое известно всей сети и которое (после некоторых преобразований) получается из параметра под названием “сложность”. Эта сложность, в свою очередь, является отображением текущей общей майнинговой мощности сети: чем больше вычислений за единицу времени производят все майнеры мира, тем выше сложность. Сложность призвана внести некоторое постоянство в процесс майнинга — скорость нахождения блоков должна оставаться постоянной, один блок должен возникать каждые 10 минут.
Proof-of-work используется во многих известных криптовалютах, таких как Биткоин, Лайткоин или Эфириум. В последнем, к слову, отказаться от доказательства работы планировалось с самого начала, но процесс этот будет поэтапным. Дело в том, что использование proof-of-work в качестве алгоритма консенсуса обладает сразу несколькими недостатками. Первый: proof-of-work проделывает по-сути совершенно бесполезную работу, которая требует бесполезного сжигания электричества (а его нужно реально много, а по прогнозам, к 2020-ому году энергопотребление сети Биткоин будет сравнимо с энергопотреблением Дании), в результате чего майнинг географически переносится в юрисдикции со странным отношением к криптовалютам, но дешевым киловаттчасом. Второй: сеть теоретически может подвергнута атаке 51%, когда майнер, или группа майнеров (пулы) могут объединиться и отменять прошлые чужие блоки целыми цепочками.
Proof of Stake (PoS)
Майнеры в криптовалютах работают не за спасибо. У них две статьи доходов — награда за блок и сборы комиссионных за транзакции. Майнинговые узлы — это распределенные инфраструрные единицы, сети они нужны для поддержания ее (сети) в состоянии онлайн. Если лишить майнеров награды за блок, то останутся лишь комиссионные, это тоже неплохие деньги. В системах с алгоритмом консенсуса proof-of-stake (можно перевести как “доказательство доли владения“) майнеры называются валидаторами. Они не перемалывают хеши, а значит нет таких бешенных расходов на электричество. Здесь речь идет скорее о лотерее. Валидатор, желающий поучаствовать в процессе майнинга должен сначала купить лотерейный билетик. Технически это означает, что валидатор должен заморозить любое количество средств. Общее замороженное количество средств будет посчитанно и и случайным образом, пропорционально вкладу, будет выбран победитель лотереи. Он получит право упаковать блок и забрать комиссионные себе.
Этот подход имеет некоторый невполне очевидный побочный экономический эффект — замороженные деньги на время изымаются из экономики, что ведет к дефляции и росту курса. С другой стороны, очень много суммарно замороженных денег означает низкую индивидуальную вероятность выйгрыша и для некоторых участников лотереи становится рациональнее продать свою криптовалюту. Массовая продажа несговорившихся участником влечет за собой инфляцию. Насколько нам известно, подобные дефляционно-инфляционные приливы пока никем серьезно не изучались.
Алгоритм proof-of-stake был впервые предложен в 2011-ом году. Первой криптовалютой, основанной на тем стал Peercoin. Для того, чтобы PoS начал действовать, в блокчейне уже должно существовать некоторое количество монет, поэтому все валюты основывались на гибридном подходе — сначала некоторый период proof-of-work, и лишь затем переход на proof-of-stake. Подобный же переход ожидает криптовалюту Ethereum, в которой будет использоваться разновидность PoS под названием “proof of deposit“, где валидатор, породивший невалидный блок не только лишается права на майнинг, но и его депозит автоматически сгорает. Еще одной вариацией PoS выступает “proof of burn“, где по аналогии с сжиганием электричества, сжигаются (отправляются на несуществующий адрес) монеты из других PoW-криптовалют.
Byzantine Fault Tolerance (BFT)
Алгоритм не специфицирует требуемый вид доказательства, он немного о другом. Предлагается отказаться от принципа “целостности в конечном итоге” в пользу принципа “строгой целостности”. Подобная система теряет свойство устойчивости к разделению. К примеру, в Биткоин сеть может находиться в расщепленном состоянии на протяжении нескольких блоков так, что для больших переводов после подтверждения требуется ждать час(6 блоков) или более. В конечном итоге одна из веток признается основной, а параллельная отбрасывается со всеми транзакциями в ней. Это создает неудобства, но самое главное, система в приэтом не может работать, в что называется, реальном времени.
Предлагаемый подход похож на алгоритмы консенсуса использующиеся в хранилищах больших данных (BigData) вроде Cassandra за тем лишь исключением, что блокчейн среда открытая, а значит в ней могут находиться недоброжелатели. Для разрешения этого противоречия узлы должны самостоятельно содержать списки других участников и вести подсчет принятых решений. Для того, чтобы система перешла в состояние консенсуса требуется большинство голосов. Лидер, выбираемый в процессе голосования собирает из транзакций блоки, а остальные члены группы консенсуса либо подписываются под принятыми решениями, либо выбирают нового лидера. Награда разделяется среди всех членов группы консенсуса согласно долям. В группу консенсуса можно как попасть, так и выпасть из нее, поэтому майнеры стараются вести себя корректно.
Криптовалютами, основанными на данном принципе являются Stellar и, в виде, концепта ByzCoin.