Как EIP 150 меняет атаку глубины вызова?

Похоже, что EIP-150 ввел более дорогое ограничение на стек вызовов на основе газа и полностью удалил предыдущее ограничение жесткого стека в 1024. Это правда? Кажется, он взял реплики из EIP-90 и EIP-114 , но не совсем уверен, что было реализовано.

Как работает новый лимит газа?

Ответы (1)

Прежний лимит не снят, просто он стал практически недостижим.

По новым правилам вызов не может потреблять более 63/64 газа родителя. Итак, если ваш газ X, то N CALLs in будет макс X * (63/64)^n.

И, если быть точным, газа еще меньше, поскольку 63/64 определяется как "все, кроме одной 64-й" от N как N - пол (N / 64), так что есть также фактор перекрытия до целых чисел, который имеет эффект. Кроме того, фактические CALLзатраты и PUSHнеобходимые операции также уменьшат практический предел.

Из ЭИП :

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

Спасибо @mhswende! Так что жесткий предел все еще существует. Похоже, что потребуется существенно высокий лимит газа, чтобы хотя бы приблизиться к 1024, верно?
Да. Я видел число, которое вычислил Виталик, но не знаю, где его сейчас найти. Это на порядки выше пределов, используемых до сих пор.