主页 > imtoken安卓官方版 > 比特币地址余额查询的思路与实现
比特币地址余额查询的思路与实现
最近在做比特币地址余额查询
网上有用的资料不多,大多是过去重复所谓的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。 .....地址把他手里的钱都花光了
所以我们可以找到输出和输入?
我们只需要记录找到的输入输出地址,汇总后,确保输入输出值正确,输入值减去输出值得到余额
以下是实际测试图,找到地址就行了
以下是代码思路
这是总体思路。如果有更好的方法,可以和我交流。