区块链如何运用merkle tree验证交易真实性

广告位招租
扫码页面底部二维码联系

大部分材料都会提到区块中保存了merkl【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】e根,并且利用它作交易真实性验证。但是具转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net体如何作这个真实性验证,没有一篇文章可以未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。通俗的讲出来。本文假设你已经知道区块链中著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】merkle tree的原理,现在想搞明【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。白具体怎么来实现交易真实性验证。

转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。

Merkle Tree【转载请注明来源】

转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。原创内容,盗版必究。

这个小节简述一下merkle的原理,具体【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。详解会另外写文章,你关注我的文章即可。简著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】单说,merkle tree就是一个ha【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.netsh二叉树,父节点是两个子节点的doub【版权所有】唐霜 www.tangshuang.net【作者:唐霜】le sha256的结果,叶子节点就是交【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】易的content的double sha【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。256结果。

【作者:唐霜】【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】

blockchain merkle tr未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.netee

【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。

上图中最下面那一层就是交易数据,每一个交【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】易都可以计算出一个hash,从而层层向上著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net,得到merkle root。但是由于b未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。lockchain里面都merkle运算【作者:唐霜】【版权所有,侵权必究】要求叶子节点是偶数,所以,当一个区块内包【作者:唐霜】【原创不易,请尊重版权】含当交易数量为奇数时,把最后一个交易复制原创内容,盗版必究。未经授权,禁止复制转载。一份,凑成偶数。

未经授权,禁止复制转载。【原创不易,请尊重版权】【转载请注明来源】【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net

最后就是把merkle root保存在区【未经授权禁止转载】未经授权,禁止复制转载。块头中,交易数据被保存在区块体中,其实中著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。间当那些hash并没有被保存,它们只是运【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】算过程数据。

【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net【本文受版权保护】本文版权归作者所有,未经授权不得转载。

SPV【原创不易,请尊重版权】

著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】

为什么要搞这么复杂?直接把所有交易数据保【本文首发于唐霜的博客】【原创不易,请尊重版权】存起来了,要验证交易是否存在还不简单吗?【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。之所以要这么干,是因为比特币发明之初,中【转载请注明来源】转载请注明出处:www.tangshuang.net本聪想到有一种轻钱包的设计,这就是SPV本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。(简化支付验证,Simplified P【原创内容,转载请注明出处】原创内容,盗版必究。ayment Verification)本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net

【原创不易,请尊重版权】原创内容,盗版必究。【原创内容,转载请注明出处】

轻钱包并不保存完整的区块链,而是只保存每著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】一个区块的区块头。区块体保存了完整的交易未经授权,禁止复制转载。【未经授权禁止转载】信息,而交易信息需要的存储量大部分都是交著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net易头的千倍以上。所以,如果只保存交易头,未经授权,禁止复制转载。【本文首发于唐霜的博客】就可以极大的减少本地客户端存储的区块链信【转载请注明来源】【本文首发于唐霜的博客】息。

【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】

但是,不能因此让区块链无法工作啊。如果这【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。个时候轻钱包要对某一个交易进行验证,而本原创内容,盗版必究。未经授权,禁止复制转载。地又没有这个交易的信息,那怎么验证呢?这本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】时,区块头里面的merkle root就【版权所有,侵权必究】【原创不易,请尊重版权】要起作用了。

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。

验证路径【本文首发于唐霜的博客】

【版权所有】唐霜 www.tangshuang.net【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。

在讲述轻钱包的验证过程之前,我们需要知道著作权归作者所有,禁止商业用途转载。【本文受版权保护】如何在merkle tree里面做验证。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。我们已知merkle tree里面父节点【版权所有,侵权必究】【原创不易,请尊重版权】和子节点的运算关系,因此,当我们要证明一【转载请注明来源】本文作者:唐霜,转载请注明出处。个叶子节点存在于这棵树时,只需要得到从该【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】叶子节点到根的运算过程里面需要的那些ha原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】sh即可,并不需要所有叶子节点参与计算。

【本文首发于唐霜的博客】未经授权,禁止复制转载。未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。

merkle验证路径【作者:唐霜】

【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】【原创内容,转载请注明出处】

你可能觉得有点奇怪,为什么不直接把所有的本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】叶子节点告诉它就行了,你用所有叶子节点能本文作者:唐霜,转载请注明出处。【未经授权禁止转载】算出root hash就验证通过了。但事【原创内容,转载请注明出处】原创内容,盗版必究。实就是这样,因为每一个父节点hash一定【本文受版权保护】【版权所有,侵权必究】是由两个子节点hash运算得到,所以,我【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。们只需要挑选出所有参与运算的节点,就可以【作者:唐霜】著作权归作者所有,禁止商业用途转载。证明这个叶子节点存在于树中。这样可以减少【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。hash运算的次数。而这些被挑选出来的节【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。点,以及它们之间的层级关系,就是验证路径本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。,即上图中merkle root那个盒子原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】下面的所有盒子。

