Pull to refresh

Comments 7

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

Создатель лайткоина, Чарли Ли, сказал: By definition, a decentralized cryptocurrency must be susceptible to 51% attacks whether by hashrate, stake, and/or other permissionlessly-acquirable resources. If a crypto can't be 51% attacked, it is permissioned and centralized.

Всё верно. Дам чуть больше пояснений.


  1. В классическом варианте атака 51% требует наличия сбережений, которые требуется быстро дважды вывести, т.к. после масштабного влияния они могут обесцениться вместе с падением курса или из-за блокирования на биржах.
    В случае PoW, накинуть мощностей не такая большая проблема как с PoS, т.к. в последнем одним из основных держателей денежной массы должны являться лица, заинтересованные в живучести проекта. В конкретном случае это Backbone — средство стабилизационного балласта и поощрения основателей. Treasury (Казна) используется для самофинансирования.


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


  3. Из-за того, как изначально были реализованы мастерноды в Dash, проверять выплаты возможно только в реальном времени. Соответственно, можно построить альтернативную цепь с ложными выплатами, если иметь 51+% хешрейта. Если под конец правильно распределить вознаграждение, то другие узлы её примут. Именно от такой более сложной атаки мы и ушли. В конкретном случае, майнер получает 2.28 монеты, а мастернода 9.12 за блок. На данный момент курс ~1.42 USD.


Не принимать CoinStake в mempool при перестройке основной цепи

Довольно спорный момент. Попадание таких транзакций в мемпул дает дополнительную защиту от флуда форками и double-spend атак, т.к. если блок уходит в orphaned, то у "атакующего" сбрасывается coin-age и атаковать больше нечем. Собственно, кажется именно для этого были разделены coinbase и coinstake в peercoin'е.

Не совсем так. Посмотрите код и Peercoin, и PIVX 2.x. Внимание на IsCoinStake().


  1. В обоих случаях CoinStake не пападает в mempool хотя бы потому, что он не пройдёт проверку по комиссии (fee). К слову, в некоторых монетах, допускается отправлять новую транзакцию с большей комиссией. Если правильно помню, то ещё и награда майнера перенесена из CoinBase в CoinStake, что ещё больше всё запутывает и требует обязательного удаления.


  2. Попав в mempool, у CoinStake будет наименьший приоритет по fee, если только на основе него не будет построена другая транзакция. Тут уже возможна DoS-атака на mempool. Поэтому mempool нужно зачищать от потомков удалённого CoinStake. В противном случае, CoinStake может быть удалён, а его потомки будут оставаться и забивать mempool.


  3. Допустимо строить цепочки транзакций в mempool, но с точки зрения самого blockchain они не являются UTXO пока не попадут в блок. По факту, конфликт с mempool'ом не должен препятствовать обработке нового блока, а все конфликты в mempool зачищаются.


Да, я наверное перепутал текущий peercoin с кем-то из его последователей. Но тем не менее.


В обоих случаях CoinStake не пападает в mempool хотя бы потому, что он не пройдёт проверку по комиссии (fee).

Ну к примеру в Bitcoin Atom coinstake должна иметь достаточную комиссию для включения его в другой блок. Т.е. coinstake не в PoS блоке на второй позиции — обычная валидная транзакция.


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


Если правильно помню, то ещё и награда майнера перенесена из CoinBase в CoinStake, что ещё больше всё запутывает и требует обязательного удаления.

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


Тут уже возможна DoS-атака на mempool.

Так же как и с другими транзакциями. Но естественно для этого придется платить комиссию.

А проблему сплитов после перехода на POS Вам удалось решить? Как показала практика — PIVX 2.x очень плохо работает с выбором лучшей цепочки. А точнее — вообще не хочет работать.

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


Проблемы в PIVX 2.x по сути частично описаны в статье. В качестве защиты сделан std::map как индикатор "stake seen". Поэтому любое альтернативное использование stake скорее всего приведёт к чейнсплиту.


Немного подкрученный майнер с достаточной долей для стейкинга тоже может расшатать систему.


Есть конечно и некоторые проблемы, которые в статье не упоминались. Может в будущем...

Sign up to leave a comment.

Articles