Proof of stake что это
Перейти к содержимому

Proof of stake что это

  • автор:

PROOF OF STAKE – это скам

Невзирая на «хлесткий» заголовок эта статья скорее нацелена положить начало дискуссии и указать на ряд проблем, которые необходимо решить, прежде чем праздновать победу над «расточительным» алгоритмом Proof of Work.

Понравился материал — подписывайся на телеграм-канал 21 идея и обрати внимание на другие ресурсы проекта — web, YouTube.

Proof of Stake (PoS) – это мошенничество. Когда я говорю это, я имею в виду, что PoS 1) заявлен как система консенсуса, и 2) фактически неспособен на самом деле обеспечить консенсус.

Чтобы понять, почему это так, мы должны сначала изучить, как работает Proof of Work (PoW) – это поможет нам осознать, почему PoS не является адекватной его заменой.

Как работает PROOF OF WORK

Давным-давно, еще до открытия Биткоина, многие пытались создать «цифровую наличность».

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

В 2008 году Сатоши Накамото предложил решить проблему путем введения нового компонента, известного как «Proof of Work», заимствованного из известной (на тот момент) лишь в узких кругах техники фильтрации спама в электронной почте.

Идея заключалась в том, чтобы внедрить метод сжигания электричества доказуемым способом. Используемая электроэнергия не производит ничего непосредственно ценного, кроме доказательства того, что (приблизительно) определенное количество электроэнергии было потреблено тем или иным узлом (на эту работу. прим.переводчика).

Конкретный метод заключается в следующем: [1]

  • Все узлы могут генерировать “лотерейные билеты”.
  • Эти лотерейные билеты криптографически привязаны к их решениям о том, какие транзакции они одобряют.
  • Чтобы “стереть защитный слой” лотерейного билета требуется определенное количество вычислительной мощности.
  • Дизайн используемых алгоритмов математически гарантирует отсутствие возможности предъявить «лотерейный билет», кроме как стереть защитный слой, затратив при этом определенное количество вычислительных ресурсов.
  • Диапазон принимаемых результатов лотерейных билетов определяется сетью.
  • Если узел может предъявить лотерейный билет, частота выпадания которого – один на миллион, сеть может сделать вывод, что узел в среднем проделал работу по перебору около миллиона лотерейных билетов.
  • Сеть начисляет цифровую валюту узлам, представившим выигрышный лотерейный билет.
  • Поскольку лотерейные билеты привязаны к решениям о валидации транзакций, узел, одобривший недобросовестные транзакции, не сможет получить свое вознаграждение.
  • Если узел поступит подобным образом, он все равно понесет реальные затраты, связанные со стиранием слоя этих билетов («майнинг»), например, электроэнергию, но не получит за это никакого вознаграждения.
  • Чтобы поддерживать стабильность, сеть увеличивает редкость выигрышных лотерейных билетов (сложность), если люди выигрывают слишком часто. Например: если в настоящее время для победы требуется перебрать в среднем 10 миллиардов лотерейных билетов, а за то время, которое должно уйти на поиск десяти, найдено двадцать выигрышных билетов, сложность будет увеличена до одного к двадцати миллиардам. (Сеть пытается достичь показателя в один победитель каждые десять минут. Если производство слишком велико, сложность повышается, а если производство слишком мало, сложность снижается).

Однако это еще не все. PoW является жизненно важной деталью машины, но это не вся машина. Для осознания этого мы должны копнуть глубже.

Истоки цифровой валюты

“Цифровые подписи обеспечивают часть решения, но основные преимущества теряются, если для предотвращения двойных трат все еще требуется доверенная третья сторона.” — Сатоши Накамото

Если у вас есть файл на компьютере, то, несмотря на убеждения сторонников NFT, невозможно помешать людям скопировать его. Если этот файл является вашей цифровой валютой, вы сталкиваетесь с проблемой. Если люди могут эффективно CTRL-C -> CTRL-V вашу валюту, эта валюта бесполезна.[2]

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

По сути: если у меня есть цифровая валюта на сумму $1, ничто не может помешать мне попытаться отправить тот же $1 двум разным людям, превратив его таким образом в $2. Разве что оба получателя могут сравнить свои входящие транзакции, чтобы понять, что их обманывают, решить эту проблему невозможно.

(Если уж на то пошло, чистая криптография предлагает частичное решение этой проблемы. Некоторые схемы цифровой подписи приводят к утере ключа-подписи, если вы пытаетесь подписать две разные вещи одним и тем же ключом. Однако метод восстановления ключа заключается в выполнении математического расчета над двумя подписями. Чтобы это произошло, две подписи должны быть собраны в одном месте одним человеком).

До появления Биткоина люди пытались решить эту проблему на протяжении десятилетий. Система DigiCash была предложена Дэвидом Чаумом в 1989 году, и она действительно решила эту проблему, но за это решение пришлось заплатить централизацией. Все транзакции проходили через сервер под названием «монетный двор» (хотя и в зашифрованном формате), и этот сервер, поскольку у него был полный список всех транзакций, мог проверить их на предмет двойных трат.

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

Но у Сатоши Накамото, изобретателя Биткоина, на этот счет были свои мысли:

  1. Если вы требуете, чтобы все транзакции заносились в реестр, вы можете (по определению) игнорировать транзакции, которые не заносятся в этот реестр. Это означает, что вы должны заботиться о двойном расходовании средств только в пределах этого реестра.
  2. Если в реестре появляется две конфликтующие транзакции, действительной всегда будет та, которая была опубликована первой.
  3. Если бы у вас был так называемый «сервер временных меток», вы могли бы использовать его, чтобы выяснить, какая транзакция была первой.
  4. Мы можем создать такой сервер временных меток, полагаясь на алгоритм Proof of Work, как описано выше.

Более подробно: используя локальные часы моего узла, я могу проверить, что в новых поступающих блоках (описанных как «лотерейные билеты» в моей аналогии выше) время указано верно. Имея непосредственный доступ к серии блоков («блокчейн»), я могу угрожать отказом принятия транзакций (что сделает их деньги бесполезными) в случае, если эти временные метки не точны, т.е. не соответствуют моим (локальным) часам.Сейчас мне, похоже, стоит извиниться перед читателем за то, что описываю этот довольно обыденный процесс в таких мучительных подробностях. Но это действительно необходимо: чтобы понять, почему хорошие механические часы лучше приличной китайской [3] копии, недостаточно посмотреть на маркетинговые материалы, глянцевые брошюры, а затем закончить беглым взглядом на корпус – «выглядит примерно так же, три стрелки и циферблат» – и заметить, что они, кажется, неплохо показывают время. Мы должны разобрать их и посмотреть, что внутри.

За 2 доллара это, вероятно, неплохое приобретение.

Вся цель системы заключается в точном отображении времени. Время здесь очень, очень важно. Значимость этого невозможно переоценить.

PoW является жизненно важной деталью системы, но не самой системой. Есть и другие ее детали. И если вы хотите заменить одну деталь другой, это должна, по сути, быть та же деталь. Помимо этого, она должна обладать теми же или лучшими качествами.

Является ли PoS, по сути, той же самой деталью? Обладает ли PoS аналогичными свойствами?

Как работает PROOF OF STAKE в теории

