区块链技术解读(二)权益证明

786 阅读9分钟

一 原理

权益证明(POS)所蕴含的概念是:区块链应该由那些在其中具有经济利益的人进行保障。本文介绍了一种新的方法——通过每一笔交易销毁的币天数(coin days)来实现权益证明,以替代目前由工作量验证(Proof-of-Work)提供绝大部分保障的方式。在以往的权益证明系统中,只有部分节点进行权益证明计算,我们提出的新方法则可以使生成交易的所有节点为网络安全做出贡献。我们推测,这样的网络对目前已知的针对比特币或点点币(Peercoin)的攻击将具有免疫力。

二 产生背景

权益证明这个概念最初引入时是作为一种手段来对抗已知的比特币网络攻击的,尤其是51%攻击。

现有的权益证明体系,如点点币,是基于“证据区块”的,在“证据区块”中,矿工必须达成的目标与销毁币天数是负相关的。拥有点点币的人必须选择成为权益证明的挖矿人并在一段时间内贡献他们的一部分币来保护网络。

点点币的发明者们认识到,这种形式的权益证明是不足的,因此他们采用权益证明和工作量验证同时保护网络的混合动力系统。随着工作量验证难度的增加,区块的回报会减少,这自然会抑制工作量验证的挖矿量。

尽管使用了权益证明,点点币仍然依赖于权益证明的“挖矿”,这就内在地限制了可用于通过权益证明来保护网络的人数和货币供给比例。对权益证明的挖矿给出的奖励是对其权益平均1%25的回报,这与目前支付给工作量验证的矿工的8%25通胀相比起来相形见绌。

点点币并不仅仅在于其提出的权益证明系统。点点币还运用了各种形式的签名块,以及与交易规模成比例的签名者随机选择等机制。点点币是市场上唯一完全采纳这些构想的电子货币。

尽管点点币取得了成功,但其对权益证明的应用并未完全解决双重支付或拒绝服务的问题。最终,网络仍然由工作量验证来进行保障,仍然有可能计算出秘密的替代链条进行双重支付。政府这样的角色仍然可以获得足够的哈希算力来战胜超过51%25的权益证明区块和所有的工作量验证区块。点点币取得的成绩仅仅是在网络攻击方式没有改变的情况下增加了攻击网络的成本。

在关于加密货币和挖矿的大多数文献中,研究重点主要集中在货币分布和保护网络不受到垄断性哈希算力的攻击方面。挖矿奖励被视为购买“安全”的必要费用,一般理论认为挖矿越多越好。现有的权益证明系统继承了这种思路,对在权益证明基础上“挖矿”的人进行支付。

在本文中,我们将重点研究挖矿在安全和货币创造之外更重要的作用。这个作用就是以去中心化的方式来决定谁将会公布下一个区块。一个纯粹的权益证明机制必须决定几千个计算机中的哪一个将生成并发布下一个区块。这些区块出现的固定时间间隔必须足够大,以使网络能够在每个区块之间达成共识。

在一个中心化的系统中,生产或广播区块是没有成本的,可以直接指定一台计算机每隔几分钟发布区块就可以了。但在一个去中心化的系统中,发布区块的机会应该广泛分散开来。因为制作和广播区块的成本基本为零,仅仅几美分的区块奖励就足以激励这种行为。 去中心化系统所面临的挑战是找到一种方法,来限制每隔几分钟最多有一或两个节点来广播区块。我们将提出一个不依赖于挖矿的解决方案。

三 pos的实现原理

我们知道PoW挖矿的基本逻辑和步骤,即找到一个nonce值,使得新区块头的哈希值小于某个指定的值,即区块头结构中的“难度目标”.

Hash (block_header) < Target

从公式中我们可以看到,PoW下所有矿工的目标值是一样的,只要计算结果哈希小于目标值即可,简化来看就是前导0的个数。

而在PoS系统中,这个公式变更为:

`Hash (block_header) < Target * CoinAge`

我们可以看出多引入了一个变量叫做CoinAge,也就是币龄,这里就有意思了。

这个变量为会造成每个矿工看到的目标值不一样,如果你的币龄越大,也就意味着你的获得答案越容易。这里的Target与PoW一致,与全网难度成反比,用来控制出块速度的。

