Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

【深度】如何将简单支付验证SPV技术应用在实际生活中

区块链 加入收藏
本篇文章给大家谈谈【深度】如何将简单支付验证SPV技术应用在实际生活中对应的信息,希望对各位有所帮助,不要忘了收藏本站喔。正文共:3329字预计阅读时间3分钟支付确认速度慢就慢点吧,大美女脸上长颗痣,那是白璧微瑕。你去楼下超市买牛肉干,扫码付款后,老板点头微笑,双手把牛肉干捧给你,因为他手
本篇文章给大家谈谈【深度】如何将简单支付验证SPV技术应用在实际生活中对应的信息,希望对各位有所帮助,不要忘了收藏本站喔。

正文共:3329字预计阅读时间3分钟支付确认速度慢就慢点吧,大美女脸上长颗痣,那是白璧微瑕。

你去楼下超市买牛肉干,扫码付款后,老板点头微笑,双手把牛肉干捧给你,因为他手机响起一声温柔:支付宝到账15元。

但如果没听到这句话,即使看到你手机上付款成功的页面,老板也会板起脸来一手按下牛肉干,一手拼命掐手机,这是干嘛?他在验证这笔支付是否已被确认。

老板心里没底,直到支付宝开口,才敢向你点头。

这是中心化支付系统的确认逻辑:以中心记录为准。

可如果用去中心化的货币支付,你钱包显示已付款,老板如何确认已到账呢?你要知道,他面对的可是一个被不可信节点包围的世界。

如果他确认不了,你就吃不到牛肉干。

而且,老板可不想把确认过程弄复杂,比如下载几百G交易记录。

所以,在去中心化的货币系统里,每次确认支付前都拦着两排铁丝网:一是安全:如何应对恶意节点骗人?二是便利:便利店老板不会容忍不便利的事。

看似无解,但中本聪淡淡地说:SPV能。

一、什么是SPV?SPV(Simplified Payment Verification,简单支付验证):一种即使没有完整交易记录,也能便捷、安全地验证支付的方法。

不用下载全部区块(几百G),只需下载全部区块头(约40M),就能轻松验证所有支付。

真的么?说得像电视购物广告一样。

但现在看来是真的,因为比特币已正常跑了8年多。

区块头是区块的身份信息,内含一个特殊哈希值——默克尔树根(Merkle Tree Root)。

记账员(矿工)在记录时算出每个交易的哈希(红框):矿工把区块内所有交易(约1-2千笔)的哈希值一字排开,让他们两两牵手,每对交易哈希牵手后再算出新哈希(如下图红框HA与HB两个哈希值叠加算出HAB)。

矿工验证、记录和整理交易的过程称为“打包”。

默克尔树往上叠加哈希值,直到顶点就完成打包过程。

叠完就是默克尔树,树的顶点就是默克尔树根。

真实的默克尔树宽很多,因为2,000多笔交易实在没办法横在你手机屏幕前,所以这里只用16笔交易举例,你能懂。

默克尔树根的神奇之处有两个:第一,作为树根,它居然可以长到脑门上:第二:仅仅一个哈希值,就蕴含该区块内所有交易验证信息。

请注意:是交易验证信息,而不是交易信息。

查询具体交易信息,你得下载全节点区块数据:但验证一笔交易是否被记录,下载区块头数据已足够,因为有简单支付验证(SPV)方法。

那SPV如何验证交易是否存在呢?二、SPV的过程首先明确两个前提:第一,每笔交易都有标准格式:输出地址、输入地址和交易金额等,所以交易一旦发生,该交易哈希值瞬间产生(假设为HK,图3绿框)。

第二,如果交易被矿工打包过,拥有全部交易数据的节点(称为“全节点”:full node)必然有整棵默克尔树。

所以:第一步:老板的钱包软件把哈希值(Hk)交给临近的全数据节点去验证。

第二步:全节点反馈老板钱包下图4个蓝块的哈希值。

简单支付验证(SPV)的过程第三步:老板钱包经过4步哈希计算:1、Hash(HK,HL)2、Hash(HIJ,HKL)3、Hash(HIJKL,HMNOP)4、Hash(HABCDEFGH,HIJKLMNOP)即:沿图3虚线框路径,老板的钱包最终得出哈希值HABCDEFGHIJKLMNOP。

最后一步:将HABCDEFGHIJKLMNOP与自己钱包里下载好的默克尔树根对比,若一致就能确认这笔交易存在。

即使有2048笔交易,最多也只需做11次哈希计算,因为log2(2048)=11。

看到公式先别抽搐,这不是高数,而是高中数学,是“2的11次方等于2048”的逆运算表达式。

总之你记得,即使一个区块中交易再多,也没什么了不起的,十来下就能搞定验证,不信你算算log2(65536)=16。

也就是说:就算一个包里有6.5万笔交易,16次哈希就搞定验证了。

你还记得么?每次哈希计算只要0.01秒哦,所以很便捷,验证过程最多耽误0.2秒。

另外,SPV方法能看到有多少区块确认过此交易,如果被超过6个区块确认,则可视为绝对可靠。

所以,电视购物广告的神奇居然是真的:仅用一个哈希值,就能快速、准确验证该区块内的所有交易。

One more thing:区块头数据量极小:每个区块头仅80个字节,每年增加4M存储空间,积累100年也就400M:不过半部小电影。

便利性很赞,但安全问题如何解决。

三、如果出现恶意节点怎么办?这是一个你眼熟的老问题,我们好像每篇文章都能遇到,于是我必须挖空心思变换措辞,因为文章看腻了你就不会继续学下去。

仅仅80个字节的默克尔树根,能快速验证支付就算了,为什么还能把恶意节点的攻击全部挡在外面?答案简单到腻:算力上的不可能。

默克尔树根类似数字签名:公开、但无法伪造。

准确地说,伪造需要极大的算力,你可以把“极大”二字理解为人类现有总算力的一万亿倍,量子计算机登场也然并卵。

可是:如果全网真的被一个强大的恶意算力控制,那将变得很脆弱。

这是比特币理论上最明显的软肋,中本聪在白皮书里坦言:While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network.网络节点能自行确认交易,攻击者如果保持算力优势,SPV方法会被攻击者的虚假交易欺骗。

本文到此结束,希望能给网友您带来不错的体验。
图集详情底部广告位