首页 > 世链号 > 「区块链基础概念100」:权益证明机制 | 019
币网讯  

「区块链基础概念100」:权益证明机制 | 019

摘要:权益证明机制类似于把资产存在银行里,银行会通过你持有数字资产的数量和时间给你分配相应的收益。

区块链基础概念100」由火星财经「学习区块链」频道出品,在区块链基础概念之上延展深度阅读,并紧密连接产业,关注产业发展热点和趋势。

1. 基础概念

权益证明/ Proof of Stake / PoS

类似于把资产存在银行里,银行会通过你持有数字资产的数量和时间给你分配相应的收益。采用PoS 机制的加密货币资产,系统会根据节点的持币数量和时间的乘积(币天数)给节点分配相应的权益。

2.深度解读

Casper FFG:以实现权益证明为目标的共识协议
 

Casper

前言

2017年,Vitalik Buterin 与 Virgil Griffith 共同发表了 Casper the Friendly Finality Gadget(Casper FFG)。Casper FFG 是受 PBFT 启发并经过改良的共识协议,它虽然被设计得很简洁(Simple),但其对安全性的证明却不简单(Easy)

笔者将于本文解析 Casper FFG 的原理,读者可以一窥权益证明共识所尝试解决的问题及其设计理念。此外,Casper FFG 是以太坊 2.0 的共识机制,理解其运作也能帮助研究员与开发者进一步理解以太坊 2.0 的设计。

最后要特别感谢以太坊研究员 Chih-Cheng Liang(梁智程)提供重要素材并与笔者共同大量讨论及给予回馈,没有他的协助便不会有这篇文章的诞生。

Casper FFG 是怎么开始的?

以太坊对权益证明(Proof-of-Stake, PoS)的研究最早可追溯至 2014 年的这篇文章。从此之后,以太坊研究员们便一直朝「实现基于 PoS 的共识协议」此一目标前进。PoS 共识的设计是一个跨领域且相当复杂的问题,其包含计算机科学/经济学/密码学等方面。以太坊拥有区块链生态系中最跨领域的团队,对 PoS 的研究可以说是相当透彻。

笔者于日前翻译了一篇关于 Casper FFG 发展脉络的重要文献:

Casper FFG 与 Casper CBC 的瑜亮情结

Casper FFG 受到 PBFT 的启发,并可以被视为改良后的 PBFT ——它继承了 PBFT 的重要设计,同时添加新的机制与简化若干规则。若读者对 PBFT 感到陌生,可以参考笔者日前针对 PBFT 的解析文:

若想搞懂区块链就不能忽视的经典:PBFT

简而言之,PBFT 是一个具有二轮投票机制的共识协议,且具有下列特性:

 

  • 许可制的(Permissioned):只有被「允许」的节点能参与共识。
  • 基于领袖的(Leader-based):只由主导节点负责「提案」(Propose),其他节点只负责投票,因此需要视域变换(View Change)机制来节制不诚实的主导节点。
  • 基于通讯的(Communication-based):使用决定性的(Deterministic)多数决来形成共识,而不是非决定性的(Non-Deterministic)算力解谜赛局。
  • 安全性重于活跃性的(Safety-over-Liveness):无论网络是否延迟,协议都能保证共识的安全性(即不分叉),这赋予协议即时敲定(Instant Finality)的特性。

 

其中 PBFT 所具备的即时敲定性,或许是其受到 Vitalik 青睐的主要原因。Vitalik 在熟读 PBFT 后也特撰文总结,并于其中提出日后演变成 Casper FFG 的重要想法。

Casper FFG 的前身:砍押金的 4 条规则

PBFT 虽然具有即时敲定性,但并不具有抵抗共谋的能力,因此需要一个惩罚机制来遏止作恶的行为,只要节点做出逾越规则的行为,便必须承受经济损失——透过经济学法则来调节节点的行为正是 PoS 的设计理念。任何支付押金的节点,都可以加入网络参与共识,无需任何人的许可,因此基于 PoS 模型的共识都是非许可制的(Permissionless)。在这里要澄清一下「许可」这件事。我们会说他「非许可制」,是因为任何验证节点可以加入和退出。但如果在他加入的时候,链要维持一个验证节点清单,从这个角度看又有点是「许可制」。从 PBFT 的角度看,投票的验证节点也必须从许可的清单中挑选。那么下一个问题是:哪些行为该被惩罚?Vitalik 仔细推敲 PBFT 后发现,PBFT 只需 4 条规则(PBFT 中的断言)便能确保共识运作良好:最少的砍押金条件Vitalik 在这篇文章中总结了这 4 条规则,并把它们称为 PBFT 的「最少的砍押金条件」(Minimal Slashing Conditions),任何违反此 4 条规则的行为都要被取走押金。这 4 条规则如下:

 1.提交(commit_req):收到 2/3 节点的预备讯息后才能提交。 2.预备(prepare_req):每个预备讯息只能指向某个也具有 2/3 节点预备讯息的高度(Epoch),且这些预备讯息也必须都指向同一个高度。 3.预备提交一致性(prepare_commit_consistency):任何新的预备讯息只能指向最后一个已提交的或其他比其更新的高度。 4.不重复预备(no_double_prepare):不能在同一个高度送出两次预备。

这 4 条规则可以进一步简化为 2 条:

 某验证节点 v 必不可发出两个相异的投票:<ν, s1, t1, h(s1), h(t1)>及<ν, s2, t2, h(s2), h(t2)>,且使下列任一条件成立: 1. h(t1) = h(t2) 验证节点必不可对某高度发出两个相异投票。 2. h(s1) < h(s2) < h(t2) < h(t1) 验证节点必不可投出高度围绕/被围绕于另一投票高度的投票。

这 2 条规则便是 Casper FFG 的最少砍押金条件。

Casper FFG 如何运作?

 

Casper

-Casper FFG: 检查点树-Casper FFG 是一个将出块机制(Block Proposing Mechanism)抽象化的覆盖链(Overlay),只负责形成共识。出块机制由底层链实现,而来自底层链的出块(Block Proposal)称为检查点(Checkpoints)。检查点组成检查点树(Checkpoint Tree),例如:把高度为 0、50、100、150 的区块哈希值取出,形成一棵新的树,如上图所示。最底部的检查点则称为根检查点(Root)。每个节点都必须对检查点送出投票(Vote),投票的内容是由两个不同高度的检查点组成的连结(Link),连结的起点高度较低,称为源头(Source);连结的终点高度较高,称为目标(Target)。节点会将投票广播到网络中,并同时收集来自其他节点的投票。其中若投票给某连结 L 的节点押金总和超过全部押金的 2/3,则称 L 为绝对多数连结(Supermajority Link),以 s → t 表示。例如上图中,b1 / b2 / b3 之间都形成了绝对多数连结,分别以 b1 → b2、b2 → b3 表示。由根检查点开始,若两个检查点之间形成绝对多数连结,则该连结的目标进入「已证成」( Justified)状态;而在连结建立当下已处于「已证成」状态的源头,则进入「已敲定」(Finalized)状态;根检查点则预设为「已证成」及「已敲定」状态。由此可知,每个检查点在经过两次投票后,会先「证成」(Justify)而后「敲定」(Finalize),几乎等同于 PBFT 的「预备」与「提交」。例如在上图右边的分支中,r / b1 / b2 皆为「已敲定」状态,只有 b3 为「已证成」状态。那么验证节点该对哪些检查点建立连结?每个节点都必须遵循分叉选择规则(Fork Choice Rule)来选择下一个要连接的检查点,Casper FFG 的规则是:选择最高的「已证成」状态的检查点

Casper

-Casper FFG: 验证节点集合的大幅变化引起的分叉-由于 Casper FFG 能让任何存入押金的节点成为验证节点,因此验证节点集合(Validator Set)会动态地随着时间变化。节点从退出网络至取出押金需要等待一段期间,该等待期间称为提领延迟(Withdrawal Delay)。每个检查点 C 都有其对应的朝代数(Dynasty),其定义为:从根检查点开始至 C 为止的已敲定检查点数量,例如上图中,b3 的朝代数为 3。每一代检查点都对应两种验证节点集合:前端(Front)验证节点集合(包含于此代加入的节点)以及后端(Rear)验证节点集合(包含于此代退出的节点)。理论上每代检查点的前端/后端集合会高度重复,但难保节点共谋造成前端/后端集合的大幅变化,若此情形发生,则出错时可能会砍不到坏节点的押金(因为坏节点已退出)导致安全性受到威胁。例如上图中,验证节点 A 可以退出,代表对 C' 分叉(绿色)来说 A 退出了,可是对 C 分叉(紫色)来说, A 却从来没退出过。因此 A 有办法继续投旧链 C,但新链 C' 砍不到 A 的押金(因为已退出)。为了让每代检查点在出错时都能确实归责,因此需要缝合机制(Stitching Mechanism)将检查点的前端/后端集合「缝」起来,确保每个错误都必定能归责(出错的可能是前端集合或者后端集合)。综合以上,Casper FFG 几乎针对 PBFT 的所有方面都做出改进:

 

  • 经济上的制约:PBFT 是许可制的,它仰赖原本就存在信任基础的组织共同运行协议;Casper FFG 则是非许可制的,它引入最少砍押金条件,利用经济损失的风险来制约节点的行为,节点之间不需要任何信任基础也能共同运行协议,实现真正的去中心化。
  • 抽象的出块机制:PBFT 仰赖诚实的主导节点产生区块并需要视域变换机制节制拜占庭节点;Casper FFG 无需理会底层的出块机制,只需负责形成共识。出块抽象的好处是:底层链的出块频率不必与覆盖链的共识频率一致,如此可以增加效率并降低网络的负担。例如:每 100 个底层区块只产生 1 个检查点。
  • 流水线化的投票:PBFT 具有 < Prepare >、< Commit >、< View-change > 等数种投票讯息;Casper FFG 仅有 < Vote > 一种,且投票的内容并不是单一的区块/请求,而是两个形成连结的检查点,这使 Casper FFG 能够在不牺牲太多表达力的前提下变得简洁许多。这些形成链式结构的检查点,会于两个不同高度分别经历两轮投票,由于每一轮投票都会敲定源头与证成目标,因此共识能如流水线(Pipeline)般不断推进。相似的设计理念也出现于 Hot-Stuff,有趣的是,该论文作者 Dahlia Malkhi 还撰文比较 Hot-Stuff 与Casper FFG,其相似程度可见一斑。
  • 强健的抗攻击性:PBFT 不具备对远程攻击(Long-range Attack)以及灾难性崩溃(Catastrophic Crash)的抗性;Casper FFG 则具有特别的机制来防御这两种攻击:针对远程攻击,节点必须定期同步区块及禁止回朔(Revert)已敲定的区块;针对灾难性崩溃,Casper FFG 则引入「离线溢金」(Inactivity Leak)机制来应对。关于这两种攻击的说明,笔者将于日后另撰文论述。

 

