比特币如何验证一笔交易的来源没有被花费?
发布于 5 个月前 作者 _zhj 954 次浏览 来自 比特币

比特币的记账方式是记录UTXO,如果A给B发送一笔交易,怎么验证这个交易来源还未被花费?也就是怎么区别未花费的来源和已花费的来源? 如果这个来源所在的区块是block-M,那么要验证来源是否花费,是要遍历block-M之后的所有区块中的交易吗?如果这样的话,验证也这样太慢了吧.还是还有其他高效的方法?

3 回复

不用溯源的,每个节点,交易在本地解析执行之后,就会把交易所首先的UTXO数据/所花费的UTXO数据在本地的存储里做对应的更新。 所以当一笔交易来的时候,每个节点只需要从自己本地的UTXO数据库里去验证就OK了。

@maiiz 感谢大神回答,还有点疑问 这个本地存储相当于在本地有个UTXO的缓冲池是吧. 那么如果一个全节点刚加入网络,从第一个块开始同步到最后一个块的过程是不是这样: 构建一个新的缓冲池,根据每一笔交易,不断更新缓冲池中的UTXO,直到最新状态. 还是这个缓冲池的内容也可以从别的节点获取,直接更新成最新的状态?

@_zhj 这个UTXO 数据目前是不能同步的,P2P协议还不支持,因为没有一个节点有历史上某个区块、或者说某个时间节点的UTXO数据,UTXO数据永远是节点自己最终的数据。

回到顶部