主页 > 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.

我应该怎么办? 仅仅把原理讲清楚,单一的知识点或者零散的知识点对解决问题已经没有帮助了。 只有系统的了解,才能斩妖除魔。

言归正传:

有多少当前交易以及哪些交易待处理

siteweiyangx.com 以太坊出矿量_sitesohu.com 以太坊交易查询_以太坊持有量查询

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

sitesohu.com 以太坊交易查询_siteweiyangx.com 以太坊出矿量_以太坊持有量查询

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 ,广播交易

以太坊持有量查询_sitesohu.com 以太坊交易查询_siteweiyangx.com 以太坊出矿量

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

sitesohu.com 以太坊交易查询_siteweiyangx.com 以太坊出矿量_以太坊持有量查询

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

siteweiyangx.com 以太坊出矿量_sitesohu.com 以太坊交易查询_以太坊持有量查询

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