以太坊MPT原理,你最值得看的一篇

    MPT的全称是Merkle Patricia Tree, 从这里可以看出MPT是Merkle Tree + Patricia Tree。接下来就就来讲讲这两种树:

 

Merkle Tree

       区块链P2P网络中,如果需要传输的数据很大,就需要同时从多个机器上下载数据,而且很可能有些机器是不稳定(可能下载速度很慢)或者不可信的(需要重新下载)。为了快速下载大块数据并验证,更好的办法是把大文件分割成小的数据块(例如把大文件分割成4K为单位的小数据块)。这样的好处是如果小块数据在传输过程中损坏了或者是错误的数据,那么只要重新下载这一块数据就行了,不用重新下载整个文件。

    由于只有大文件内容的hash, 当其中一块小数据错误时,我们是能检出由小块数据拼凑出来的大数据是错误的,但是我们不知道哪块小数据是错误的,就没法通过重传错误的小数据来纠正。哪怎么处理呢?为每个小块生成hash, 节点先把小块数据的hash都下载下来,然后就可以验证一个一个验证小块数据是否正确了。那问题又来了,小块数据的hash的正确性谁来保证呢?信任节点,比如BT论坛上的bt种子文件,这个种子文件就记录了原始文件的小块数据的hash. 验证问题解决了,但是多出来了小块数据hash,当块数据很大时,这个数据量也不小。因而Merkle Tree出来了,它就是用来解决这个问题的。

    小块数据的hash两两组合再次生成新的hash,然后新生成的hash又两两合并生成更新的hash,直至最后两个hash生成一个hash root,这个叫merkle root(默克尔根)。可见merkle tree和传统bt分片技术只是对小块数据hash的组织方式不一样。

    

  看到上面的图,你可能会说,merkle tree不是生成更多hash数据了啊,怎么能降低数据传输量。确实,对于数据发送方来说,相比传统分片技术,它是需要保存完整merkle tree, 会多占用一点空间。但是对于接受方来说,它在验证某一块数据不需要下载全部hash,只需一段merkle 路径即可ÿ

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值