1. 首页
  2. 资讯
  3. 技术指南

区块链研究实验室 | 以太坊精华:复杂共识协议运作方式

分布式系统最重要的部分是其共识层。但是,“共识”是什么意思?根据定义,它是一个群体作为一个整体所达成的意见或立场。这可能意味着大多数相关人员达成一致或作出判断。

背景介绍

分布式系统最重要的部分是其共识层。但是,“共识”是什么意思?根据定义,它是一个群体作为一个整体所达成的意见或立场。这可能意味着大多数相关人员达成一致或作出判断。

共识协议通常可以被认为具有:

  1. 提出建议的一组支持者。

  2. 将建议标记为有效的一组测试。

  3. 对每一项提案投票的一组选民。

  4. 决定一项提案是否被接受或否决的投票机制。

  5. 当做出决定时触发的一组动作。

投票机制可以:

  1. 制定关于谁可以投票以及投票人是否需要通过知识考试的规则。

  2. 有计算每次投票权重的算法。

  3. 设置投票分数或时间阈值以触发投票后或投票操作期间。

  4. 形式化:我们有一个共识功能,输入参数:提案、投票机制、时间戳的投票分数、投票池。输出将是时间戳时的决策快照:根据所使用的投票机制和截至该时间点的投票数据,在某个时间点是否认为该提案已被接受。

投票池是有投票权的选民总数,不管他们是否投票。

bELbm1qTVIIbqxF6k4F0Hd4bqxZ2RmqWRWetEYhl.png

共识引擎

以太坊目前使用工作证明作为其共识协议。我们将简要介绍一下它是如何工作的。

第一阶段本身可以被视为共识协议:

用户可以提出实际上是链状态转换的事务。他们使用自己的以太坊客户机将事务添加到事务队列中,并进一步传播到其连接的对等机。这些对等机遵循相同的流程,事务最终到达也可以挖掘事务的以太坊客户机。此时,每个矿工都像一个“选民”,决定是否要将事务包含在下一个块中。他们有自己的投票机制,基于相关的天然气价格和交易的天然气成本。他们还需要通过一个硬密码测试,以便有权提出块。决策是事务数组的形式,可以组成下一个块。

第二阶段是客户就哪些链版本应该用块进一步扩展达成共识。矿工提议块,并且由于网络传播延迟,多个链叉同时共存。根据以太坊目前使用的贪婪最重要观察子树(GHOST)协议,每个客户端节点“投票”选择哪个fork为有效。

但以太坊拥有图灵完全表现力,这意味着它可以成为建立更高层次共识的平台。

Boolean布尔共识引擎

在以下部分中,我们将仅探讨布尔值决策(类似于二元共识)。 意思是选民可以为提案指定false或true。

为了建立一个通用的(基于布尔的)共识协议,应该考虑对以下方面进行细粒度投票:

  • 函数执行

  • 数据类型

  • 数据类型和记录

  • 地址

  • 权限混合

共识记忆化(Consensus Memoization)

共识意味着一群人在某件事上达成一致。为了使其有效,必须登记商定的结果。为了避免一次又一次地经历投票过程,必须把它记下来。

共识结果可以作为决策、权限和声明存储在链上。有关结果的其他信息也可以附加-例如,添加包含投票统计和数据的文件的swarm散列。

我们可以进一步说,投票过程可以是持续的(在链上或链下)-如果观点或假设发生改变,人们可以改变他们的想法。因此,权限可以看作是某个时间点的记忆化结果。

函数执行权限

此类权限不限于对谁(EOA)以及哪些合同可以执行单个合同函数的共识:还可以具有控制哪些函数可以调用/执行给定函数的权限。

您还可以定义具有相似类型权限的函数类。例如,update()和remove()函数可能具有相同的权限,基于insert()的执行程序。

如果您想在以太坊之上构建可互操作的共识引擎,您可能希望区分EVM和非EVM环境。想象一下,你想在EVM协议中使用一个函数:这样的函数需要是公开的。但是,您可能不希望从非EVM环境调用此函数 – 例如来自JavaScript dapp。

数据类型和记录的权限

想象一下用于身份的共识协议:用户可能决定将CRUD权限通过一种身份数据类型提供给某个受信任的第三方。一个这样的第三方能够仅验证用户身份的一部分并代表用户在链上进行管理。第二个可以管理另一个身份数据类型。考虑Twitter将用户句柄证明附加到用户的身份合同或附加标识哈希的管理实体。