Основная идея PoS довольно проста:

  1. Вместо того чтобы покупать оборудование для майнинга за $1000, участники могут заблокировать криптовалюту на сумму, эквивалентную $1000 («стэйкинг»).
  2. Вместо того чтобы через майнинг блоков указывать, какие блоки являются действительными, пользователи могут просто проголосовать за них в сети и подписать свой голос цифровой подписью.
  3. Вместо того, чтобы побеждал блок, на майнинг которого было потрачено больше всего ресурсов [4], побеждает блок, набравший наибольшее количество голосов.
  4. Если поведение узлов окажется злонамеренным, вместо того, чтобы потерять вознаграждение за проделанную работу, они буквально потеряют всю свою заблокированную долю – как если бы вся их майнинг-ферма, настроенная для работы с алгоритмом PoW, сгорела при пожаре.

Адепты PoS будут утверждать, что, поскольку эти стимулы равны или превосходят стимулы системы PoW (это правда), эта система также является такой же надежной или даже превосходящей систему PoW (это ложь). Их проблема заключается в том, что помимо написания списка желаемых стимулов, также необходимо создать систему, которая эти стимулы внедрит.

Если использовать аналогию, то это сродни тому, как если бы кто-то сел проектировать здание следующим образом:

  1. Сначала рисуем желаемый экстерьер.
  2. Рисуем желаемый интерьер.
  3. Делаем основные замеры, чтобы убедиться, что размеры интерьера не превышают размеры экстерьера.
  4. Решаем, что дом готов к возведению и отправляем его строителям на постройку.

Разумеется, упущена самая важная часть – конструктивная система балок и несущих стен, без которой здание на является зданием!

Наши герои должны на практике показать, как будет работать их система, и вот тут-то и начинается самое интересное.

“Ничего на кону”

В PoW недобросовестные участники сети подвергаются наказанию. Система, которая осуществляет это наказание, проста: они потратили электроэнергию; если они не получают ожидаемую прибыль в криптовалюте, они несут убытки. Только если система примет активное решение вознаградить их, они возместят свои затраты.

Таким образом гарантировано наказание за недобросовестное поведение: необходимость платить за электричество, не получив вознаграждения. В силу законов физики превращение энергии в тепло увеличивает энтропию, а время не повернуть вспять. Узел не может “размайнить” блок и получить свою электроэнергию обратно.

PoS, по своей сути, не имеет такой же системы. Как и в случае с проблемой двойной траты, любой пользователь с цифровым ключом может подписать все, что угодно, без каких-либо последствий. Поэтому им приходится воссоздавать похожую синтетическую структуру стимулов.

Здесь и появляется проблема: поскольку их наказание является синтетическим, оно существует внутри системы. Поскольку наказание существует внутри системы, оно может повлиять только на то, над чем система имеет контроль – в данном случае на заблокированные депозиты узлов. Поэтому, как только пользователи забирают свои депозиты, они становятся неприкасаемыми. В этом и заключается проблема «ничего на кону». Неизбежно наступит момент, когда узел сможет “разморозить” все свои вклады (стейк. прим.переводчика) и вывести деньги. В этот момент у сети возникает проблема:

  1. Этот ключ действителен для подписи любого количества версий, скажем, блока номер 200, и нет объективного, внутрисистемного стандарта определения какая же версия является легитимной, кроме как «та, которая была опубликована первой».
  2. Узел может подписывать этим ключом все, что захочет, без каких-либо последствий. Нет способа наказать его, потому что он ничем не рискует [5].

Практически все системы пытаются решить эту проблему одним и тем же способом:

  1. Если узел подписывает другую версию того же блока в течение достаточно короткого периода времени, «сократить» его депозит (т.е. наказать его внутри системы).
  2. Если узел подписывает другую версию того же блока, например, через год, просто игнорировать произошедшее.

Вот в чем проблема: как вы узнаете, какая версия была первой? Если вы были там с самого начала и видели все своими глазами, то это просто. Но что, если вы только что установили клиент, а ваш узел пытается синхронизироваться? Что произойдет, если вам будут представлены два одинаковых блока, и вы должны будете решить, какой из них выбрать?

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

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

Хахаха, шучу. На самом деле этот механизм не делает последнего. Для решения этой проблемы понадобится какой-то другой метод:

“На основании всех приведенных выше аргументов мы можем смело заключить, что угроза создания злоумышленником форка с произвольно большого расстояния, к сожалению, является фундаментальной, и во всех недегенеративных реализациях эта проблема является фатальной для успеха алгоритма PoS в модели безопасности PoW. Однако мы можем обойти этот фундаментальный барьер с помощью небольшого, но все же фундаментального изменения в модели безопасности”. – Виталик Бутерин.

Другими словами: если оценивать PoS в рамках той же модели угроз, что и PoW, первый является фундаментально (и фатально!) небезопасным. Это признают даже его главные сторонники. Только если мы понизим уровень безопасности внесем «незначительные, но, тем не менее, фундаментальные изменения» в модель безопасности, ее можно будет назвать «безопасной».

Пара вопросов

Если в схеме существует фундаментальный недостаток безопасности, который может быть «устранен» только путем снижения стандартов, по которым она оценивается, является ли эта схема «безопасной»?

Если сторонники этой, якобы, безопасной схемы знают об этом недостатке, но публично не сообщают о нем никому (кроме неоднозначных высказываний в блог-постах), следует ли считать это мошенничеством, недобросовестным отношением или просто ложью путем замалчивания?

Если, якобы, заслуживающие доверия люди знали об этой проблеме, но не сказали об этом тем, кто доверился им – как это должно отразиться на их авторитете и авторитете тех, кто, в свою очередь, их поддержал?

“Но если страж увидит, что идет меч, и не затрубит в рог, чтобы предупредить народ, и меч придет и лишит жизни кого-то из них, то этот человек будет взят за свой грех, а стража за эту гибель Я призову к ответу.” — Иезекииль 33:6

Человек за занавесом

К каким можно прийти заключениям?

  1. Поскольку PoS не может сам по себе привести к консенсусу, он не является механизмом консенсуса.
  2. Если система все еще работает, то за ней должен стоять реальный механизм консенсуса (например, не PoS).

Так и есть, я не выдумываю:

“Это предположение о безопасности, идея «получить хэш блока от друга», многим может показаться неоригинальной; разработчики Биткоина часто говорят о том, что если решением долгосрочных атак (long range attack) является некий альтернативный решающий механизм X, то безопасность блокчейна в конечном итоге зависит от X, и поэтому алгоритм в действительности не более безопасен, чем использование X напрямую – подразумевая, что большинство X, включая наш подход, основанный на социальном консенсусе, небезопасны.
Однако эта логика игнорирует причины, по которым алгоритмы консенсуса существуют в первую очередь. . Слабая субъективность как раз и является правильным решением». — Виталик Бутерин, не отрицающий утверждение, которое сам же пытается опровергнуть.

Насколько мне известно, существует три таких механизма X, предложенных для фактического консенсуса:

  1. Локальный консенсус. Это означает, что каждый узел имеет свой собственный взгляд на происходящее. Это, действительно, очень децентрализованный подход. К сожалению, в данном случае консенсус неполон, поскольку каждый узел имеет свое собственное представление о происходящем. Пример: Bitcoin Cash ABC.
  2. Доказательство авторитета. Простыми словами это означает, что у вас есть доверенный орган, который подписывает блоки. Это очень эффективный метод достижения консенсуса, который даже не претендует на децентрализацию. Пример: Peercoin.
  3. Консенсус “звонок другу». Мифическое животное, которое очень туманно описано, но, безусловно, является и децентрализованным, и эффективным механизмом консенсуса.

Очевидно, что никому не нужен ни первый, ни второй вариант. Децентрализованный консенсус – это то, к чему мы стремимся, ведь добиться одного из двух, в отличие от обоих одновременно, невероятно просто. Итак, давайте изучим этот Консенсус “звонок другу» (далее PFC, Phone a Friend Consensus), более подробно. А точнее, что делать, когда он нарушен?

В PoW нам не нужно беспокоиться о том, что «сеть» в чем-то ошибается. До тех пор, пока мы исправно подключены и проверяем каждое действие – мы знаем, что находимся на правильном пути. Мы уверены, что все остальные в конечном итоге примут общую истину. Без вариантов.

В PFC, однако, мы принимаем постмодернистский взгляд на истину. Что произойдет, если я своими глазами видел, что блок 200A был первым, но «сеть» считает, что первым был блок 200B? Пойду ли я на Reddit, чтобы попытаться их убедить? А если они не захотят слушать? Что если платформы для обсуждения подвергнутся цензуре?

Более того: что произойдет, если «сообщество» считает одно, а серьезные дяди с деньгами заявляют обратное? В теории обе эти атаки кажутся чрезвычайно надуманными, но как насчет реального мира? Два примера:

  • В 2017 году в Биткоине разгорелась спорная и токсичная дискуссия о том, что делать с ограничением размера блока в 1 МБ. Во время этих дебатов многие сторонники «больших блоков» были забанены в /r/bitcoin. В итоге победили сторонники «малых блоков» [6]. Сыграли ли запреты какую-то роль в произошедшем?
  • В Ethereum после фиаско The DAO Ethereum Foundation решил провести хардфорк, чтобы спасти инвесторов. В итоге Ethereum одержал победу, а Ethereum Classic (монета, не подвергшаяся хардфорку) утратила актуальность.

Итак, похоже, что в «консенсусе, основанном на сообществе», есть примерно четыре группы участников. Очевидно, что одна и та же группа не может одновременно вести или быть ведомой в одном и том же вопросе или по отношению к одной и той же проблеме противоположными способами; и поэтому всякий раз, когда это противоречие возникает в вещах, кажущихся одинаковыми, мы знаем, что на самом деле они не одинаковые, а разные. Это:

  1. Большие дяди с деньгами и властью.
  2. Люди, обладающие властью над дискуссионными площадками (форумами, чатами).
  3. Широкая масса людей.
  4. Вы.

Итак, что происходит, если кто-то из этих субъектов не согласен с другим? Давайте изучим этот вопрос:

  1. Против любой из этих групп людей ваше мнение, в реальности, не будет иметь никакого значения.
  2. Если широкие массы людей не согласны с владельцем платформы, их мнение будет изменено в соответствии с правилами, иначе они потеряют право голоса.
  3. Если люди, которые фактически управляют проектом, не согласны с теми, кто управляет их платформой, эта платформа потеряет пресловутый статус «одобрения».
  4. Если люди, управляющие проектом, не согласны с сообществом, у сообщества есть выбор: отделиться – потерять весь институциональный капитал и все остальное, как в Ethereum (Classic, прим.переводчика), – или вернуться в строй.

Таким образом, на практике «консенсус сообщества» – это лишь запутанная и завуалированная версия «доказательства авторитета». И, как г-н Бутерин знает не понаслышке, «безопасность блокчейна в конечном итоге зависит от X».

Если это не работает, то как же тогда получается, что оно работает?

Мы уже выяснили, что система, которая работает так, как предлагают промоутеры, буквально невозможна. Значит, система, которая действительно работает, должна пожертвовать одной из трех вещей – либо она 1) не является PoS (например, скрытый PoW), либо она 2) не децентрализована, либо 3) она не в состоянии достичь консенсуса.

На практике, однако, между этими понятиями часто нет четкой границы. Если одни и те же люди владеют всеми токенами, контролируют все стэйкинг-пулы, управляют проектом и запустили все узлы (full node) – атака изначально невозможна. Все настолько централизовано, что на расстоянии создается ложное впечатление децентрализации.

Вспомните теорему CAP: При наличии разделения вам приходится выбирать между согласованностью и доступностью, но при его отсутствии вы получите и то, и другое без необходимости выбора. Если каждый, кто обладает техническими средствами для проведения атаки, является приближенными владельца, корабль продолжает плыть. Или, как выразился Дэвид Джерард:

Рынку наплевать на идеологию Биткоина, стоящую за децентрализацией. . Рынок относится к централизованно управляемым токенам ICO и централизованно управляемым криптовалютам, таким как Ripple (XRP), как к объектам того же класса, что и биткоин или эфир. Рынок хочет того, чего он хочет, а не того, чего хотят от него идеологи. .
До тех пор, пока:

сеть остается достаточно безопасной, чтобы функционировать

цена эфира не срывается в мертвое пике

токены ICO продолжают пампить и дампить

новейшие крипто котята не слишком сильно засоряют сеть

и не произойдет никаких катастроф, более затратных, чем те, что привычны в нынешней системе, такие как The DAO или катастрофа кошелька Parity

– обновление Casper будет достаточно хорошим Proof of Stake, чтобы сообщество могло с ним жить.

Обновление Casper не должно быть достаточно хорошим для идеологов, оно просто должно функционировать достаточно хорошо для рынка.

Модерируемый на бумаге, охлаждаемый чернилами редактор

Нетрудно понять, почему люди ведутся на это. PoW обещает им, по сути, низкоэффективную [7] систему, которая дает определенный результат, используя методы, явно непостижимые для среднего пользователя. PoS обещает им хорошую систему, которая дает тот же результат, используя методы, которые примерно так же непостижимы.

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

В любом случае, того факта, что человек продвигает PoS или серьезно относится к тем, кто это делает, должно быть достаточно, чтобы лишить его права считаться авторитетом в любом вопросе. Тот факт, что этого не происходит, а откровенные мошенники с энтузиазмом реабилитируются, является обвинительным актом в адрес предполагаемого «криптосообщества».

Есть ли замена PROOF OF WORK?

Я не знаю, заменим ли мы когда-нибудь PoW на какой-то другой механизм консенсуса. Возможно, лет через десять появится лучшее решение. Чтобы соответствовать модели безопасности Биткоина, новый алгоритм должен обладать следующими качествами:

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

PoW обладает всеми тремя характеристиками, но с некоторыми издержками.

PoS с натяжкой обладает одной из них, но не справляется с двумя другими (необратимость и самосертифицируемость).

Доказательство пространства (Proof of Space) кажется, может сработать, но только в случае бесполезности сохраняемых данных, перенося тем самым трату ресурсов [8] с электроэнергии на электронику. Однако я не поддерживаю конкретную реализацию Чиа.

Возможно, есть небольшой проблеск надежды в объединении PoW и PoS. Таким образом, вы могли бы заменить часть майнинга ставками. Я не уверен в этом, но это моя догадка. Однако я знаю одно: когда речь идет об обещаниях будущего, которые дают криптопромоутеры, не верьте до тех пор, пока не увидите доказательств.

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