原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。【本文首发于唐霜的博客】

如何证明交易的真实性?转载请注明出处:www.tangshuang.net

【版权所有,侵权必究】【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】

比特币网络中的交易,只有已经被记录到区块【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net链,并且已经得到6个确认的,才被认为是真【作者:唐霜】【原创不易,请尊重版权】实的,只有基于这些真实交易发起的新交易(转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net输入与输出的概念),才是合法的。

【转载请注明来源】【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。

我们询问一个交易是否真实,往往基于以下前【本文首发于唐霜的博客】【本文首发于唐霜的博客】提:

著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。未经授权,禁止复制转载。【本文首发于唐霜的博客】
  • 我们在问一个交易是否已被记录到区块链中【版权所有】唐霜 www.tangshuang.net
  • 【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net
  • 而且这个交易所在的区块链是最长的哪一条,本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net没有在分叉链上
  • 【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。
  • 当每个节点接收到一条交易广播时,我们要查未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net询作为一笔新交易的输入的真实性
  • 【原创不易,请尊重版权】原创内容,盗版必究。原创内容,盗版必究。【作者:唐霜】【本文受版权保护】
  • 矿工对交易进行打包之前,对所有的输入进行转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】真实性验证(在矿工接收到交易信息时就已经【版权所有,侵权必究】原创内容,盗版必究。验证过了,打包的时候验证2000条交易信【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net息不可能)
  • 本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】

那么对于SPV轻钱包而言,怎么知道一个交本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。易是否真实的呢?SPV拿到一个交易信息之本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】后(比如接收到一笔钱),并不能确认这个交本文版权归作者所有,未经授权不得转载。【转载请注明来源】易是否合法,因此要对这个交易的输入进行验【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】证。但是它只拿到了单个交易的信息,而没有未经授权,禁止复制转载。未经授权,禁止复制转载。本地的完整区块链数据,因此,SPV要拿着著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。这个交易的信息向网络发起查询请求,这个请【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】求被称为merkle block mes【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】sage。当其他有完整区块链数据的客户端【作者:唐霜】【版权所有,侵权必究】收到这个请求之后,利用传过来的交易信息在【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。自己的区块链数据库中进行查询,并把验证路本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】径返回给请求源,SPV拿到验证路径之后,未经授权,禁止复制转载。未经授权,禁止复制转载。再做一次merkle校验,确认无误之后,著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】就认为这个交易是可信的。

本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【本文受版权保护】【本文受版权保护】【版权所有】唐霜 www.tangshuang.net

现在的问题是:转载请注明出处:www.tangshuang.net

转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。
  • 怎么从区块链里面查一个交易?著作权归作者所有,禁止商业用途转载。
  • 本文作者:唐霜,转载请注明出处。【作者:唐霜】原创内容,盗版必究。原创内容,盗版必究。【版权所有,侵权必究】
  • 怎么获取merkle验证路径?本文作者:唐霜,转载请注明出处。
  • 未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】
  • 怎么确保网络上这个返回的验证路径不是伪造【作者:唐霜】转载请注明出处:www.tangshuang.net的?
  • 【未经授权禁止转载】未经授权,禁止复制转载。【本文首发于唐霜的博客】【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。

从区块链查交易本文版权归作者所有,未经授权不得转载。

原创内容,盗版必究。本文作者:唐霜,转载请注明出处。【转载请注明来源】【作者:唐霜】

区块链的数据结构是离散的,比特币里面一个本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。区块被保存在一个文件里面,要得到一个交易原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】的验证路径,必须得到这个交易所在的区块链【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】。这是一个复制的查询过程,可能需要把所有本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】的区块都遍历一遍才能找到。因此,bloc原创内容,盗版必究。转载请注明出处:www.tangshuang.netkchain.info这样的网站孕育而生转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net,帮助你通过一个信息查这个信息在区块链上本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】的所有相关记录。但是对于客户端而言,可没【原创不易,请尊重版权】【原创内容,转载请注明出处】那么容易,它不能信任blockchain转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。.info这个网站,只能信任自己本地存储著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。的区块链。所以,只能用比较合理的算法,去著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】优化交易查询。

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net

一种设计是,把每一个区块的数据结构修改为著作权归作者所有,禁止商业用途转载。【本文受版权保护】关系型数据库,通过关系型数据库,可以用s【原创不易,请尊重版权】转载请注明出处:www.tangshuang.netql语句快速查询。但是,要遍历查询所有区著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】块链,是比较浪费的。还有一种想法是,利用本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。交易的时间戳来快速定位区块位置,在临近的本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】几个区块中快速找到它。

【转载请注明来源】【原创不易,请尊重版权】【未经授权禁止转载】【本文受版权保护】

如何获取merkle验证路径?【原创不易,请尊重版权】

著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【本文受版权保护】本文作者:唐霜,转载请注明出处。【转载请注明来源】

实际上,merkle的验证路径生成的前提【作者:唐霜】【转载请注明来源】是已经存在一棵完整的merkle树。市面【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】上有很多merkle树的实现包,有的包直【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】接给出来getProof的方法来获取某个【本文首发于唐霜的博客】原创内容,盗版必究。叶子节点的验证路径。

本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net【作者:唐霜】原创内容,盗版必究。

在客户端收到merkle block m【本文受版权保护】本文版权归作者所有,未经授权不得转载。essage之后,要执行下面的步骤:

【版权所有,侵权必究】【本文首发于唐霜的博客】【作者:唐霜】
  1. 通过上述方法找到包含该交易的区块【转载请注明来源】
  2. 【转载请注明来源】【转载请注明来源】【本文受版权保护】
  3. 检查该区块是否是整个网络中最长链条里面的
  4. 著作权归作者所有,禁止商业用途转载。【作者:唐霜】【未经授权禁止转载】
  5. 取出所有交易生成merkle tree,未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。利用getProof方法得到该交易的验证未经授权,禁止复制转载。未经授权,禁止复制转载。路径
  6. 【本文受版权保护】【版权所有,侵权必究】【本文首发于唐霜的博客】
  7. 将该验证路径发送回请求源未经授权,禁止复制转载。
  8. 转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。【作者:唐霜】

SPV得到响应之后,要做如下验证:本文作者:唐霜,转载请注明出处。

转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】【本文受版权保护】【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】
  1. 同步区块链,确保是整个网络中最长的一条【版权所有,侵权必究】
  2. 【转载请注明来源】【版权所有,侵权必究】【本文受版权保护】【作者:唐霜】
  3. 先拿到merkle root去区块链中查本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net找,确保该merkle root has【未经授权禁止转载】本文作者:唐霜,转载请注明出处。h是在链条中
  4. 【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。
  5. 利用拿到的验证路径,再进行一次merkl【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。e校验,确保验证路径全部合法
  6. 【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。

为什么SPV还要再做一次merkle校验本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。呢?主要是为了确保响应方发送的验证路径的未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】有效性。

【本文受版权保护】转载请注明出处:www.tangshuang.net【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。

确保验证路径的真实性本文版权归作者所有,未经授权不得转载。

未经授权,禁止复制转载。【本文受版权保护】【转载请注明来源】【转载请注明来源】【版权所有,侵权必究】

上面提到了SPV还要做一次merkle校本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。验,这也是“不信任”的表现之一。我们并不【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】确保响应我们的节点不会作弊或欺诈,因此,本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。我们要自己进行校验。但是,有没有可能虽然著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。校验过程顺利,但是实际上校验路径是伪造的【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。呢?

未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【作者:唐霜】本文作者:唐霜,转载请注明出处。

我们来做一个假设:1)merkle ro原创内容,盗版必究。【本文首发于唐霜的博客】ot为真;2)交易为假;3)路径中的ha【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.netsh可真可假。这个假设是否成立?

原创内容,盗版必究。【本文受版权保护】【本文首发于唐霜的博客】

我们知道,不同字符串碰撞到同一个sha2原创内容,盗版必究。【原创内容,转载请注明出处】56的概率极小,那么double sha【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。256的概率就是它的平方,而merkle著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。 root是经过一层一层计算上来的,如果【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】一个区块只有一个(或2个)交易,那么就是转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。double^(2+1) sha256,著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。而如果是4个交易,就有double^(4【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】 + 2 + 1) sha256,更何况原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。一个区块有那么多交易,要经过merkle未经授权,禁止复制转载。【版权所有,侵权必究】运算得到一个相同的hash,几乎是不可能转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net的,因此,在merkle验证中用一个伪造【原创内容,转载请注明出处】【作者:唐霜】的交易hash来得到一个已知来merkl本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】e root是不可能的。

【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】未经授权,禁止复制转载。未经授权,禁止复制转载。

如果还想更进一步校验,可以在区块头中存储本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】区块打包的交易的数量,这样就可以知道从交原创内容,盗版必究。【作者:唐霜】易hash到merkle root需要经【未经授权禁止转载】【未经授权禁止转载】过几层的运算。这也是一个检验点。

【本文受版权保护】【版权所有】唐霜 www.tangshuang.net【本文受版权保护】

小结著作权归作者所有,禁止商业用途转载。

转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net【作者:唐霜】

merkle tree被广泛运用于区块链【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net中,但并不是只有区块链使用它来进行校验。未经授权,禁止复制转载。【作者:唐霜】比如一些p2p下载,如迅雷,就需要把文件【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。分割为小块文件,每块都有一个hash,每【未经授权禁止转载】原创内容,盗版必究。块从不同的网络节点下载,最后组成一个完整【作者:唐霜】【转载请注明来源】的文件,但是也需要进行hash验证,它也【本文首发于唐霜的博客】【本文受版权保护】可以使用merkle来进行验证。merk【版权所有,侵权必究】原创内容,盗版必究。le tree也不一定是二叉树,可以是任转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。意树结构。而在以太坊中,merkle验证【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】还不够用,增加了Patricia Tre【版权所有】唐霜 www.tangshuang.net【本文受版权保护】e验证,合起来称为“Merkle Pat著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。ricia Tree”。

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net【本文受版权保护】

2018-03-07 64424

为价值买单,打赏一杯咖啡

本文价值644.24RMB
已有14条评论
  1. tju-tanklab 2020-12-29 21:35

    “当每个节点接收到一条交易广播时,我们要查询作为一笔新交易的输入的真实性”,想请教您一下,如果一个节点在验证一笔新交易的时候,发现这是个错误交易,那这个交易还会被这个节点继续广播吗?

    • 否子戈 2020-12-29 23:19

      交易是由发起这笔交易的节点向网络广播的,对于网络中的任何节点而言,他们只相信已经上链的交易,所以接收到一个交易广播的时候,也只是放在自己的暂存区,然后节点会去挖矿,挖矿的过程中,要去计算merkle tree,要去验证交易的真实性,如果这个时候发现交易和已经上链的数据对不起来,这笔交易就不会被该节点打包了

      • tju-tanklab 2020-12-30 09:28

        谢谢您的回答,我想进一步问一下在区块链网络中一般采用gossip广播,交易是由发起者负责广播的,那收到交易的节点如果验证这笔交易出现错误,就不放到自己的交易池了,那这个节点还会把这笔交易转发出去吗

        • 否子戈 2020-12-30 09:41

          比特币具体细节我也没有研究过,但从软件设计的角度,这笔交易是否转发出去都可以,对于节点自身而言,交易数据不真实,直接丢掉是可以的,但是也可能网络延迟,交易可能是有更长链的节点发出来的,我自己不处理这笔交易,可以广播给网络,其他节点自己决定

  2. 金马 2020-01-20 09:04

    谢谢好文,有一个问题想请教一下,那么 SPV 获取区块头的时候是不是也被骗?

    SPV 获取区块头的时候被欺骗,那么之后获取merkle block message 被骗就很容易了吧?

    • 否子戈 2020-01-29 12:49

      区块链不存在被骗,它是一个网络,一个节点需要和网络中的其他节点同步信息,在整个网络安全的前提下,任何节点在做信息录入前都需要经过严格的密码学检验,所以不存在你说的情况

      • 金马 2020-01-29 13:12

        否子戈,你误解我的意思了,你的文章中“确保验证路径的真实性”部分,你的假设说:交易为假 & 路径中的hash可真可假,可能是因为你从不信任的节点获取了欺骗数据,但是在你的假设中,merkle root 为真,那么问题来了, merkle root 最初从哪里来,一样需要从节点获取,那如果这个节点也有欺骗数据呢,如果获取的 merkle root 也是假数据呢?

        我问的是这个问题,多谢。

        • 否子戈 2020-01-30 21:49

          SPV不保存完整的区块链,它实际的角色,仅用于发起交易,技术层面,仅实现向网络中广播一条交易信息,要完成这笔交易,需要拥有完整区块链的矿工通过挖矿来将这笔交易写入到链上。所以,无论你说的情况是否存在,在网络安全的情况下,假交易都不会上链。

      • 金马 2020-01-29 13:15

        我顺着你的假设提出的问题,否子戈,想问问你有没有机制避免这个问题。

  3. 春风 2018-08-30 09:36

    交易的真实性是不是可以理解为:SPV请求认证路径时,只要有节点响应并给出认证路径,这个交易就是真实的。
    然后为了确保响应方发送的验证路径有效,SPV再利用认证路径从下往上计算一次,检验能否得到与自己区块头内相同的Merkle树根。

    • 否子戈 2018-08-31 09:43

      可以这么认为

      • 春风 2018-08-31 10:25

        好的,🙇‍感谢~

  4. adan 2018-07-09 23:46

    文章写得很棒.有一个地方需要更正一下.
    SPV要拿着这个交易的信息向网络发起查询请求,这个请求被称为merkle block message.
    —-
    应该是 这个请求的response称为 merkle block message.
    一般SPV和网络中的peer还会再加多一层bloom过滤器,来避免隐私泄露.

    • 否子戈 2018-07-10 01:10

      谢谢指正哦~~