由于 Casper FFG 相当简洁,以太坊研究员一度实现了合约版本的 Casper FFG:ethereum/casper然而,这个合约版的 Casper FFG 后来被弃用了!在合约版中原本假设投票能够被并行处理,但在计算投票报酬有很多中间状态,不同投票处理的先后顺序将会影响最后得到的状态,这代表并行化将无法达成共识。而要修正这个问题则必须要在合约与客户端做大量修改,失去了「逻辑用合约实现,避免修改客户端」的精神。因此,为了能够更好地整合 Casper FFG 与其他优化提案(例如分片),全新的以太坊 2.0 磅礴登场了。

以太坊2.0 中的 Casper FFG

 

Casper

-以太坊 2.0: 分片-以太坊 2.0 是一个基于 EVM 并整合 Casper FFG 与众多优化提案(以分片为主)的分布式帐本。以太坊 2.0 除了想实现 PoS,还试图将每秒交易数(TPS)扩展到 10000 笔的量级,使区块链成为如网际网络一般的基础设施(Infrastructure),并且让任何存入 32 个以太币的押金的节点都能成为验证节点。分片(Sharding)即是为了增加可扩展性(Scalability)的重要设计,也是以太坊 2.0 最重要的目标。分片就是分工合作,我们可以用一个简单的例子来说明分片的概念(实际上的解释要比这复杂得多):2 人写 2 题作业,2 人各写不同的 1 题再合起来一定比 2 人都各写完 2 题来得更有效率。目前的以太坊只有 1 条区块链,所有节点必须各自处理所有交易(如同 2 人各自写完 2 题作业);在以太坊 2.0 中,网络会分成 1024个片(Shard),每片分别运行 1 条分片链(Shard Chain),它们将各自处理一部分的交易后再将结果交由 1 条信标链(Beacon Chain)统整(如同 2 人各做不同的 1 题再合起来)。因此,以太坊 2.0 预计会有 1 条信标链以及 1024 条分片链。值得注意的是:片是一个抽象层,并不特指某一群节点。为了更了解这个概念,笔者扩充一下上文的例子:假设写作业有找答案抄答案两个步骤,那么 A / B 2人写 2 题作业,由读速快的 A 找第 1 题答案,读速慢的 B 找第 2 题答案;由手速快的 B 抄第 1 题答案,手速慢的 A 抄第 2 题答案。如此,A / B 便可以依照读/写的快/慢来分别负责不同题目的不同步骤。同样地,在以太坊 2.0 中,除了有 1024 个片,还会有 1024 个持续委员会(Persistent Committee)与 1024 个交联委员会(Crosslink Committee):

 

  • 每个片都会对应 1 个持续委员会与 1 个交联委员会,如同上例中每个题目可以依照读/写的步骤来对应不同的个体。
  • 使用链上随机数(On-chain Random Number)决定各委员会的分派,如同上例中依照读/写的快/慢来分派题目(关于链上随机数的实现细节留待笔者日后详述)。
  • 持续委员会负责维护分片链与产生分片区块(Shard Block)、交联委员会负责维护信标链与产生信标区块(Beacon Block),如同上例中读速快的负责找答案、手速快的负责抄答案。各区块的出块节点(Block Proposer)也交由链上随机数决定。

 

换句话说,每个验证节点都需维护 1 条唯一的信标链及 1 条所属片的分片链,也都会隶属于与该分片对应之 1 个交联委员会与 1 个持续委员会。Casper FFG 是运行于以太坊 2.0 之上的覆盖链,这个覆盖链同样由检查点构成,各检查点之间的跨度称为时期(Epoch),1 个时期(Epoch)切成 64 个时段(Slot ),每个时段对应 16 个片(16 = 1024 ÷ 64),因此每片在每时期中都有对应的时段,并只能在轮到自己时才广播其对检查点的投票,且每分片只能 1 个时段中投出 1 票——也就是说,各分片需要先对投票内容形成共识,不过各片内部形成共识的方法仍尚未定论,近期最新的提案是使用聚合签名。另外,Casper FFG 在以太坊 2.0 中的分叉选择规则是最新消息驱动GHOST(Latest-Message Driven GHOST, LMD GHOST)。理论上,Casper FFG 于每个检查点的投票应该要与底层出块机制的投票分开;实际上,以太坊 2.0 的底层投票内容会同时包含顶层投票内容(检查点的连结),如同顶层投票搭了底层投票的便车(Piggyback),借此优化效能。如此在每个时期结束时,每个片都会收到所有其他片在该时期的投票,Casper FFG 活跃性得以维持。

结语

Casper FFG 是一个实现权益证明的大胆尝试,它在以太坊 2.0 的表现值得期待。然而以太坊 2.0 还有许多难题留待解决,例如轻节点(Light Client)/ 链上随机数生成器(On-chain Random Number Generator)/ 跨片交易(Cross-shard Transaction)等等。与此同时,许多以太坊 2.0 的竞争者也提出新的共识协议与分片技术,例如 RapidChain / Harmony / Chainspace 等等。Casper FFG 以及以太坊 2.0 是经过众多研究员/开发者不断激荡与迭代的重要结晶,但一直以来都缺乏提供系统性论述的中文材料,希望此文可以帮助中文世界的研究员/开发者快速理解 Casper FFG 与以太坊 2.0 的精要。

导读:Casper FFG 是受 PBFT 启发并经过改良的共识协议,它虽然被设计得很简洁(Simple),但其对安全性的证明却不简单(Easy)。

为什么区块链需要“权威证明”,而不是“权益证明”?
 

数字货币世界正在成熟,对正确的长期共识协议的讨论正在进行。 讨论的结果将塑造整个生态系统的未来。公共区块链网络中的共识协议算法的目的是,为了在没有相互信任或者中心节点的情况下,确保参与者认同当前区块链的状态。

一切源于“工作量证明“(PoW)

最初提出使用工作量证明确保挖出一个区块需要一定量的工作。 这使得用户都选择最长的链,也就是工作量最高的链,作为正确的链。
然而,工作量证明在能源消耗方面极其低效。 这使得它成本昂贵,还鼓励矿工把哈希算力集中化。 所以,这些集中的矿池没有把我们推向一个真正的分布式网络,而是成为了事实上的权威。

我们需要其他选择。

焦点转向了权益证明(PoS)

权益证明算法与挖矿无关。相反,它是关于验证的。谁是区块链中下一个块是由“权益证明”算法确定。为了避免算力过度集中,这种算法必须具有某种随机性。至少,投票权必须正确分配,以避免变形成集中式的系统。

在权益证明系统中,每个验证者必须要有网络中的一些股权。这些股权需要被绑定,这意味着网络参与者需要将一些资金存入区块链网络作为抵押品。

在工作量证明的网络中,大家认可工作量最大的那条链有效。而在权益证明的网络中,参与者信任股权最多的那条链。

在加密货币世界中广泛采用的共识算法是工作量证明。然而,包括NXT,BitShares和Ethereum在内的几个优秀的项目正在使用或正在迁移到“权益证明”。

即使在Bitcoin社区,一些成员正在考虑尝试改变比特币的工作证明机制,以解决扩容问题并改善网络的运作。

但是还有没有更好的选择呢?

一个即将在5月1日进行ICO的项目使用了远远超出工作量证明和权益证明的技术。该项目称为VIVA,介绍了权威证明的概念。

权威证明是什么?

VIVA引入了权威证明的概念,这是一种在真实分布式网络上实现即时交易和无缝共识的算法。

最近我们让VIVA的CTO,William Banks将权威证明与PoW和PoS模型进行对比。 “虽然权益证明能有一些的优势,但并不是灵丹妙药。 问题在于,不能保证股权最多的验证者运营网络时的利益最大化。”

他说,

“实际上,权益证明的加密货币一直被这个问题困扰:理性的人倾向于以自己的利益行事。 PoS之所以能工作是因为最大的利益相关方的最大利益通常与网络的最大利益相一致。 然而,在有分歧的情况下,最大的利益相关者可能会承担最高司令官的角色。”

记住收官很重要

创建分布式的权益证明算法,是用于解决早期工作量证明算法的问题。其工作也是基于多个因素加权的。

首先,考虑到股权的大小和验证者的利益。其次,重要的是检查他们的决定何时成为网络参与者同意的主要决定。最后,需要考虑这个决定的结果是否得到大多数网络参与者的批准。

Banks说:

“然而,权益证明的算法并不考虑从一开始就考虑到最后的长线玩家。”

VIVA提出的权威证明模式用较弱的共识模式来处理平等主义概念,用密码签名证明和网络执行和支持来取代业务合同。

这种算法的权威是根据一套资产抵押对另一套的方式,相互同意各方之间的解决。因此,如果一方失去共识,其他方自动承担非同意方的资产和负债,使最终用户不受影响。

Banks继续解释:

“在这种情况下,没有任何损失,最糟糕的事件会导致发行未披露的票据破产,使其虚弱无力,直到债务退还并恢复共识。“

每个参与者起着不同的作用,网络能够通过增加或减少系统中的能量来应对价格变化,无论是在任何地方。价格和供应在系统中,就像汽车中的加速器和刹车。

重塑区块链

VIVA团队宣称他们的区块链与以前的模型有很大不同。

它被设计成一个多维图形,而不是像传统的链条那样是线性的。在这种设计下,VIVA网络被称为更类似神经网络,具有链接,加权,互连的数据和优化机制。这解决了NP的“旅行推销员问题”,以便根据所需的任务将网络重新路由到多个最优配置。

通过从内容可寻址网络(CAN)中的信息获取,VIVA生态系统允许更加健壮和智能的网络。 VIVA团队不是凭空发明,而是在IBM和英特尔的支持下,开始研发和投资,利用强大的超级账本的定制分支,获得了数亿美元的研究支持和投资。