Циничные люди заметят, что именно так на самом деле работает большинство криптовалютных проектов – это не только выгоднее, но и дешевле. Они не лгут, когда говорят, что вы попадаете на самый первый этаж только в том случае, если подразумевают, что когда-нибудь будет построен второй.

  1. Хотите верьте, хотите нет, но это упрощение.︎ Подробнее об алгоритме Proof of Work можно узнать здесь, здесь, здесь и здесь
  2. Я не пытаюсь привести здесь какой-то жесткий аргумент против инфляции. Я лишь хочу сказать, что валюта, основанная на том, что можно взять любой клочок бумаги и написать на нем самое большое число, которое только можно себе представить, неэффективна.︎.
  3. Нет ничего плохого в китайской часовой технике, есть много качественных китайских часовых брендов, и производство многих «западных» брендов также расположено в Китае. Я не утверждаю, что качество всей продукции из Восточной Азии оставляет желать лучшего, просто (практически) вся продукция низкого качества производится в Восточной Азии. (На это можно возразить, что все товары любого вида производятся в Восточной Азии)︎.
  4. Вероятностно.︎
  5. Иногда люди переопределяют «ничего на кону», чтобы обозначить что-то другое, и называют это нападением издалека.︎
  6. Я не поддерживаю ни одну из сторон в этом конфликте, я лишь говорю, что соц. платформы имеют силу.︎
  7. Например, в плане траты энергии. Как система консенсуса, она превосходна.︎
  8. Это не значит, что трата $100 на жесткий диск не предпочтительнее траты $100 на электричество.︎

Перевод статьи yanmaani Proof of stake is a scam and the people promoting it are scammers подготовлен проектом 21идея

Proof-of-Stake: взгляд изнутри

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

Эта статья будет полезной всем разработчикам, кто уже столкнулся с уязвимостями PoS или кому всё ещё только предстоит.

Ужасаемся под катом.

Крупица истории

На просторах интернета прослеживается зарождение Proof-of-Stake (PoS) в Peercoin после дискуссии на одном из форумов в 2011 году, последующее использование в Novaсoin и дальнейшее распространение в PIVX и прочих форках Bitcoin. Достаточно примитивную PoS-логику вынесли в модуль kernel.h / kernel.cpp , которая и кочует по пространствам форков в виде различных франкенштейнов.

Алгоритм PoS прошёл несколько стадий развития, кто-то даёт им версии. Сейчас варианты PoS разделились по естественным причинам, появился DPoS. Одним из самых передовых решений является протокол Casper в Ethereum.

Любому блокчейну требуется генерация блоков и за кем-то должно быть право построить новый блок. Если в таком блокчейне как система контроля версий Git это делает автор без особой конкуренции, то в криптовалютах идёт ожесточённая борьба за награду блока в рамках Proof-of-Work (PoW) — нахождение такой комбинации переменных входных параметров путём подбора, которая даёт результат, соответствующий детерминировано заданной цели (добыча, майнинг).

PoS заменяет Proof-of-Work (PoW) с целью избежать бесполезной траты ресурсов на майнинг. Вместо этого все входные параметры строго заданы с константной характеристикой на основе существующих сбережений держателей монет. Поэтому PoW требуется как стартовый этап для PoS, если не прибегать к различным вариантам изначального заложенного обогащения создателей монеты.

Зачем?

Экономия электроэнергии примерно так же важна разработчикам и держателям монет как ограничение выбросов парниковых газов для производителей и потребителей. Жестокая правда в другом:

  1. проекты на основе PoW подвержены т.н. «атакам 51 процента»: атакующие могут накинуть большие мощности, создать паралелльную цепь, а потом внезапно опубликовать её с иным движением монет по счетам (т.е. двойная трата),
  2. майнерам PoW необходимо покрывать свои затраты и вкладываться в наращивание мощностей — это прямой отток капитала из проектов,
  3. владельцы сбережений желают поддерживать её покупательную способность путём самонаращивания капитала, а не смотреть на естественную инфляцию.

На живом примере: в ноябре-декабре 2018 были попытки атак; потом в декабре-феврале был ажиотаж как на самую доходную монету для майнинга на видеокартах; курс просел с 2+ до 0.5 USD; после перехода на PoS, курс поднялся до 1 USD уже через неделю и приток инвестиций усилился.

Технические моменты

Внимание: в данном разрезе речь идёт именно о «традиционном» PoS в том виде, как он есть в Peercoin, PIVX и их форках.

Надо понимать, что отсутствует какая-либо централизация и учёт «очков». В данном варианте работает всё тот же принцип удачи как и в PoW.

1. Терминология

Терминология относительно общая, но в различных реализация свои нюансы:

  • PoW target — цель = базовая цель, обычно 2^240 (0x0000ffff. ), делённая на сложность блока (увеличивает количество нулей спереди).
  • Block difficulty — сложность блока относительно базовой цели, детерминировано устанавливаемая на основе текущего темпа роста цепи.
  • UTXO — Unspent Transaction Output, пара из хеша транзакции и номер выхода.
  • CoinBase — специальная транзакция с индексом 0 в блоке, где содержится вознаграждение.
  • Stake или CoinStake — специальная транзакция с индексом 1 в блоке.
  • Stake Input — UTXO, который соответствует требованиям для ставки по размеру и возрасту.
  • Stake Modifier — специальный детерминировано вычисляемый параметр для каждого Stake Input.
  • Stake Hash — результат хеширования, который должен быть арифметически меньше Stake Target.
  • Stake Target — то же, что и PoW target, но пропорционально увеличенная суммой Stake Input относительно минимальной ставки.
  • Block Signature — подпись блока.
  • Fork — разветвление цепи.
  • Split — разделение сети.
  • Orphan — отброшенные блоки из-за выбора другой альтернативы.

2. Анатомия

  1. Находим все UTXO, которые соответствуют требования Stake Input
  2. Находим Stake Modifier.
  3. Умножаем PoW Target на сумму Stake Input
    • в миллионных долях по факту — поэтому 1 MH PoW хешрейта экспериментально выходит равным одной монете.
  4. Получаем Stake Hash = H(Stake Modifier, Stake Block Time, UTXO output index, UTXO txid, Current Block Time) .
    • переменный параметр только Current Block Time
  5. Если Stake Hash >= Stake Target , то пытаемся подобрать Current Block Time в допустимом промежутке.
    • нужно учитывать возможность переполнения Stake Target при умножении на сумму Stake Input в зависимости от реализации.
  6. Запихиваем Coinbase в tx[0], а CoinStake в tx[1].
    • бенефициар’ом Coinbase является тот же скрипт (адрес), что и у Stake Input.
  7. Подписываем блок.
2.1. Время блока:

Нетрудно заметить, что жульничество со временем может дать некоторую выгоду. Стандартный консенсус ограничивает нижний и верхний предел.

Нижним всегда задаётся среднее время блоков за последние N блоков, обычно за 11. Это допуск на неточность времени на генерирующих узлах.

Исторический верхний предел был задан для PoW пальцем в небо в 2 часа. Увеличение интервалов уменьшает сложность и делает ветку менее привлекательной — поэтому нет смысла. Зато для PoS смысл есть.

