主页 > imtoken钱包下载安卓最新版本 > 如何计算以太坊交易确认?

如何计算以太坊交易确认?

以太坊和比特币和比特币一样,都有最长链的概念,所以也有交易确认的概念。当一个以太坊交易所在一个区块中新加入区块链时,该交易的确认数为1,之后每增加一个区块,该交易的确认数就增加1。显然,一个交易的确认数越多。以太坊交易,交易在区块链中埋藏得越深,被篡改的可能性就越小。那么,如何获取以太坊交易的确认数呢?网络

如果你想快速掌握以太坊应用开发以太坊上几家交易所以太坊上几家交易所,推荐汇智网的以太坊智能合约及DApp开发介绍,基于在线编程环境完成一个投票DApp的实际开发,如果你也可以咨询助教你有任何问题。编程

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

首先使用 eth_getTransactionReceipt 调用来获取指定的交易收据。例如,以下命令获取交易 0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238 的收据:api

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

结果中可以得到交易所的区块号:curl

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

那么你可以在后续的任何时间使用eth_blockNumber调用来获取当前最新的区块信息,例如:async

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

结果中可以得到当前最新的区块号:function

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

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

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

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

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

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()函数获取指定交易的当前确认号:3d

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

原文链接:如何获取以太坊交易确认数-汇智网络