区块链大学区块链研习社区块链

《锋哥论道区块链》之四区块链1.0之比特币--简化的支付验证(S

2019-04-22  本文已影响4人  7dfc697cf7a9

【原译文】
在不运行完整网络节点的情况下,也能够对支付进行检验。一个用户需要保留最长的工作量证明链条的区块头的拷贝,它可以不断向网络发起询问,直到它确信自己拥有最长的链条,并能够通过merkle的分支通向它被加上时间戳并纳入区块的那次交易。节点想要自行检验该交易的有效性是不可能的,但可以通过追溯到链条的某个位置,它就能看到某个节点曾经接受过它,并且于其后追加的区块也进一步证明全网曾经接受了它。
因此,只要诚实的节点控制了网络,检验机制就是可靠的。但是,当全网被一个计算力占优的攻击者攻击时,将变得较为脆弱。因为网络节点能够自行确认交易的有效性,只要攻击者能够持续地保持计算力优势,简化的机制会被攻击者焊接的(fabricated)交易欺骗。那么一个可行的策略就是,只要他们发现了一个无效的区块,就立刻发出警报,收到警报的用户将立刻开始下载被警告有问题的区块或交易的完整信息,以便对信息的不一致进行判定。对于日常会发生大量收付的商业机构,可能仍会希望运行他们自己的完整节点,以保持较大的独立完全性和检验的快速性。
【解读】
简化支付验证(SPV):简单支付认证节点不保存所有交易也不会下载整个区块,仅仅保存区块头,我们来看看它是如何对交易数据进行验证的。


81.png

假如要验证区块结构图中交易2,SPV节点会通过向相邻节点索要(通过Merkleblock消息)包括从交易2哈希值沿Merkle树上溯至区块头根哈希处的哈希序列 (即哈希节点2, 3, 23, 01, root hash- 称为认证路径) 来确认交易的存在性和正确性。

上一篇下一篇

猜你喜欢

热点阅读