PIVX и другие ограничивают время в будущем в максимум 3 минуты. Некоторые ставят более жёсткое ограничение, но это создаёт проблемы у пользователей. Некоторые реализации PoS решили изменить минимальные интервалы Current Block Time с одной секунды до 15-16 секунд.

2.2. Stake Modifier:

Stake Modifier задумывался как средство для затруднения предсказания и строительства цепи наперёд, но что-то пошло не так.

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

В оригинале берётся промежуток в 64 интервала. Этот промежуток прогрессивно делится на 64 неравные части. Границы округляются к минутам. По границам выбираются существующие блоки и с них берётся по одному последнему биту. Так получается число в 64-бита, чем-то похожее на Nonce.

Интервал в Peercon 20 минут, но ребята из PIVX решили что интервал в 1 минуту, округлённый до минуты — это то, что доктор прописал.

В общем, в некоторых реализациях типа Blackcoin V2+ всё исправлено и Stake Modifier считается от головы, а в Peercoin V03, PIVX, Blackcoin V1 и других от блока Stake Input. Последнее почти полностью уничтожает смысл. Есть предположение что путаница пошла из-за банальной проблемы именования переменных, дальнейших метаморфоз и бездумной копипасты. И сам автор достаточно поздно обнаружил проблему пока всё внимание было сконцентрировано на защите от DoS. Не попадитесь!

2.3. Подпись блока

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

2.4. Скрипт выхода CoinBase и CoinStake

Одни и те же скрипты выхода, или как в народе называют адреса кошельков, требуются для сохранения приватности и избегания связывания отдельных адресов в одном кошельке.

2.5 Что и куда?

Есть разные вариации как распоряжаются с суммами в CoinBase и CoinStake. Логика и мотивация в конкретном случае:

  1. Суммы должны быть раздельны чтобы избежать даже малейшего варианта потери средств пользователя из-за ошибки обработки.
  2. CoinBase сохраняет свои 100 подтверждений, а вот CoinStake может быть потрачен сразу, что конечно оставляет риск двойной траты.
    • привязывание к глубине блоков ещё и противоречит цензу по возрасту для использования в качестве Stake Input.
  3. CoinBase и CoinStake никогда не должны попадать в mempool, а все основанные на них транзакции должны удаляться при перестройке цепи.

3. Полные блоки против заголовков

Вступление полноценного узла в сеть начинается с синхронизации. В Bitcoin, синхронизация идёт в первую очередь на основе заголовков блоков, т.к. в них находится достаточная информация для предварительной проверки на соответствие консенсусу. Сначала вытягиваются и проверяются относительное маленькие заголовки пачками до 2000 штук с одного стороннего узла. Если изначальная проверка прошла успешно, то вытягиваются уже все блоки параллельно со всех подключённых узлов.

Защита от флуда строится на том, что локальный узел сравнивает лучший известный заголовок с тем, что у него есть и запрашивает всю цепь заголовков. По мере скачивания, всё проверяется малыми затратами дискового пространства и вычислений. Цепи сравниваются по своему весу на основе такой характеристики как chainwork, которая складывается из сложности каждого отдельного блока. Для построения такой сильной альтернативной цепи потребуются крайне большие вложения ресурсов, что делает атаки малоперспективными.

С PoS такой подход не работает, т.к. для проверки блоков требуется обработать полные предыдущие блоки хотя бы до границы минимального возраста Stake. Просмотренные автором реализации не стали извращаться, а просто отказались от работы с заголовками.

Поэтому автор реализовал параллельное оппортунистическое скачивание блоков вслед за заголовками, что значительно увеличивает скорость синхронизации из-за использования всех соединений. Мелкие задержки возникают только если пиры находятся на разных цепях — тогда соединение разрывается после незначительного таймаута как по стандартной схеме. Как минус, склонность к выбору ложной цепи на момент синхронизации.

К слову, стандартный клиент Bitcoin и его форки достаточно долго набирают минимальное стандартное количество исходящих соединений в 8 штук, если какие-то из них срываются по различным причинам. Это было решено асинхронными исходящими соединениями.

4. Форки, сплиты и орфаны

При конкуренции создания блоков, альтернативные цепи в 1-2 звена являются относительно обычным явлением. Более длинные форки в развитых сетях естественным путём происходят только при эпичных сбоях в консенсусе из-за ошибки программирования или глобального разрыва интернета.

Даже при наличии разделения, обычно нет угрозы целостности обработки транзакций, т.к. при отсоединении блоков все транзакции попадают обратно в mempool и включаются уже в другие блоки. Mempool — это временное хранилище транзакций после их создания. Сам mempool сохраняется на диск в последних версиях. Награда же за блок уничтожается. Именно поэтому для наград устанавливается минимальное количество подтверждений (глубина).

Бывает что локальные сегменты сети теряют связь с внешним миром и продолжают майнить, предполагая наличие соединения с основной сетью. Такие ветки обычно не представляют угрозы из-за своей естественной слабости.

Главная атака 51% для PoW уже описана выше — она крайне ресурсоёмка, а вот для PoS она становится относительно доступна. По этой причине становится технически возможным плодить множество ветвей из различных звеньев цепи. Одно из классических решений — это запрещать форки ниже определённой глубины.

Основная проблема такой защиты заключается в невозможности узлам из сегментов-отшельников самостоятельно вернуться к основной цепи после перезапуска.

Поэтому был реализован подход в запрещении форков старше определённого промежутка времени только если верхушка цепи достаточно молодая.

При целевом интервале блоков в 1 минуту, критерий старого форк был выбран в 1 час, что примерно соответствует 60% подтверждений CoinBase, а критерий молодости макушки в 15 минут — в 3+ раза выше максимального статистического запаздывания блока.

5. Хеш блока и сплиты

В PoW хеш блока полностью покрывает все данные. Он же используется для проверки относительно цели. В PoS, Stake Hash является отдельным значением, т.к. необходимо исключить возможность его подбора. Это открывает основную угрозу — возможность плодить неограниченное количество различных версий блока на основе одного и того же совпавшего Stake, которыми легко зафлудить и положить сеть или её отдельные узлы.

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

Ещё более фатально возможно это усугубить DoS-баном, что разделит не только цепи, но и саму сеть на разные сегменты.

Возникают и другие проблемы — невозможность использовать Stake из отброшенного блока.

Поэтому в качестве наиболее безопасного решения был выбран метод дросселя — один и тот же Stake может использоваться не более одного раза в минуту. Логика проста: атака может длиться только в интервале 1 часа (см. старый форк выше), за который возможно зафлудить не более 60 блоков. В лучшем случае, на следующем блоке сеть уже перейдёт на единую цепь. В худшем случае при непрерывной атаке это произойдёт через час. Вероятность самого худшего случая — нахождения нескольких блоков подряд, тает в геометрической прогрессии.

Всё равно остаются некоторые моменты, при которых узлы уязвимы к умеренному флуду до момента полной синхронизации.

6. Минимальный возраст

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

Как было упомянуто ранее, локальный узел должен обработать все блоки до временной границы возраста чтобы иметь возможность проверить что Stake Input а) имеет место быть b) действительно является UTXO и не был потрачен.

