cryptography - 如何在不检查整个区块链的情况下指示 UTXO 是否已被使用?
问题描述
假设我想检查某个区块链中是否有人有UTXO。此人可以向我发送包含他的UTXO的所有交易的地址。但我需要确定所有这些UTXO还没有被使用。为此,我应该从第一个用户的 UTXO 开始检查整个区块链。有什么方法可以实现UTXO池,在我需要验证某人的交易时不检查区块链?
解决方案
在比特币核心中,如果您同步一次节点(这将需要一些时间),之后您就不需要使用整个区块链来验证 UTXO。这是因为一个单独的数据库只保留了 UTXO。这使得 UTXO 验证更加高效,因为它只需要搜索大约 1/10 的数据量。
如果您不首先验证它们(通过同步节点),则无法确定交易是否有效,因为您不知道它的祖先是否有效。通过保留一个专用的 UTXO 集,节点对整个区块链进行一次验证,但之后,它可以通过删除使用的 UTXO 并保存新的 UTXO 来更新 UTXO 集。
推荐阅读
- docker - 从 docker 容器内打开 X-window
- php - 在以后的选择中使用以前的 sql 选择的一部分
- python - 获取for循环中的项目总数
- sql-server - 具有两个数组的对象上的 OPENJSON
- recursion - “(错误)尝试写入无效的内存地址”尝试存储堆栈指针时
- python - 函数返回无值
- python - Pipenv:尝试安装 web3 时出现“安装 cytoolz 时出错”(已安装 python3.8-dev)
- struct - 为 fortran 多态派生类型创建 MPI_Type_Struct
- javascript - 试图减少冗余
- babel-core - 模块构建失败:错误:在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) 处找不到模块“babel-core”