主页 > imtoken转账手续费 > 智能合约_nonce交易查询、加速和取消
智能合约_nonce交易查询、加速和取消
imtoken转账手续费 2023-12-24 05:14:26
前言
作为开发者以太坊持有量查询,从合约的部署到合约的调用以太坊持有量查询,都会因为gas成本等原因出现各种莫名其妙的问题。
例子:
Error processing transaction request: Transaction gas price supplied is too low.
There is another transaction with same nonce in the queue.
Try increasing the gas price or incrementing the nonce.
我应该怎么办? 仅仅把原理讲清楚,单一的知识点或者零散的知识点对解决问题已经没有帮助了。 只有系统的了解,才能斩妖除魔。
言归正传:
有多少当前交易以及哪些交易待处理
1.1 返回指定地址的交易数量
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount",
"params":["0x88463907954AF22b463D5f3d2c85843C6dFBd39E","latest"],"id":1}'
https://kovan.infura.io/v3/1a63956db7574409bbb5eac5f4ae7e79
1.2 根据交易hash(txhash)查询交易
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash",
"params":["0x7419216815991d6c7aef8c948e6d136276cc47970cd4e1f824c83e4b989ac94b"],"id":1}'
https://kovan.infura.io/v3/1a63956db7574409bbb5eac5f4ae7e79
2. 加速当前交易
1)、假设有笔交易 A:gas price = 5,nonce = 1 ,由于 gas price 太低,广播后,交易一直处于 pending 状态。
2)、创建交易 B,调整 gas price 为更合理的水平,例如 10、20 ,nonce = 1 ,再次发布交易。矿工就会选择 price 更高的交易 A 打包。
3)、此时在矿工的交易池端,B 交易被打包了,矿工会检查 A 交易,发现 nonce 已经存在了,认为 A 是不合理的交易,则会自动丢弃该交易
3.取消当前交易
1)、基于加速交易的案例。
2)、创建交易 B,设置 value =0 ,收款方=发送方,设置更高的 gas price ,广播交易
3)、原来的交易被丢弃了,新交易会被矿工打包,不会丢失任何资金。但是你还是需要为 B 交易付出矿工费
4.元数据
语法:
curl -X POST --data '{}' url
{}:JSON RPC的json内容
url:测试链地址(查看上一章创建以太网测试地址)
3.1 客户端版本
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' https://kovan.infura.io/v3/c71d6322d1b84d86a4749707609379dd
3.2 返回当前网络ID
curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}' url
"1": Ethereum Mainnet
"2": Morden Testnet (deprecated)
"3": Ropsten Testnet
"4": Rinkeby Testnet
"42": Kovan Testnet
3.3 以太坊协议版本
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}' url
3.4 客户端是否在积极挖矿
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}' url
3.5 查询指定账户余额
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}' url