VIVA拥有由VIVA Crown,VIVA硬币和VX市场挂牌的三维级别的隐藏式模型组成,它们与vXD,vMXN或vEUR等存储价值的本地法定货币挂钩。在该系统中,VIVA Crowns是一个不可分割的数字资产由最好的密码学保护。他们授予所有者访问网络的权利,经营铸造业务,并每90天收到一份财政权(TR),以制造在该季度内分配的VIVA币的份额。

在VIVA网络中,货币不是挖出来的,而是铸造的。这里的铸造可以被认为是主节点和采矿池之间的混合,允许进行任何业务活动,除了铸造VIVA币在公开市场上销售。不使用mint的VIVA持有人可以将季度财政权利出售给需要的人,以支付其运营费用。

锦囊妙计

VIVA网络远远不仅仅是另一种加密的机制。从一开始,它依靠现实世界的商业应用程序将能量引入系统。例如,TradeQwik是VIVAconomy进出的密码/平台交换机和主要网关。它是不断发展的VIVA网络的第一个操作mint,目前可用于测试版。

TradeQwik上的所有交易均使用网络令牌VIVA Coin进行交易,其中提供了几个交易对来进行交易,包括Bitcoin,Litecoin,Ethereum,Steem,Dash,Golos,XAU / GBG,USD和MXN。

另一个VIVA业务应用程序是Cashola,它是一种对等支付系统,利用短信作为交易工具。该解决方案将为世界各地的人们提供汇款服务,可能没有智能手机具有稳定的互联网连接,但确实有蜂窝服务。 VIVA团队正在计划扩大其转帐许可证,以进一步开发服务,同时为最终用户提供更简单,便捷的服务。

VIVA还开发了MedicAxess,有望成为颠覆医疗行业游戏规则的一个应用程序。该应用程序将允许个人控制他们的所有医疗记录,而不是分散在医疗诊所,医院,实验室和医疗保健提供者之间。个人在获得医疗护理时,将有权控制谁能够获得他们的记录。 MedicAxess是一个独特的应用,医疗服务提供商将被允许在网络上安全地和免费地存储病历。当他们只需支付少量费用,即可访问记录。

最后,也是重要的一点,VIVA推出了POETS(教育成绩单证明)。在不久的将来,这个应用程序将教育机构连接成一个由学生赚取的单一信贷网络。他们将能够选择一批机构的课程和指导员,一生中收集学分,在学位准备时“兑现”,颁发机构同意。 现在关于终身学习的文章已经很多了,现在VIVA就提供了一个实际的工具。

导读:公共区块链网络中的共识协议算法的目的是,为了在没有相互信任或者中心节点的情况下,确保参与者认同当前区块链的状态。

PoW和PoS并不是共识算法,它们可以帮助挑选区块提议者
 

比特币

前言:本文简单明了地阐述了达成共识的两个主要流程:区块的提议和区块的共识达成。区块的提议主要涉及到PoW和PoS机制,也就是工作量证明和权益证明的机制,用以抵抗女巫攻击,安全地选出可靠的区块提议者。区块的共识达成则涉及到共识算法,主要包括中本聪共识和经典共识。中本聪共识采用最长链规则,经典共识则可实现最终性。每种共识算法都有自己的权衡取舍。本文作者Julian Koh 和Cheryl Sew Hoy,由“蓝狐笔记”社群的“晓L”翻译。

区块链共识是2017年和2018年最广为讨论的区块链子领域之一。可以看到,很多公司试图从零开始构建新的智能合约平台,并与以太坊竞争,而其中的一个差异化或创新点就在区块链的共识算法方面。试图理解这些算法,并能对它们进行批判性比较,这对很多加密投资者来说,都是一项全职工作,毫无疑问,要掌握它们并不简单。

为揭开这些“共识算法”的神秘面纱,不少人做了很多工作。但是,对于普通人来说,它们太过于技术化。一些概念,例如同步、安全/活性证明、不可能结果,这些有助于人们通局了解。不过,在我看来,对于大多数人来说,完全理解并不特别重要。

本文重点是区块链的共识算法,而没有提及更大的也是超级复杂的分布式系统领域。为了简单易懂,还会放弃一些技术概念。

本文结束时,你应该理解PoW和PoS的区别,了解BFT的意思,最重要的是,当考虑在哪个区块链上构建你的应用时,你应该知道它们的权衡是什么。

什么是共识?为什么很重要?

简单来说,区块链是一种公共数据库,其中用户就什么是正确的达成一致。比特币是记录所有交易的公共数据库,保留了货币系统的完整性。有两个主要问题需要理解:

1.就什么达成共识?

2.如何达成共识?

我们需要有人提议,然后让其他人选择,直到达成某种形式的共识。就区块链的情况,我们需要有人提议区块,然后需要剩余节点接受区块。

一个简单的例子如下:

比特币

4位朋友尝试并安排共同做事的时间

4个人尝试并安排共同的时间来做事。每个人提出其可用时间(空白格)。可以看到,有两个共同可用的时间段,下午2点和6点。他们如何达成共识?在他们提出可用时间前,他们同意一个特定规则:每个人必须选择最早的共同可用时间。在这种规则下,这意味着,他们将会在下午2点而不是下午6点见面。由此,他们达成了共识。

按照这种框架,我们将它类比扩展到比特币区块链:

人们就什么达成共识?

人们就区块数据达成共识。区块中包含有效的比特币交易。在比特币中,任何人都可以提议区块,只要他们率先解决一个计算谜题(PoW)。

 

人们同意接受最长链上的区块。例如,如果链A的高度为100,而链B的高度为200,如果你收到链A上的区块101和链B上的区块201,你必须接受区块201。有人在更短的链上添加区块,可能是因为他们没有意识到更长的链,但“最长链规则”确保一旦区块在整个网络中传播,每个人最终就相同的事情达成共识。

该框架支持所有共识算法。不同算法可以采用不同的方法来提议区块,也可以使用不同的方式来对区块达成共识。

提议区块

考虑区块提议时,最大的问题是谁来提议区块。如果任何人随时都可以提议区块,会很难达成共识,因为这类似于人们不停地相互交谈。必须以某种方式选出代表,这样剩余的人可以一次看到一个提议。

最幼稚的方式是让协议随机选择一个人来提议新区块。然而,在互联网上,一个人可以通过运行相同程序的一百个实例来伪装成一百个人。因此,我们需要创造某种形式的稀缺性,以抵抗女巫攻击。(蓝狐笔记注:女巫攻击主要是指网络中的少数节点控制多个虚假身份,并利用这些身份控制网络中大量正常节点的攻击方式。)。

因此,这个游戏必须能够抵挡单一黑客操纵很多人的攻击。这正是PoW和PoS给你带来的:一种让计算机受到某些资源限制的方式。(蓝狐笔记注:也就是说,通过设立门槛,比如PoW的算力投入和PoS的代币投入,通过竞争性的方式,解决了谁有资格提议区块并由此获得奖励的问题。)

PoW如下:为获得提议区块的权利,你必须率先完成计算密集型的任务。模拟一个虚拟的计算机抛硬币任务,直到它得到连续100次的虚拟硬币的正面。这是计算密集型的,没有人能伪装成一百人,因为这受制于其算力。

然而,通过采用这种“抗女巫攻击”机制,人们已经建立了数千台计算机组成的矿场,以便在算力竞争中胜出,从而获得提议区块的权利。这些服务器矿场消耗巨量电力,因此它们集中于可获得最便宜电力的国家或地区。

那么,当大多数比特币矿工位于中国时,这对于去中心化意味着什么?这种地理上的中心化给系统的长久性构成了真正的威胁,因为这些挖矿公司很容易被监管。

比特币

比特币矿场

PoS采用了跟PoW完成不同的“抗女巫攻击”机制。既然要花钱购买比特币挖矿计算机和购买电力,那么,为什么不只是用钱来选择区块生产者并将计算密集型过程跳过呢?PoS是这样的想法:基于人们在系统中质押的钱多少来选择区块提议者,也就是人们在系统中拥有的代币的比例。

在PoW中,拥有算力越多,被选为提议下个区块的概率就越高。在PoS中,拥有的代币越多,成为区块生产者的概率就越高。

请注意,还没有开始谈论如何就区块达成共识。有一种常见的误解,认为PoW和PoS是共识算法。其实它们不是。它们只是通过约束稀缺资源的方式来选择区块生产者。

区块共识

这是事情变得有趣的地方,也是近年来大部分创新发生的地方。一旦有人提议区块,我们如何达成共识?这是从上个世纪80年代以来计算机科学家们一直试图解决的问题,以在一些计算机偶尔发生崩溃时,其计算机集群也能同步。到了上世纪90年代,这些计算机科学家开始思考一个更难的问题:如果黑客可以控制其中的一些计算机呢?(蓝狐笔记注:这两个问题的区别在于,一个只是计算机部分崩溃,另一个是计算机没有崩溃,而被恶意控制。)

他们能否构建足够强健的系统,以确保所有非恶意的计算机依然能够达成共识?这一特性被称为“拜占庭容错”(BFT),它是基于拜占庭将军问题而来。BFT系统是一个相当小的研究课题,因为大多数系统并不需要这种级别的稳健性,因为大多数计算机集群通常都属于单一公司。直到区块链的到来,才改变了这一局面。

在区块链中,任何人都可以运行节点(集群中的计算机),并且可以向其他节点发送信息或数据。这是一个真正对抗性的环境,因为恶意行为者可以假装为诚实节点。例如,如果集群中的10个恶意计算机向其他9个计算机发送冲突信息,该怎么办?

比特币

恶意计算机向不同的诚实计算机发送冲突信息

由于诚实计算机无法区分恶意和非恶意的计算机,这个问题变得非常棘手。解决这个问题有两种主要方法:中本聪共识和经典共识。

中本聪共识

中本聪共识用于比特币和大多数PoW系统中,由中本聪开创。它有一条单一规则:“当你看到提议的区块拥有最多工作量证明,就接受它。”通常来说,具有最高编号的区块拥有最多工作量证明。(蓝狐笔记注:也就是比特币的最长链规则,这是一种概率性的确认,确认的区块深度越长,交易越难被逆转。)

这意味着,对于你看到的区块是否“正确”,你永远没有100%的确定。例如,如果你看到的最高区块编号是99,你可以在区块编号100接收到区块A,因此你接受了。

