区块链常见共识机制简介

区块链相关的讨论仍然很热闹。区块链是去中心化的,分布式的和公共的数字分类帐,用于记录许多计算机上的交易,这样就不会在不改变后续块和网络串通的情况下追溯地改变记录。区块链需要功能强大,高效且安全的一致性算法,以便通过共享公共分类帐在全球范围内运行。

在这里,我将讨论区块链使用的共识机制。它不等同于区块链,对于不同区块链可能使用不同技术,例如:以太坊使用股权证明和比特币使用工作量证明。

区块链共识机制:

1.工作量证明(PoW,Proof of Work)

工作量证明是一种协议,其主要目标是阻止网络攻击,例如分布式拒绝服务攻击(DDoS),其目的是通过发送多个虚假请求来耗尽计算机系统的资源。这是它的工作原理:

  • 工作量证明是定义通常称为挖掘的昂贵计算机计算的必要条件,需要执行该计算以便在区块链上创建新的trustless交易组(块)。
  • 第一个解决问题的区块矿工获得了回报。
  • 网络矿工竞争成为第一个找到数学问题解决方案的人。
  • 验证的交易仅存储在公共区块链中。
  • 具有最大计算能力的一方通常会对该区块进行挖掘,而其他方只会因为多个矿工竞争在一个实例中创建一个区块而浪费能源。比特币使用这种机制。下面我们介绍股权证明的机制。

2.股权证明(PoS,Proof of stake)

它是工作量证明的最常见替代方案。这是在区块链中创建块的另一种方法。块生产者被称为验证者而不是矿工。验证人必须记下存款或股权才能参与创建区块的过程。

这里,验证器是根据一些选择算法来选择的,这些算法考虑了它们的影响。只有选定的验证器可以创建一个块而其他验证器不能参与,从而节省了其他验证器的能量。这对环境来说要好得多。如果验证人做了一些错误的事情,那么他们就会失去他们的利益,因此你会得到诚实的回报。矿工们收取他们的交易费用,因此他们没有像PoW那样获得奖励。

以太坊已从PoW转移到PoS。

3.烧毁证明(PoBurn,Proof of Burn)

烧毁证明是工作量证明和股权证明的替代方法,也是分布式共识的方法。它也是区块链网络实现的共识机制,以确保所有参与节点就区块链网络的真实和有效状态达成一致,从而避免任何加密双重花费的可能性。

它的工作原理是允许矿工烧毁burn或销毁destroy虚拟货币代币,这使得他们有权根据烧毁的代币按比例写入块。你烧毁的代币越多,被选中开采下一个区块的机会就越大。它试图解决PoW的能耗问题。为了烧毁代币,矿工需要将其发送到无法使用的地址以验证块。Slim coin基于这种共识机制算法。

4.容量证明(PoC,Proof of capacity)

那么,这也是一种共识机制算法。这与其他算法略有不同。在这里,你需要支付硬盘空间。你拥有的硬盘空间越大,你挖掘下一个区块并获得区块奖励的机会就越大。在PoC系统中挖掘之前,该算法会生成称为plots的大型数据集,并将它们存储在你的硬盘上。

容量证明包括两部分。有硬盘的plots和块的实际挖掘。根据硬盘的大小,制作独特的plot文件可能需要数天甚至数周。plotting使用称为Shabal的非常慢的哈希。这还包括空间证明和存储证明等变体。这更像是一个付钱的东西。唯一基于PoC的加密货币是Burst coin

5.委托的股权证明(dPoS,Delegated Proof of Stake)

这是PoS的扩展。在DPoS区块链共识协议中,加密币持有者使用其代币余额来选择被称为委托人的代表。这些委托人有机会获得新交易的大量内容并将其添加到区块链中。投票权实际上取决于他们拥有的代币数量,通常称为网络财富。

拥有更多token或代币的人将比拥有少量代币的人对网络产生更大的影响。任何人都可以参与块生成器选举,创建块的机会将取决于他们获得的每一个其他生成器的投票数量。如果他们能真正实现这一目标,那么他们将会感谢DPoS。

基于这种机制的加密货币是CaptainAlt coin

6.行动证明(PoA,Proof of Activity)

该算法更像是工作量证明,其复杂性在很大程度上降低了,因此问题的解决方案需要从几分之一秒到几分钟。行动证明是一种混合方法,结合了工作量证明和股权证明。与PoW一样,矿工们竞相解决加密难题。然后系统切换到PoS。不同之处在于被挖掘的块不包含交易。它们只是带有标题信息和挖掘奖励地址的模板。