Проверить такое возможно только через функционал т.н. CoinView, который представляет из себя состояние движения монет на момент конкретного блока — верхушки главной цепи в понимании локального узла.

Реализация полноценной проверки альтернативных цепей через временные интервалы или даже специальным образом сохранённые CoinView выглядит малоперспективным, т.к. количество этих альтернативных цепей бесконечно велико.

Слишком большая планка для возрастного ценза UTXO негативно сказывается на пользователях, которые хотят потратить или объединить часть своих монет.

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

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

7. Что лучше N UTXO по минимальной сумме или один UTXO с N суммой?

Здесь сама напрашивается аналогия: что лучше одна пушка с точностью 0.9 или три пушки с точностью 0.3, но при вероятностях порядка 1/2^20 результаты таких расчётов казалось бы нивелируются. Немного карты спутывает ценз зрелости.

Бытующее мнение, что много маленьких транзакций находят больше блоков, наверно пошло со времён когда возраст Stake Input тоже учитывался для определения веса. Тогда старые маленькие транзакции действительно имели значительный смысл.

В данный момент на основе практических экспериментов и теоретических расчётов, сгруппированные в большие UTXO суммы приносят больше блоков. Вдобавок, меньшее количество UTXO требует меньше работы CPU. Кто-то утверждает и обратное.

Поэтому думайте сами.

8. Забегание блоков вперёд

PoS майнеры естественным путём немного опережают время блоков. Это отражается на сложности сети в худшую сторону. Стандартный код Bitcoin выбирает первый полученный блок, невзирая на указанное в нём время. Так же поступает большинство PoS реализаций.

Поэтому логика PoS майнера была изменена так, чтобы начинать подбор от среднего времени блоков, если время текущего блока ушло вперёд. В то же время перед сравнением очередности узлы сравнивают указанное время блоков. PoS майнер отправляет найденный блок в сеть даже если видит, что он порождает форк.

Таким путём сеть защищается и от гипотетических преждевременно отосланных блоков, Stake Input которых невозможно использовать в ближайшие 60 секунд с таким же Stake Modifier’ом из-за DoS-защиты. Как бы двойное наказание за жульничество со временем.

9. Небольшой чеклист

  1. Stake Input должен быть действительным UTXO до fork point:
    • в случае главной цепи fork point — это tip,
    • в случае альтернативной цепи — UTXO после fork point может привести к само-DoS при переключении,
    • само собой подразумевается, что UTXO не должен быть в mempool’е.
  2. Не принимать CoinStake в mempool при перестройке основной цепи:
    • такое же происходит с CoinBase,
    • это может уничтожить цепь транзакций (маловероятно).
  3. Не принимать форки от старых блоков, если верхушка вполне себе живая.
  4. Возрастной ценз в абсолютных единицах времени для Stake Input необходим для стабильности и безопасности.
  5. Stake Hash должен изменяться только от времени блока.
  6. Stake Modifier не должен быть привязан к блоку Stake Input.
  7. Работа с заголовками блоков требует особой обработки в сети и при переиндексировании.
  8. CoinStake записываются в локальном кошельке и требуют некоторых изменений для корректного отображения орфанов.
  9. PoS майнеры скорее всего имеют достаточно косяков и требуют доработки напильником.
  10. Re-index требует доработки, т.к. работает по аналогии с заголовками — сначала грузит и проверяет только индекс блоков, а потом только пытается обработать блоки.
  11. Если переход на PoS не жёстко задан, а через spork, то его нужно ловить на загрузке, т.к. sporks не сохраняются.
  12. Checkpoints в Dash и Bitcoin практически бутафория и требует очень серьёзной доработки.
  13. Если форк Dash до версии 0.13, то есть проблемы с обработкой данных мастернод в режиме использования простого пользователя.
    • При частом перезапуске клиента, представление сети искажается.
    • Лучше просто игнорировать кеш, если запущен в графическом режиме.
  14. Изменить выбор лучшего блока с учётом времени блока.
  15. В некоторых операциях Bitcoin присутствует неоправданная проверка уже проверенных блоков при чтении с диска.
  16. Кошелёк может пытаться отсылать в сеть и в mempool CoinStake из орфанов.

Внедрение в жизнь

Теперь немного о реальной истории. Первые полгода mainnet прекрасно работал на PoW и давление от майнеров не сильно ощущалось, не смотря на то, что маркетинг изначально пытался продавить PoS, предвидя возможные проблемы по своему опыту. PoS был запланирован при переходе на платформу Ethereum после внедрения Casper’а.

Официальный GPU майнер был доведён до ума и даже чем-то превосходил своего донора — ethminer’а. Был сделан официальный пул и несколько сторонних с общим хешрейтом 150-200 GH (ethash). В какой-то момент цена стремительна пошла вверх давление от майнеров стало ощутимым и вопрос досрочного перехода на PoS встал ребром.

В качестве донора была установка взять PoS ядро из PIVX 2.x как «проверенного временем и стабильного». Отсутствие каких-либо автоматических тестов в PIVX должно было насторожить автора сразу, но не тем менее основная головная боль заключалась в необходимости прикрутить всё остальное, описанное выше. Лишь потом автор узнал о всей той боли разработчиков, которые по неосмотрительности брали PIVX 2.x за основу своих проектов. Благо сам проект основывался на Dash и был благополучно обновлён до последней версии ветки 0.12 с множеством изменений из основного Bitcoin’а.

В концу всех работ по доведению до ума стало известно, что другие проекты с PoS спешно латают дыры с подачи исследователей. Как оказалось мы всё и так знали, а их официально опубликованные документы не покрывают даже того, что изложено в этой статье.

Подготовительные работы

Документация

Найти достаточно вменяемую документацию оказалось сложно. В основном это были обрывистые неполные материалы уровня постов на форуме. Поэтому внутренний whitepaper скорее стал продуктом реверс-инженерии.

Первое приближение

В изначальном варианте были перенесены все изменения PoS из PIVX с учётом более новой базовой версии Bitcoin/Dash. Некоторые изменения вроде индикатора CoinStake и сохранения последнего бита хеша в отдельном поле показались чрезмерными. Поэтому было решено максимально сузить PoS логику до отдельного модуля.

В этом процессе был упущен нюанс, что в индексе блока сохраняется Stake Modifier не для Stake Hash текущего блока, а для использования связанных с ним Stake Input в последующих блоках. Из-за этого вышел небольшой каламбур с логикой, но из-за другой упомянутой проблемы PIVX это практически не проявляется.

Динамичные чекпойнты

Первое и главное что вы захотите в своих проектах — это чтобы действительно надёжно работали чекпойнты. Лишь некоторые из проблем:

  1. Они не работают в принципе и могут легко привести к нерабочей базе.
  2. Они не интегрированы на этапе загрузки и соответственно бесполезны.
  3. Отмеченные как некорректные блоки не восстанавливаются — т.е. если старый клиент сломает, то даже новый уже не сможет работать.
  4. При выборе наилучшего блока не учитывается, что где-то в истории может быть некорректный предок, что в лучшем случае приведёт к отказу в работе.

Наличие статичных чекпойнтов не сильно поможет когда действовать нужно решительно и быстро. Для этого функционал spork’ов был расширен динамическими чекпойнтами, что уже подтвердило свою эффективность на практике.

