Доказательство доли владения

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Proof-of-stake»)
Перейти к навигации Перейти к поиску

Доказательство доли владения, Proof-of-stake (PoS) (от англ. proof of stake, дословно: «подтверждение доли») — метод защиты в криптовалютах, при котором вероятность формирования участником очередного блока в блокчейне пропорциональна доле, которую составляют принадлежащие этому участнику расчётные единицы данной криптовалюты от их общего количества. Данный метод является альтернативой методу подтверждения выполнения работы (PoW), при котором вероятность создания очередного блока выше у обладателя более мощного оборудования[1][2].

При использовании этого метода алгоритм формирования блока не зависит от мощности оборудования, но с большей вероятностью блок будет сформирован той учётной записью, у которой текущий баланс больше. Например, участник, владеющий 1 % от суммарного количества, в среднем будет генерировать 1 % новых блоков[3].

Впервые идея Proof-of-stake была предложена на форуме «Bitcointalk» в 2011 году[1]. Первая реализация протокола PoS была представлена в 2012 году в криптовалюте PPCoin (в настоящее время PeerCoin)[4].

На практике часто встречаются смешанные варианты формирования новых блоков. Например, оба метода PoW и PoS используются в криптовалютах Emerсoin, NovaCoin, YaCoin. В криптовалютах PeerCoin и Reddcoin метод PoW используется для первоначального распределения, а PoS — для подтверждения транзакций[5]. В криптоплатформе Nxt и BlackCoin метод PoS используется на всех этапах[5].

Идея[править | править код]

Идея proof-of-stake заключается в решении проблемы proof-of-work, связанной с большими тратами электроэнергии. Вместо вычислительных мощностей участников, имеет значение количество криптовалюты, находящейся у них на счету. Так, вместо использования большого количества электроэнергии для решения задачи PoW, у участника PoS ограничен процент возможных проверок транзакций. Ограничение соответствует количеству криптовалюты, находящейся на счету у участника[1].

Доказательство важности[править | править код]

Одним из вариантов комбинированного применения технологии PoS является «Доказательство важности» (Proof-of-importance, PoI) — алгоритм, использующийся в криптовалюте NEM. На вероятность получить право сформировать блок влияют три компонента[6]:

  1. количество единиц криптовалюты на балансе (значимыми для PoI являются балансы более, чем оговоренное число единиц, например, не менее 10 тыс. для NEM);
  2. активность аккаунта (число транзакций);
  3. время нахождения аккаунта в сети.

С ростом баланса влияние параметров изменяется — с ростом количества единиц криптовалюты на балансе увеличивается влияние 1-го параметра, и снижается влияние 2-го и 3-го параметров (PoI работает почти как PoS). Чем меньше баланс, тем сильнее влияние 2-го и 3-го параметров.

Если суммарный объём эмиссии криптовалюты ограничен, то минимальные требования к 1-му параметру формируют максимальное количество претендентов на создание блока.

Преимущества[править | править код]

  • Нет необходимости потреблять большое количество электроэнергии для защиты блокчейна. Например, Bitcoin и Ethereum вместе тратят более 1 миллиона долларов, в пересчете на электроэнергию, в день в рамках своих консенсусных механизмов[7].
  • Из-за отсутствия необходимости потреблять большое количество энергии, снижаются траты участников. Следовательно, нет необходимости повышать количество единиц валюты для мотивации участников[7].
  • Proof-of-stake позволяет использовать алгоритмы теории игр, чтобы эффективно противодействовать централизации[8].

Недостатки[править | править код]

Аргументы, вызывающие опасения[4]:

  • Доказательство доли владения даёт дополнительную мотивацию к накапливанию средств в одних руках, что может приводить к централизации сети[9].
  • Если образуется небольшая группа, которая сконцентрирует у себя достаточно большие средства, она сможет навязывать свои условия функционирования криптовалюты, с которыми будут несогласны большинство миноритариев, которые не контролируют форжинг[9].

Реализации[править | править код]

Peercoin[править | править код]

Peercoin— система, основанная на «чистом» proof-of-stake, в том смысле, что PoW используется только для начального распределения денежной массы[1].

Генерация блоков[править | править код]

Участники сети Peercoin имеют возможность создать блок исходя из следующего условия[1]:

 — текущее время, в данном неравенстве ограничивает попытки хэширования и блокирует создание следующего блока.

 — результат транзакции.

 — количество неизрасходованной криптовалюты транзакции.

