0

0

比特币全节点同步太慢?不用全节点也可验证支付的 SPV 机制

DDD

DDD

发布时间:2024-03-06 13:22:22

|

605人浏览过

|

来源于知乎

转载

比特币自诞生以来,就因浪费电力资源为人所诟病,但其强大的算力是必要过程,很难找到更好的方式来代替。

随着它出现的年头越来越久,在其底层技术区块链上参与交易的人也越来越多,分布式账本的内容量急剧扩张,中本聪设置的一个区块 1 MB 的存储量使得交易过程和交易速度有了限制。

因此,下载整个账本成了令人头痛的一件事。能不能不下载整个账本,只找与自己相关的部分呢?换句话说,找个过滤器,把没用的都留在外面。

于是出现了 SPV 机制。

01. SPV 机制

SPV 全称“ Simplified Payment Verification ”,常见翻译为简单支付验证。其目的是为了验证某笔交易是否存在,但并不能验证交易的合法性,这需要进行两步操作,第一步是确认交易支付是否被验证过,第二步是计算得到了多少确认数。

中本聪在论文里提及了这一概念:

在不运行全节点时也依然有可能对交易进行验证,用户只需要保留最长链上的所有的区块头数据。

简单而言就是:

假如小黑给大白转了一个比特币,大白怎么才能知道币已经交易完成了呢?在去中心化的系统里找证人那是不太可能的。

按照传统的办法就是:大白需要下载下来所有的区块链账本,然后找到小黑的账户,先瞅瞅它之前是不是有这样一个比特币,并且有没有转给大白的记录。仅仅是第一步,就使得大白的存储量要爆掉。

每个比特币的区块容量是 1 MB ,区块头只有 80 KB ,因此只需要下载区块头就可以节省很多空间。

区块头和区块体究竟是什么呢?

把区块头比做人的头部,里面存储着区块的头信息,如哈希值、时间戳等;而区块体则类似于人的整个身体,存储着这个区块的详细数据,如具体交易信息。区块头包含在区块体中。

也就是说一个区块头尽管有哈希值,但下载了区块头后大白仍无法知道交易记录在哪个区块里,这时候就需要拿着交易 ID 去找全节点查一下,是否有且在哪一个区块里。

02. SPV 的支付验证过程

咦,那万一矿工和小黑联合起来骗大白怎么办?

这时候 SPV 机制就派上用场了。

如果矿工说小黑转过来了,但其实并没有。那么为了圆谎他必须伪造更多的交易,使得这些交易能得到和自己区块头里同样的哈希值。但由于哈希的技术特性,改变后的数据要想和原始数据得出一样的哈希值,那是很难实现的。

总之, SPV 整个交易过程是这样的:

第一步,确认交易支付是否被验证过

首先计算待验证支付的交易哈希值,把区块头从区块链网络上保存至本地,再从区块链获取待验证支付对应的默克尔树哈希认证路径。

对比获得的哈希值与自己的是否一致,若一致,则证明支付真实有效。

第二步,验证得到了多少确认数。根据该区块头所处的位置,确定该支付已经得到的确认数量。

完成这两步,交易支付验证就完成了。

03. 小结

SPV 机制不仅节省了储存空间,减少了 P2P 网络带宽的浪费,使得普通用户在没有下载完整数据的情况下也可以操作,而且也给查账带来了极大方便。

但是,由于 SPV 没有完整的区块数据,是无法验证交易不存在的,这种情况很容易导致双花的情况出现,而随机链接节点也有可能受到网络的恶意攻击。

你认为 SPV 还有什么优点和缺点吗?欢迎在留言区分享你的观点。

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

99

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

132

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

15

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

63

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go语言教程-全程干货无废话
Go语言教程-全程干货无废话

共100课时 | 9.8万人学习

走进 ES6 新标准语法
走进 ES6 新标准语法

共15课时 | 1.5万人学习

韩顺平 2016年 最新PHP基础视频教程
韩顺平 2016年 最新PHP基础视频教程

共47课时 | 10.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号