Безусловно, такая сила может быть использована не по назначению. Поэтому принцип контроля spork’ов уже меняется в других проектах.

Переход на PoS не должен быть жёстко зашит

В нашем реальном мире с необходимостью согласованного обновления всех систем под контролем сторонних проектов, жёстко зашивать какие-то изменения консенсуса весьма недальновидно. Единственный разумный способ это всё тот же spork, но надо учитывать, что их значения не сохраняются.

Новая версия протокола

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

Публичное тестирование

Более одной недели добровольцы мучили testnet, но благо проблем консенсуса не было выявлено.

Для testnet был установлен ценз возраста в 3 минуты вместо 1 часа для mainnet, что подтвердило предположение о необходимости достаточно большого значения.

Калькулятор доходности

В отличии от PoW хешрейта, с PoS казалось бы сложно сделать какую-то аппроксимацию, но использование миллионных долей монеты как бы само намекает на делитель 1e6 для стандартных приближений по методологии для PoW.

На основе этих данных возможно вычислить среднее время между нахождением блоков. По опыту mainnet оказалось что к нему следует добавить возрастной ценз для Stake Input.

На основе такого уточнённого времени выходят более корректные прогнозы по доходности.

Переход на PoS в жизни

За сутки до часа X был установлен spork с номером первого PoS блока. Из-за ухода майнеров и нестабильности в сложности сети, блок пришёл на два часа раньше.

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

Изначально сформировалось несколько активных цепей, но сеть сама пришла к консенсусу, который был подкреплён динамическими чекпойнтами.

Ложка дёгтя

Обнаруженный после запуска недосмотр в Stake Modifier немного огорчил. Вышла ещё более кривая калька с кривой кальки. С другой стороны PIVX ведь как-то живёт… Безусловно, это необходимо было бы исправить, если бы не переход на кодовую базу Ethereum, чего и всем желается.

Заключение

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

Примечание: в статье намерено убрано название и какие-то прямые отсылки на ресурсы проекта чтобы избежать ложных обвинений в рекламе.

Что такое стейкинг?

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

В большинстве случаев для добавления монет в стейкинг достаточно криптовалютного кошелька, такого как Trust Wallet. Многие биржи предлагают пользователям услуги стейкинга. Получить вознаграждение на Binance Staking очень просто — все, что нужно делать, это хранить монеты на бирже. Рассмотрим подробнее.

Чтобы лучше понять, что такое стейкинг, нужно разобраться, как работает Proof of Stake (доказательство владения). PoS — это механизм консенсуса, который повышает энергоэффективность блокчейнов, сохраняя высокую степень децентрализации (по крайней мере, в теории). Давайте изучим, что такое PoS и как работает стейкинг.

Что такое Proof of Stake (PoS)?

Если вы знаете, как работает биткоин, вероятно, вы знакомы с Proof of Work (доказательством выполнения работы). Это механизм, который позволяет собирать транзакции в блоки и соединять их вместе для создания блокчейна. Майнеры соревнуются в решении сложной математической головоломки за право добавить следующий блок в блокчейн.

Proof of Work оказался надежным децентрализованным механизмом консенсуса . Его основной недостаток — большое количество произвольных вычислений. Головоломка, которую пытаются решить майнеры, не служит никакой другой цели, кроме обеспечения безопасности сети. Некоторые считают, что это оправдывает избыток вычислений. Но существуют ли другие способы достижения консенсуса децентрализованным образом без высоких вычислительных затрат?

Ответ: да, это Proof of Stake . Его основная идея в том, что участники могут блокировать свою долю монет (в стейкинге), и через определенные промежутки времени протокол случайным образом предоставляет одному из них право на валидацию следующего блока. При этом вероятность выбора валидатора пропорциональна количеству монет: чем больше монет заблокировано в системе, тем выше шансы получить такую возможность.

Таким образом, выбор участника, который получит право создать блок, зависит не от скорости решения задачи, как в случае с Proof of Work, а от количества монет в стейкинге.

Производство блоков с помощью стейкинга обеспечивает более высокую степень масштабируемости блокчейнов. Это одна из причин, по которой Ethereum планирует переход с PoW на PoS в рамках технических обновлений, называемых ETH 2.0 .

Кто создал Proof of Stake?

Впервые о Proof of Stake заговорили Санни Кинг и Скотт Надаль в статье 2012 года о пиринговой платежной системе Peercoin. Они описали механизм как «пиринговую конструкцию криптовалюты, основанную на биткоине Сатоши Накамото» .

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

Что такое Delegated Proof of Stake (DPoS)?

В 2014 году Дэниел Лаример разработал альтернативную версию PoS — Delegated Proof of Stake (DPoS) . Изначально алгоритм DPoS использовался только как часть блокчейна BitShares, но вскоре был позаимствован и другими сетями. К ним относятся Steem и EOS, которые также были созданы Дэниелом.

DPoS позволяет пользователям обменивать монеты с их баланса на право голоса, где количество голосов пропорционально числу удерживаемых монет. Они необходимы для выбора ряда делегатов, которые управляют блокчейном от имени своих избирателей, обеспечивая своими действиями безопасность сети и ее консенсус. Как правило, вознаграждения от стейкинга распределяются между избранными делегатами, которые затем начисляют часть вознаграждений своим избирателям в соответствии с их индивидуальными взносами.

Модель DPoS может повысить производительность сети путем достижения консенсуса с меньшим количеством нод, осуществляющих валидацию. Однако механизм также приводит к более низкой степени децентрализации, так как сеть опирается на небольшую выбранную группу валидирующих нод. Такие ноды обрабатывают операции, осуществляют управление блокчейном, участвуют в процессах достижения консенсуса и определяют ключевые параметры управления .

Выражаясь простым языком, DPoS предоставляет пользователям возможность сигнализировать о своем влиянии через других участников сети.

Как работает стейкинг?

Блокчейны с Proof of Work используют майнинг для добавления новых блоков в блокчейн , а сети с Proof of Stake производят и проверяют новые блоки с помощью стейкинга. В стейкинге участвуют валидаторы, которые блокируют свои монеты, чтобы получить возможность быть выбранными для создания блока. Обычно участники, которые добавляют в стейкинг большие суммы, имеют больше шансов быть выбранными в качестве валидатора следующего блока.

Стейкинг позволяет создавать блоки без использования специализированного оборудования для майнинга, такого как интегральные схемы специального назначения (ASIC). В то время как майнинг требует значительных инвестиций в оборудование, стейкинг подразумевает прямые инвестиции в саму криптовалюту. Таким образом, вместо того, чтобы конкурировать за следующий блок с помощью вычислительной мощности, валидаторы PoS выбираются на основе количества заблокированных монет. Монеты, размещенные в стейкинге, или доля — это то, что стимулирует валидаторов поддерживать безопасность сети. Если они не будут соблюдать данное условие, их средства могут оказаться под угрозой.

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

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

Как рассчитывается награда за стейкинг?

На этот вопрос вы не получите четкий и короткий ответ, по той простой причине, что каждая блокчейн-сеть может использовать свой способ расчета вознаграждений за стейкинг.