Если у заинтересованной стороны есть ключ, контролирующий , то она может сгенерировать блок, используя ключ в качестве подписи. Подпись, в данном случае, будет служить доказательством выполнения условия. Например, участник, владеющий 50 единицами криптовалюты, создаст новый блок с вероятностью в 10 раз большей, чем участник, владеющий 5 единицами.

 — время, прошедшее с момента включения в блок результата транзакции . Вероятность сгенерировать следующий блок, сразу после генерации предыдущего очень мала, но она увеличивается со временем. Это позволяет избежать экспоненциального распределения между выплатами, повышая шансы участников, обладающих небольшим количеством криптовалюты.

 — данные предыдущего блока.

Участник, владеющий значительной частью всей криптовалюты системы, имеет возможность генерировать значительную часть блоков, так как вероятность генерации блока пропорциональна количеству монет, находящихся у него на счету. Поэтому, время от времени, заинтересованная сторона имеет возможность генерировать цепочки последовательных блоков[1].

 — постоянная, которая корректируется так, что блоки генерируются в среднем каждые 10 минут.

CoA[править | править код]

CoA[1] (chains of activity) частично базируется на основном элементе proof-of-activity, например, на лотерее между активными участниками через процедуру follow-the-satoshi (satoshi[10] — наименьшая единица криптовалюты, например, для биткойна она равна 0.00000001 BTC).

Follow-the-satoshi[править | править код]

Алгоритм, получающий на вход коэффициент satoshi между нулем и общим числом satoshi в обращении. Далее запрашивает блок, в котором этот satoshi был произведен и отслеживает транзакции, через которые он прошел до тех пор, пока не найдет участника, способного в данный момент потратить его. Например, если у Алисы есть 6 satoshi, а у Боба 2, то вероятность того, что Алиса будет выбрана следующим владельцем какого-либо satoshi в 3 раза выше чем вероятность выбора Боба[1].

Параметры протокола[править | править код]

  • Количество участников в группе, которая генерирует следующие блоки
  • Количество произведенных этой группой единиц криптовалюты
  • Количество генерируемых этой группой блоков
  • Функция
  • Минимальное время между генерацией блоков
  • Минимальная доля владения
  • Награда :

Процесс создания блоков CoA составляет блокчейн, состоящий из групп по последовательных блоков[1]:

Правила протокола[править | править код]

Правила протокола chains of activity[1]:

  1. Каждый новый блок генерируется одним участником
  2. Каждый новый блок связан с первым битом хэша
  3. Временной промежуток между двумя блоками и должен быть не меньше . Это значит, что, если следующие 4 блока созданы участниками , то временной промежуток между и должен быть не меньше
  4. После того, как группа из блоков создана, узлы сети формируют -битовое начальное состояние (англ. seed) , где  — входные значения
  5. Далее начальное состояние (англ. seed) используется для получения последовательности тождеств, использующихся для определения следующих владельцев через алгоритм follow-the-satoshi.
  6. Если полученный satoshi не израсходован, то владелец обязан предоставить дополнительную подпись, доказывающую владение хотя бы единицами криптовалюты, иначе участник не сможет сгенерировать новый блок.

Dense-CoA[править | править код]

Dense-CoA[1] — альтернативная реализация CoA, в которой участники, генерирующие следующие блоки в цепи, заранее неизвестны. В CoA генерация блока осуществляется одним участником, а в Dense-CoA каждый блок создается группой из участников:

Пусть  — необратимая функция. Пусть блок связан с начальным состоянием (англ. seed) , сформированным группой из участников, генерировавших данный блок. Участник , решающий, какие транзакции войдут в следующий блок , определяется с помощью алгоритма follow-the-satoshi с хэш-функцией в качестве входного значения. Оставшиеся участники определяются тем же алгоритмом, но в качестве входного значения используется , где .

Далее, выбранные принимают участие в процедуре генерации блока , которая состоит из двух этапов:

  1. Каждый участник , где , выбирает случайное секретное значение из
  2. Каждый участник подписывает сообщение и выкладывает свою подпись и прообраз в сеть.

Участник подписывает и выкладывает в сеть блок . Блок содержит: транзакции, хэш предыдущего блока , метку текущего времени, прообразов и совокупность всех подписей . Участники используют функцию для вычисления образов . Эти образы используются для получения . Далее проверяется допустимость подписи относительно открытых ключей участников .

Начальное распределение криптовалюты[править | править код]

