скачать
Закрыть меню -

О выравнивании вознаграждения за блоки в RSK

Published on: 23 августа, 2019

Автор Серхио Демиан Лернер, главный разработчик RSK

Безопасность Биткойн зависит от экономических стимулов, которые подталкивают майнеров к увеличению цепочки с наибольшей накопленной сложностью (обычно самой длинной цепочки). В настоящее время эти стимулы обеспечиваются вознаграждением за блок, которое состоит из субсидии на блок и комиссионных за транзакции. Но субсидия (12,5 BTC) существенно выше, чем средняя плата за транзакцию из расчета на блок (0,4 BTC).  Субсидирование биткойнов уменьшается вдвое каждые 4 года, и без обратного повышения цены BTC стимул будет зависеть только от комиссий за транзакции. Для поддержания текущего уровня безопасности стоимость транзакций должна увеличиться в 30 раз. Будет ли это проблемой для Биткойн? Может ли безопасность Биткойн полагаться только на комиссию за транзакцию? Нужны ли Биткойну софт-форки или хард-форки для адаптации к новой эпохе? В презентации FRONT Attack я показал, как биткойн мог стать нестабильным в 2014 году. Карлстен и другие (2016) подробно проанализировали эту проблему, но не смогли найти удовлетворительного решения. Это проблема не только Биткойна, но и всех остальных криптовалют, эмиссия которых со временем уменьшается. 

Но насчет Биткойна пока не стоит беспокоиться. Проблема возникнет лет через 10–20 или даже позже. Недавно исследование было проведено повторно, c привлечением особого внимания к этой проблеме, и было отмечено, что она отнюдь не так остра

Вознаграждения за блоки в RSK

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

Некоторые распределенные реестры, такие как Ripple, не выпускают монет, чтобы платить производителям блоков. Вместо этого организации, стоящие за ними, предварительно добывают достаточно монет, чтобы самим стать производителями блоков или предоставить компенсацию сторонним производителям по альтернативным каналам. С другой стороны, RSK сталкивается с самыми жесткими условиями: нет ни выпуска монет, ни предварительного майнинга. RSK представляет собой испытательный стенд для новых технологий, которые будут использоваться в будущем на других блокчейнах, и призван стать примером того, как блокчейн может быть устойчивым и без субсидий. Одна из этих новых технологий — это выравнивание вознаграждений за блоки (также называемое выравниванием вознаграждений). Она внедряется в RSK с момента первого выпуска в 2016 году.

Генеральный директор Blockstream Адам Бэк недавно упомянул выравнивание при обсуждении долгосрочного бюджета безопасности Биткойна: «Другие долгосрочные идеи эпохи низких субсидий включают усреднение сборов по интервалам блоков для выравнивания доходов от сборов».

https://twitter.com/adam3us/status/1097031151921713152

Давайте углубимся в тему выравнивания сборов, чтобы понять, почему это необходимо. Выравнивание сборов — это правило консенсуса, по которому сборы за майнинг распределяются между майнерами более эгалитарно, с выплатой каждому майнеру суммы, производной от суммы прошлых вознаграждений за блок. Эта функция может быть линейной или нелинейной, являясь, как правило, своего рода фильтром нижних частот по накопленным сборам. В RSK используется очень простая функция сглаживания IIR с α = 0,1. Если майнер решает блок на высоте N, майнеру выплачивается компенсация в размере 10% от комиссии за транзакцию блока и 10% от всех ранее неуплаченных накопленных комиссий майнера. Другими словами, существует «общий» счет, куда каждый майнер вносит комиссию за транзакции и берет себе 10%.

