okx

比特币交易数据 比特币默克尔树和 SPV 机制

时间:2022-03-09|浏览:7099

欧易

欧易(OKX)

用戶喜愛的交易所

币安

币安(Binance)

已有账号登陆后会弹出下载

在说默克尔树之前,我们先来看看比特币区块的结构。可以看到里面有一个二叉哈希树根。该哈希值是当前区块中包含的所有交易产生的哈希值,采用默克尔树结构。
查看区块的链接地址:
2.默克尔树概念
Merkle Tree,又名Hash Tree,是Ralph Merkle1979年申请的专利。它是一种用于快速总结和检查大规模数据完整性的树状数据结构。
它具有以下特点
注意:如果叶子节点的初始个数是奇数,可以复制最后一个叶子节点补一个偶数。
可以发现,只要存储的叶节点数据发生变化,就会逐层传递到相应的父节点,默克尔树根节点的哈希值就会发生变化。
案例分析了比特币交易的风险及其原因_比特币交易数据_sitehzd.com 比特币交易在线硬币交易
3.应用默克尔树
Merkle树木的应用场景如下:
对比特币的简单支付验证 (SPV) 1.什么是 SPV
简单支付认证,即简单支付,简称SPV。SPV 的目标是验证交易支付的存在,并从比特币网络中获得多少确认(多少块)。比特币中的 SPV 功能用于 Merkle 树的属性。
2.为什么需要SPV机制
众所周知,比特币网络中产生的所有交易都被包装成块。通常,一个块包含数十万笔交易是很常见的。2014年4月,比特币网络中的一个整个节点需要存储和处理所有块的数据,占用 15GB 空间,每月超过 1GB 的速度增长。怎么办?完全下载比特币的所有区块数据需要完整的 200GB 空间!!.
如果用户使用手机使用比特币,他们没有足够的空间存储如此大量的数据,并且会逐年增加。因此,中本聪在比特币白皮书中提出SPV概念:无需操作整个节点即可验证付款,用户只需保存所有块。虽然用户无法自行验证交易,但如果他们能从区块链的某个地方找到匹配的交易,他们可以知道该交易已经被网络确认或被网络确认了多少次。

这里需要注意的是,SPV 强调验证支付比特币的交易数据,而不是交易。这两个概念是不同的。验证付款相对简单。它只需要判断用于支付的交易是否已经验证,网络已经确认了多少次(即叠加了多少块)。交易验证要复杂得多。需要验证账户余额是否足够,是否有双重支付,交易脚本是否通过,一般由全节点矿工完成。
如下图所示,我们知道比特币中的块结构分为两部分,一部分是块头,包括块的必要属性,只有80字节。另一个是块体,包括当前块下的所有交易。一般来说,一个块包含数百笔交易,每笔交易一般占用400多个字节。
比特币交易数据_案例分析了比特币交易的风险及其原因_sitehzd.com 比特币交易在线硬币交易
3. 比特币网络节点类型
以下是比特币网络中常见的节点类型:
(1)全节点
包括钱包(支付验证)、矿工、完整的区块链数据库、网络路由节点等功能。

比特币交易数据 比特币默克尔树和 SPV 机制
(2)SPV 节点
只是一个简单的支付验证功能
此外,还有其他类型的节点,如独立矿工,这里就不一一介绍了。详见《精通比特币》一书中比特币网络第六章。
sitehzd.com 比特币交易在线硬币交易_案例分析了比特币交易的风险及其原因_比特币交易数据
4.SPV 验证流程
在 SPV 在节点上,不保存所有区块链数据,也不下载所有区块交易,只保存区块头数据。因此,该节点不能验证所有交易,只能用于验证支付(区块链中确认多少次)。到目前为止,比特币的高度为:521283(时间:2018-05-05 15:41),按区块头80字节计算,总尺寸只有10MB(80*521283/1024/ 1024),对整个存储容量的要求大大降低。
那么,用户A购买商品时用比特币支付,声称已将1 转账给商家BTC,到商家验证付款有效(SPV验证过程是什么?
5.默克尔路径
上一节我们提到了 Merkle 路径可以证明一个交易是否存在于一个区块中。让我们用一个例子来解释 Merkle 路径。
如下图所示,如果我们需要证明一个区块上是否有交易C(如上图所示,我们可以得到区块结构Merkle树根的哈希值),所以我们只需要 N3 和 N4 哈希值形成的 Merkle 路径可以证明过程如下:
Step4:然后将上一步获得的根哈希值与区块头中的根哈希值进行比较。如果相同,则证明区块中有交易C,否则说明不存在
也就是说,我们只需要 2 哈希节点来验证一个具有 4 笔交易的区块比特币交易数据。
在这里,我们可能看不到默克尔树结构的优看不到默克尔树结构的优势。接下来,让我们逐渐增加块中的交易量,看看 Merkle Tree 的优势。
交易量 区块大小相似Merkle 路径大小
16 笔交易
4KB
log2(16)=4
4*32 = 128 字节
512 笔交易
128KB
log2(512)=9
9*32 = 288 字节
2048 笔交易
512KB
log2(2048)=11
11*32 = 352 字节
65536 笔交易
16MB
log2(65536)=16
16*32 = 512 字节
注:散列大小为 32 字节
从上表可以看出,当交易数量呈几何增长时,Merkle 路径的成本增长非常缓慢。因此,通过 Merkle 路径,SPV 节点可以快速定位交易,成本很小。

热点:BTC 中本聪 区块链 数据 比特币 比特币 比特币交易 比特币支付

« 上一条| 下一条 »
区块链交流群
数藏交流群
区块链币圈-全球区块链数字货币行情、比特币虚拟货币资讯,狗狗币以太坊环保币柚子币莱特币瑞波币等加密数字货币价格非交易行情查询,金色财经巴比特范非小号快讯平台。
趣开心资讯 Qukaixin.cn ©2020-2024版权所有 桂ICP备19010284号-1