分类
Uncategorized

如何/在何处存储事务到特定块的映射?

根据比特币白皮书,一个块包含字段“Previous Hash”、“Nonce”和“Root Hash”。根哈希是该特定块中已确认的所有事务的merkle树根节点。
我在最上面的答案的第五段读到了什么是梅克尔根?:
如果我们有一个声称来自块234133的事务,我们可以获取该块的事务,验证Merkle树,并知道该事务是有效的。
假设区块链中某个区块b持有t笔交易。特定事务集到特定块的映射存储在何处以及如何存储?因为区块链本身只包含所有交易的根哈希,以节省空间。那么,是否还有其他隐藏的组件没有在白皮书中公布,是否有资源全面了解它们?
谢谢。
交易
梅克尔树
utxo集合
梅克尔布洛克
分享
改进这个问题
跟随
22小时前编辑的
墨奇♦
55K33333金徽章152152银徽章479479铜徽章
20年9月26日0:33问
比图
2322青铜徽章
2.
白皮书不像是对系统设计的一个陈述,它充其量只是对概念的概述。实际的实现甚至没有严格遵循上面所说的,你不应该期望一个9页的文档匿名9月26日0:46
添加评论
3个答案
2.
动态地重新创建merkle树以在块中验证它,块中事务的顺序隐式地描述了merkle树在重建时的样子。事务作为块的一部分存储,确切地说是头部,一个数字表示要遵循的事务数,然后是所有事务的列表。
分享
改进这个答案
跟随
回复时间:9月26日0:42
匿名的
13.6k22金徽章2020银徽章4141铜徽章
但是,当您希望验证交易是否已发生时,您如何找到特定交易或具有特定交易的区块Bittu 9月26日0:58
1.
您要么读取所有数据块并保存一个事务索引,要么请求一个知道的服务墨奇♦ 20年9月26日1:35
添加评论
0
白皮书只是给出了比特币的概念性概述,但肯定不是一个完整的规范。无论如何,除了区块链本身,跟踪交易和UTXOs更多的是一个实现细节,而不是一个协议问题。不同的探索者、节点和钱包在方法上会有所不同,但通常在事务和块之间有一些不同的映射,用于不同的目的:

区块链:区块到事务的映射
首先,区块链中包含的区块包括它们确认的交易。完整的区块链由存档的完整节点保留。正如Anonymous已经解释的,merkle树只隐式地存储在区块链中,每个区块只是按顺序列出其完整的交易集。Full节点通过在块验证期间以及从它们请求merkle证明时重新灰化块的事务,按需重新创建完整的merkle树。
特定兴趣:事务到块映射
钱包通常保留涉及其地址的交易副本。这些交易对象通常应保持块高度和块散列,以便钱包能够处理链重组并跟踪确认计数。我怀疑一些钱包实现也可能保留Merkle证据,如果他们希望能够证明其他设备存在资金。
当配置启动索引-tindex=1时,比特币核心将保留一个完整的事务索引。
UTXO集合:输出到事务/块映射
完整节点以未使用事务输出(UTXO)集的形式维护所有比特币资金的分类帐。UTXO通过其输出点进行唯一标识([txid:vout])这意味着它们内在地引用了相应的事务。UTXO对象通常还应该包括对确认创建UTXO的事务的块的直接或间接引用。
探险家
探索者通常保存更全面的事务、块、地址和UTXO数据库。
分享
改进这个答案
跟随
19小时前回答的
墨奇♦
55K33333金徽章152152银徽章479479铜徽章
添加评论
-3
我不确定作为一个人你是否想验证一个特定的事务,或者作为一个开发人员是否想编写代码来验证一个给定了块号、地址等的特定事务
1-一般来说,如果用户A在块B中的事务X之后说“n Btc”作为UTXO而变为“n’Btc”;然后,您想验证UTXO“n”的开销(通过检查Merkle证明/见证)以及块B中UTXO“n’”的创建。
2-或者作为一个用户,没有任何编码,你可以去这些网站之一https://m.btc.com/ https://www.blockchain.com httpshttp://blockchair.com
-或者从块#开始(如果块中有超过1000个TX,则很难通过这种方式进行检查)例如。这些照片显示了我是如何检查块100000的coinbase UTXO在块266668中花费的输入图像描述在这里输入图像描述在这里输入图像描述在这里输入图像描述
-或者根据给定的用户地址,你得到这样的结果,然后你在给定的TX中搜索UTXO值(无论是从箭头方向输入还是输出,以及你在这里看到的颜色)在这里输入图像描述在这里输入图像描述当你点击它时,它会将你带到创建它的TX块no&all info;假设我点击了上面的链接,我得到了交易的详细信息&这里没有输入图像描述的块
(是的,这些r可能是钱包地址,但可能更容易检查,因为有一个时间顺序,而在一个街区内,你不知道你的TX的索引/相对顺序是什么;我的意思是你没有说它被给予)

如果你作为一个开发人员问,我猜比特币的核心代码告诉你r是如何存储的https://github.com/bitcoin/bitcoin/blob/398dd678338971d2189934713c83c184742f293f/src/coins.h#L60-L65我昨天检查这个时碰巧发现“恰巧”https://github.com/mit-dci/utreexo/issues/277
我希望这有助于。。。
分享
改进这个答案
跟随
6月23日7点11分回答

133枚青铜徽章
添加评论

时光素材-香车美女  (633)blockchainBTC比特币区块链www.qkl91.com

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注