比特币

突然,你在区块编号103收到区块B,而它在区块编号100有不同的区块。根据共识规则,你需要“反转”之前接受的区块A,转而接受新的区块历史。

比特币

在这个系统中,超过系统算力50%的攻击者将能够持续构建最长链,因此,可以创建他们想要的任何区块。通过这个例子,我们可以看到这些规则有助于人们就哪一条链是可接受的链达成一致。

经典共识

在中本聪共识2009年发明之前,计算机科学家对此问题有不同的解决方案,这问题有不同的特性。第一个拜占庭容错共识算法称为实用拜占庭容错算法(PBFT)。它的工作原理是:让一组参与者进行多轮投票,直到一定比例的投票者达成共识。

比特币

基于PoS之类的机制,选择某人提议区块。他将区块发送给其他已知的参与者。由其他参与者进行投票。

比特币

由于大多数参与者都对区块投赞成票,系统中的每个人都将接受该区块作为正确区块。使用这种类型的共识,须有一组已知的投票者,但一旦他们投票通过,区块就有了最终性。因此,就不存在区块回滚的事情。如果存在争议,那么系统会停止。(蓝狐笔记注:经典共识的最终确定性,与中本聪共识的概率性形成鲜明对比。)

PBFT算法已经被用在区块链上,区块链中迄今为止,最突出的BFT算法是Tendermint Core。Tendermint Core是区块链上第一个不使用中本聪共识的共识算法,而是基于20多年的计算机科学研究基础上。

BFT算法的主要局限是它们通常仅限于一小部分投票者,因为所有投票者都需要事先知道。让10万人不断地与其他人沟通以达成共识是极其困难的事情。到目前为止,Cosmos已经运行了可能是最大的公共BFT系统之一,他们的Game of Stakes测试网有超过200+的验证者参与。(蓝狐笔记注:Harmony的验证者已经超过了200+。)

中本聪共识有其他变种,例如GHOST(新评分算法,不仅仅是最长链),也有其他BFT共识的变种,例如Casper-BFT和Thunderella。

这些共识算法变种的主要区别实际上只是其区块提议方式的不同或参与共识的沟通人数不同而已。大多数情况下,在一个算法系列中,它们之间有类似的权衡。还有一些新的共识形式,例如Avalanche,它们不属于任何一个系列。

比特币

经典共识和中本聪共识的权衡,来自于Gun Sirer’s的Avalanche演示

如何选择共识算法?

根据你想构建的应用类型,下面是选择哪种共识算法的指南问题,由此也会涉及到选择何种智能合约平台。

1.你要构建的应用对最终性的急需程度?

对于一些应用来说,最终性非常重要,而另外一些应用,则不那么重要。如果你构建的是用于微支付的新型支付系统,交易可以逆转并不是世界的末日。类似地,如果你构建的是去中心化的社交网络,100%保证状态更新立即完成并非是一个特别重要的特性。相反,如果你构建的是去中心化的交易所,最终性是用户体验中至关重要的部分。让交易逆转比不发生交易还要糟糕。作为参考,比特币的最终性大约是1小时左右(蓝狐笔记注:比特币6个区块确认完成,基本上可以确认交易完成,但这也不是100%的最终性,不过在6个区块确认之后,要逆转交易的难度非常之大。)以太坊的最终性大约6分钟左右,而Tendermint Core有1秒的最终性。

2.你要构建的应用所需的快速程度?

如果你构建的是游戏应用,每个动作前需要等待15秒钟(甚至更长时间)是否合理?由于以太坊的区块时间,基于以太坊区块链构建的游戏用户体验糟糕,因为它的吞吐量太低。然而,一个转让房屋证书所有权的应用可能非常适合在以太坊上运行。使用Cosmos SDK构建应用,允许开发者使用现成的Tendermint Core,它有更短的区块时间和高吞吐量,每秒最高可以达到10,000笔交易。你可以通过为你的应用设置更少的验证者数来实现这一目的,因为可以减少通信开销,提高应用处理速度。

3.你要构建的应用所需的“去中心化”程度?

一些应用,比如游戏,可能并不需要显著的抗审查特性,这只是去中心化的副产品。在理论上,验证者可以创建卡特尔以及在游戏中实现区块/逆转交易以获取利润,这些在应用中真的重要吗?如果它不那么重要,类似于EOS的区块链可能适合你的应用场景,因为它有更快的交易速度且无需费用。

然而,有的应用,比如自治银行,它对去中心化要求很高。尽管以太坊被认为是去中心化的,但有些支持者声称,以太坊矿池的集中也是其中心化趋势一个重要体现,事实上,它只有11个验证者(矿池)。

构建自己的区块链而不是基于其他智能合约平台来构建应用的一大好处是,你可以为自己应用定制验证方式。然而,构建自己的区块链非常困难,因此,从这方面来说,使用Cosmos SDK非常有用,可以轻松构建自己的区块链,并自定义应用所需的去中心化程度。

4.如果系统停止是否可以接受?

如果你构建的是类似于去中心化的共享骑行应用,那么,确保服务全天候运行可能是最高优先级的,即使出现一些偶然的错误,例如交易被逆转。

Tendermint Core的一个属性是,如果网络验证者之间存在分歧,网络将选择停止,而不是进行不正确的交易。一些应用,例如去中心化的交易所应用,需要不惜一切代价确保正确性。如果存在问题,可以暂停去中心化交易,而不是进行可逆转的交易。

结论

不存在单个“最好”的共识算法。每个算法都有它自己的权衡取舍。但是,通过理解共识流程(提议和达成共识),并建立一个框架来思考你的应用可能需要何种共识算法,能有助于你在选择区块链时,做出更明智的决策。当然,还有其他因素需要考虑,例如开发者工具、社区等。

总的来说,PoW和PoS并不是共识算法。它们是“抗女巫攻击”的机制,可以帮助挑选区块提议者。

两种主要的共识家庭是中本聪共识和经典共识。这些算法用于就区块链中的区块达成共识。每种共识算法都有自己的权衡取舍。根据应用的场景来选择共识算法和智能合约平台。要考虑的因素:

l 最终性

l 速度

l 去中心化程度

l 活性

------

风险警示:蓝狐笔记所有文章都不能作为投资建议或推荐,投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。

导读:区块的提议和区块的共识达成。区块的提议主要涉及到PoW和PoS机制,也就是工作量证明和权益证明的机制,用以抵抗女巫攻击,安全地选出可靠的区块提议者。

3.产业动态

以太坊创始人V神:以太坊 2.0 Serenity 设计原则与考量
 

V神
作者:Vitalik Buterin
编译:Jhonny

Serenity 设计原则

简洁性:特别是由于加密经济 PoS 和二次分片 (quadratic sharding) 在本质上很复杂,因此协议应该在其决策中尽可能地追求最大的简洁性。这是非常重要的,因为这将能够:

(i) 最大限度地减少开发成本,
(ii) 减少发生意外安全问题的风险,且
(iii) 使得协议设计人员更容易让用户确信参数选择的合法性。

通过此链接 1 了解相关的背景信息。当我们为了实现特定级别的功能时,是无法避免一定的复杂性的。复杂性的优先级别是:Layer2 协议的复杂性 > 客户端实现的复杂性 > 协议规范的复杂性。

长期稳定性:理想情况下,应该构建较低级别的协议,这样就不需要在 10 年或更长时间内更改协议,并且任何需要的创新都可以在更高的级别 (客户端实现或 Layer2 协议) 上进行。

充裕性:在协议之上应能够构建尽可能多的应用程序类别。

深度防御性:协议应能够在各种可能的安全性假设 (例如有关网络延迟、故障数量、用户动机的假设) 的情况下继续运行。

轻客户端的可验证性:鉴于一些安全性假设 (例如网络延迟,攻击者预算界限,只存在 1/n 或少数诚实的验证者),验证 O© 数据 (理想情况是只验证信标链) 的客户端应该能够获得间接的保证,即整个系统的所有数据是可用且有效的,即使在受到 51% 攻击的情况下(备注:这是「深度防御性」方面的其中一个目标)。

V神

Layer1 与 Layer2 的折衷

读者可以先阅读我之前的两篇文章:Layer 1 Should Be Innovative in the Short Term but Less in the Long Term2 和_Sidechains vs Plasma vs Sharding_3

在任何区块链协议设计中,在 Layer1 (即共识层) 引入更多的特性,与构建一个更为简洁的 Layer1 协议并在 Layer2 (即应用层) 上允许构建这些特性,这两者之间各有折衷之处:

支持 Layer2 的论据:

  • 减少共识层的复杂性 (参见上方提到的「简洁性」);
  • 减少修改协议层的必要性 (参见上方提到的「长期稳定性」):
    • 降低无法达成共识的风险;
    • 减少协议治理和政治风险方面的工作量
  • 随着时间的推移,拥有更多的灵活性和实现新想法的能力

支持 Layer1 的论据:

  • 减少由于缺乏强制每个人升级到新协议 (即硬分叉) 的机制而导致进展停滞的风险;
  • 可能会降低整个系统的复杂度;
  • 如果 Layer1 不够强大,那么就不可能在 Layer1 上搭建具有所需性能的 Layer2 系统 (参见上方提到的「充裕性」)

以太坊 2.0 的设计在很大程度上都是要致力于谨慎地在 Layer1 和 Layer2 之间保持平衡。这包括 (i)类似图灵完备的、包含丰富状态的代码执行,(ii)在数据有效性和计算方面的扩展性,以及 (iii)更快的区块确认时间,这对于协议实现【充裕性】都是非常必要的,因为:

  • 如果不实现 (i),那就无法具有稳健的信任模型来搭建 Layer2 应用程序。
  • 如果不实现 (ii),那扩展性将仅限于借助状态通道或者 Plasma 等技术实现,而这些技术在推广以及资金锁定和 / 或大规模退出方面存在挑战。
  • 如果不实现 (iii),那就无法在不使用通道技术的情况下进行快速交易,而通道技术在推广以及资金锁定和 / 或大规模退出方面存在挑战。