Есть несколько причин, по которым концепция RSK включает в себя выравнивание вознаграждений. Во-первых, это дает майнерам больше гибкости в настройке лимитов газа для персональных блоков, предотвращая задержки в производстве блоков без значительных штрафов на вознаграждение за блок. Во-вторых, необходимо выравнивание платы, потому что стимул расширять блокчейн должен быть сильнее, чем стимул повторного майнинга прошлого блока, чтобы захватить его уплаченные комиссии. Предположим, что транзакция T в блоке на высоте N приносит 100 монет в качестве вознаграждения, но среднее вознаграждение за блок составляет всего 10 монет. Тогда лучшая стратегия для любого майнера — это захватить транзакцию T и попытаться добыть блок на той же высоте N (награда в 100 монет против 10), а затем продолжать майнить дочерние блоки своей эгоистичной цепочки, пока она не станет достаточно длинной, чтобы остальные майнеры (которые захотят сделать то же самое) сдались. Транзакция с высокой комиссией распыляет майнинг в пользу более крупного пула транзакций, который имеет более высокие шансы майнинга T плюс достаточное количество блоков подтверждения. Любопытно, что чем более децентрализована сеть майнинга, тем хуже сбои, вызванные такими транзакциями. Например, если бы в блокчейне, имеющем 10-минутный средний интервал между блоками, было 100 майнеров и каждый из них имел 1% от общего хэшрейта, сеть потерпела бы 100-кратное замедление для нескольких блоков, пока наконец не сошлась бы. Так сеть будет недоступна в течение 2 дней! И в течение этого периода цепочка блоков также будет нестабильна: у продавца, ожидающего подтверждение одного блока для платежа, есть все шансы увидеть, что платеж отменен. 

Атака с целью рассеяния майнеров

Трансляция транзакции с очень высокой комиссией может рассматриваться как попытка осуществления атаки с целью вызова отказа в обслуживании. Такие транзакции можно рассматривать как взятку за возвращение блокчейна наивным майнером, но на самом деле это приманка для взлома майнинга. Хотя существуют и другие дополнительные защитные меры, выравнивание вознаграждения является основной защитой криптовалютной сети от атак такого рода. Давайте вернемся к предыдущему примеру: взятка размером в 100 монет, а среднее вознаграждение за блок составляет 10 монет. В RSK блок на высоте N принес бы вознаграждение в 19 монет, в то время как следующий блок принес бы 18,1 монеты. Чтобы атака была прибыльной, эгоистичному майнеру теперь нужно в 10 раз больше ресурсов для хэширования, чем любому другому майнеру.

Есть две дополнительные защитные меры, которые могут быть реализованы. RSK реализует, во-первых, протокол консенсуса о совместном использовании вознаграждений под названием DECOR. DECOR равномерно распределяет вознаграждение между соседними блоками (если их больше одного). Это уменьшает стимулы к атаке с целью рассеяния, потому что майнеры знают, что им можно заплатить всего 1/11-ю суммы вознаграждения за блок, если все майнеры добывают один и тот же блок, поскольку один блокчейн может ссылаться на несколько — общим числом до 10 — дочерних блоков. Значит, для нарушения работы сети RSK взятка должна быть в 110 раз выше среднего вознаграждения за блок. 

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

Подкуп майнеров

Выравнивание вознаграждения не является окончательным решением, так как злоумышленники могут использовать платформу смарт-контрактов, чтобы подкупить майнеров и вынудить их сделать что угодно. В статье «Eternal Choice for the Dark Side Attack» (ECDSA) в 2014 г. я показал, как можно подкупить майнеров и заставить их отклониться от честного поведения.  МакКорри и другие (2018) представили широкий спектр теоретических атак со взятками. Тем не менее, уровень понимания и подготовки, требуемый для получения взятки на основе смарт-контракта, является значительным, поскольку он требует программирования мониторинга и реагирования на взятки. Это делает атаки со взяточничеством на основе смарт-контракта гораздо более сложными для реализации, так как майнер должен знать о договоре о подкупе и понимать, как с ним взаимодействовать. Однако это неизбежно: если платформа может платить майнеру, то она также может выполнить смарт-контракт, который платит тому же майнеру. Это связано с тем, что язык программирования, на котором запрограммирован консенсус, и язык, используемый смарт-контрактами, являются «полными по Тьюрингу». Вы не можете предотвратить платеж от кого-то, кто готов заплатить другой стороне, желающей получить оплату.  Недостаточно ограничить языковые возможности на определенной платформе, поскольку любая платформа с полным по Тьюрингу смарт-контрактом может использоваться для выплаты взяток майнерам другого блокчейна! Например, RSK и Ethereum могут быть использованы для выплаты взяток майнерам Биткойн. Конечно, в этом случае координация еще сложнее. 

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

Краткие выводы

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