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?
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
CALL
s 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 CALL
Kosten und PUSH
erforderlichen 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.
Simon de la Rouvière
mhswende