但以太坊 2.0 也将一些其他的特性有意地留给了 Layer2 来实现:(i)隐私性,(ii)高级编程语言,(iii)可扩展的状态存储,以及 (iv)签名方案。这些特性留给 Layer2 来实现,是因为这些方面都是快速创新的领域,现有的许多方案具有不同的特性,并且不可避免地要进行权衡,以获得更好、更新的方案。比如:

  • 隐私性:环签名 (Ring Signature) + 机密性值 (confidential values) vs. ZK-SNARKs 和 ZK-STARKs,Rollup vs. ZEXE 等等。
  • 高级编程语言:声明式编程 vs. 命令式编程,语法,形式化验证特性,类型系统,保护性特征 (比如禁止在算术表达式中使用非纯函数),本地支持的隐私特征等等;
  • 可扩展的状态存储:账户模型 vs. UTXO (未使用交易输出) 模型、不同的租金方案、原始默克尔分支见证 (raw Merkle branch witnesses) vs. SNARK/STARK 压缩 vs. RSA 累加器,稀疏的默克尔树 vs. AVL 树 vs. 基于使用情况的不平衡数等等 (除此之外,还有针对验证状态转换的不同方案)。
    *签名方案:Schnorr 签名、BLS 签名、Lamport 签名等等

为何使用权益证明?

参见 :
https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQhttps://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51

为何使用 Casper?

当前权益证明 (PoS) 共识算法主要要三个阵营:

  • 受到中本聪启发的权益证明算法 (比如 Peercoin (点点币)、NXT (未来币)、Ouroboros (Cardano 的共识算法) 等实用的算法)
  • 受到 PBFT (实用拜占庭容错) 启发的权益证明算法 (比如 Tendermint、Casper FFG、Hotstuff 等算法)
  • CBC Casper (解释详见 4 和 5)

在后两个阵营存在一个问题,即是否使用以及如何使用保证金存款 (质押金) 和 Slashing (质押金罚没)。这三种权益证明机制都优于工作量证明 (PoW),但我们想在本文捍卫一下以太坊 2.0 使用的方法。

质押金罚没 (Slashing)

以太坊 2.0 使用一种 Slashing (质押金罚没) 机制,即被检测到行为不端的验证者将会被惩罚,最轻微的惩罚是销毁~1% 的质押金,最严重的惩罚是销毁验证者的所有质押金。

我们通过以下几个方面来为 Slashing 机制的使用进行辩护:

1.增加攻击成本:我们想要确保的是,任何对 PoS 链发起的 51% 攻击都将导致攻击者消耗一笔非常大的费用(比如价值数亿美元的加密货币),且系统能够快速地从任何攻击中恢复。这使得攻击 / 防御演算对于攻击者来说非常不利,并实际上可能使攻击适得其反。
2.克服验证者带来的困境:节点开始偏离「诚实」行为的最现实直接的方法就是疏忽职守 (比如验证者本该参与验证,但却不参与验证;或者在不该签名时进行签名等等)。验证者带来的困境详见6,比特币 SPV 挖矿 7 就是这种情况发生的例子,这将导致非常严重的后果。对非诚实的验证者进行验证惩罚有助于缓解这些困境。

上方第 2 点的一个更为微妙的例子就是,在 2019 年 7 月 Cosmos 链上的一名验证者因对两个相互矛盾的区块进行签名而被罚没了 8。对此事件的调查结果显示,该验证者同时运行了一个主节点 (primary node) 和一个备份节点 (backup node),该验证者的目的是为了确保当其中一个节点下线时,该验证者依旧能够获得奖励,而这两个节点恰好同时启动了,导致这两个节点对两个相互矛盾的区块进行了签名。

如果同时拥有一个主节点和备份节点成为常态,那么攻击者就可以对区块链网络进行分区,并使所有验证者的主节点和备份节点提交不同的区块,从而导致两个相互矛盾的区块被敲定。slashing 惩罚有助于在很大程度上抑制这种操作,降低发生这种情况的风险。

共识算法的选择

在上文提及的 PoS 共识算法的三个阵营中,只有后两个阵营 (即受 PBFT 启发的共识算法和 CBC Casper) 这两种算法中存在 finality (确定性) 的概念,即某个区块是通过这种方式得以确认的:只有当很大一部分验证者 (受 PBFT 启发的算法要求至少有 1/3 的验证者,CBC Casper 算法要求至少有 1/4 的验证者) 行为不当并因此被罚没时,该区块才会被逆转;

而第一个阵营--受中本聪启发的 (最长链规则) 共识算法无法实现这种意义上的确定性 (finality)。

需要注意的是,确定性要求大多数验证者在线,而这已经是 Sharding (分片) 机制中已经存在的要求,即Sharding 机制要求每个由随机验证者组成的委员会中的 2/3 验证者对交联 (crosslink) 进行签名,只有这样,该交联才将被信标链接受。

我们选择 Casper FFG 只是因为它是协议在实现确定性时可用的最简单的算法。当前我们正在积极探索在以太坊 2.0 的阶段 3 将之切换为 CBC Casper。

Sharding,或者说我们为何讨厌超级节点?

对于 Layer1 扩展而言,sharding (分片) 方式的一个主要替代方法就是使用超级节点 (supernodes),超级节点要求每个共识节点都拥有一个强大的服务器,这样该节点就能单独地处理每一笔交易。

基于超级节点的扩展方式很方便,因为很容易实现:这与当前很多区块链采取的方式一样,除了需要进行更多的软件设计工作来以一种更加并行化的方式进行构建。

我们不选择这种使用超级节点的方式,主要理由如下:

  • 验证池中心化风险:在一个基于超级节点的系统中,运行一个节点将需要消耗一笔高昂的固定成本,这使得能够参与进来的用户数量受到限制。虽然有些人会反驳道「在大多数 PoW 和 PoS 加密货币中,共识是由 5-20 个池子 (矿池或验证池) 控制的,而这些池子可以很好地运行节点。」但这种观点的问题在于忽视了其中存在的中心化压力风险,即便是财力雄厚的池子之间也存在这种风险。如果运行验证者的固定成本相对于回报来说是非常高的,那更大的验证池就能够提供比小型验证池更低廉的手续费,这将可能导致那些小型的验证池被排挤并感受到进行合并的压力。而在分片系统中,质押更多 ETH 的验证者将需要验证更多的交易,因此成本并不是固定的。
  • 云端中心化风险:在一个基于超级节点的系统中,用户在家里进行 staking 就变得不可行了,因此大多数 staking 更有可能发生在云计算环境中。这将创建一个单点故障。
  • 抗审查性降低:如果没有达到高计算+带宽要求,用户就不可能参与共识,这使得检测和审查验证者变得更加容易。
  • 扩展性:在一个基于超级节点的系统中,随着交易吞吐量的增加,上文提及的风险也会相应地增加,而分片系统能够更加轻松地处理交易量的增长**。

上述这些中心化风险也是我们为何不会试图实现以太坊的超低延迟性 (低于 1 秒) 的原因,而是选择 (相对) 保守的延迟时间。在以太坊 2.0 系统中,使用尽可能少或尽可能多的 ETH 以及使用尽可能少或尽可能多的计算能力来参与是可能的(尽管你需要在 ETH 和计算能力方面相一致,即你无法在仅拥有很少计算能力的情况下质押大量的 ETH,反之亦然),且固定成本是最小化的,尽管这种成本会随着你质押的 ETH 的数量的增长而增加 (一旦你质押的 ETH 数量超过了 32,768 ETH,那么大部分时间你将在验证所有的分片链(备注:共计 1024 条分片链,每个验证者身份需要质押 32 ETH,因此 1024*32=32,768))。

安全模型

人们通常认为区块链的安全性依赖于「大多数参与者是诚实的」这一假设,即≥50% 的参与者将会诚实地遵循既定的协议,会为了个人的利益放弃叛变的机会。

事实上,(i)「大多数参与者是诚实的」这种假设并不切实际,因为参与者可能会「懒惰 (lazy)」,在不验证区块的情况下签署区块 (参见验证者带来的困境 9 和比特币 SPV 挖矿导致的分叉 10),这都是非常普遍的叛变情况;但幸运的是,(ii)区块链通常会通过一些安全模型(而非假定大多数参与者将保持诚实)来维护自身的安全特性。

一种常见的较为严苛的安全模型就是非协同的理性多数模式 (uncoordinated rational majority),即参与者会按照自己的利益行事,但相互协同的参与者数量不会超过一定的比重 (在简单的 PoW 链中,这一比重为 23.2% 11)。

另一个更为严苛的安全模式是应对最糟情况的模式,即当单个参与者控制了超过 50% 的算力或质押金时,此时的问题就变成了:

(1) 在这种情况下,我们能保证验证者在试图破坏整条链时将付出非常高昂的成本吗?
(2) 我们可以无条件地保持哪些保证?

在 PoS 链中,slashing (对质押金的罚没) 可以提供上方第一个问题的保证,即当攻击者试图破坏整条链时,将需要成大非常高昂的成本。在不存在分片的区块链 (比如当前的以太坊 1.0 链) 中,每个验证所有区块的节点都会通过提供以下两个保证来完成上方第二个问题的要求:(i) 最长的链是有效的,且 (ii) 最长的链也是可用的 (通过此链接 12 查看「数据可用性」的重要性的理论依据)。

在以太坊 2.0 中,我们通过 sharding (分片) 的方式来实现深度防御,即通过将随机选择的验证者委员会组合起来,基于大多数验证者将保持诚实的安全模式,以实现有效性和可用性保证,且通过托管证明 (proof of custody) 来防止懒惰的验证者(即如果验证者「懒惰」不参与验证将会面临惩罚),通过欺诈证明 (fraud proofs)和数据可用性证明 (data availability proofs)9 在无需下载和验证所有数据的情况下检测无效和不可用的链。这将允许客户端拒绝无效和不可用的链,即便当这条链是由大多数 PoS 验证者支持的链。

客户端可以通过某种保留共识的方式来检测交易的审查性 (详见 13),但这方面的研究还没有整合到以太坊路线图之中。

下表中展示了预计的安全特征:

V神

Casper 设置的激励机制

基本奖励 (Basic rewards)

