精通比特币(37):区块链浏览器显示比特币地址的“余额”的原理

  • A+
比特币地址和余额,在交易结构中不存在。 我们看到交易本身并不包含比特币地址,而是通过锁定和解锁比特币离散值的脚本进行操作。 这个系统中的任何地方都不存在余额

 

为了构建“总接收”数量区块链浏览器首先解码比特币地址的Base58Check编码,以检索编码在地址中的公钥的160位哈希值。然后,区块链浏览器搜索交易数据库,使用包含公钥哈希的P2PKH锁定脚本寻找输出。通过总结所有输出的值,浏览器可以产生接收的总值。
完成构建当前余额(显示为“最终余额”)需要更多的工作。区块链接浏览器将当前未被使用的输入保存为一个分离的数据库——UTXO集。为了维护这个数据库,区块链浏览器必须监视比特币网络,添加新创建的UTXO,并在已被使用的UTXO出现在未经确认的交易中时,实时地删除它们。这是一个复杂的过程,不但要实时地跟踪交易在网络上的传播,同时还要保持与比特币网络的共识,确保在正确的链上。有时区块链浏览器未能保持同步,导致其对UTXO集的跟踪扫描不完整或不正确。

 

通过计算UTXO集,区块链浏览器总结了引用公钥哈希的所有未使用输出的值,并产生向用户显示的“最终余额”数目。

 

为了得到这两个“余额”,区块链浏览器必须索引并搜索数十、数百甚至数十万的交易。
总之,通过钱包应用程序、区块链浏览器和其他比特币用户界面呈现给用户的信息通常源于更高层次的,通过搜索许多不同的交易,检查其内容以及操纵其中包含的数据而的抽象而构成。为了呈现出比特币交易类似于银行支票从发送人到接收人的这种简单视图,这些应用程序必须抽象许多底层细节。他们主要关注常见的交易类型:每个输入上具有SIGHASH_ALL签名的P2PKH。因此,虽然比特币应用程序以易于阅读的方式呈现所有了80%以上的交易,但有时候会被偏离了常规的交易难住。包含更复杂的锁定脚本,或不同SIGHASH标志,或多个输入和输出的交易显示了这些抽象的简单性和弱点。

 

每天都有数百个不包含P2PKH输出的交易在块上被确认。 blockchain浏览器经常向他们发出红色警告信息,表示无法解码地址。
以下链接包含未完全解码的最新的“奇怪交易”:https://blockchain.info/strange-transactions。
这些并不一定是奇怪的交易。它们是包含比常见的P2PKH更复杂的锁定脚本的交易。

发表评论

您必须才能发表评论!