Skip to main content

SendRawTx: Invalid parameters: tx

发送交易时,如果构造的交易不正确,会遇到 Invalid parameters: tx 错误。错误的具体原因在 RPC 返回数据的 data 字段中, 大致会有如下几种:

余额不足

Transaction {?} is discarded due to out of balance, needs {?} but account balance is {?}

从 conflux-rust v2.0.2 开始 cfx_sendRawTransaction 方法会拒绝掉 tx.from 余额不足以支付交易 value + gasFee + storageCollateral 的交易。

nonce 设置错误

许多交易发送错误是由于 nonce 未设置正确导致的

tx already exist

此错误表示同 nonce 的交易已经存在于交易池中了,重复发送相同的交易会报错

Tx with same nonce already inserted

此错误亦表示同 nonce 交易已经在交易池中

Transaction 0xxx is discarded due to a too stale nonce

此错误表示发送的交易使用了一个已经被执行过交易的 nonce,通俗点说这个 nonce 已经被用过了,不能再使用,需要使用新的未使用的 nonce 重新发送

Transaction 0xxx is discarded due to in too distant future

此错误表示使用了一个过大的 nonce 构造交易,发送交易时 nonce 只能比用 current nonce - current nonce + 2000 范围内的,如果比当前可用 nonce 大超过 2000 会报此错误

gasPrice 错误

ZeroGasPrice

交易的 gasPrice 设置为 0 会报此错误。交易的 gasPrice 必须会大于 0.

transaction gas price 1000000 less than the minimum value 1000000000

从 conflux-rust v2.0.2 开始交易的最低 gasPrice 改为 1GDrip(9个0),如果gasPrice 小余该值,会报此错误

gas 设置错误

交易的 gas 字段设置过大,或过小也会发送失败

NotEnoughBaseGas { required: 21000, got: 2000 }

如果交易的 gas 小余 21000,则会报此错误

transaction gas 20000000 exceeds the maximum value 15000000, the half of pivot block gas limit

如果交易的 gas 超过 1500w 会报此错误

其他参数设置错误

EpochHeightOutOfBound { block_height: 53800739, set: 0, transaction_epoch_bound: 100000 }

交易 epochHeight 字段设置错误,只能设置 10w epoch 以内的区块号

Unsupported receiver address type

交易接受地址填写错误

ChainIdMismatch { expected: 1, got: 2 }

交易的 chainId 填写错误,与发送链的 chainId 不一致

编码签名错误

RlpIncorrectListLen

交易内容不完整,可能会报 Rlp 错误长度错误

Can not recover pubkey for Ethereum like tx

此错误为交易签名错误

网络拥堵

在网络拥堵的情况下,交易池中的交易可能会达到容量上限,此时发送交易可能会遇到以下错误

txpool is full

表示交易池中交易已满

Failed imported to deferred pool: Transaction Pool is full

表示交易池中交易已满

其他

Request rejected due to still in the catch up mode.

发送交易的节点未同步到最新数据,仍处于 catch up 模式,需等同步到最新数据后,才能发送交易

Failed to read account_cache from storage: {}

节点错误

参考

具体的 RPC 返回错误详情可参看 cfx_sendRawTransaction error 文档