本系列将是一个关于Polkadot的安全性和共识的讨论。在第1部分中,我们将在展开Polkadot如何创建和保护区块的细节之前定义一些术语。
共识算法可帮助计算机网络像一台计算机一样运作。实际操作中,这意味着网络中的几乎每台计算机都必须认可某些初始状态,然后认可确定性操作日志到初始状态,以便它们达到一致的最终态。
尽管区块链为该领域带来了一些有趣的工具,但这种协同问题的存在并不是一个新鲜事。该问题起源于航空航天领域,由于高空的荒凉性,卫星或高空飞机上的计算机可能会表现很武断随意。想象一下您有一个飞行计算机网络,并且想知道飞机的前进方向。询问网络中的哪台计算机都不重要,因为你应该会得到相同的响应。
上述这些与区块链又有什么关系?我们希望计算机网络在某些价值上达成共识。这些价值可以是帐户余额,表决结果或智能合约的执行结果。
实际上,一些先前已经存在的共识算法与区块链很相似。在2001年的一次讲座中,麻省理工教授芭芭拉·里斯科夫谈论了批量交易以改善实用拜占庭容错的表现,当时比特币还没有出现。
“想像一下一个非常忙碌的新手,被一个接一个的接一个接一个的请求打中;它实际上并没有为每个请求启动协议。取而代之的是,它收集一批请求,并针对其中的一组请求执行一个协议。……对于个人来说都没有必要向每个客户发送回复。向群体中的个人发送答复摘要是可行的,因为这足以使客户知道它是否具有相同的答复。”
实用拜占庭容错对状态改变的共识提供了一组规则,甚至是对批量共识的状态更改。
打破区块链共识
在区块链这样的分布式系统中,您需要回答一些问题:
1.谁可以提出下一个更改?
2.哪一组是最终的更改?
3.如果有人违反规则怎么办?
因为许多区块链共识协议将它们联合成一体,所以尽早做出这些区分很重要。例如,工作量证明的证明机制是来选择区块的合适记录者;最长的链来决定哪个链是终链;做出证明的成本是违反规则的惩罚。在Polkadot协议中,所有这些问题都是孤立地回答的。
非区块链系统依旧也可以回答上述这些问题。例如假设所有计算机都运行相同的软件,在大多数情况下这是都是一件好事。因此如果波音公司制造了一架飞机,从安全性角度可以假设他们对飞机上的所有计算机进行了相应的编程。
但是在公共网络中我们无法做出这样的假设。区块链使我们可以利用经济学来简化一些网络假设。所有共识系统都有“好”和“坏”行为的概念。区块链的内在经济属性使我们能够奖励好的行为或惩罚不良行为。股权证明网络使用经济学作为确保达成共识的直接手段。
区块链系统中的安全性是衡量打破共识难度的方法。为了证明权威性,安全是控制权限的难点。在工作量证明中,安全性是获取和运行足够的哈希算力以创建比网路更长的链的必要成本。在权益证明中,安全性是权益和风险的价值。
ParityTechnologies和Web3Foundation的成员开发并实现了一个算法库,以解决共识和安全性问题。在该系列中,我们将从最终算法GRANDPA开始,因为所有块生产算法都必须遵守该最终算法。然后,我们将继续开发区块生产引擎BABE,并讨论如何将块添加到链中。最后,我们将讨论如何使用经济学来保护GRANDPA和BABE。
原地址:https://polkadot.network/
翻译/Mike编辑/Dolly
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。