售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
为了验证交易的有效性,比特币、以太网等加密货币需要节点验证区块链的有效性。在基于PoW的密码货币网络中,参与节点朝着所有节点一致认可的难度目标(t)进行挖掘,直到一个节点得到第一个满足要求的结果,于是产生了一个合法的区块,幸运节点得到系统奖励的比特币和区块内交易产生的手续费作为奖励,网络中所有节点继续基于这个区块争夺下一个区块。块提取的过程称为挖掘,参与竞争的节点称为矿工。
为了便于后续理解,首先正式介绍挖掘流程:
假设高度为的块头,难度目标为,哈希函数为,合法块的必要条件为。由于哈希值的不可预测性,挖掘者只能修改块头的Nonce字段,直到挖掘成功。
值越大,满足条件的哈希值越多,即一次哈希操作的概率越高,越容易阻塞。所以价值与难度成反比。
网络中的诚实节点会遵循公认的难度目标进行挖掘,但有些节点会出于某种目的故意设置一个更容易的难度目标(即更大的值)。这样,恶意节点可以以较低的计算能力为代价来加速块输出。然而,这些块是无效的,因为它们的PoW结果不能被其他节点识别。结果,区块链出现了分歧。
自从分叉以来,诚实节点挖的块数是,而恶意节点挖的有效块数只是因为计算能力不足。为了让一个轻节点相信其块所在的链是最长的链,恶意节点必须在分叉后伪造块(非法难度值),其数量不小于。这样恶意节点的分叉链看起来至少和诚实链一样长。
:区块链的最新高度
:带高度的块
:由第一个块组成的MMR结构的根哈希,存储在
MMR证据:
然后定义三个函数:
:获取该区块承诺区块的证据
:根据计算前面块的MMR根散列
:按块和证据计算根哈希。如果结果等于,则验证通过。
验证过程如下:
超轻节点接收最新的块并获得根散列
超轻节点检查的PoW是否有效,只需要在PoW链上以恒定的难度来判断;可变难度将在下一篇文章中详细解释
如果PoW验证通过,超轻节点继续向验证节点挑战前一个块
证明节点调用返回证据和块
超轻节点调用检查证据并检查块的PoW
调用超轻节点,并将结果与存储在块中的根哈希进行比较。如果相等,则该块通过验证
超轻节点继续向验证节点挑战其他几个块,只要一个块验证失败,就拒绝最新的块。
为了使超轻节点接受最新的块,有必要提供先前块的证据和有效的PoW来证明在最新块所在的链中不存在块欺诈。SPV节点模型中,节点保持一个完整的块头链,可以独立验证链中所有块的PoW是否有效。但是超轻节点只保存最后验证通过的块,当收到新的块时,甚至不知道是否在同一个链中。因此,需要新块所在的链中的几个有效块来帮助证明其有效性。
如前所述,这是基于概率的共识策略。我们将在下一节详细解释采样算法及其概率期望。
抽样算法
正是因为最新的块能否被识别取决于采样的几个块的有效性,而采样算法对于保证超轻节点的正确判断至关重要。采样的目的是为了命中无效块,无效块只会出现在分叉点之后。尽可能在分叉点后采样块,可以明显提高成功发现无效块的概率。
我们把抽样过程分成几轮,每轮随机询问区块。整轮采样高度范围为,间隔长度为。可以发现,第一轮的采样范围是一个完整的区块链,而下一轮的采样范围是上一轮的后半部分。
因为超轻节点不知道分叉点的高度,所以首先需要从整个链上收集块。如果运气够好,有无效块,采样结束,超轻节点拒绝最新块;否则,进入下一轮继续采样。直到某个间隔长度,该间隔中的所有块都被采样。
只有当每轮中的所有采样块都有效时,最新的块才会被视为有效。
现在,我们来解释一下这个策略下的命中概率。
恶意节点挖的有效块数为,无效块数范围为。在采样过程中,命中无效块的概率为
注意:分母是归一化系数
考虑到恶意节点可以任意选择分叉位置,击中样本的最小概率为
另外,我们希望无论分叉点在哪里,命中样本的概率都能够始终相等,即使分叉点是创建块,也就是,
上述公式可以通过差分分析求解
但是发现归一化系数不符合PDF的定义。所以超轻节点的选择肯定会对靠近末端的一些块进行采样,长度比会迫使恶意节点在这里不造假,也就是,
在区块链的末端区域,该算法命中无效块的概率为零。
在可变难度模型下,区域也可以用来计算最新区块的难度目标是否正确,从而判断其PoW的有效性。
因此,新的概率密度函数是
一次采样中以无效概率命中一个块的概率为
Q独立重复采样后命中至少一个无效块的概率为
在该概率模型下,超轻节点的正确判断取决于三个参数:恶意节点的计算能力、所需采样区域的长度、随机采样次数。这是一个取决于实际应用场景的问题,没有统一的标准。本文给出了一种可能的设置方法:
根据精度要求选择概率目标
因为无法判断节点是否恶意,所以可以将整个网络中计算能力最大的单个实体视为可能的加害者,并且可以获得
根据难度调整期,其长度不应超过难度调整期
根据上述,推导出采样时间
自2009年以来,比特币网络无中生有地创造了超过一万亿美元的资产,整个加密货币领域的总市值已经超过1.5万亿美元,越来越受到市场和机构投资者的关注。在密码货币网络中,所有节点都可以牺牲自己的计算能力和存储空间来独立验证块,并通过挖掘保持网络的健壮性。这些由不同组织或个人控制但遵守共识规则的整体节点也是密码货币网络去中心化的关键。
然而,普通用户只需要在交易时验证该块,并没有动机保存完整的区块链。在行业早期,当区块链不够长时,SPV节点可以很好地解决这个问题。但是,到目前为止,仅邰方的区块高度就超过了1000万,超轻认证节点因为消耗的存储资源非常少,所以具有潜在的实用性。
注:上图来自Onchain
参考文献:
[1] FlyClient:加密货币超轻客户端
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!