Wie verändert EIP 150 den Anruftiefenangriff?

Es scheint, dass EIP-150 eine teurere gasbasierte Beschränkung für den Call-Stack eingeführt und die vorherige 1024-Hard-Stack-Grenze vollständig aufgehoben hat. Ist das wahr? Es scheint, dass es Hinweise von EIP-90 & EIP-114 genommen hat, aber nicht ganz sicher ist, was implementiert wurde.

Wie funktioniert das neue gasbasierte Limit?

Antworten (1)

Das vorherige Limit wurde nicht entfernt, es ist nur praktisch unerreichbar geworden.

Mit den neuen Regeln darf der Anruf nicht mehr als 63/64 des Gases des Elternteils verbrauchen. Also, wenn Ihr Gas X ist, dann N CALLs in, es wird max sein X * (63/64)^n.

Und um richtig zu sein, das Gas ist sogar noch kleiner als das, da 63/64 definiert ist als "alle bis auf ein 64stel" von N als N - floor(N / 64), also gibt es auch einen Flooring-Faktor für ganze Zahlen, der ein hat Wirkung. Auch die tatsächlichen CALLKosten und PUSHerforderlichen Operationen reduzieren die praktische Grenze.

Aus dem EIP :

Beachten Sie, dass mit den angegebenen Parametern die de-facto maximale Call-Stack-Tiefe auf ~340 (von ~1024) begrenzt ist, wodurch der Schaden verringert wird, der durch weitere potenzielle DoS-Angriffe mit quadratischer Komplexität verursacht wird, die auf Anrufen beruhen.

Danke @mhswende! Das harte Limit ist also immer noch drin. Es sieht so aus, als wäre ein beträchtlich hohes Gaslimit erforderlich, um auch nur annähernd 1024 zu erreichen, oder?
Ja. Ich habe eine Zahl gesehen, die Vitalik berechnet hat, aber ich bin mir nicht sicher, wo ich sie jetzt finden kann. Es liegt um Größenordnungen über den bisher verwendeten Grenzwerten.