据我所知,通过将哈希函数递归应用于块内容,merkle-tree可用于分离块的实际事务(或其他内容)及其验证过程。
这使得实现simplified payment validation(或验证块中任何其他数据)成为可能。
链接的定义指出SVP是一个
[...]方法,用于在不下载整个块的情况下验证块中是否包含特定交易。
如果merkle树是一种检查特定交易是否属于区块的方法,则意味着我们不“信任区块”,因此正在检查搜索到的交易的哈希是否属于该树的一部分。如果我们不信任该块(或该块的原始验证者),那么我们怎么会相信Merkle树,该树也可能是伪造的(或者不是吗?)。
我们是否仅依赖于具有伪随机值的事实,并且很难创建具有相同根值但节点值不同的假树?
谢谢!
答案 0 :(得分:1)
了解默克尔树
默克尔树使我们能够在一个分类账中对多个交易进行多路复用。树的每个叶节点都代表一个事务。而所有其他节点都是其子节点的哈希值。
这有什么好处?
事务块将仅需要存储Merkle树的根。 SPV声明的目的是,在链上进行交易的任何客户都可以只存储从根到其交易的哈希路径,而不必存储整个账本,因为账本可能很大。
我们不信任该阻止?
处理完交易后,您可以通过跟踪从块中提供的根到作为交易的叶子节点的路径来验证是否已将其添加到分类帐中。因此,您进行验证以确保您的交易是否已被实际处理。
可以伪造吗?
不会。一旦主链接受了一个区块(通常是在比特币中再添加约5或6个区块),您的交易就将不可逆转。区块链的概念是账本是不可变的。这意味着merkle树的根也永久存储在分类帐中,无法修改。现在,要跟踪事务,您只需存储标题和从根到事务的路径。