通过限制块创建的最小可能时间来验证所创建块的正确性。这允许你限制向链中添加块的最大速度,从而防止网络中出现攻击,我们也称之为垃圾邮件。使用此机制的coin是DecredEspers

7.实用的拜占庭容错机制(PBFT,Practical Byzantine fault tolerant Mechanism)

PBFT是最受欢迎的许可区块链平台协议,目前由Hyperledger Fabric(IBM)使用。所以你听说过拜占庭将军的问题吗?没有?让我先解释一下这个问题然后你就能更好地理解PBFT了。想象一下,一群拜占庭将军和他们的军队围住了一座城堡并准备进攻。要赢,他们必须同时进攻。但他们知道其中至少有一个叛徒。那么,他们如何在他们的小组中至少与一个不知名的叛徒发起成功的攻击呢?

类比很清楚:在任何分布式计算环境中,都存在流氓actor可能造成严重破坏的风险。因此,它依赖于社区共识使拜占庭故障成为区块链特别棘手的问题。为了克服该问题,使用PBFT。根据所有将军提交的总决定确定共识决定。PBFT共识机制不需要任何hash能量来批准区块链中的交换,这意味着不需要高能量利用并且集中化的危险性较低。它也产生高回报,并且还有交易终结。

8.时间消逝证明(PoET,Proof of Elapsed Time)

英特尔已经提出了自己的替代共识协议,称为时间消逝证明。PoET现在是Hyperledger Sawtooth模块化框架的首选共识模型。PoET算法通常用于赋予权限以确定矿工拥有的权利。使用它的网络在参与者可以参与之前识别参与者。每个节点都有完全相同的机会成为块的赢家。PoET机制基于传播和公平分配最大可能数量的参与者的几率。

网络中的每个参与节点必须等待一定的时间。在这方面,每个节点都要求从其本地的enclave(可信函数)请求等待时间。拥有最短暂停留时间的成员紧接着在等待了分配时间之后被接纳。每个节点每次都产生自己的等待时间,之后它进入一种睡眠模式。一旦节点唤醒并且块可用,该节点就是幸运的赢家。然后,节点可以在整个网络上传播信息,使其保持去中心化并获得奖励。

顺便说一下,我们必须依靠英特尔来建立信任,这仅仅是去中心化的概念。我的意思是,为什么我们又要依赖第三方呢?

9.重要性证明(PoI,Proof of Importance)

PoI首先由NEM引入,称其为加密货币,名为XEM代币。使用PoI,重要的不仅仅是代币余额。根据POI方法,奖励系统应基于用户对所有容量的网络贡献。因此,块的投注基于多种因素,包括声誉,总体余额以及通过特定地址或从特定地址完成的交易数量。

在这里,经常发送和接收交易的参与者更有可能找到块。重要性证明仅计算帐户上的代币数天。没有为网络整理的XEM中10%每天都是固定的。攻击网络非常昂贵,并且它还慷慨地奖励用户保护网络。

10.租赁权益证明(LPoS,Leased Proof of Stake)

LPoS由WAVES开发,WAVES是一个去中心化的区块链平台,允许创建自定义代币。在PoS中,即使你有一定数量的代币,也只能添加一个区块,甚至无法参与创建区块的过程,并且不是每个人都有机会参与区块链的维护并获得奖励。LPoS解决了这个问题。

更多的用户或参与者,更好地成为网络的安全性。帐户上的代币数量越多,就越有可能将下一个块添加到区块链中并获得奖励。

11.身份证明(POI,Proof of Identity)

PoI的概念是将私钥与授权身份进行比较。身份证明(PoI)基本上是加密证据(数据片段),其告知任何用户都知道与授权身份进行比较并以加密方式附加到特定交易的私钥。来自现有组的每个人都可以创建数据块并将其呈现给任何人,例如处理节点。

恭喜,现在你了解几乎所有区块链共识机制。除此之外,我还想提一下你需要了解的这个重要的共识机制Direct Acyclic Graphs (DAGs)

随着区块链随着时间的推移而增长,节点将需要越来越多的存储容量和更高的带宽(数量增加),以便与添加到分类帐的交易保持同步。

在DAG内,节点本身成为“矿工”。此过程也更轻量级,因为你只需验证两个最近节点的交易。由于矿工被淘汰,我们自己验证交易,交易费用减少到零。关键字非循环只意味着图中没有节点可以引用自身,它不能是自己的母节点。IOTA使用DAG(Tangle)。此外,它的数据结构使网络易于扩展。每个人都参与达成共识,因此,使用IOTA的人越多,网络就越快。更多的人,更快的网络和安全的网络!

就是这样,你们都准备好告诉别人你知道区块链是如何完成的!谢谢你的阅读!

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是区块链共识机制