Solidity

1024的呼叫堆棧在solidity中意味著什麼?

  • February 6, 2021

假設1:

如果我們創建一個局部變數,呼叫棧就會增加 1,因為我們把這個新的局部變數放在了棧上。如果我創建另一個局部變數,它會再次增加 1。所以,按照這個邏輯,我應該不能創建超過 1024 個局部變數?

假設2:

也許solidity意味著1024個外部呼叫。但正如你所看到的,它只是這樣說:

外部函式呼叫可能隨時失敗,因為它們超過了 1024 的最大呼叫堆棧它並不具體,只是說呼叫堆棧 1024 。

那麼,它到底是什麼意思呢?即使對於局部變數,呼叫堆棧也會增加。

Solidity 中的堆棧的含義與在任何其他機器或虛擬機中的含義相同。

堆棧被分配給呼叫返回地址、函式參數和局部變數。

除了受 gas 消耗的限制外,交易還受堆棧大小的限制,並且不能在堆棧上推送超過1024 個 EVM 字

在 EVM 中研究堆棧使用的最簡單的地方可能是PyEVM 實現

引用自:https://ethereum.stackexchange.com/questions/93202