例如当前全网的目标是4369,A矿工的输入的币龄是15,那么A矿工的目标值为65535,换算成十六进制就是0xFFFF,完整的哈希长度假设是8位,也就是0x0000FFFF。

而B矿工比较有钱,他输入的币龄是240,那么B矿工的目标值就是0x000FFFFF。你如果仔细观察肯定会发现,相比A矿工的目标值,B直接少了一个零。即如下:

A 矿工 Hash( block_header ) < 0x0000FFFF B 矿工 Hash( block_header ) < 0x000FFFFF   所以B矿工获得记账权的概率肯定要比A高。

四 去中心化的区块生成和广播

此时我们已经很清楚,权益证明已足以识别最佳链,并提供更好和更便宜的网络安全。摒弃挖矿后,去中心化的网络需要一种新的方法来就下一步添加什么区块来达成共识。在一个成熟的网络中,交易可以以每秒12次的速度产生,而网络的传播可能会延迟60多秒。这意味着,销毁更多币天数的新区块,其产生速度要超过其传播速度。如果没有挖矿,就没有抽签机制来每10分钟选择一个节点,该节点被赋予包括(或不包括)该区块交易的权力。

网络必须要有一种方法来调节交易和区块的产生速度。参照比特币调整难度的方式来调整每个区块的最低费用就可以实现这一点。这些费用会将交易量降低到所需要的数率,而且延迟建立第一候选区块的时间,但是,一旦第一候选区块构建成功,额外的候选区块仍会以比第一区块传播速度更快的速度产生。

下一个挑战是,当所有节点都可以产生新的区块时怎样决定由谁来广播。我们建议,销毁区块里所有交易的最多币天数的单个输入的所有者成为唯一的可以广播该区块的人。这个人将签署区块头并广播该区块。如果其他人想来竞争,他们就必须销毁更多的币天数,这将有效提高获得生成该区块权利的成本,并在此过程中增加每个区块的安全。

为了激励节点在实现该功能时包括尽可能多的交易,拥有尽可能多的权益证明,而且尽可能快,广播者赚取的那部分交易费用应与他们销毁的币天数成正比。

当一个区块已经积累了很多交易,且已付出很多费用,但缺乏大量的币天数时,一个大的利益相关者可以利用该机会通过给自己花钱而获得可观的费用,同时声称其拥有最大的权益证明输入。这样做之前,她应该仔细考虑是否会有其他玩家‘出价’更多,而且建立一个更好的区块来获得费用。

我们觉得,有充分的机会来发展特种算法,这种算法通过用区块生产者的权益来保障网络,从而为区块生产者赚取一些收入。这些算法亦可能对观察到的双重支付进行防卫,捍卫网络安全。

交易的速度可能会维持在每秒12个,随着输入数量的增加,一个区块中的新个体输入能够比其他所有输入销毁更多币天数的频率会越来越低。这提供了一个自然而独特的选择节点来签署区块的方式。考虑到交易额的大小,他们在所赚取的费用和交易验证中有既得利益。事实上,如果他们不签署该区块,而且也没有更大的输入,那么这个交易就会被强制从区块中移除,这样第二大输入就可以成为最大输入并签署区块。实际上,这个机制上创建了产生一个区块的时间上限,而交易费用则设置了一个下限。

五 总结

PoS的区块链系统无需外部物理输入,所以它相比PoW更为环保不费电,并且矿工就是使用者,这会在一定程度上抵御了51%攻击,所以基于PoS机制的数字货币属于理想状态的数字货币。

PoS的缺点是缺乏工业级的区块链应用,从逻辑上来看有点循环自证明的味道,就是用自己的币来维护系统的安全,而币的安全性是由系统保证的,所以现阶段PoS共识机制往往不是独立运行的,而是混合了PoW一起运行,这就可以弥补PoS的缺陷。

PoS共识机制目前也出现了矿池,也可能会出现中心化挖矿的风险。

虽然PoS共识机制未来变数依然很多,但它的可塑性比PoW好,技术上的探索空间大,目前PoS币种相比较PoW币种风险也较高。