Некоторые из блокчейнов корректируют награду от блока к блоку, принимая во внимание множество различных факторов. Это может включать в себя:

  • Количество монет валидатора
  • Продолжительность нахождения доли валидатора в стейкинге
  • Общее количество монет выделенных на стейкинг
  • Уровень инфляции
  • Другие факторы

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

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

Что такое стейкинг-пул?

Стейкинг-пул — это группа владельцев монет, которые объединяют ресурсы, чтобы с большей вероятностью получить право на валидацию блоков и вознаграждение. Они объединяют свои ресурсы и делят вознаграждение пропорционально взносам в пул.

Создание и поддержание стейкинг-пула зачастую требует много времени и опыта. Они, как правило, наиболее эффективны в сетях, где барьер входа (технический или финансовый) относительно высок. За счет этого, многие провайдеры пулов взимают небольшую комиссию от вознаграждений за стейкинг, которые распределяются среди участников.

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

Большинство стейкинг-пулов предлагают своим пользователям минимальную сумму для входа и не ограничивают вывод средств. Таким образом, присоединение к стейкинг-пулу вместо соло-стейкинга может быть идеальным вариантом для новичков.

Что такое холодный стейкинг?

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

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

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

Как пользоваться стейкингом на Binance

В некотором смысле хранение монет на Binance можно сравнить с добавлением их в стейкинг-пул. Однако за это не взимаются комиссии, и вы можете пользоваться всеми преимуществами, которые приносит хранение монет на Binance!

Единственное, что вам нужно сделать, это холдить ваши PoS монеты на Binance, в то время, как все технические требования будут выполнены за вас. Награды за стейкинг в основном распределяются в начале каждого месяца.

Вы можете проверить ранее распределенные награды выбранного вами актива во вкладке «Историческая доходность» или «Historical Yield» на странице стейкинга каждого проекта.

Резюме

Proof of Stake и стейкинг открывают больше возможностей для тех, кто хочет участвовать в консенсусе и управлении блокчейнами. Кроме того, это легкий способ получать пассивный доход, просто храня монеты. Поскольку добавлять монеты в стейкинг становится проще, исчезают барьеры для входа в экосистему блокчейна.

Однако стоит отметить, что стейкинг связан с определенными рисками. Блокировка средств в смарт-контракте подвержена ошибкам, поэтому всегда проводите собственное исследование и используйте только надежные кошельки, такие как Trust Wallet.

Обязательно посетите нашу страницу стейкинга , чтобы узнать, какие монеты можно размещать в стейкинге, и начните зарабатывать вознаграждения уже сегодня!

Что такое Proof of Stake (PoS)

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

Однако Proof of Stake может быть не таким удобным для пользователей, у которых нет доступа к криптовалюте, а также может повлечь риск атаки 51% на блокчейнах с низкой рыночной капитализацией. Поскольку Proof of Stake крайне универсален, он имеет широкий спектр вариаций для различных блокчейнов и задач.

Введение

На сегодняшний день Proof of Stake является самым популярным алгоритмом консенсуса для многих сетей блокчейна, но из-за большого количества вариаций в нем бывает сложно разобраться. Более того, встретить этот механизм в первозданном виде почти невозможно. Тем не менее все виды Proof of Stake работают на основе одних и тех же концепций, понимание которых поможет принять наилучшее решение при выборе блокчейна.

Что означает Proof of Stake

Алгоритм консенсуса Proof of Stake был представлен в 2011 году на форуме Bitcointalk с целью решить проблемы Proof of Work . Хотя оба этих механизма стремятся к достижению консенсуса на блокчейне , делают они это по-разному. Если пользователи Proof of Work выполняют вычислительную работу, то участникам Proof of Stake достаточно внести монеты в стейкинг.

Как работает Proof of Stake

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

В системах Proof of Stake в контексте создания блоков используется термин форжинг, а не майнинг , однако можно встретить и оба варианта. Большинство криптовалют Proof of Stake запускаются с запасом предварительно созданных монет, чтобы ноды могли немедленно приступить к работе.

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

Случайный выбор блока

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

Выбор по длительности стейкинга

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

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

Проверка транзакций

Каждая криптовалюта с алгоритмом консенсуса Proof of Stake имеет собственный набор правил и методов, которые обеспечивают эффективность сети.

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

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

Какие блокчейны используют Proof of Stake

Большинство блокчейнов, появившихся после Ethereum , используют механизмы консенсуса Proof of Stake. Как правило, каждый механизм модифицируется в соответствии с потребностями сети. Далее мы рассмотрим их подробнее. Сам Ethereum в настоящее время находится в процессе перехода к Proof of Stake за счет обновления Ethereum 2.0 .

Сети блокчейна, использующие Proof of Stake или его вариации, включают:

2. BNB Smart Chain

Преимущества Proof of Stake

Так как Proof of Stake во многих аспектах превосходит Proof of Work, он используется почти во всех новых блокчейнах. К его преимуществам относятся:

Адаптируемость

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

Децентрализация

Запуск нод стал более доступным, и сеть стремится поощрять их запуск пользователями. Система стимулов и процесс рандомизации также делают сеть более децентрализованной. Несмотря на существование стейкинг-пулов, вероятность того, что отдельный человек успешно создаст блок в рамках Proof of Stake, гораздо выше. Это снижает необходимость в создании стейкинг-пулов.

Энергоэффективность

По сравнению с Proof of Work, алгоритм Proof of Stake невероятно экономичен с точки зрения энергии. В таком механизме стоимость участия зависит от экономических затрат на стейкинг, а не от вычислительных затрат на решение головоломок. Таким образом, работа этого механизма консенсуса требует гораздо меньше затрат на электроэнергию.

Масштабируемость

Поскольку Proof of Stake не полагается на физические машины для достижения консенсуса, этот механизм более масштабируем. Для него не требуется покупать огромные майнинг-фермы и затрачивать большое количество энергии. Использование множества валидаторов в сети гораздо дешевле, проще и доступнее.

Безопасность

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

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

И все же в некоторых случаях это может быть недостатком — мы рассмотрим это далее.

Недостатки Proof of Stake

Несмотря на то, что Proof of Stake имеет множество преимуществ по сравнению с Proof of Work, у него все еще есть некоторые недостатки:

Форки

При стандартном механизме Proof of Stake не существует препятствий для майнинга с обеих сторон форка . Однако при Proof of Work майнинг с обеих сторон приведет к большим энергозатратам. Использование Proof of Stake позволяет значительно снизить затраты, благодаря чему пользователи могут «делать ставки» на обеих сторонах форка.

Доступность

Для стейкинга пользователям понадобятся нативные токены блокчейна — их можно приобрести через биржу или любым другим способом. Иногда для эффективного стейкинга могут потребоваться значительные вложения.

Механизм Proof of Work же позволяет работать на дешевом оборудовании для майнинга или даже брать его в аренду. Благодаря этому пользователи могут присоединиться к пулу и начать быстро проверять транзакции и зарабатывать.

Атака 51%

Хотя Proof of Work также подвержен атакам 51%, блокчейны с механизмом Proof of Stake более уязвимы к ним. Если цена токена рухнет или блокчейн будет иметь низкую рыночную капитализацию, теоретически злоумышленники смогут приобрести более 50% токенов по низкой цене и захватить контроль над сетью.

Proof of Work и Proof of Stake

Если сравнить эти два механизма консенсуса, то можно выделить несколько основных различий.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *