Estimation isn't accurate: transaction is reverted
发送交易前通常会调用 cfx_estimateGasAndCollateral 方法,来预估交易执行所需要的 gas
和 storageLimit
。该方法本质是对交易进行了模拟执行,然后统计交易执行完之后实际的 gas 和 storage 使用量。但交易的模拟执行并不是都会成功的,部分交易由于某些原因会执行失败,这时该方法会返回 Estimation isn't accurate: transaction is reverted
错误:
{
"code": -32015,
"message": "Estimation isn't accurate: transaction is reverted. Innermost error is at CFX:TYPE.CONTRACT:ACDUZTJBPM9PPP9F0K5VT3PJU0EJUDNHP2ZM7WS35N: Vm reverted. .",
"data": "CFX:TYPE.CONTRACT:ACDUZTJBPM9PPP9F0K5VT3PJU0EJUDNHP2ZM7WS35N: Vm reverted. \nCFX:TYPE.CONTRACT:ACD5E6SPRGMDVG15FDXF2B8AH7DAN7GMZAGXA10EPZ: Vm reverted. "
}
遇到该错误意味着合约方法代码无法成功执行,交易被 reverted
。导致此错误的可能较多,比如:发送合约代币或 NFT 余额不够;合约方法传参错误;没有权限或授权,等等。
如果合约执行时抛出了错误 message,这时 RPC 的错误信息中可以看到合约执行失败的具体原因,比如如下错误是在进行 NFT(1155)转账时,余额不足合约返回的错误:
Estimation isn't accurate: transaction is reverted: ERC1155: insufficient balance for transfer
. Innermost error is at xxxx: Vm reverted. ERC1155: insufficient balance for transfer
No Comments