eth_sendRawTransaction
方法将预先签名的交易广播到以太坊网络。此方法用于在交易离线签名后提交所有类型的交易,使其成为区块链上任何状态改变操作的主要方法。
此方法将已签名的交易提交到网络进行处理。
已签名的交易数据(十六进制字符串)
交易哈希,如果交易尚不可用,则为零哈希
在使用eth_sendRawTransaction
之前,您需要:
以太坊支持不同的交易类型:
类型 | 描述 | 结构 |
---|---|---|
传统 (类型 0) | 带有gasPrice的前EIP-1559交易 | {nonce, gasPrice, gasLimit, to, value, data, v, r, s} |
EIP-2930 (类型 1) | 带有访问列表的交易 | {chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, v, r, s} |
EIP-1559 (类型 2) | 带有优先费用的交易 | {chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, v, r, s} |
{
"jsonrpc": "2.0",
"id": 1,
"result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": 3,
"message": "execution reverted: Dai/insufficient-balance",
"data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000..."
}
}
错误 | 描述 | 解决方案 |
---|---|---|
Nonce过低 | 交易nonce已经被使用 | 使用eth_getTransactionCount 获取最新nonce |
Nonce过高 | 交易nonce高于预期 | 使用正确的顺序nonce |
余额不足 | ETH不足以支付gas + 价值 | 向发送者地址添加更多ETH |
Gas价格过低 | 提供的gas价格低于最低要求 | 增加gas价格或使用EIP-1559参数 |
替换交易定价过低 | 替换交易时,新的gas价格太低 | 将gas价格至少提高10% |
已知交易 | 交易已在内存池中 | 等待现有交易 |
执行撤销 | 合约执行失败 | 检查合约条件和参数 |
广播交易后:
eth_getTransactionReceipt
直到它返回非空结果status
字段:
0x1
表示成功0x0
表示失败(撤销)在发送交易之前,您可以:
eth_estimateGas
获取所需的大致gas量eth_feeHistory
检查当前网络条件