SPV Node如何建立UTXO Pool?

这个问题,又衍生另一个问题。

SPV Node需要建立包含所有UTXOUTXO Pool吗?

我们可以从Wallet(电子钱包)的角度去想这些问题。

BitcoinUTXO (Unspent Transaction Output),就是尚未花费的输出,相当于现实世界还没有花出去的钞票。

Software WalletSPV Node的一种,它会有一个Database储存属于该WalletUTXO Pool

Wallet为何不存放别人的UTXO呢?

因为这样做没有多大用处。我们知道Wallet,相当于现实世界的钱包,Wallet所记录的UTXO,其值的加总,就相当于现实世界的钱包里放了多少钱。

现实世界里,你的钱包会记录别人的钱包有多少钱吗?

不会的。所以Bitcoin Wallet只记录所属的UTXO就好了。

使用新的Wallet,它的UTXO Pool为空的,因为还没有用它来进行Transaction。只要有Transaction发生,并且该Transaction收集到Block,成为Blockchain,该TransactionOutput就是UTXO了。这时WalletUTXO Pool就会记录一笔UTXO了。

UTXO Pool就是Persistent Database,如果被破坏了,UTXO不见了,是否表示钱就不见了?

我们使用Bitcoin不用担心Database消失这件事。因为WalletUTXO来自于Blockchain,而每一个Node都有相同的Blockchain。所以UTXO不见了,只要去连网,重新下载UTXO就好了。我们要担心的是Private Key消失或泄露。

即然WalletUTXO来自于网路上的Blockchain,为何还要自己保存一份在UTXO Pool

那是为了Offline Payment方便。可以在离线状况,知道自己有多少钱。甚至可以做到离线支付。

如何预防 Malicious Wallet (恶意钱包)

Bitcoin Wallet有很多型式,程式是其中一种。我们可以自己写一个Wallet程式,然后建立一个Transaction,去挖别人的UTXO,变成自己的吗?

如果有别人的Private Key,这么做是可行的,因为我们可以拿别人的Private KeyTransactionInput签名。这样一来,当Transaction上传到某个Node,会被验证通过,进而放到Blockchain,这样钱就要不回来了。

所以WalletPrivate Key非常重要,绝不能泄露出去,也绝不能不遗失。因为若Private Key遗失,我们就没办将UTXO花掉。所以:

Private Key遗失”,就是钱不见的意思。

Private Key泄露”,就是钱随时会被愉走的意思。

所以有另一种WalletPaper Wallet,就是将Private Key印出来,长的像钞票似的,上面有Private Key,还有它的二维码。说它长的像钞票,其实就是钞票。和一般钞票不同,这张钞票是不能给别人看到的,自己留者备份,防止Private Key遗失。

下图是“Mastering Bitcoin”这本书里,谈到的Paper Wallet


Paper Wallet安全吗?

这里有一个吊诡的地方。我们做Security System的都知道,存放Private Key最安全的地方是Secure Element,程式是无法读取里面的Private Key

程式要能读取Private Key,才能列印。

Private Key能被程式读取,表示它的储存方式是不安全的。

这里面还有很多细节,需要去探讨。用密码去保护Private Key,可能是其中一个方法。目前我还没有明确的答案。


-Count

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值