JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Gallery
Blockchain One Pager
Getting Started
important ppts
AMAs
More
Share
Explore
Fundamentals
SPV(Simplified Payment Verification)
SPV(Simplified Payment Verification)
SPV 节点非常易于运行及扩展;借助诈欺证明,SPV 节点(Simplified Payment Verification)可以具备和全节点相同的安全性。
我要在此引入 “ SPV+ ” 模式;常规的 SPV 节点只需要保存区块头(存储增量每年约 4MB ),而 SPV+ 节点还需要保存每个区块中的第一笔及最后一笔交易(存储增量每年约 115 MB)。
“SPV+” 节点必须与一个全节点建立支付通道,或是建立一个 LN 连接。
中本聪的 SPV 模式
比特币的区块头非常小(每年 4MB 的增量),且易于验证,不受区块所含交易数量的影响。
可以很容易地证明,区块中包含了某个东西(某笔交易) “ X ” —— 只要有 “X” 本身、区块头,以及包含两者的有效 Merkle Branch(默克尔分支)即可
“ SPV 模式” 依靠的是 negative proof(反向证明)—— 你本不应看到 Y,一旦你看到 Y,就知道自己没有收到钱。这里的 Y 就是白皮书中提到的 “alert(警示)
区块错误的类别
区块可能会出现很多种缺陷,我将它们分为四类:
“第一类”——
不良交易
“第二类”——
区块数据缺失
“第三类”——
不良区块
“第四类”——
不当累加
“ Fred ”=(全节点)和“ Sally ”=(SPV 节点)主演
对话 I
Fred:“这笔交易是你要找的嘛? Wow,这笔交易记录了——转给 Sally 300 btc!”
Sally:“是的,我卖给 Peter Thiel 一艘太空船,他能去木星啦。”
Fred:“赞哦。这是你需要的 Merkle Branch,还要有最近一段时间的所有区块头。”
Sally:“太好了,我可以简单计算几个哈希值来检查 Merkle Branch,也能轻松确认这些区块头都满足难度要求。赞美中本聪!”
F:“中本聪牛啤 !”
S:“不过,我要怎么确定这些区块头是合法的呢?没准这些区块头来自恶意 or 懈怠的矿工。Peter Todd 说过 SPV 节点很烂……。”
F:“噢,那你可能会对我的一些附加服务感兴趣。”
S:“说来听听?”
对话 II
F:“第一项服务叫
‘无效保险’
(Invalidity Insurance),你需要支付 0.007 刀给我;假如你通过 hashMerkleRoot 发现区块中有无效(或双花)交易,我会理赔你 1000 刀。”
S:“任何区块错误都会理赔吗?”
F:“没错,任何类型的无效区块都能理赔。”
S:“哇,看来你非常有把握缺陷不会发生,不然你不会愿意这么做的。”
F:“因为我已经用电脑检查过所有区块和其中的所有交易;它们都是有效的。”
S:“有意思!”
F:“提醒一下,
如果 12 小时内(72 个区块之后)
你没有发现任何问题,你的保险也就到期啦。”
S:“我明白了。不过这个区块会在 10 分钟内完全传播到整个网路中的全节点对吧?”
F:“对,而且你要想想,12 小时可比 10 分钟足足长了 72 倍呢。”
S:“这么说也是,只要全节点有动力将 “某区块有缺陷” 的消息传出去,
12 个小时肯定足够传播给所有人了
。”
F:“对的,激励的存在至关紧要!”
对话 III
S:“等等,也许你给我的不是完整的区块?我听说矿工有时候会无脑出块,完全不管里头的内容是不是有效的!如果他们这么做会如何?我们又有什么方法能够检查呢?”
F:“Hmmm,我这里保存的的确是完整的区块。”
S:“真的吗?”
F:“千真万确。”
S:“你能不能提供证明?”
F:“当然,实际上这是我提供的第二项服务。”
S:“太棒了!”
F:“首先给你这个,这是该区块的最末尾交易。你可以相信我,因为这棵 Merkle Tree 始终向右下延伸;如果出现了向左延伸的情况,那就说明我们给同一对象哈希了两次,也就是在默克尔树的那一层原本只有奇数个对象(为了把 Merkle Tree 的完整而补了一个对象进去)。你可以将这个 Merkle Branch 和我前面给你的 Merkle Branch 进行对比,他们会有相同的 Merkle Root。”
S:“没错!你给我的的确是这个 Merkle Branch (包含我的交易)中的最末尾交易。”
对话 IV
F:“这棵 Merkle Tree 有 11 层,所以你知道这个区块中至多有 2^11 = 2048 笔交易。而且你知道自己对某对象做哈希运算的次数以及时间,所以你知道 Merkle Tree 的外观。尤其是,你知道它里面装着的东西的确切长度(大小)。”
S:“Wow,原来我知道的事情比我想象得多!我真的知道所有内容吗?”
F:“当然!”
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
Ctrl
P
) instead.