Для криптовалюты, не использующей proof-of-work, существует один простой способ распределения денег между участниками — проведение IPO или аукциона. Однако, в таком случае, подразумевается, что изначально вся валюта контролируется одной стороной, что усложняет процесс децентрализации. Во многих криптосистемах, использующих proof-of-stake эта проблема решается посредством использования PoW для первоначальной генерации криптовалюты, которая будет циркулировать в системе в дальнейшем. Таким образом, первоначальная стоимость единиц криптовалюты определяется стоимостью их производства[1].

Критика[править | править код]

Некоторые авторы утверждают, что доказательство доли владения не является идеальным вариантом для распределенного консенсусного протокола[11].

Ничего на кону[править | править код]

Проблема «ничего на кону» заключается в том, что, в случае консенсусной ошибки, генераторы блоков ничего не теряют, голосуя за несколько ветвей цепочек. Это не позволяет консенсусу когда-либо установиться.[11]

Двойная трата[править | править код]

Поскольку формирование цепочки требует небольших затрат ресурсов (в отличие от PoW систем), любой может злоупотребить проблемой с попыткой совершить двойную трату средств «бесплатно»[11].

Варианты решения проблем[править | править код]

На практике проекты решали эти проблемы разными путями:

  • Протокол Slasher, предлагаемый Ethereum, позволяет пользователям «наказывать» мошенников, которые работают в конце более, чем одной ветви цепочки[12]. Такое предполагает, что вы должны дважды подписать создание новой ветви цепочки, и что вы можете быть наказаны, если создадите ответвление без подтверждения доли. Однако протокол Slasher так и не был принят. Разработчики Ethereum пришли к выводу, что доказательства доли в этом случае нетривиальны[13]. Вместо этого Ethereum был разработан протокол Ethash, использующий PoW[14].
  • Peercoin использует подписанные приватным ключом разработчика контрольные точки. Благодаря этому нет возможности переорганизации цепочки блоков ранее последней контрольной точки. В данном случае компромисс заключается в том, что разработчик Peercoin является центральным органом, управляющим цепочкой блоков[4].
  • Протокол Nxt позволяет реорганизовать последние 720 блоков. Тем не менее, это только искажает проблему: клиент может следовать за вилкой из 721 блока, независимо от того, является ли она самой длинной цепочкой.[15].
  • Гибридный алгоритм PoS и PoW протокола Decred. В этом случае используется подтверждение доли, зависимое от метки времени алгоритма PoW, которое предложено назвать «Proof-of-Activity» (Доказательство деятельности), где проблема доказательства решается наличием второго доказательного механизма — PoW[16].

Примечания[править | править код]

  1. 1 2 3 4 5 6 7 8 9 10 11 12 Cryptocurrencies Without Proof of Work. Springer.com.
  2. Доказательство доли владения. «Proof-of-Stake Algorithmic Methods: A Comparative Summary». Social Science Research Network (SSRN). 11-03-2018.
  3. Proof of Activity: Extending Bitcoin’s Proof of Work via Proof of Stake.
  4. 1 2 3 PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake.
  5. 1 2 Karl Whelan. Рассуждения на тему методов защиты криптовалют. 11.06.2011 (англ.) forbes.com (20.11.2013). Проверено 1 сентября 2014.
  6. Blockchain sadaqa mechanism for disaster aid crowd funding.
  7. 1 2 Vitalik Buterin. A Proof of Stake Design Philosophy.
  8. Pos vs Pow. steemit.com.
  9. 1 2 Andrew Poelstra. Децентрализованный консенсус в Proof-of-stake невозможен. (англ.). wpsoftware.net (28.05.2014). Проверено 23 сентября 2014.
  10. Satoshi. en.bitcoin.it.
  11. 1 2 3 Proof of Activity: Extending Bitcoin's Proof of Work via Proof of Stake.
  12. Slasher: A Punitive Proof-of-Stake Algorithm. Ethereum Blog (15 января 2014). Проверено 11 августа 2017.
  13. Slasher Ghost, and Other Developments in Proof of Stake. Ethereum Blog (3 октября 2014). Проверено 11 августа 2017.
  14. Ethereum: A Secure Decentralised Generalised Transaction Ledger. — «Ethash is the planned PoW algorithm for Ethereum 1.0».
  15. Nxt Whitepaper: History Attack. Nxtwiki  (недоступная ссылка — история). Проверено 2 января 2015. Архивировано 3 февраля 2015 года.
  16. Bentov I., Gabizon A., Mizrahi A. Cryptocurrencies without Proof of Work. // arXiv Cryptography and Security.. — 2015.