Доказательство доли владения, Proof-of-stake (PoS)
(от
англ.
proof of stake , дословно: «подтверждение доли») — метод защиты в
криптовалютах
, при котором вероятность формирования участником очередного блока в
блокчейне
пропорциональна доле, которую составляют принадлежащие этому участнику расчётные единицы данной криптовалюты от их общего количества. Данный метод является альтернативой методу
подтверждения выполнения работы
(PoW), при котором вероятность создания очередного блока выше у обладателя более мощного оборудования
.
При использовании этого метода алгоритм формирования блока не зависит от мощности оборудования, но с большей вероятностью блок будет сформирован той учётной записью, у которой текущий баланс больше. Например, участник, владеющий 1 % от суммарного количества, в среднем будет генерировать 1 % новых блоков
.
Впервые идея Proof-of-stake была предложена на форуме «Bitcointalk» в 2011 году
. Первая реализация протокола PoS была представлена в 2012 году в криптовалюте PPCoin (в настоящее время
PeerCoin
)
. 15 сентября 2022 года
Ethereum
перевели на алгоритм консенсуса Proof-of-Stake
.
На практике часто встречаются смешанные варианты формирования новых блоков. Например, оба метода PoW и PoS используются в криптовалютах
Emerсoin
, , . В криптовалютах
PeerCoin
и метод PoW используется для первоначального распределения, а PoS — для подтверждения
транзакций
. В криптоплатформе
Nxt
,
Gridcoin
и
BlackCoin
метод PoS используется на всех этапах
.
Идея
Идея proof-of-stake заключается в решении проблемы proof-of-work, связанной с большими тратами электроэнергии. Вместо вычислительных мощностей участников имеет значение количество криптовалюты, находящейся у них на счету. Так, вместо использования большого количества электроэнергии для решения задачи PoW, у участника PoS ограничен процент возможных проверок транзакций. Ограничение соответствует количеству криптовалюты, находящейся на счету у участника
.
Доказательство важности
Одним из вариантов комбинированного применения технологии PoS является
«Доказательство важности»
(Proof-of-importance, PoI) — алгоритм, использующийся в
криптовалюте NEM
. На вероятность получить право сформировать блок влияют три компонента
:
-
количество единиц криптовалюты на балансе (значимыми для PoI являются балансы более, чем оговоренное число единиц, например, не менее 10 тыс. для NEM);
-
активность аккаунта (число транзакций);
-
время нахождения аккаунта в сети.
С ростом баланса влияние параметров изменяется — с ростом количества единиц криптовалюты на балансе увеличивается влияние 1-го параметра, и снижается влияние 2-го и 3-го параметров (PoI работает почти как PoS). Чем меньше баланс, тем сильнее влияние 2-го и 3-го параметров.
Если суммарный объём эмиссии криптовалюты ограничен, то минимальные требования к 1-му параметру формируют максимальное количество претендентов на создание блока.
Преимущества
-
Нет необходимости потреблять большое количество электроэнергии для защиты блокчейна. Например, Bitcoin и Ethereum вместе тратят более 1 миллиона долларов, в пересчете на электроэнергию, в день в рамках своих консенсусных механизмов
.
-
Из-за отсутствия необходимости потреблять большое количество энергии снижаются траты участников. Следовательно, нет необходимости повышать количество единиц валюты для мотивации участников
.
-
Proof-of-stake позволяет использовать алгоритмы
теории игр
, чтобы эффективно противодействовать централизации
.
Недостатки
Аргументы, вызывающие опасения
:
-
Доказательство доли владения даёт дополнительную мотивацию к накапливанию средств в одних руках, что может приводить к централизации сети
.
-
Если образуется небольшая группа, которая сконцентрирует у себя достаточно большие средства, она сможет навязывать свои условия функционирования криптовалюты, с которыми будет несогласно большинство
миноритариев
, не контролирующих
форжинг
.
Реализации
Peercoin
Peercoin
— система, основанная на «чистом» proof-of-stake, в том смысле, что PoW используется только для начального распределения денежной массы
.
Генерация блоков
Участники сети Peercoin имеют возможность создать блок, исходя из следующего условия
:
— текущее время, в данном неравенстве ограничивает попытки
хеширования
и блокирует создание следующего блока.
— результат транзакции.
— количество неизрасходованной криптовалюты транзакции.
Если у заинтересованной стороны есть ключ, контролирующий
, то она может сгенерировать блок, используя ключ в качестве подписи. Подпись, в данном случае, будет служить доказательством выполнения условия. Например, участник, владеющий 50 единицами криптовалюты, создаст новый блок с вероятностью в 10 раз большей, чем участник, владеющий 5 единицами.
— время, прошедшее с момента включения в блок результата транзакции
. Вероятность сгенерировать следующий блок, сразу после генерации предыдущего очень мала, но она увеличивается со временем. Это позволяет избежать
экспоненциального распределения
между выплатами, повышая шансы участников, обладающих небольшим количеством криптовалюты.
— данные предыдущего блока.
Участник, владеющий значительной частью всей криптовалюты системы, имеет возможность генерировать значительную часть блоков, так как вероятность генерации блока пропорциональна количеству монет, находящихся у него на счету. Поэтому, время от времени, заинтересованная сторона имеет возможность генерировать цепочки последовательных блоков
.
— постоянная, которая корректируется так, что блоки генерируются в среднем каждые 10 минут.
CoA
CoA
(chains of activity) частично базируется на основном элементе , например, на лотерее между активными участниками через процедуру
follow-the-satoshi
(satoshi
— наименьшая единица криптовалюты, например, для
биткойна
она равна 0.00000001 BTC).
Follow-the-satoshi
Алгоритм, получающий на вход коэффициент satoshi между нулем и общим числом satoshi в обращении. Далее запрашивает блок, в котором этот satoshi был произведен и отслеживает транзакции, через которые он прошел до тех пор, пока не найдет участника, способного в данный момент потратить его. Например, если у Алисы есть 6 satoshi, а у Боба 2, то вероятность того, что Алиса будет выбрана следующим владельцем какого-либо satoshi в 3 раза выше чем вероятность выбора Боба
.
Параметры протокола
-
Количество участников в группе, которая генерирует следующие блоки
-
Количество произведенных этой группой единиц криптовалюты
-
Количество генерируемых этой группой блоков
-
Функция
-
Минимальное время между генерацией блоков
-
Минимальная доля владения
-
Награда
:
Процесс создания блоков CoA составляет блокчейн, состоящий из групп по
последовательных блоков
:
Правила протокола
Правила протокола chains of activity
:
-
Каждый новый блок генерируется одним участником
-
Каждый новый блок
связан с первым битом
хеша
-
Временной промежуток между двумя блоками
и
должен быть не меньше
. Это значит, что, если следующие 4 блока
созданы участниками
, то временной промежуток между
и
должен быть не меньше
-
После того, как группа из
блоков
создана, узлы сети формируют
-битовое начальное состояние (англ. seed)
, где
— входные значения
-
Далее начальное состояние (англ. seed)
используется для получения последовательности тождеств, использующихся для определения следующих
владельцев через алгоритм
follow-the-satoshi
.
-
Если полученный satoshi
не израсходован, то владелец обязан предоставить дополнительную подпись, доказывающую владение хотя бы
единицами криптовалюты, иначе участник не сможет сгенерировать новый блок.
Dense-CoA
Dense-CoA
— альтернативная реализация CoA, в которой участники, генерирующие следующие блоки в цепи, заранее неизвестны. В CoA генерация блока осуществляется одним участником, а в Dense-CoA каждый блок создается группой из
участников:
Пусть
—
необратимая функция
. Пусть блок
связан с начальным состоянием (англ. seed)
, сформированным группой из
участников, генерировавших данный блок. Участник
, решающий, какие транзакции войдут в следующий блок
, определяется с помощью алгоритма
follow-the-satoshi
с хеш-функцией
в качестве входного значения. Оставшиеся участники
определяются тем же алгоритмом, но в качестве входного значения используется
, где
.
Далее, выбранные
принимают участие в процедуре генерации блока
, которая состоит из двух этапов:
-
Каждый участник
, где
, выбирает случайное секретное значение из
-
Каждый участник подписывает сообщение
и выкладывает свою подпись
и прообраз
в сеть.
Участник
подписывает и выкладывает в сеть блок
. Блок содержит: транзакции, хеш предыдущего блока
, метку текущего времени,
прообразов
и совокупность всех подписей
. Участники используют функцию
для вычисления образов
. Эти образы используются для получения
. Далее проверяется допустимость подписи
относительно открытых ключей
участников
.
Начальное распределение криптовалюты
Для криптовалюты, не использующей proof-of-work, существует один простой способ распределения денег между участниками — проведение
ICO
. Однако, в таком случае подразумевается, что изначально вся валюта контролируется одной стороной, что усложняет процесс децентрализации. Во многих криптосистемах, использующих proof-of-stake, эта проблема решается посредством использования PoW для первоначальной генерации криптовалюты, которая будет циркулировать в системе в дальнейшем. Таким образом, первоначальная стоимость единиц криптовалюты определяется стоимостью их производства
.
Критика
Некоторые авторы утверждают, что доказательство доли владения не является идеальным вариантом для распределенного
консенсусного
протокола
.
Ничего на кону
Проблема «ничего на кону» заключается в том, что, в случае консенсусной ошибки, генераторы блоков ничего не теряют, голосуя за несколько ветвей цепочек. Это не позволяет консенсусу когда-либо установиться
.
Двойная трата
Поскольку формирование цепочки требует небольших затрат ресурсов (в отличие от PoW систем), любой может злоупотребить проблемой с попыткой совершить двойную трату средств «бесплатно»
.
Варианты решения проблем
На практике проекты решали эти проблемы разными путями:
-
Протокол Slasher, предлагаемый
Ethereum
, позволяет пользователям «наказывать» мошенников, которые работают в конце более (чем) одной ветви цепочки
. Такой вариант предполагает, что вы должны дважды подписать создание новой ветви цепочки, и что вы можете быть наказаны, если создадите ответвление без подтверждения доли. Однако протокол Slasher так и не был принят. Разработчики Ethereum пришли к выводу, что доказательства доли в этом случае нетривиальны
. Вместо этого Ethereum был разработан протокол Ethash, использующий PoW
.
-
Peercoin
использует подписанные
приватным ключом
разработчика контрольные точки. Благодаря этому нет возможности переорганизации цепочки блоков ранее последней контрольной точки. В данном случае компромисс заключается в том, что разработчик Peercoin является центральным органом, управляющим цепочкой блоков
.
-
Протокол
Nxt
позволяет реорганизовать последние 720 блоков. Тем не менее, это только искажает проблему: клиент может следовать за вилкой из 721 блока, независимо от того, является ли она самой длинной цепочкой
.
-
Гибридный алгоритм PoS и PoW протокола
Decred
. В этом случае используется подтверждение доли, зависимое от метки времени алгоритма PoW, которое предложено назвать «Proof-of-Activity» (Доказательство деятельности), где проблема доказательства решается наличием второго доказательного механизма — PoW
.
Примечания
-
↑
(неопр.)
. Springer.com.
Дата обращения: 23 декабря 2017.
23 декабря 2017 года.
-
от 23 сентября 2020 на
Wayback Machine
Social Science Research Network (SSRN). 11-03-2018.
-
(неопр.)
.
Дата обращения: 24 декабря 2017.
17 октября 2017 года.
-
↑
(неопр.)
.
Дата обращения: 24 декабря 2017.
Архивировано из 11 декабря 2017 года.
-
(англ.) .
forklog
(15 сентября 2022).
Дата обращения: 17 сентября 2022.
17 сентября 2022 года.
-
↑
Karl Whelan.
(неопр.)
. 11.06.2011
(англ.)
forbes.com (20 ноября 2013).
Дата обращения: 1 сентября 2014.
8 августа 2017 года.
-
(неопр.)
.
Дата обращения: 24 декабря 2017.
25 декабря 2017 года.
-
↑
Vitalik Buterin.
(неопр.)
.
Дата обращения: 24 декабря 2017.
10 марта 2021 года.
-
(неопр.)
. steemit.com.
Дата обращения: 24 декабря 2017.
25 декабря 2017 года.
-
↑
Andrew Poelstra.
(англ.) . wpsoftware.net (28 мая 2014).
Дата обращения: 23 сентября 2014.
3 мая 2018 года.
-
(неопр.)
. en.bitcoin.it.
Дата обращения: 23 декабря 2017.
23 декабря 2017 года.
-
↑
(неопр.)
.
-
(неопр.)
. Ethereum Blog (15 января 2014).
Дата обращения: 11 августа 2017.
8 апреля 2018 года.
-
(неопр.)
. Ethereum Blog (3 октября 2014).
Дата обращения: 11 августа 2017.
2 января 2018 года.
-
Wood, Gavin
(неопр.)
. — «Ethash is the planned PoW algorithm for Ethereum 1.0»
.
Дата обращения: 23 января 2016.
18 февраля 2015 года.
-
(неопр.)
.
Nxtwiki
.
Дата обращения: 2 января 2015.
Архивировано из 3 февраля 2015 года.
-
Bentov I., Gabizon A., Mizrahi A.
// arXiv Cryptography and Security.. — 2015.
6 марта 2016 года.