Ничего не учтено: взгляд на уязвимость криптовалюты Nothing at Stake

Ничего не учтено: взгляд на уязвимость криптовалюты Nothing at Stake

Presstab, основной разработчик, Blockchain Energy

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

1 ВВЕДЕНИЕ

«Ничто не поставлено на карту» - это обычный аргумент, выдвинутый против всех без исключения систем доказательства доли владения. Хотя в этом аргументе есть некоторые интересные составляющие, его следует рассматривать как нечто малообещающее для криптовалюты на основе Proof of Stake.

Аргумент «ничего не поставлено на карту» изложен в Etherium wiki [1]:

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

Суть аргумента заключается в том, что для стейкинга требуется очень мало ресурсов; если есть конкурирующие вилки, в интересах стейкера делать ставки на обе вилки. Это правда, что для того, чтобы сделать ставку, требуется очень мало ресурсов, на самом деле это один из основных мотиваторов, по которым было задумано Proof of Stake [2]. Неверно, что требование минимального потребления ресурсов для создания ставки означает, что «ничего не поставлено на карту».

2 СЛУЧАЙ I: СЛУЧАЙНАЯ ВИЛКА С КОНКУРЕННЫМИ ЛУЧШИМИ БЛОКАМИ

Рассмотрим случай, когда происходит случайное разветвление сети, проблемы распространения сети заставляют группу одноранговых узлов, Peer Group 1 (PG1), видеть определенный блок, прежде чем Peer Group 2 (PG2) увидит этот блок. Затем PG2 получает другой блок и принимает его в качестве следующего блока, вызывая несоответствие цепочки блоков, по крайней мере, на 1 блок в верхней части цепочки (также известный как лучший блок).

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

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

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

3 СЛУЧАЙ II ВРЕДОНОСНЫЙ АКТЕР ОТПРАВЛЯЕТ МОНЕТЫ ТРЕТЬИМ ЛИЦАМ, А ЗАТЕМ ПЕРЕВЫШАЕТ ЦЕПЬ

Злоумышленник по имени hacker1337 отправляет 1000 монет FunStake (FSC) в транзакции (tx1) на стороннюю биржу монет, ezex. После того, как ezex подтвердил, что учетная запись hacker1337 содержит 1000 монет (обычно требуется определенное количество блоков, добавленных в цепочку блоков после добавления транзакции), hacker1337 использует большое количество своих активов FSC и, следовательно, возможность размещения ставок, чтобы создать альтернативный форк, который происходит. блок перед tx1 добавляется в цепочку. hacker1337 добавляет другую транзакцию (tx2) в разветвленную цепочку, которая отправляет эти монеты себе, а не ezex. Если hacker1337 успешно получает разветвленную цепочку, которая будет принята в качестве основной цепочки, то ezex предоставил монеты hacker1337, которые не принадлежат этой учетной записи.

Чтобы эта атака была успешной, должны быть выполнены следующие условия:

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

Условие 1 несколько очевидно. Для стейкинга требуется проведение FSC. Чтобы иметь возможность последовательно делать ставки таким образом, чтобы можно было создать упомянутый выше форк, hacker1337 должен иметь большое количество FSC.

Условие 2 - это, пожалуй, самое важное условие, которое необходимо выполнить. У hacker1337 должен быть не только большой пакет FSC, но и один из самых высоких уровней ставок среди всех участников FSC. Как упоминалось в случае I, основная цепочка определяется цепочкой, у которой больше всего работы. hacker1337 должен обладать такой большой мощностью ставок, чтобы они могли вернуться в прошлое и делать ставки намного быстрее, чем это происходило в действующей цепочке (чем быстрее приходят блоки, тем выше будет работа). Следовательно, hacker1337 должен каким-то образом иметь возможность опередить остальных держателей FSC на период времени, который позволит разветвленной цепи превзойти основную по объему работы.

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

Чтобы атака действительно сработала, hacker1337 может захотеть отправить tx2 на другой обмен, в результате чего hacker1337 получит в два раза больше стоимости исходных запасов FSC. На самом деле, почему бы не провести рекурсивную атаку на каждого известного продавца, биржу, члена сообщества и т. Д.? Создайте результат, который принесет тысячи вилок и тысячи двойных расходов, а также большое количество мошеннических доходов для hacker1337.

Пока что дело II не имело абсолютно ничего общего с проблемой «ничего не поставлено на карту». На самом деле это почти не имеет ничего общего с Proof of Stake, а скорее проблема, которая затрагивает все типы систем доказательства. Например, в сценарии случая II замените предположение, что FSC является монетой Proof of Stake, и предположим, что это Proof of Work. Есть три выделенных условия, которые должны быть выполнены для атаки Proof of Stake, для той же атаки, но запущенной в сети Proof of Work, должно выполняться только условие 2. Единственное, что нужно hacker1337, - это иметь одну из самых больших майнинговых мощностей среди майнеров FSC.

Даже если hacker1337 смог выполнить условие 2 (для систем на основе Proof of Stake или Proof of Work), все равно крайне маловероятно, что простое наличие большой емкости в конкретной системе доказательств приведет к возможности создания более действительной цепочки. В почти наверняка нужно добавить еще одно подусловие:

1. hacker1337 успешно предотвращает участие других основных участников системы защиты FSC в защите цепи в период атаки.

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

Это та точка дела II, где ничто, поставленное на карту, на самом деле не будет иметь четкого различия между Proof of Work и Proof of Stake.

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

Если подусловие 2 соблюдено, то подусловие 1 не должно выполняться. В этом случае да, это может быть очень проблематично. Альтернативная цепочка hacker1337 немедленно получит поддержку всех узлов, потому что эти узлы поддерживают все возможные вилки, потому что, как гласит фольклор, у них ничего не поставлено на карту (кроме, конечно, всей стоимости их владений, но по какой-то причине это считается ничего такого). Поскольку альтернативная цепочка будет иметь как поддержку надежной возможности стейкинга hacker1337, так и поддержку жадных узлов, которые делают ставки в обеих цепочках, вполне вероятно, что цепочка, на которую делает ставку hacker1337, станет основной цепочкой.

Для выполнения подусловия 2 важно, чтобы большинство заинтересованных сторон автоматически публиковали ставки для каждого возникающего форка. Случай I показывает, что честным узлам нет причин делать ставку на другие вилки с меньшим объемом работы. Поскольку у честных узлов нет причин автоматически делать ставки на все вилки, аргумент «ничего не поставлено на карту» для случая II по существу заканчивается.

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

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

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

ЗАКЛЮЧЕНИЕ

Как в случае форка с честными узлами, так и в случае форка со злоумышленниками, на самом деле «что-то поставлено на карту». В отношении конкретных аргументов, представленных против Proof of Stake, можно сказать, что Proof of Stake может фактически иметь более сильные стимулы для своих сверстников и держателей доказательств оставаться в основной цепочке, чем система Proof of Work. Что стоит большего: все запасы монет у майнеров Proof of Stake или несколько минут потребления электроэнергии для майнеров Proof of Work?

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

[1] Etherium Wiki, https://github.com/ethereum/wiki/wiki/Problems.

[2] С. Кинг, С. Надаль, «PPCoin: PeertoPeer CryptoCurrency с ProofofStake», 2012 г. https://peercoin.net/assets/paper/peercoinpaper.pdf