Skip to content
Gallery
Blockchain One Pager
Share
Explore
Fundamentals

icon picker
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 (
CtrlP
) instead.