Это не официальный сайт wikipedia.org 01.01.2023

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

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

(перенаправлено с «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]. 15 сентября 2022 года Ethereum перевели на алгоритм консенсуса Proof-of-Stake[5].


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

ИдеяПравить

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

Доказательство важностиПравить

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

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

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

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

ПреимуществаПравить

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

НедостаткиПравить

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

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

РеализацииПравить

PeercoinПравить

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

Генерация блоковПравить

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

h a s h ( p r e v B l o c k s D a t a , t i m e I n S e c o n d s , t x o u t A ) d 0 c o i n s ( t x o u t A ) t i m e w e i g h t ( t x o u t A )  

t i m e I n S e c o n d s   — текущее время, в данном неравенстве ограничивает попытки хеширования и блокирует создание следующего блока.

t x o u t A   — результат транзакции.

c o i n s ( t x o u t A )   — количество неизрасходованной криптовалюты транзакции.

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

t i m e w e i g h t ( t x o u t A )   — время, прошедшее с момента включения в блок результата транзакции t x o u t A  . Вероятность сгенерировать следующий блок, сразу после генерации предыдущего очень мала, но она увеличивается со временем. Это позволяет избежать экспоненциального распределения между выплатами, повышая шансы участников, обладающих небольшим количеством криптовалюты.

p r e v B l o c k s D a t a   — данные предыдущего блока.

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

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

CoAПравить

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

Follow-the-satoshiПравить

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

Параметры протоколаПравить

  • Количество участников в группе, которая генерирует следующие блоки w 1  
  • Количество произведенных этой группой единиц криптовалюты 2 k  
  • Количество генерируемых этой группой блоков l = k w  
  • Функция h : { 0 , 1 } l { 0 , 1 } k  
  • Минимальное время между генерацией блоков G 0  
  • Минимальная доля владения C 0  
  • Награда C 1  : 0 C 1 C 0  

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

. . . l , . . . l , . . . l . . .  

Правила протоколаПравить

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

  1. Каждый новый блок генерируется одним участником
  2. Каждый новый блок B i   связан с первым битом b i   хеша h a s h ( B i )  
  3. Временной промежуток между двумя блоками B i   и B j   должен быть не меньше | j i 1 | G 0  . Это значит, что, если следующие 4 блока B i , B i + 1 , B i + 2 , B i + 3   созданы участниками A i , A i + 1 , A i + 2 , A i + 3  , то временной промежуток между B i + 3   и B i   должен быть не меньше 2 G 0  
  4. После того, как группа из l   блоков B i , B i + 1 , B i + 2 , B i + 3   создана, узлы сети формируют k  -битовое начальное состояние (англ. seed) S B i l = j = 1 l b i j  , где b i j   — входные значения
  5. Далее начальное состояние (англ. seed) S B i l   используется для получения последовательности тождеств, использующихся для определения следующих l   владельцев через алгоритм follow-the-satoshi.
  6. Если полученный satoshi c < C 0   не израсходован, то владелец обязан предоставить дополнительную подпись, доказывающую владение хотя бы C 0 c   единицами криптовалюты, иначе участник не сможет сгенерировать новый блок.

Dense-CoAПравить

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

l {        

Пусть h : { 0 , 1 } n { 0 , 1 } n   — необратимая функция. Пусть блок B i 1   связан с начальным состоянием (англ. seed) S B i 1  , сформированным группой из l   участников, генерировавших данный блок. Участник A l  , решающий, какие транзакции войдут в следующий блок B i  , определяется с помощью алгоритма follow-the-satoshi с хеш-функцией h a s h ( i , l , S B i 1 )   в качестве входного значения. Оставшиеся участники A 1 , A 2 , . . . , A l 1   определяются тем же алгоритмом, но в качестве входного значения используется h a s h ( i , l , S B j 1 )  , где j 1 , 2 , . . . , l 1  .

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

  1. Каждый участник A j  , где j 1 , 2 , . . . , l  , выбирает случайное секретное значение из R j { 0 , 1 } n  
  2. Каждый участник подписывает сообщение M = d e f h ( R 1 ) h ( R 2 ) . . . h ( R l )   и выкладывает свою подпись s i g n S k j ( M )   и прообраз R j   в сеть.

Участник A l   подписывает и выкладывает в сеть блок B i  . Блок содержит: транзакции, хеш предыдущего блока B i 1  , метку текущего времени, l   прообразов R 1 , R 2 , . . . , R l   и совокупность всех подписей s ^ ( M ) = { s i g n S k j } j = 1 l ( M )  . Участники используют функцию h   для вычисления образов h ( R 1 ) , h ( R i ) , . . . , h ( R l )  . Эти образы используются для получения M  . Далее проверяется допустимость подписи s ^ ( M )   относительно открытых ключей p k 1 , p k 2 , . . . , p k l   участников A 1 , A 2 , . . . , A l  .

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

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

КритикаПравить

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

Ничего на конуПравить

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

Двойная тратаПравить

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

Варианты решения проблемПравить

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

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

ПримечанияПравить

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