发送交易错误
当使用 SDK 或 Fluent 钱包发送交易时,可能会遇到一些错误。 本文概述了一些常见错误及其解决方案。
RPC端点错误
估算时出错
在构建交 易时,需要使用estimateGas
方法估算gas费用。 如果与合约进行交互,estimateGas
方法可能因以下各种原因而失败,比如:
- 不正确的合约方法调用参数,调用不存在的方法
- 调用者没有权限
- 调用者余额不足
- 合约方法内部发生异常错误,例如除零,数组越界,溢出等。
如果'estimatteGas'方法失败,它会返回一个错误,例如:
{
"code": -32015,
"message": "Can not estimate: transaction execution failed, all gas will be charged (execution error: NotEnoughCash { required: 18014398509481983999023437515000000, got: 0, actual_gas_cost: 0, max_storage_limit_cost: 18014398509481983999023437500000000 })",
"data": "0x0000xxxx"
}
有时,错误消息中包含明显错误信息,可以很容易确定错误原因。 但在某些情况下,错误消息可能只显示Vm reverted
。 在这种情况下,你可能需要通过多次代码验证和尝试,或者使用跟踪数据来协助查找错误。
cfx_sendRawTransaction
失败
在组装交易之后,需要使用cfx_sendRawTransaction
方法发送,但由于各种原因,可能会导致发送失败。
余额不足
如果发送方余额不足,将返回错误 (可以在RPC响应的error.data
字段中找到):
"\"Transaction 0xtxhashxxxx is discarded due to out of balance, needs 9000000000420000000000000 but account balance is 90095849479680000000000\""