在每个 epoch 期间 (在以太坊 2.0 中,每生成 64 个区块 (大约 6.4 分钟) 称为一个 epoch),每个验证者都要进行「证明 (attestation)」,也即对链头 (head) 进行投票签名 (链头也就是顶端区块)。如果验证者的「证明」被包含在了链头中,那该验证者将获得奖励,这个奖励由五个部分组成:

  1. 因「证明」被包含在顶端区块中而获得的奖励;
  2. 因「证明」明确了正确的 epoch 检查点而获得的奖励 (备注:每个 epoch 期间的最后一个 slot 被称为 checkpoint (检查点),slot 为协议设定的生成一个区块所需的时间 (6 秒));
  3. 因「证明」明确了正确的链头 (顶端区块) 而获得的奖励;
  4. 因「证明」被迅速地包含在链上而获得的奖励 (如果「证明」是在 1 个 slot 之后就被包含在链上,那验证者将获得全部奖励;如果在 n 个 slot 之后才被包含在链上,那获得的奖励将是全部奖励的 1/n);
  5. 因「证明」明确了正确的分片区块而获得的奖励。

在每种情况下,实际奖励的计算如下。如果 B 是基本的奖励,P 是执行所需「证明」操作的一部分验证者,那么任何执行了所需操作的验证者所获得的奖励将是 B*P,而任何本该执行相关操作但却未进行该操作的验证者将受到 -B 的惩罚。这种「集体奖励」机制的目标是「如果有人表现得更好,那每个人都表现得更好」,从而限制恶意破坏因素。(参见本文 13 查看有关恶意破坏因素的描述以及为何限制这些因素非常重要)

需要注意的是,上方第 4 点是一个例外;这种奖励取决于「证明」被采纳的延迟性,而不是取决于验证者的行为,而且没有惩罚的风险。

基本奖励 B 本身的计算方式是

V神

其中 D1...Dn 是验证者质押金的规模,k 是一个常量。这是两种常见模式的折中方案,这两种常见的模式是 (i) 设置固定的奖励率,也即 k*Di,(ii) 设置固定的总奖励,也即

V神

反对 (i) 的主要论据是,这种模式给网络带来了两个方面的不确定性:币的发行总量不确定,以及参与质押的总数不确定(因为如果固定的奖励率太低,那基本没人会参与进来,这威胁了整个网络;而如果固定的奖励率太高,那将有太多的人参与进来,使得币的发行量出乎意料的高)。

反对 (ii) 的的主要论据是,这种模式将会使网络更容易遭受「discouragement attacks」攻击,详见 13

采取基本奖励的方式折衷了这两种方法,并避免了每种方法的最坏结果。

区块提议者将「证明」包含在区块中之后获得的奖励是基本奖励的 1/8,这样的目的是鼓励区块提议者尽可能地监听信息并接受尽可能多的信息。

达到收支平衡的在线时间

假设存在两种验证者:(i) 发挥作用的在线验证者,和 (ii) 离线的验证者,如果前一类验证者部分是 P,基本的奖励是 B,那么在线验证者预计将获得的奖励是:上方第 1、2、3、5 种情况下的奖励B*4P + 上方第 4 种情况的奖励 7/8*B*(P+(P*(1-P))/2+(P*(1-P)^2)/3+...) (因为「证明」有可能会因为验证者缺席而延迟被包含在链头中) +区块提议者奖励 1/8*B*P。验证者缺席 (即本该参与验证而实际上并未进行验证) 将受到的惩罚是 B*4。因此,如果所有其他验证者都在线,那验证者在线时将会获得 B*5 的奖励,而离线时将会受到 B*4 的惩罚,因此如果验证者在线的时长为≥4/(4+5)≈44.44%,那验证者将能够处于不赔不赚 (收支平衡) 的状态。如果 P=2/3 (即在线的验证者占所有验证者总数的 2/3),那验证者将会因为在线而获得的奖励是

≈B*(2/3*4.125+7/8*0.81)≈B*3.46,或者将为因为在线时长≥53.6% 而达到收支平衡的状态。

但是,如果 P 低于 2/3 (即在线验证者的数量低于总数的 2/3),那针对离线的验证者将会受到称为「inactivity leak」的惩罚。

Inacivity leak

如果以太坊 2.0 链在超过 4 个 epoch 的期间都未能实现确定性 (finality),那将会增加额外的惩罚,使得最大可能的奖励是零(未能正确执行操作的验证者受到惩罚),且还会增加第二个惩罚,此惩罚将会根据在多少个 epoch 期间未能实现 finality 而成比例地增长。这是为了确保如果超过 1/3 的验证者下线,那这些离线的验证者将会受到更为严重的惩罚,且这种惩罚会随着时间的推移而成倍地增长。

这将带来三个影响:

  • 离线验证者将会受到更严重的惩罚,因为此时验证者的离线实际上会阻止区块被敲定;
  • 服务于「反相关性惩罚」的目标 (下文将进一步解释)
  • 确保如果超过 1/3 的验证者同时离线时,最终上线的验证者数量将恢复至总数的 2/3,因为离线验证者不断减少的质押金将会导致他们被驱逐出验证者行列。

基于当前这种参数化,如果区块停止了被 finalize (敲定) 的进程,那验证者将会在 2.6 天之后损失 1% 的质押金,在 8.4 天后损失 10% 的质押金,在 21 天后损失 50% 的质押金。

这意味着,如果 50% 的验证者离线了,那区块会在 21 天之后重新开始被 finalize,因为 21 天之后,所有离线的验证者已经损失了 50% 的质押金 (16 ETH),而如果验证者的质押金低于 16 ETH 将被驱逐出验证者行列。

Slashing & 反相关性惩罚

如果验证者被发现违反了 Casper FFG 的 slashing (罚没) 条件,那该验证者将受到惩罚 (损失一部分质押金);如果大约在同一时间还有其他验证者受到 slashing 惩罚 (具体来说,就是从该验证者被惩罚的前 18 天到该验证者退出验证者行列的这段时间),那这种惩罚将是之前的三倍。这样做有几个目的:

  • 只有当某个验证者同时与很多其他验证者一起行为不当时,该验证者的行为才会对网络造成真正的损害,因此这种情况下的惩罚会更加严重;
  • 这会对实际的攻击行为进行严重地惩罚,但对可能并非恶意的单个独立失误采取非常轻微的惩罚;
  • 这确保了小型验证者将比大型验证者承担更少的风险 (因为在正常情况下,只有大型验证者才会在同一时间失效);
  • 这抑制了所有人都加入最大的验证池中。

BLS 签名

我们将使用 BLS 签名,因为 BLS 签名是聚合友好型的:由密钥 k1 和 k2 (对应的公钥K1=G*k1K2=G*k2,其中 G 是椭圆曲线的基点) 对消息 M 进行的任意两个签名 S1 和 S2 都可以简单地通过椭圆曲线点加法聚合起来:S1+S2。这允许生成数千个签名,每个签名的边际成本就是一个数据位 (用于表示在该聚合签名中存在一个特定的公钥) 和一个用于计算的椭圆曲线加法。

需要注意的是,这种形式的 BLS 签名易遭受流氓密钥攻击 (rogue key attackes):如果你看到其他验证者已经公布了公钥 K1...Kn,那你可以生成私钥 r 并公布一个公钥 G*r-K1-...-Kn。聚合的公钥将是 G*r,这样将能够自己对聚合的公钥进行签名验证。解决这个问题的标准方法是需要一个所有权证明 (proof of possession):基本上就是某条针对私钥 k 和公钥 k 对公钥进行验证的签名。这确保了你控制了与你公布的公钥相连接的私钥。

我们使用验证者抵押消息的签名作为所有权证明,该签名明确了签名的密钥以及其他重要的信息,比如取款密钥。

随机选择验证者

用于实现随机性的种子 (seed) 会通过对区块提议者必须揭露的一个值进行「mixing in」 (即 seed <- hash(seed, new_data)) 从而在每个区块中进行更新。就像托管证明子密钥 (subkey) 一样,验证者的值 (values) 是在验证者进行质押之后就立即确定好的,第三方无法计算出子密钥,但是当子密钥被资源揭露时对其进行验证 (这种机制有时叫做 RANDAO)。

这确保了每个区块提议者都对随机性种子有「位操作」:提议者可以提议区块,也可以不提议。如果提议者不提议区块,那将错过很多的奖励。此外,由于长期委员会 (persistent committee) 和交联委员会 (crosslink committee) 的规模很大,因此对随机性的操控几乎肯定是无法让少数攻击者控制任何一个委员会中的 2/3 的验证者。

未来我们计划使用VDF (可验证延迟函数)来进一步增加随机性种子抵御操控的鲁棒性。

打乱验证者 (Shuffle)

在每个 epoch 期间,我们使用 swap-or-not shuffle 13 的方式来打乱验证者并分配职责。这种算法确保了:

由于打乱验证者 (shuffle) 就是一种置换,在每个 epoch 期间,每个验证者都会被指定为一个交联委员会的成员 (从而使验证者的工作量稳定,并减少随机性操控带来盈利的可能性);

由于打乱验证者 (shuffle) 就是一种置换,在每个 epoch 期间,每个验证者都会被指定为一个长期委员会的成员;

交联委员会

在每个 epoch 期间,每个分片都会进行一次交联 (crosslink),即从分片委员会中随机选择 2/3 的验证者 (每个分片委员会的验证者数量约为 128 名) 对自上一次交联以来在该分片中包含的所有数据的哈希进行签名(由于分片中的交联可能失败,因此该哈希最多可以代表前 64 个 epoch 的数据;如果分片中连续好多次的交联失败,那可能需要实现多次成功的交联才能赶上)。

每个分片委员会的验证者数量被设定为 128 名,因为这是一个抵御攻击者在控制少于 1/3 的所有验证者的情况下偶然地控制 2/3 的委员会成员的最低数量,通过二项式定理,攻击者控制 2/3 的委员会成员的几率是 5.55*10^(-15)

由于以太坊 2.0 系统中将有 1024 条分片链,这意味着要想每个分片链在每个 epoch 期间进行一次交联,那我们将需要 131072 名验证者 (备注:1024*128=131072),或者说,以太坊 2.0 系统中需要质押大约 440 万 ETH(实际上,如果质押的 ETH 少于这个数,那分片链的交联发生的次数就会更少)。而如果将最低的质押限制提高 (比如提高至 1024 ETH,当前确定的是 32 ETH),那意味着我们将无法获得足够多的验证者数量来实现在每个 epoch 期间在每个分片链上进行交联,除非所有的 ETH 都质押了进来。

每个 epoch (64 个区块,约 6.4 分钟) 之后,信标链都会重新为每个分片链重组一个分片委员会 (也即打乱验证者)。对验证者进行快速打乱,是为了确保如果攻击者想要攻击某条分片链,那该攻击者将需要快速地破坏 (控制) 该分片委员会。

