数字签名:最初Merkle Tree的目的是高效处理Lamport单次签名。每一个Lamport密钥只能被用来签名一个消息,但是与Merkle Tree结合起来可以签名多个消息。这种方法成为一种高效的数字签名框架,即Merkle签名方法。
P2P网络:在P2P网络中,Merkle Tree用来确保从其他节点接收的数据块没有损坏且没有被替换,甚至检查其他节点不会欺骗或者发布虚假的块。在2.2节中,我们提到了BitTorrent使用P2P技术来让客户端之间进行数据传输,一来可以加快数据下载速度,二来减轻下载服务器的负担。一个相关的问题是大数据块的使用,因为为了保持torrent文件非常小,那么数据块Hash的数量也得很小,这就意味着每个数据块相对较大。大数据块影响节点之间进行交易的效率,因为只有当大数据块全部下载下来并通过校验后,才能与其他节点进行交易。为解决上面两个问题:用一个简单的Merkle Tree代替Hash List。设计一个层数足够多的满二叉树,叶节点是数据块的Hash,不足的叶节点用0来代替。上层的节点是其对应孩子节点串联的Hash。Hash算法和普通torrent一样采用SHA-1。
比特币:Merkle Proof最早的应用是Bitcoin(比特币),它是由中本聪在2009年描述并创建的。Bitcoin的Blockchain利用Merkle proofs来存储每个区块的交易。而这样做的好处也就是中本聪描述到的“简化支付验证”(Simplified Payment Verification,SPV)的概念:一个“轻客户端”(light client)可以仅下载链的区块头,即每个区块中的80字节的数据块,仅包含5个元素,而不是下载每一笔交易以及每一个区块。5个元素为上一区块头的Hash值、时间戳、挖矿难度值、工作量证明随机数(nonce)以及包含该区块交易的Merkle Tree的根Hash。
资料来源:《IPFS原理与实践》,文章链接:https://developer.aliyun.com/article/726565
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。