主页 > imtoken安卓官方版 > 比特币地址余额查询的思路与实现

比特币地址余额查询的思路与实现

imtoken安卓官方版 2023-06-26 05:40:35

最近在做比特币地址余额查询

网上有用的资料不多,大多是过去重复所谓的utxo理论

目前想有两种方式查询任意比特币地址的余额。

1.在索引块之后,./bitcoin文件夹下会多出一个chainstate文件夹。该文件夹存储所有比特币历史 utxo 交易记录集,根据区块的增加实时更新。事实上,chainstate 是一个 levelDB 数据库。只要使用对应的key,就可以访问levelDB。当找到key对应的值时,返回一段字符。字符串,后跟版本号,然后是十六进制余额,地址等。

2.index 块之后,./bitcoin 文件夹下会有一个indexs 文件夹。该文件夹存储每个块的编号。从图中可以看出比特币地址怎么查询,每个区块中至少会有一笔交易。下图是高度为1413346的区块中包含的交易哈希

通过交易哈希,我们可以看到每笔交易的信息。通过交易信息的vin,我们可以追溯之前的交易。如果我们继续追溯比特币地址怎么查询,我们可以找到挖矿奖励,也就是终点

我这里使用的方法是遍历每个高度的区块交易hash,通过回溯上一笔交易得到当前交易的输入,也就是上一笔交易的输出地址

如果最后一句看不懂,建议看一下比特币的utxo机制

例如

可以看出,当前的vout有两个值,我们只需要有addresses值的值

现在我们知道了,mmznl.......这个地址在当前高度的余额是0. 51286768,谁给他发了这笔交易,我们查找vin的txid得到交易信息如图下面

我们可以看到它是mob7ko。 .....地址把他手里的钱都花光了

所以我们可以找到输出和输入?

我们只需要记录找到的输入输出地址,汇总后,确保输入输出值正确,输入值减去输出值得到余额

以下是实际测试图,找到地址就行了

以下是代码思路

这是总体思路。如果有更好的方法,可以和我交流。