【问题标题】:How to indicate if UTXO is already spent, without examining the entire blockchain?如何在不检查整个区块链的情况下指示 UTXO 是否已被使用?
【发布时间】:2018-11-17 15:51:53
【问题描述】:
假设我想检查某人是否在某个区块链中拥有UTXO。此人可以向我发送包含他的UTXO的所有交易的地址。但我需要确定所有这些 UTXO 还没有被使用。为此,我应该从第一个用户的 UTXO 开始检查整个 区块链。有什么方法可以实现 UTXO 池,以便在我需要验证某人的交易时不检查区块链?
【问题讨论】:
标签:
cryptography
blockchain
bitcoin
cryptocurrency
【解决方案1】:
在 Bitcoin-core 中,如果你同步你的节点一次(这需要一些时间),之后你就不需要使用整个区块链来验证 UTXO。这是因为一个单独的数据库只保留了 UTXO。这使得 UTXO 验证更加高效,因为它只需要搜索大约 1/10 的数据量。
如果您不首先验证它们(通过同步节点),则无法确定交易是否有效,因为您不知道它的祖先是否有效。通过保留一个专用的 UTXO 集,节点对整个区块链进行一次验证,但之后,它可以通过删除已使用的 UTXO 并保存新的 UTXO 来更新 UTXO 集。