比特币矿工如何检查双花或超支?

use*_*142 3 mining bitcoin

我可以将过程可视化的唯一方法是:在区块链中搜索与正在处理的交易具有相同源地址的所有交易,将它们全部加起来(包括正在处理的 trx)以验证它们加起来小于或等于到源交易金额。

对每笔比特币交易都这样做听起来效率极低。

他们是如何真正做到的?

小智 6

矿工和所有完整节点确实会检查整个区块链以验证新交易,但他们能够有效地进行。

当他们从创世开始扫描区块链时,他们会更新一个仅由未花费输出和该集合的索引组成的内存结构。使用索引,检查新交易的输入之前是否没有被花费非常快。目前大约有 800 万笔未花费的交易输出。

比特币交易不会从地址中花费金额。他们完全花费了一组输出,每个输出都来自特定的早期交易。对较早交易中输出的引用不是通过其地址:这将是模棱两可的。相反,它是由先前交易中输出的数字序列决定的。

一些网络工具,特别是 blockchain.info,给人的印象是事物的运作方式不同,但它们根据上述实际情况自行创造了这种印象。