Недавно (20 июня 2019 года) на Cryptology ePrint Archive была опубликована статья "SoK of Used Cryptography in Blockchain". Данный пост - седьмой в запланированной серии, содержащей любительский перевод этой статьи.
Систематизация знаний по используемой криптографии в блокчейне
(перевод с английского
статьи
Mayank Raikwar, Danilo Gligoroski and Katina Kralevska
SoK of Used Cryptography in Blockchain
Cryptology ePrint Archive, Report 2019/735
https://eprint.iacr.org/2019/735)
Аннотация
(перевод аннотации здесь)
1 Введение (перевод введения здесь)
1.1 Наш вклад (перевод здесь)
2 Методология исследования (перевод здесь)
3 Основные понятия блокчейна
3.1 Криптографическая хэш-функция (перевод здесь)
3.2 Механизмы консенсуса
Консенсус является ключевым компонентом блокчейна для синхронизации или обновления реестра путем достижения соглашения между участниками. Для того чтобы вести реестр децентрализованным образом, было предложено множество механизмов консенсуса. Первое введение использования механизма консенсуса в блокчейне неявно дано биткойном. Биткойн использует для консенсуса механизм доказательства работы (Proof of Work, PoW) , идея которого пришла из протокола Hashcash [7]. Целью Hashcash было предотвращение спама в общедоступных базах данных. Этот протокол состоит в следующем. Предположим, почтовый клиент хочет отправить электронное письмо на почтовый сервер. Вначале клиент и сервер договариваются о криптографической хэш-функции H, которая отображает входную строку в выходную строку длины n. Затем сервер электронной почты отправляет клиенту строку вызова c. Теперь клиент должен найти строку x такую, что H (c||x) начинается с k нулей. Так как Н имеет псевдослучайные выходы, то вероятность успеха в одном испытании равна
Здесь x, соответствующий c, рассматривается как PoW, а процесс нахождения этого x называется майнингом. PoW трудно генерировать, но легко проверить. Многие литературные исследования по механизмам консенсуса, например, обзор Wang et al. [16] и ”SoK: Consensus in the age of blockchains” [32], были проведены в последние несколько лет. Поскольку механизмы консенсуса уже достаточно подробно изучены в литературе, в данной статье мы представляем основную идею о том, как работают механизмы консенсуса и их классификацию.
В протоколе консенсуса, в зависимости от архитектуры сети и типа блокчейна, некоторые или все участники принимают участие и ведут реестр, добавляя блок, состоящий из транзакций, в их реестр. Однако создание нового блока, который будет добавлен в реестр, выполняется участником, который известен как лидер протокола консенсуса в этом конкретном исполнении. Этот лидер избирается различными механизмами процесса избрания лидера, и некоторые из этих механизмов приведены в таблице 2.
Критерий выбора лидера |
Соответствующие протоколы |
PoW Puzzle Competition
|
Proof of Stake velocity [35] |
Verifiable Random Function
|
Tendermint [36], Algorand [37], Secure Proof of Stake [38] |
Trusted Random Function
|
Proof of luck [39], Proof of elapsed time [40] |
Modified Preimage Search |
Snow White [41] |
Sub-network of Masternodes |
Таблица 2. Выбор лидера в протоколах консенсуса.
После избрания лидера и создания нового блока для достижения консенсуса или согласия по этому блоку применяются два типа механизмов голосования: явные и неявные. В явном голосовании происходит несколько раундов голосования, а затем на основе голосов достигается консенсус. Однако при неявном голосовании новый блок, созданный лидером, принимается другими участниками, которые неявно голосуют за новый блок и добавляют его в свои реестры.
Выборы лидера через соревнование с головоломкой (PoW puzzle) (например, PoW puzzle (2) в Биткойне) с последующим неявным голосованием для достижения соглашения также называются ”консенсусом Накамото”. Механизмы консенсуса также определяют производительность сети блокчейн с точки зрения достижения консенсуса, пропускной способности, масштабируемости и устойчивости к различным атакам. Некоторым образом, консенсус организует состояние программ, выполняемых в узлах сети блокчейн, предоставляя среду выполнения для коллективной проверки одной и той же программы и, следовательно, достижения окончательной версии. Точной классификации механизмов консенсуса не существует, но в целом их можно классифицировать как протоколы консенсуса с доказательством концепции и протоколы консенсуса с византийской отказоустойчивой репликацией. Эти протоколы консенсуса могут быть выбраны на основе сети и типа блокчейн. Большинство протоколов консенсуса с доказательством концепции используются в неконтролируемых блокчейнах (permissionless blockchains) (блокчейны без необходимости в разрешениях). Существует много схем доказательства концепции, которые были предложены и реализованы, например, доказательство работы (Proof of Work, PoW) [44], доказательство доли (Proof of Stake, PoS) [45], Equihash [46], обладание мастернодами в Dash [42] и др. Как описано в разделе 3.1, в протоколах консенсуса, основанных на головоломке PoW, майнеры пытаются решить криптографическую головоломку путем майнинга, и эти майнеры также отвечают за проверку транзакций, и стимул (вознаграждение) предоставляется первому майнеру, который решает головоломку.
В случае неконтролируемой сети, поскольку нет аутентификации и надлежащей синхронизации, базовый алгоритм консенсуса должен быть в состоянии справиться с проблемой синхронизации, хорошо масштабироваться и смягчать различные атаки, чтобы поддерживать каноническое состояние блокчейн в сети P2P. Чтобы решить эту проблему синхронизации, большинство блокчейнов используют "правило самой длинной цепи” , чтобы иметь последовательное каноническое состояние блокчейн в этой сети P2P блокчейн. Напротив, в контролируемом блокчейне (permissioned blockchain) (блокчейн с разным уровнем разрешений), поскольку существуют ограничения и привилегии, связанные с одноранговыми узлами, существует строгий контроль за синхронизацией между одноранговыми узлами. Византийские отказоустойчивые протоколы обычно принимаются в контролируемых блокчейнах (permissioned blockchains) для обеспечения свойств консенсуса, таких как валидность (validity), соглашение (agreement), и завершение (termination). Практическая византийская отказоустойчивость (Practical Byzantine Fault Tolerant) (PBFT) [47], доказательство прошедшего времени (Proof of Elapsed Time) [40], волновой консенсус (Ripple consensus) [48] - это некоторые из консенсусных протоколов, используемых в контролируемых блокчейнах.
Майнинг, пулы для майнинга и механизмы вознаграждения
В блокчейнах на основе доказательства работы (Proof of Work, PoW) добавление новых транзакций в блокчейн выполняется процессом майнинга. В процессе майнинга биткойнов головоломка решается путем многократного вычисления многих хэшей (уравнение 2), путем перебора различных значений nonce, чтобы удовлетворить условию. Когда майнер успешно решает головоломку первым среди всех майнеров, он получает денежное вознаграждение за решение головоломки. Из-за этого процесса вознаграждения все консенсусные узлы или майнеры следуют правилам перехода состояния блокчейна во время соревнования с головоломкой. Майнинг - это ресурсоемкий процесс, где основными ресурсами являются вычислительная мощность и память. Майнинг может выполняться как одиночным майнером, так и группой майнеров, называемых майнинговым пулом, которые коллективно пытаются решить головоломку. Майнинг-пулы могут работать на различных методах майнинга и механизмах вознаграждения. Эти механизмы вознаграждения могут варьироваться в зависимости от используемой техники майнинга или решения оператора пула. Ссылка [16] дает краткое представление об управлении стратегией майнинга в сетях блокчейн, в то время как ссылка [49] предоставляет стратегическое исследование майнинга через стохастические игры. В блокчейнах предложены и протестированы различные механизмы вознаграждения. Ссылка [50] анализирует системы вознаграждения биткойн-пула, а система вознаграждения, основанная на распространении информации в сети блокчейн, представлена в [51].
Рисунок 3. Сценарий блокчейн консенсуса.