长期委员会

在每个 27 小时左右的时间段内,系统将会为每条分片链选择一个长期委员会 (persistent committee)。在任何时间,以太坊 2.0 系统中的每个验证者都是其中某个长期委员会的成员。长期委员会负责提议分片区块、为用户提供某种程度的有关分片区块的保证 (直到分片区块包含在了某次交联中),且轻客户端可以借助长期委员会。为了保持 P2P 网络的稳定性和轻客户端的效率,长期委员会的变更相对较少 (而分片委员会每隔约 6 分钟就更换一次)。

每个长期委员会的验证者数量上限是 128,因此如果系统中的验证者数量超过了 131072,那任何时候都会有验证者不被选中进入任何一个长期委员会中;这减少了不必要的验证浪费。

为了进一步维护网络的稳定性,并不是所有的验证者都会同时从_n时间段的长期委员会中轮换为n+1_时间段的长期委员会;而是每个验证者的轮换都会有所延迟,直到下个时间段的某个随机时间点再进行轮换。

LMD GHOST 分叉选择规则

信标链使用 LMD GHOST 分叉选择规则,相关描述参见 15

LMD GHOST 分叉选择规则会合并来自所有验证者的信息,确保在正常情况下任何一个区块都不可能会被逆转。由于该分叉选择规则依赖于所有的验证者,这也确保了除非攻击者控制了 50% 以上的验证者,否则无法逆转区块,因为这种情况下攻击者无法通过操控随机性来获得很大的优势。

信标链 / 分片链结构

以太坊 2.0 分片系统的结构包含一个协调所有活动的中心「信标链」,以及 1024 条分片链。每条分片链都会定期地通过交联 (crosslink) 的方式与信标链相连接。

这种分片结构的替代方案:

(1) 通过委员会对分片区块进行签名,将所有分片区块都直接地放入信标链中;
(2) 不存在信标链,而是通过某种结构将所有的分片链连接起来。

上述第 (1) 种结构被舍弃的原因是:对分片链区块设置一个 6 秒的时间 (slot) 是可取的,但是每 6 秒在信标链上进行 1024 次交联将会导致信标链承受非常高的负荷。

上诉第 (2) 中结构被舍弃的原因是:中心辐射型的信标链结构比任何复杂的构造都更容易实现和理解。

分片链的设计

每个分片都是一条半独立的链,它可以比交联聚合区块更快递处理区块 (目标是 3-6 秒)。这使得交易在被信标链 (通过交联的方式) 确认之前,能够通过分片长期委员会快速地获得一定程度的确认。

分片链结构是这样的,每个区块都由分片委员会的每个验证者进行证明 (attest),这保证了验证的简单性,并确保分片区块获得了程度相当高的确认;大多数处理较低价值的应用应该都可以依赖于单次确认。

在每个 epoch 开启时,每个分片区块都包含了一个指向其父块的 pointer 和一个指向信标区块的 pointer。信标链和分片链之间的这种半紧密耦合是为了 (i) 确保分片链知道有关其长期委员会的信息 (因为此信息是由信标链生成的),同时 (ii) 使验证分片链区块称为一个决定哪条链才是规范信标链的可行方式。

分片链状态 (奖励、惩罚、历史累加器) 被故意设计成小于区块大小,目的是确保如果欺诈证明有需要,分片链状态可以完全被放入信标链之中 (虽然这可能只会在阶段 2 放宽限制,在阶段 2,每个单独的执行环境的状态将受到此大小的限制,但所有状态合并起来将非常大,因此欺诈证明将需要默克尔证明)。

交联数据

交联包含了 data_root,即自上次交联以来,包含了某条分片中所有分片区块的数据结构的默克尔根 (Merkle root)。这种交联数据结构+根有多重目标:

  • 使信标链知道哪些才是规范的分片链区块;
  • 创建一个简单的字节数组,可以通过不同的方法 (托管证明、数据可用性证明) 来验证其可用性,并保证可以通多交联来对分片区块进行完全恢复。
  • 创建一个简单的字节数组,可以对欺诈证明进行评估。

验证者生命周期

质押

验证者通过发送一笔交易来进行 ETH 质押 (这笔交易会调用部署在 Eth1.0 链上的抵押合约 (deposit contract) 的一个函数) ,最终我们会在 Eth2.0 链上加入进行质押的方式。验证者的这一操作明确了:

  • 与用于对消息签名的私钥相对应的公钥;
  • 取款凭证(即公钥哈希,当验证者在完成验证之后,公钥哈希将用于提取资金)
  • 质押金额

这些值都是由签名密钥进行签名的。将签名密钥 (signing key) 和取款密钥 (withdrawal key) 分开,目的是让更具安全风险的取款密钥得更加安全 (取款密钥处于离线状态,不会与任何质押池进行共享等等),而签名密钥则用于在每个 epoch 期间对消息进行签名。

抵押合约 (deposit contract) 中保留着所有质押的默克尔根 (Merkle root)。一旦验证者质押的默克尔根被包含在了 Eth2.0 链中 (通过 Eth1.0 数据投票机制),Eth2.0 区块提议者就可以提交一个该质押的默克尔证明,并启动质押过程。

激活

当某个验证者往抵押合约中发送了一笔交易之后,就立即加入了验证者登记表中,但该验证者一开始处于未激活状态。只有当至少 4 个 epoch 之后,该验证者才会被激活;验证者之所以需要等待至少 4 个 epoch (每个 epoch 大约 6.4 分钟),是为了确保 RANDAO 没有被操纵,且如果很多验证者同时加入进来,那 N 可能会超过 4。

如果 Eth2.0 中已经存在的验证者总数是 |V|,那每个 epoch 期间能够新加入的最大验证者数量将是 max(4, |V|/65536);如果更多的验证者想要加入进来,那他们将需要排队,系统将尽可能快地进行处理。

退出

当某个验证者从 Eth2.0 系统中退出时 (无论是通过发布一个自愿退出消息,还是由于被罚没而退出),那该验证者也将需要进行排队才能从系统中退出,每个 epoch 期间能够退出的最大验证者数量与上文所述的能够新加入的最大验证者数量一样。

之所以设置这种新加入 / 退出排队的限制,是为了确保系统中的验证者总数不会在任何两个时间点之间变化太快,这确保了只要验证者足够频繁地登入 (如果验证者总数≥262144,那验证者保证能够每 1-2 个月登入一次),那就能保证以太坊新旧两条链之间依旧存在确定性。相关原理参考 17和 18

取款

一旦验证者成功地通过排队退出了,还需要等待大约 27 小时的时间才能进行取款。这一等待时间有几个作用:

  • 这确保了如果该验证者有不当行为,将有时间抓获该不当行为,并对该验证者进行罚没 (slashing);
  • 这给予系统时间将最后一段时间的分片奖励发放给该验证者;
  • 这为对托管证明发起挑战提供了时间。

如果验证者被罚没了,那取款时间还将进一步延迟约 36 天。这是对验证者的进一步惩罚 (并强迫他们持有 ETH;相比于那些想要支持以太坊但只是不小心犯错的验证者受到的惩罚,这使得那些想要破坏以太坊区块链的恶意验证者受到的惩罚将要更严重),同时也给系统预留了时间,用于计算在此期间也被罚没的其他验证者的数量。

在阶段 0 期间,想要「取款」的验证者实际上是还不能进行取款的;在之后的阶段,将能够把验证者取出的资金转移至某个执行环境中。

有效余额

大多数基于验证者余额的计算都使用验证者的「有效余额(effective balance,EB)」;唯一的例外就是有关增加或减少验证者余额的计算。只有当验证者的余额 B 低于 EB 或者高于 EB+1.5 时,EB 才会调整为等于 floor(B)。这是为了确保有效余额不会经常改变,减少每个 epoch 期间重新计算状态所需的 hashing 量;平均而言,只需要更新余额,而每个验证者只需相对更少地对有效余额进行更新。

分叉机制

Fork 数据结构包含了 (i) 当前的 「fork ID」,(ii) 前一个「fork ID」 和 (iii) 切换这两个分叉的 slot。当前区块高度的 fork ID 影响着所有消息的有效签名;因此,使用一个 fork ID 签名的消息对于使用任何其他 fork ID 的验证函数无效。

通过在某个 「fork slot」 增加一个状态转换就可以进行分叉。签名验证函数将使用消息所在的 slot 的 fork ID 来验证该消息,这个 fork ID 有可能是前一个 fork ID,也有可能是当前的 fork ID。

如果任何用户不想要加入某个分叉,只需继续留在那条没有在 fork slot 改变 fork ID 的链上。这两条链都可以继续存在,验证者可以自由地对这两条链进行验证,且不会受到罚没惩罚。

备注:译文有所删减

导读:以太坊创始人 Vitalik Buterin 对名为「Serenity」的以太坊 2.0 进行了详细阐述,包括设计原则、Layer1 与 Layer2 的折衷、使用权益证明等。

IOST在日本 | 创始人Terry出席“The Power of PoS”会议
 

随着以太坊的共识机制从工作量证明(Proof of Work,PoW)逐渐转换到权益证明(Proof of Stake,PoS),PoS共识机制被越来越多的人关注,并被许多加密货币采用。

正值世界最大的区块链开发者大会Devcon 5举办期间,10月10日,IOST联合加拿大著名金融公司Wave Financial在日本大阪组织了一场线下分享会。

日本

本次分享会核心为探讨PoS将如何改变区块链的未来。
IOST CTO Terry、Tezos首席安全官Ryan Lackey、Oasis Labs首席工程师Nikhil Sharma、Incognito项目负责人Duy Huynh等来自业内顶级公链项目的相关负责人,以及Devcon 5上来自全球各地非常优秀的开发团队的核心开发者均受邀出席此次活动。

世界一流的Pos项目:讨论Pos的未来和现在

IOST首席技术官Terry:

日本

Terry介绍了IOST的最新进展与未来规划。在Staking领域,IOST收获颇丰:据StakingRewards网站的数据,IOST的质押操作简单,风险等级低,回报率高。在包括EOS、Tron之内的85个Staking项目中IOST综合排名第1。

Celo创始人Marek Olszewski:

