主页 > 怎样下载imtoken > 如何解决比特币全节点同步过慢的问题
如何解决比特币全节点同步过慢的问题
比特币自问世以来就被诟病浪费电力资源,但其强大的算力是必经的过程,很难找到更好的替代方式。
随着它出现的时间越来越长,越来越多的人参与其底层技术区块链上的交易,分布式账本的内容急剧膨胀。 中本聪设定的 1 MB 区块的存储容量 这限制了交易过程和交易速度。
比如目前比特币主链的区块数据高达200多G,对于普通用户来说太大了。 因此,下载整个账本就成了一件令人头疼的事情。 你能不能不下载整个账本,只找到与你相关的部分? 换句话说,找到一个过滤器,把所有无用的东西都拒之门外。
于是SPV机制出现了。
一、SPV机制
SPV的全称是“Simplified Payment Verification”,通译为简单支付验证。 其目的是验证某笔交易是否存在比特币钱包同步太慢,但无法验证交易的合法性。 这需要两个步骤。 第一步是确认交易支付是否被验证,第二步是计算获得了多少确认。
中本聪在他的论文中提到了这个概念:在不运行全节点的情况下仍然可以验证交易,用户只需要将所有的区块头数据保存在最长的链上即可。
简单的说:
如果小黑转一个比特币给大白,大白怎么知道交易完成了呢? 在去中心化系统中不可能找到证人。
按照传统的方法:大白需要下载所有的区块链账本,然后找到小黑的账户,先查看之前有没有这个比特币,有没有转账到大白的记录。 仅仅是第一步,就让大白的储量爆发了。
每个比特币的区块容量为1MB比特币钱包同步太慢,区块头只有80KB,所以只需要下载区块头就可以节省很多空间。
区块头和区块体到底是什么?
将区块头比作一个人的头部,它存储了区块的头部信息,如哈希值、时间戳等; 而区块体类似于一个人的全身,存储着这个区块的详细数据,比如具体的交易信息。 区块头包含在区块体中。
也就是说,虽然一个区块头有哈希值,但大白下载区块头后,仍然无法知道交易记录在哪个区块中。 在一个块中。
2.SPV支付验证流程
哎,要是矿工和小黑联手骗大白怎么办?
这就是 SPV 机制派上用场的地方。
如果矿工说小黑转身了,其实并没有。 那么为了说谎,他必须伪造更多的交易,让这些交易能够得到和他自己的区块头中相同的哈希值。 但是,由于哈希的技术特点,改变后的数据很难达到与原始数据相同的哈希值。
简而言之,SPV的整个交易流程如下:
第一步是确认交易支付是否已经过验证。
首先计算待验证支付的交易哈希值,从区块链网络中保存区块头到本地,然后从区块链中获取待验证支付对应的默克尔树哈希认证路径。
查看获取的hash值是否和自己的一致。 如果一致,则证明这笔款项是真实有效的。
第二步是验证获得了多少确认。 根据区块头所在的位置,判断支付收到的确认数量。
完成这两个步骤后,交易支付验证就完成了。
三、总结
SPV机制不仅节省了存储空间,减少了P2P网络带宽的浪费,普通用户无需下载完整数据即可操作,也为查账带来了极大的便利。
但是由于SPV没有完整的区块数据,所以无法验证交易不存在。 这种情况很容易导致双花,随机链接节点也可能被网络恶意攻击。