solidity:尝试燃烧时堆栈限制达到 1024(1023)

solidity: stack limit reached 1024(1023) when trying to burn

当我尝试调用 _burn() 函数时,我的代码抛出了那个奇怪的错误。我什么都试过了,但似乎没有什么可以解决的。

代码: https://gateway.pinata.cloud/ipfs/QmcH7bTj3Yzow8UD1i17NXtdPZyMUcVEtCuJqRLq325xyd

EVM 堆栈有 1024 个可用插槽,每次一个函数调用另一个函数时,它都会在堆栈上保留一些 space 来存储参数、return 值和局部变量。调用链越深,您需要的插槽越多,如果太深,您最终 运行 会用完插槽。

通常 1024 个插槽就足够了,这种情况不会发生。出现此错误的最常见情况是您有导致无限递归的错误。我没有详细分析您的代码,但乍一看,我看到了这样一个调用循环的潜力:_burn() -> _transfer() -> _transferStandard() -> _reflectFee() -> _burn() -> ... 或者,代替 _transferStandard(),它也可以通过其他 _transferXXX() 函数之一。