Это простая идея, что попытки атаковать новые пределы подсчета ресурсов XT / BIP101, введенные в фиксации:
https://github.com/bitcoinxt/bitcoinxt/commit/cc1a7b53629b265e1be6e212d64524f709d27022
В основном, пост-вилок XT / BIP101 обеспечивает соблюдение двух новых ограничений ресурсов: (1) точный подсчет sigOp 80000 на 8MB блок, и (2) макс-байты-хэшированные из 1.28GB на 8MB блок. Мотивация этих пределов в том, чтобы смягчить атаку, описанную в CVE-2013-2292. Блок, который нарушает либо ограничение является недействительным, так же, как и предельным размером, это может предотвратить несколько сделок от включения в блоке. Основная идея заключается в том, чтобы использовать макс-байт-хэшируются предел преждевременно "заполнить" 8MB блоки с гораздо меньше 8Мб данных.
Например, рассмотрим ввод транзакций, который проводит 15-1 из-P2SH multisig адрес. Предположим, что злоумышленник станкам вход, так что всегда последний открытый ключ, который соответствует подписи (так все 15 sigOps будет выполняться). А 1-из-15 P2SH выкупа сценария потребляет (1 + 15 * 34 + 1 + 1) = 513bytes. Поэтому ввод транзакций потребляет (41 + 1 + 74 +514) = 630bytes. Поэтому злоумышленник может поместиться (100KB / 629B) = 158 таких входов в стандартную транзакцию 100KB. Транзакция выполняет (158 * 15) = 2370 sigOps, меньше, чем sigOp-за-TX 4000. Такая сделка поэтому допустимо в соответствии с действующим IsStandard () правил, поэтому злоумышленник может создавать и транслировать операции обычным способом.
Протокол Bitcoin хешей всей транзакции (за вычетом других данных подписи) для каждого sigOp выполняется. Это означает, что такая сделка будет хэширования (100000 - 158 * 74) * 2370 = ~ 209MB стоит данных. Поэтому злоумышленник должен только генерировать 1.28GB / 209MB = ~ 6 таких операции вблизи выхлопных газов Макс-байты-хэшированный предел 1.28GB на 8MB блок. Это соответствует чуть более ~ 600Kb стандартных операционных данных.
Являются ли мои суммы правильно?
EDIT: Для того, чтобы ответить на мой собственный вопрос, нет. Правильное значение для байт хешированных (100000 - 158 * (74 +514)) * 2370 = ~ 17MB стоит данных, так как весь P2SH сценарий для каждого входа исключается при расчете хэша.
Тем не менее, атака все еще возможна с некоторыми более экзотическими P2SH сценариями с более высоким sigOp-за байт плотности (например, с использованием OP_DUP на открытых ключах). Сделка со стандартным 4000 sigOps на 50KB от стоимости выходов сделки будет потреблять, по меньшей мере 50000 * 4000 = 200 Мбайт данных. Такие сделки не будут нарушать существующие правила IsStandard, но было бы более очевидным, чем 1-из-15 multisig адресов.