我在代理后备中有此代码:
assembly {
calldatacopy(mload(0x40), 0, calldatasize())
let result := delegatecall(gas(), destination, mload(0x40), calldatasize(), mload(0x40), 0)
returndatacopy(mload(0x40), 0, returndatasize())
switch result
case 1 { return(mload(0x40), returndatasize()) }
default { revert(mload(0x40), returndatasize()) }
}
destination
当地址为零(0x00000000000000000000000)时,就会出现问题。delegatecall 经过,返回1
,然后case 1
返回数据完全为空,这会触发... did it run out of gas
错误(这与问题无关)。
我刚刚从 Ganache 切换到最新的 Hardhat 和 web3 (v1.6.1),这会遇到问题default
并恢复。有什么我不知道或最近发生了变化吗?