因此,您可以对数据类型和数据记录本身具有细粒度的权限。

地址权限

这种许可可以被认为是基于角色的访问控制机制。

以太网地址(EOA或合同)可以由具有更高权限的另一个地址授予权限,从而在层次结构中提供进一步的权限。

权限混合

可以组合上述权限类型。例如,您可以仅授予以太坊地址更新特定数据类型的数据记录属性值的权限,而不允许它更新其他属性或删除该记录。

声明

以下是一些生明的例子:

  • 用户有权成为协议更改的技术审阅者。

  • 用户年龄超过18岁,因此法律允许使用服务。

  • 通过投票过程,用户可以获得一定的地位、角色,甚至对数字商品的所有权。声明是对这一结果的永久记录。

布尔共识运算

让我们假设我们有一些已建立的权限。 我们可以通过对现有权限的布尔运算达成共识来定义其他权限。

例如,Bob希望在公共文件系统文件夹中进行更改。他想把一个文件从那个文件夹移到另一个文件夹中。系统需要检查Bob对该文件的权限、更改父文件夹的文件更新功能、当前父文件夹及其删除子文件的更新功能、新文件夹及其添加子文件的更新功能。

仅当聚合权限的最终结果为真时,才允许Bob移动该文件。

计算Bob是否可以移动文件所需的布尔操作序列可以通过提议和投票来完成。一旦序列被接受,任何想要使用它的人都可以使用它。

元共识:共识链

我们已经谈到了一些拼图。拼图本身就是一个普遍的共识引擎。一种协议,允许您通过使用自己来建立其他共识协议,以便就新协议的设计达成共识。

流程如下:Alice提出了一个新的投票机制并将其提交到链上(该机制本身甚至可以包含指向swarm存储脚本文件的指针)。Alice无权将投票机制直接添加到协议中。因此,系统宣布提交并创建新的投票资源。人们现在可以讨论和投票(在链上或链下)。开发人员可以以提交的形式在这个新机制上运行测试。

如果投票成功,Alice的投票机制可以完全注册到协议中,并且Alice可以自动被授予一些新的权限 – 例如“机制更新评审员”。

等等。这是对未来共识的共识。

这是到目前为止所描述的依赖图。

Tn2ORYi4XyVpAjhkqatrdN4W6yv5M1KVu2mUcSWV.jpeg

共识生命周期

事实上的共识和意见上的共识是不同的。对意见的共识存在易变性和侵蚀性。

虽然事实上的共识也可以(至少部分)以程序方式达成,但意见上的共识可能需要一个灵活的允许/不允许协议,该协议可以连续运行。因此,生命周期可以是:

  1. 创造性

  2. 突变性

  3. 腐蚀性

我已经提到了权限的使用寿命是有限的,从这个意义上说,如果正在进行的投票结果发生变化,它们就可以被更改。

从道德的角度来看,任何需要共识的事情都应该作为一个连续的投票过程来执行。人们应该能够随时撤回对某个想法的支持。只有在以下情况下,系统才能民主和道德:

  • 任何人都可以提出改变并开始投票过程。

  • 任何先前批准的改革都可以通过投票(背景改变,新选民涌入,老选民消失等)来恢复。

对协议实施连续投票:

  • 人们可以提交一个包含所有源代码和测试和审计所需信息的协议更改。

  • 已启用对协议更改的投票。

  • 如果达到正阈值投票分数,则自动接受更改。

  • 投票可以继续,如果达到负投票分数,更改将自动再次禁用。

  • 此时,可以继续投票,也可以提出一项取消提议变更的建议。

  • 可以有一组自动测试,这些测试可以在提议的更改上运行,如果测试不通过,则可以标记提案并暂停投票。这可以通过分布式的协议来实现无信任的计算。

结论

今天我们只探索了在以太坊上使用二元共识的方法。有更多类型的共识可以探索。

从这方面来看,以太坊共识引擎有很大的增长和发展空间。 我们正处于探索不同类型共识可以实现的初期阶段。 复杂的共识行动将扩大并开辟新的发现视野。

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120

声明:登载此文出于传递更多信息之目的,观点仅代表作者本人,绝不代表Hi区块链赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

特此通告:由于运营管理等问题,本站已转让出售。