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 文档
No Comments