温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用web3.js获取以太坊交易确认数

发布时间:2021-12-24 16:43:54 来源:亿速云 阅读:501 作者:iii 栏目:互联网科技

这篇文章主要介绍“如何使用web3.js获取以太坊交易确认数”,在日常操作中,相信很多人在如何使用web3.js获取以太坊交易确认数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用web3.js获取以太坊交易确认数”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

要获取一个以太坊交易的确认数,需要使用两个RPC调用:

  • eth_getTransactionReceipt:获取交易收据

  • eth_blockNumber:获取最新区块号

首先利用eth_getTransactionReceipt调用获取指定的交易收据,例如,下面的命令获取交易0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238的收据:

~$ curl -X POST --data '{
  "jsonrpc":"2.0",
  "method":"eth_getTransactionReceipt",
  "params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],
  "id":1}' http://localhost:8545

在结果中可以获取该交易所在区块编号:

{
"id":1,
"jsonrpc":"2.0",
"result": {
     ...
     blockNumber: '0xb', // 区块11
     ...
  }
}

然后就可以在随后的任意时刻使用eth_blockNumber调用来获取当前最新块信息,例如:

~$ curl -X POST --data '{
  "jsonrpc":"2.0",
  "method":"eth_blockNumber",
  "params":[],
  "id":83}' http://localhost:8545

在结果中可以获取当前最新一个区块编号:

{
  "id":83,
  "jsonrpc": "2.0",
  "result": "0xf" // 区块15
}

用区块链中最后一个区块的编号,减去交易所在区块编号,再加1,就可以得到一个以太坊交易的确认数了:

交易确认数 = 最新区块号 - 交易所在区块号 + 1 = 15 - 11 + 1 = 5

使用web3.js获取以太坊交易确认数

基于上面的原理,我们很容易编写web3.js代码来获取以太坊交易确认数:

async function getTxConfirms(txhash){
  const receipt = await web3.eth.getTransactionReceipt(txhash)
  //later...
  const latest =  await web3.eth.getBlockNumber()
  //confirms
  return latest - receipt.number + 1
}

调用上面实现的getTxConfirms()函数,就可以获取指定交易当前的确认数了:

getTxConfirms('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b')
  .then(confirms => console.log(confirms))

到此,关于“如何使用web3.js获取以太坊交易确认数”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI