查询单笔历史交易属于哪个区块
发布于 7 天前 作者 lvmoney 101 次浏览 来自 新手入门

知道某一笔交易(可以获得其交易tx_hash),怎么获得其属于哪一个区块(区块编号)。 1、存交易的时候 ,这笔交易和区块怎么建立的关系 2、检索的时候 怎么通过 该关系 获得 找到对应的区块 3、能有详细的思路 4、最好能举例说明 谢谢,大神。。。

7 回复
> eth.getTransaction("0xabd99dc5edc53576593f22a5992647999977fc7ab6549a06daa1a267e83c0533")
{
  blockHash: "0x3a031152313a2d8982ad45d4da3159cab586ad6a007243099f572a4fb049a9dc",
  blockNumber: 43,
  from: "0x9b15a5f752f5a182b6537eb6602aa72af9f45bd6",
  gas: 90000,
  gasPrice: 18000000000,
  hash: "0xabd99dc5edc53576593f22a5992647999977fc7ab6549a06daa1a267e83c0533",
  input: "0x",
  nonce: 8,
  r: "0xeb2175a78c53f202c9b90803ece8e1db1c120cf199411e1b2d428176dedb0195",
  s: "0x18aca5bdce12c1735d6d4bcafb81687af54f2301d28bdf207338b52588ef674e",
  to: "0xdd1d7957c369a3c061161c624abef2988d912775",
  transactionIndex: 1,
  v: "0x34",
  value: 433333333
}

blockHashblockNumber 就是你想要的

@路人-戊 老哥。想到达的效果就是我知道某笔交易(能够获得其txhash),想要通过这个hashcode快速的定位这笔交易在哪个区块(blockhash) 1、单笔交易在存入的某个区块的时候是否在blockhash、blocknumber、txhash建立了某种联系? 2、也就是如您所列给一个txhash,在代码中如何返回获得其他的关联的数据(这笔交易的详细信息,如您所列)的实现方式 3、或者这么理解:我知道交易的txhash,怎么快速从区块中得到其详细信息

非常感谢,再次十分感谢

1、刚存入的时候不会,交易发出去是在它被打包到区块之前的,被打包之后才有对应关系 2、通过rpc 3、和问题2重复,可以通过console里面的方法(如上)或者rpc

  • 1、单笔交易在存入的某个区块的时候是否在blockhash、blocknumber、txhash建立了某种联系?

区块的生成就是先把交易放到区块数据里构造出满足难度要求的区块,节点验证后存到本地,本地存储时会建立区块hash索引,区块里包含交易hash列表,交易hash同时也索引,这样查询的时候就能通过hash的索引查到这笔交易,交易信息里应该也存储有区块的hash对应关系。

  • 2、也就是如您所列给一个txhash,在代码中如何返回获得其他的关联的数据(这笔交易的详细信息,如您所列)的实现方式

这种实现方式就是1里面的存储方式的查询了,通过交易hash查到交易信息,交易关联的区块信息

  • 3、或者这么理解:我知道交易的txhash,怎么快速从区块中得到其详细信息

如上所述,如果交易也存有区块的hash值的话,那么查到这笔交易的时候,再通过区块hash查到区块信息,这样就可以查到整个区块详细信息了。

@路人-戊 谢谢,老哥。 但是,我需要知道的是怎么实现,怎么在代码或者数据上去建立关系,或者在业务上怎么建立的联系。 例如:我只知道一笔交易的hashcode(这边交易的其他信息不知道),我需要通过这hashcode找到对应的区块,然后获得该交易的详细信息

@maiiz 谢谢,老哥。考虑到过你说的这种实现方式。但是个人觉得这种方式,只适合检索和自己有关的交易(也就是和私钥相关)。但是,如果全文检索,或者说这笔交易和我无关,但是我想通过别人发给我的交易hash查看交易的详情,如果这个索引信息只存在于发起交易人的本地,个人感觉这种设计无法实现。于是有如下疑问: 1、区块链检索是不是只能检索和自己相关的交易 2、如果1是,那怎么实现全文检索呢? 3、是不是把所有的交易都要建立索引存到区块? 4、如果3是,感觉有点不是区块链的功能范围 5、也考虑过区块链只存数据,同时在其他非区块链应用系统中来存检索数据并提供向外检索的接口数据。但是这种设计貌似不和区块链的设计规则

谢谢,老哥。请继续帮我解答,谢谢。。。。

1、区块链检索是不是只能检索和自己相关的交易

比特币里默认只检索自己相关的交易,但也可以通过配置txindex=1来让所有交易被索引,达到所有交易索引的目的,以太坊是全部交易默认索引。

2、如果1是,那怎么实现全文检索呢?

1里已经回答了,所以默认就需要把所有交易存储的时候建立索引。

3、是不是把所有的交易都要建立索引存到区块?

是的,但也做成可以选择(像比特币)

4、如果3是,感觉有点不是区块链的功能范围

这是存储&查询的功能范围,如果你想rpc接口能支持根据交易hash来查询,就需要做成所有交易都有索引。

5、也考虑过区块链只存数据,同时在其他非区块链应用系统中来存检索数据并提供向外检索的接口数据。但是这种设计貌似不和区块链的设计规则

你提的这个方案也是可行的,典型的区块链浏览器就是你说的这种形式,节点存储自己格式的账本数据,支持复杂查询的数据,由应用层(区块链浏览器)来处理。

回到顶部