如何知道Bitcoin Wallet有多少钱?

Bitcoin Network 大致上有两种Node

  • Full Node,存放所有BlockTransaction
  • SPV Node,存放所有Block Header

如果只有Full Node,那我们就不用去想设计Merkle Tree,以及后来的Bloom Filter,那么这个世界就简单多了。但为了要让Bitcoin Wallet(钱包)可以通行所有装置,特别是手机,SPV Node就很重要了,不然就需要100G以上空间存放整个Blockchain,这是不可行的。

自从中本聪的Bitcoin P2P Network论文,2008年横空出世之来,他就预测到,将来必定是SPV Node盛行,所以他很早就提出了SPV (Simplified Payment Verification)的概念。

而后来2012年提出的BIP37 - Connection Bloom Filtering,是基于SPV的概念,用Bloom Filter,提出一个更加可行的方案出来。

本篇先为这个问题:“Bitcion Wallet如何知道有多少UTXO?”,提供简单的回答。

我们知道,Wallet只存所有的Block Header,而没有全部的Transaction,最多只存属于自己的Transaction。一开始,连Block Header都没有的情况下,如何知道Wallet有些UTXO(Unspent Transaction Output)呢?它要去问具有完整帐本(Blockchain)Peer。问的方式有两种:

方法一:下载完整帐本(Blockchain)后自己从里面去找

方法二:向Peer公开Wallet的所有讯息,Peer就回传属于该WalletUTXO

方法三:向Peer公开Wallet的部份讯息,Peer回传可能属于该WalletUTXO

这个问题,讲白一点,就是:“我想知道钱包有多少钱?”

要知道真实的钱包有多少钱,直接打开来数一下就行了。Bitcoin Wallet,是电子钱包,运行的时候,会显示目前的余额,断电的时候,不需要保存余额,因为下次重启的时候,只要去问就好了。根据什么来问?Wallet惟一需要存放的,是一组Private Keys,被安全存放在晶片里,可能是Secure ElementTrust Zone。这一组Key是别人获取不到的,甚至Wallet App自己也获取不到。Wallet的安全晶片,可以从Private Key去推算出Public Key。这个Public Key可以视为Address。有时候Address是从Public KeyHash两次算得来的。

我们把Address视为银行的帐号。所以别人要给我Bitcoin,我就要将Address给别人,请他将钱汇到这个帐号,就行了。

回到原来的问题“我想知道钱包有多少钱?”

方法一:下载完整帐本(Blockchain),然后自己从里面去找

这种方法,最简单,但耗费的网路频宽最多,至要要传输100G以上的资料量。因为Wallet没有向Peer表明,那些Address属于Wallet,所以Peer当然不知道那些Address属于Wallet。我们无法从Blockchain存放的Address,往回推导出是从那一个Wallet产生出来的。所以Peer只好将Blockchain一股脑传给Wallet,让Wallet自己去找。

优点:结果精确,保留隐私

缺点:浪费频宽

方法二:向Peer公开Wallet的所有讯息,Peer就回传属于该WalletUTXO

WalletPeer公开所有的Address,可是这样一来,就泄露隐私。Peer拿到Address,就回报属于该WalletUTXO,及所属的Block。根据中本聪的论文,此Block不会自带所有的Transaction,而是Merkle Path

优点:结果精确,简省频宽

缺点:泄露隐私

方法三:向Peer公开Wallet的部份讯息,Peer回传可能属于该WalletUTXO

WalletPeer公开部份讯息,以Bloom Filter呈现。Peer拿到Bloom Filter,就回报“可能”属于该WalletUTXO,及所属的Block Header,及Merkle Path。因为Bloom Filter没有直接呈现Address,所以保留了一点隐私。

但是Bloom Filter,的特性是:

  • 没有从Bloom Filter过泸出来的Transaction,“一定”不是属于Wallet
  • Bloom Filter过泸出来的Transaction,“应该”是属于Wallet
  • 而且随者WalletTransaction数量愈大,“应该”的准确性就愈低。

优点:保留一定程度的隐私,简省频宽

缺点:结果不精确 (但可接受)

下一篇,对“方法三”,会有图文并茂的说明。


-Count

阅读更多

更多精彩内容