我可以可视化该过程的唯一方法是:在区块链中搜索与正在处理的交易具有相同源地址的所有交易,将它们全部加起来(包括正在处理的 trx)以验证它们加起来小于或等于到源交易金额。
对每笔比特币交易都这样做听起来非常低效。
他们是怎么做到的?
矿工和所有完整节点确实会检查整个区块链以验证新交易,但他们能够有效地做到这一点。
当他们从创世开始扫描区块链时,他们会更新仅包含未使用输出的内存结构,并索引该集合。使用索引,检查新交易的输入是否之前没有被花费非常快。目前大约有 800 万个未使用的交易输出。
比特币交易不会从地址中花费金额。他们完全花费了一组输出,每个输出都来自特定的早期交易。在早期交易中对输出的引用不是通过它的地址:那将是模棱两可的。相反,它是由较早交易中输出的数字序列。
一些网络工具,尤其是 blockchain.info,给人的印象是事情的运作方式不同,但它们是根据上述实际情况自行创造的。