日本

 Celo创始人Marek Olszewski介绍了Celo项目,Celo是一个开放源代码的平台,可在其之上构建功能强大的应用程序生态系统,包括更简单的现金转账项目、点对点借贷、协作式小规模保险以及其他数字资产和钱包应用。

Oasis Labs首席工程师Nikhil Sharma:

日本

据Oasis Labs首席工程师Nikhil Sharma介绍,Oasis提供全栈隐私保护,保障协议的每一层(从应用程序到网络,再到每个节点)的机密性。

Incognito项目负责人Duy Huynh:

日本

Incognito项目负责人Duy Huynh介绍,Incognito是一个专注于为主流区块链资产增加隐私功能的PoS链。Incognito将利用PoS节点来确保网络安全性。

Tezos首席安全官Ryan Lackey:

日本

Tezos首席安全官Ryan Lackey分享了其管理Tezos大量加密货币资产和烘焙(节点)操作的安全性,并为公共网络提供有关产品安全性信息的经验。

Panel

Panel负责人认为:PoS系统不需要像PoW那样消耗大量能量,同时仍然可以保护网络。此外,通过质押Token,人们可以通过获得被动收入,远比其他传统储蓄方法多得多。目前Panel正在创建许多新公司,以帮助用户通过Staking获得收益。

日本

分享会的最后,IOST创始人Terry与来自日本各地的IOST开发者和节点合伙人进行交流,并分享了自己对区块链技术未来的看法。

日本

                           Terry与日本开发者/节点合伙人合影留念

IOST在北京、首尔、东京、旧金山、纽约、新加坡、俄罗斯、柏林等全球8个国家/城市都设有团队。之后IOST还将为大家带来更多各个地区的市场进展。 

导读:随着以太坊的共识机制从工作量证明(Proof of Work,PoW)逐渐转换到权益证明(Proof of Stake,PoS),PoS共识机制被越来越多的人关注,并被许多加密货币采用。

富人越富,穷人越穷,PoS的反面
 

权益证明

作者 | Hugo Nguyen

编译 | Guoxi 

 

 

据摩根士丹利年初报告,2017年比特币挖消耗的电力与中东国家卡塔尔年耗电相当,预计2018年的电力需求可能会达到2017年的三倍以上。

 

大量的电力消耗也带来了很多争议,很多人都尝试在保证安全性的前提下改进共识协议。一时间,业界出现了许多新的协议,如权益证明(PoS)、委托权益证明(DPoS)等等。

 

这些协议中最有前景的莫过于PoS,甚至以太坊在未来也会从工作量证明过渡到权益证明。

 

不过,近日Hugo Nguyen列举了权益证明的几大罪状,实名反对权益证明。这到底是怎么回事,让我们一起去看看。

 

 

多角度分析PoS并不是什么灵丹妙药

很多人都在大力倡导使用权益证明,笔者看来,权益证明并不是什么灵丹妙药,从多个角度都能发现它的缺点。

进化心理学/历史学

历史上的「收藏品」或「原始货币」都有一个共同点,即不可伪造的成本(Unforgeable Costliness,有些人可能会将不可伪造的成本与劳动价值论混为一谈,但其实它们并不是同一回事,因为仅靠消耗资源是不够的,资产必须是不可伪造的),或者至少在他们的时代大背景下是不可伪造的成本,随着历史的不断发展,这些货币逐渐从最初的贝壳,毛皮,牙齿,贵金属演变成今天的铸币。

 

由于权益证明仅仅是临时锁定现有的资本而并不消耗这些资本,因此它不能满足Nick Szabo(计算机专家,智能合约之父)确定为货币的三个关键属性之一的不可伪造的成本

经济学

如果某个物品具有价值,人们就会花费精力追逐它,直到消耗的精力与物品的价值相抵(边际成本=边际收益,MC = MR)。这里的精力可以看作是某种形式的「工作量」。 前耶鲁大学统计学家,现区块链创业者Paul Sztorc认为权益证明是一种混淆形式的工作量证明

 

权益证明中的工作量可以来自多种不同的形式,比如说从银行获得的贷款,运行全天候的权益证明挖矿服务器获得的区块奖励,甚至可以是通过窃取私钥获得的赃款。

 

权益证明不仅混淆了工作量证明,它还不如工作量证明。任何权益证明为你节省的潜在成本,都需要你付出相应的安全性损失的代价。

 

正如我们将在下面看到的那样,短暂地锁定1美元的权益创造出的安全性水平远远低于在挖矿中实际花费1美元创造出的安全性。

计算机科学

Blockstream公司数学家Andrew Poelstra写了业界第一篇批评权益证明的文章,在其中他创造了无成本模拟(Costless Simulation,即无利害关系)和远程攻击(Long-range Attacks)这两个术语。

 

加州大学伯克利分校研究员Jonah Brown-Cohen和《区块链 技术驱动金融》作者,德克萨斯州大学奥斯汀分校研究员Arvind Narayanan在最近的一篇论文中说明了权益证明协议中缺乏良好且可靠的随机数来源。对于使用权益证明的加密货币,依赖外部的随机数来源可能会出现循环推理谬误(Circular Reasoning Fallacy)。因此,权益证明协议急切需要使用其区块链中的内容在内部生成随机数。然而,这个过程被证明是一个需要折衷的难题。

工程实践

从工程实践的角度,我写了一篇关于权益证明缺点的文章(Proof-of-Stake & the Wrong Engineering Mindset [1]),其中列出了权益证明机制特别容易受到攻击的某些特定场景,包括网络分裂、私钥被盗、以及权益证明参与率低。

 

也许看待权益证明的最简单方法就是透过时间尺度。

PoS应该叫PoTS

权益证明是一个误称,正确的叫法应该是临时权益证明(Proof-of-Temporary-Stake,PoTS),临时权益证明这个名称更准确,因为它加入了权益证明中缺少的时间因素。

 

为了正确理解权益证明中时间因素的影响,我们首先来分析时间因素在工作量证明中发挥的作用。

 

工作量证明中持续消耗的资源以两种方式保护整个区块链网络的安全:

 

  • 每个区块消耗的资源不仅可以保护属于该区块的UTXO(未使用的交易输出),还可以保护前序区块中所有的UTXO。为什么这么说呢?是因为如果不首先恢复当前的区块,就不可能恢复过去的UTXO。所以说,每个新区块都保护着所有前序的现存UTXO。

  • 从本质上来说,对专业挖矿设备的投资代表了对未来获得潜在回报的乐观预期,对于矿工而言,投资新的挖矿设备可以看作是在购买定期支付股息的股票。这意味着挖矿设备大致代表了未来区块链的潜在能源支出。

 

这么说可能有点抽象,想象一个时间轴。过去花费的工作量单元积累在账本中,未来消耗的工作量单元积累在当前的挖矿设备中。

 

权益证明

账本积累了过去的工作量单元,挖矿设备积累了未来的工作量单元

 

随着时间的推移,右侧的工作量单元逐步实体化并向左侧移动。这里的挖矿设备可以看作是一个缓冲区,工作量单元在进入最终目的地——账本之前,都存放在这个缓冲区中不过,并非所有的工作量单元都可以直接进入帐本中,大部分都被抛弃了,但正是这些被抛弃的工作量单元保证了整个网络的去中心化。

 

描述这种基于时间的资源积累现象的官方术语是存量和流量(stock & flow),这种现象也经常发生在自然界中。从本质上说,比特币的安全性是因为受到账本和挖矿设备两个部分的高存量流量比的保护。

 

相比之下,权益证明并没有这种安全性保障。

 

在权益证明中,过去的权益(时间线的左侧)不会积累在账本中,因为经过一段时间的冻结周期后,这些权益会被释放。不过,权益证明不涉及资源的积累也并不影响其「确定性(Finality)」概念,因为从新成立节点、长期休眠节点、分区节点中也可以看出不同的「确定性」。

 

远程攻击是这种缺点的表现:它的攻击原理是因为权益证明无法保护过去发生的交易。因而,远程攻击是权益证明面临的最严重问题之一,这种攻击方式的出现表明,从长远来看权益证明机制无法保证账本的完整性,而账本的完整性是区块链最核心的特性。

 

在权益证明中,未来的权益(时间线的右侧)也不会在当前的校验器中积累,因为权益证明行为只在它发生的短暂窗口时间内具有意义,而并不会影响未来。私钥盗窃是这种缺点的表现:它的原理是权益证明无法保护未来。

 

私钥盗窃完全避开了获得多数权益所需的财务成本,而在工作量证明中,攻击者需要克服挖矿设备和持续能源消耗带来的成本来发起并维持一场51%算力攻击,而且任何攻击者都不得不面对这个问题。在工作量证明中,挖矿设备被大规模查封(例如国家发布禁令)是最大的风险,不过只要挖矿设备足够去中心化,就可以大大降低这种风险。

 

然而,权益证明无法使用这种将挖矿设备去中心化的应对方法,因为权益证明中的校验器只是软件节点,它们可以轻而易举地被远程定位。更重要的是,在工作量证明中即使控制了硬件,攻击者仍然无法避免持续的能源消耗带来的成本,所以说工作量证明更加安全。

 

权益证明中存在一种积累形式,即校验器获得的周期性权益奖励。但是,与工作量证明中的积累不同,奖励积累仅对每个权益证明校验器有益,而不会提高整个网络的安全性

 

总的来说,如果在权益证明中进一步脱离时间因素,更快的权益证明就失去了存在的意义,直到权益证明变得毫无意义。

 

工作量证明可以有力地抵挡时间的摧残,而权益证明不能。作量证明的稳健性得益于其大量的哈希算力,而不是它所消耗的资源。新的技术可以提高挖矿效率,不过在未来某些时候,效率的增加会因为物理限制的瓶颈慢慢放缓。比特币工作量证明的稳健性也依赖于SHA256哈希算法的安全性

 

工作量证明消耗了大量的资源这一事实是一个重要的特性,而不是设计漏洞。关于权益证明的研究通常陷入工作量证明是一种漏洞并且效率十分低下的误解中。

写在最后

看到这里,相信你已经理解我为什么反对使用权益证明,当然这还不是全部的原因。对权益证明的另一个主要批评是,权益证明可以说是建立了一个财阀统治体系,在其中富人越富,穷人越穷。这也是一个很值得讨论的问题,但由于本文的主题是安全性,所以在这里未做过多讨论。

导读:让我们一起去看看权益证明的几大罪状

                                                                                                         来源:学习区块链
 

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。