IOTA的五个模块

我们想要解决什么问题?

让我们首先提出两个基本问题:

  • 当我们谈论“网络达成共识”时,我们想要实现什么目标?答案其实很简单。 我们希望所有诚实的节点对分类帐本的状态保持相同的意见。 或者更简单地说,我们希望所有诚实的节点都同意哪些交易有效。
  • 由于IOTA不必选择“领导者”来开采区块,我们实际上是对什么在进行投票呢?答案再次相对简单。 如果两笔交易发生冲突,则会导致Tangle的分裂。 为了解决冲突,节点对首选交易进行投票(非首选交易变为孤立交易)。

传统的基于PoW的DLT为这些问题提供了一组答案,但这些答案具有明显的缺点。 IOTA基于PoW共识的话将引入挖矿竞赛并导致功耗和成本增加,从而限制了网络在物联网中的使用。

以下部分描述了更合适的解决方案。

模块1:节点身份和MANA

在没有协调器的网络中,我们必须能够可靠地将交易或其他消息与发布它们的节点相关联。 例如,要允许节点投票,我们需要能够识别它们(及其投票)。 因此,每个节点都会生成一个唯一的标识符,用于签署消息或投票,从而确保真实性。

但是,依赖于节点标识会使分布式系统容易受到Sybil攻击。 防止此类攻击的一种方法是将节点可能的投票数量与PoW中的哈希算力或者权益证明(PoS)中的权益价值等稀缺资源相关联。

与基于PoW的DLT不同,PoS不会遇到可扩展性问题。 然而,在“最长链赢”的环境中,PoS容易受到某些攻击,例如“没有利益风险问题”(当事方可以同时投票支持两个相互冲突的链,而不会冒任何风险或投资任何资源) 和“远程攻击”(大型利益相关者可以秘密挖掘更长的链条,然后再广播)。 这两个攻击向量使PoS在“最长链赢”网络中不受欢迎。

由于我们的Coordicide解决方案不依赖于最长链获胜规则,因此我们的Sybil保护机制不受这些问题的影响。

我们提出一个名为mana的名誉系统:

  • 通过在价值交易中移动IOTA,用户可以证明所转让的IOTA金额的所有权。
  • 用户可以通过向交易签名添加节点ID,从而将价值交易“链接”到他们所选择的节点。 实际上,这很可能与用于发布交易的节点相同。
  • 该交易导致mana从其先前分配到该交易中所指定的节点移动。 这将增加所选节点总的mana。

该mana系统结合了基于资金的Sybil保护机制与声誉系统的优势。 在通过将IOTA传输给节点所有者时,Mana不仅记入节点,它也可以通过向社区提供良好的服务并将有效的交易传播到网络来获得。 作为信任或名誉衡量标准的总mana可用于以其他方式(例如在费率控制或投票模块中)进一步奖励给“好的”参与者。

Mana依赖于名誉很难获得但很容易失去的观念。 任何名誉系统的一个关键方面是通过撤销先前授予的名誉来惩罚坏人的能力。 在IOTA中,如果发现当前首选节点“行为不端”(例如传播无效交易),这就会非常简单地将您的授权mana重新分配给另一个节点。

最后,mana的一个关键优势是,与其他Sybil保护机制相比,其中节点ID与所有者的私钥相关联,迫使用户参与复杂且存在潜在风险的权益程序,该mana系统确保了很大比例的资金用于分配名誉。

模块2:安全的自动节点匹配

在像IOTA这样的点对点网络中,节点的邻居是其唯一的信息来源。 因此,任何对等机制必须集中于连接到健康的诚实邻居,即不试图损害网络的节点。

我们引入了一种自动对等匹配机制,其中每个节点都有自己的标准来选择潜在的邻居。 攻击者不能在对等节点选择过程中影响节点的决策,因此节点对网络的特定“视图”既是本地的又是不可预测的。 这有助于防止外部攻击(例如日食攻击),并使攻击者几乎无法在对等匹配过程中瞄准某些节点,同时确保节点始终至少拥有一定数量的诚实邻居。

此外,自动对等匹配机制将尝试创建一个小世界网络,其中可以通过少量中间步骤从每个其他节点到达该节点。 此属性进一步加快了达成共识的时间。

模块3:防止垃圾交易

DLT需要一种机制来控制进入网络的交易速率,因为节点的有限资源(例如,带宽,CPU)可能变得不堪重负,从而导致低吞吐量。 这类似于高速公路,其中大量车辆进入的话,交通流量可导致拥堵。

目前,Tangle实现了一种基于PoW的简单垃圾交易保护机制。 然而,仅通过PoW控制交易速率是不切实际的,因为它引入了挖矿竞赛。 我们提出了一种自适应速率控制机制,它根据不同因素智能地改变每个节点PoW的难度,例如根据最近发布的交易和mana的数量来调节。

值得注意的是,使用PoW作为速率控制机制与基于PoW的共识无关,我们的Coordicide方法明确消除了这种共识。 我们的速率控制机制的设计使其不会导致挖矿竞赛,也不需要大量的能源。

在我们的模型中,具有较高mana值的节点能够发出更多交易,而没有跟低信誉节点相同的PoW要求。 无论节点的mana值如何,PoW难度随着交易率而增加。 即,为了在短时间间隔内发布更多交易,节点必须增加加密难题的难度,而对于较低的交易速率,较低的难度就足够了。

我们强制实施每个节点的最大交易速率,以进一步防止垃圾交易。 该系统带来双重好处:

  • 它保护网络免受恶意快速参与者的攻击,例如,使用ASIC来向网络发送垃圾交易和/或影响共识的节点。
  • IOTA的主要应用是物联网,它由资源有限的节点组成,可能以较慢的速率发布交易。 此机制允许较慢的节点通过网络成功传播其交易。

模块4:Tip选择算法

Tip选择算法是选择交易以进行验证的方法。 一个好的算法允许Tangle以稳定和安全的方式增长。

要将新交易附加到Tangle,算法需要选择并验证两笔先前的交易 - 最好是tips。 这种验证机制代表了缠结中的“信任”:如果交易y验证交易x,这意味着y认为交易x是有效的,并且其整个历史也是有效的。

在过去,我们使用基于无规行走作为我们的tip选择算法,因为这不仅导致健康的Tangle结构,而且还允许我们识别最重的,因此也是Tangle的首选部分。虽然这种机制对于达成共识至关重要,但它也显示出一些不太理想的特性:

  • 如果没有积累足够的权重,诚实的交易可能会被遗忘掉。这导致对提升促进和重新附加的需求增加(即使在没有攻击的情况下),这反过来又显著降低了交易的可靠性。
  • 攻击者可能试图将无规行走“游戏”到诸如寄生链之类的恶意结构中,或者通过执行分裂攻击来阻止网络达成共识。
  • 计算交易的累积权重相对昂贵,并且对协议的可伸缩性提出了问题,尤其是在高吞吐量的情况下。

通过添加投票层来识别缠结的首选部分(作为附加模块),我们能够:

  • 更快地解决冲突,从而降低交易意外附加到Tangle的错误部分的可能性。
  • 使用不再基于累积权重的不同tip选择机制,因此遗忘有效交易的可能性较低。

这将提高IOTA网络中交易的可靠性,并显著减少重新附加和提升促进的需要。 它还将使选择tip的过程更便宜,更快捷。

模块5:主动冲突解决方案

到目前为止,我们已经描述了许多新概念,但是基于累积权重的共识机制,仅由tip选择算法保护,仍然将IOTA暴露给挖矿竞赛。

为了克服这个问题,我们提出了一个额外的安全层,节点通过投票交换意见。 多年来,人们对选民模型进行了大量研究。 在概率模型中,节点在多轮中请求少量其他节点的意见,并且可能改变其自己的意见。 在70年代,选民模型由Holley / Liggett和Clifford / Sudbury独立引入(https://projecteuclid.org/euclid.aop/1176996306和https://academic.oup.com/biomet/article-abstract/60/3 / 581/217208),此后有大量相关工作。

引入投票机制带来多重好处:

  • 我们让节点相互通信并主动解决问题,而不是等到越来越多的已发布交易产生冲突的时候再去解决。
  • 节点的投票根据其持有的mana值进行加权。 因此,优秀的节点能够对网络产生更大的影响。
  • 诚实的节点通过投票来保护网络,即使他们当前没有发布任何交易。 结合提出的Sybil保护机制(mana),它取代了区块链中恒定的诚实哈希算力,而不依赖于PoW。
  • 共识过程与tip选择或Tangle的结构等其他方面分离。这使得模块化DLT可以轻松地适应未来的要求。 它还可以防止操纵Tangle结构的所有形式的攻击破坏共识机制,包括白皮书中描述的最危险的攻击,如寄生虫链攻击。

传统投票方案的主要缺点是它们不能进行很好的扩展; 它们需要所有网络参与者的精确知识并且具有非常高的消息开销。

我们介绍Shimmer:一种克服传统投票方案所面临问题的投票方案。

在接下来的部分中,我们通过介绍Shimmer中的两种投票方案,以及他们如何达成共识,来描述当前的投票算法研究进展:

“元胞自动机共识”,模仿元胞自动机中的行为,和
“快速概率共识”,使用概率论提供强有力的安全保证。

模块5.1:Shimmer

Shimmer投票方案根据自然界中出现的非凡的行为命名。 蜜蜂“同步”他们的运动,以抵御掠食者。 他们在没有任何集中实体的情况下这样做,并且只知道何时通过观察他们同伴的行为来“改变他们自己的状态”。

根据某些预定义规则行事的个体自主代理,这可以在自然界中的许多系统中找到,例如蜜蜂,蚂蚁,鱼群,甚至在某些物理领域。 非常简单的规则可以创建令人难以置信的复杂功能,随着时间的推移,这些功能涌现出系统的新兴属性。Shimmer共识机制的工作方式也是这样的。 我们只关心非常小的节点子集的意见,而不必试图重建每个其他节点的意见,从而有机地形成共识,作为网络的新兴属性。

当Shimmer中出现冲突时,节点会迭代地交换关于他们喜欢冲突交易中哪一个的意见,直到最终达成共识。 节点获得Tangle首选部分的全局视图,这对于保证共识至关重要。 在某些时候,节点可以进一步决定将自己的决定标记为已完成。 这意味着它将停止参与投票过程,并且永远不会再次偏离这种观点,即使是在压倒性的意见变化(由于攻击)的情况下。

由于Shimmer将在Tangle中用于达成共识,“喜欢”或“不喜欢” 一笔交易会带来更广泛的后果。 如果某个节点“喜欢”某笔交易,那么它还必须“喜欢”直接或间接引用的所有其他交易。 相反,如果一笔交易“不被喜欢”,那么引用此交易的交易就不会被“喜欢”。

重要的是要注意,没有必要对每笔交易进行投票。 与任何其他交易没有冲突的交易可以仅基于局部修饰符被认为是“喜欢的”(即,在经过一定时间之后)。 只需要投票来解决冲突和边缘情况。

节点将拒绝同时“更喜欢”两个冲突的子缠结的投票。 这迫使节点决定唯一的幸存者。 违反此规则的节点可能会被忽略并永久删除该邻居。 还要注意,没有理由诚实的节点会想要投票支持两个冲突的子缠结,因为没有任何挖矿奖励可以激励他们这样做。

我们正在研究如何进行和保护投票的两种不同方法。 这些是:

  • 元胞自动机共识
  • 快速概率共识

它们具有不同的属性,但两者都显示出同样有前途的早期结果,并且很快将在公共测试网上进行详细测试。 幸运的是,该协议的模块化使得两者并行测试变得非常容易。

模块5.1.1: 元胞自动机共识

在“元胞自动机共识”中,投票过程被建模为元胞自动机,其中节点可被视为监视其邻居状态并相应调整自己意见的元胞。 实际的一致性算法非常简单,可以用5行代码汇总:

If NumberOfNeighborsPreferringTransaction(tx) > NumberOfNeighbors / 2 {
    PreferTransaction(tx)
} else {
    DislikeTransaction(tx)
}

这描述了一种机制,其中节点采用其邻居的多数意见,喜欢或不喜欢基于该多数的交易。

它非常快速和强大。 以下动画描绘了在存在128笔冲突交易(不同颜色代表不同交易)的情况下10,000个节点达到共识的模拟:

在此示例中,网络在几秒钟内达成共识。

增加节点数会影响交易在网络中传播所花费的时间,但不会影响达成共识的时间。 无论有多少节点参与网络,决策都是在本地、并行进行的。

投票总是与相同的邻居进行意见交换,这一事实可能代表攻击途径。 我们通过在对等匹配过程中结合基于mana的名誉系统来增加安全性:节点将更喜欢具有相似名誉的邻居。 这使得攻击者甚至被视为邻居也很昂贵,并为节点增加了另一个获得高名誉的动力。 随着诚实节点拥有的mana随着时间的推移自然增长,网络变得越来越安全。

关于意见的Gossip协议:有机体的免疫系统

将节点作为生物体的细胞处理,这样使我们能够实施“免疫系统”。 这可以通过强制参与者遵守规则来保护网络免受攻击,并提供比Sybil保护等传统措施更好的保护。 由于所有邻居都是随机选择的,因此Shimmer达成共识的过程非常具有概率性。 但在节点层面,元胞自动机共识是确定性的。 如果我们知道其邻居的意见,这允许我们验证节点的行为。 因此,可以检测到违反规则的不良行为者(如下所示)并立即被任何其他邻居驱逐。

这个想法可以在以下协议中形式化,我们称之为“关于意见的Gossip协议”:

  • 每隔一段时间,每个节点向其邻居发出一个“心跳”消息。 这包含了它目前的意见以及它产生这种意见的原因,即它在上一轮中的邻居意见。
  • 为了压缩交换数据量,仅发送连续心跳之间的差异,比如仅发送“喜欢”状态已改变的那些交易的哈希。
  • 节点签署其心跳消息和意见以保证真实性。

此心跳有多种用途:

  • 它强制节点进行常规声明并维护网络的活动成员。
  • 它用于同步邻居之间的意见,允许节点根据先前描述的规则更新他们自己的意见,而无需主动查询其他节点。
  • 它允许节点验证他们的邻居是诚实的 - 那些通过改变他们的意见而违反协议的人可以立即从网络中驱逐出去。 由于消息是签名的,因此可以通过将恶意消息追溯到发出它们的节点来证明错误行为。

这种方法具有许多引人注目的功能,这些功能在任何其他非许可共识机制中都没有出现:它的异步性,实现的简单性,消息开销的效率,达成共识的速度以及攻击弹性。

虽然涌现的新兴现象在生物系统中非常普遍,同时也已经证明在实践中可以很好地工作,但由于它们具有固有的混乱和复杂性,因此很难以数学方式对它们进行建模。 因此,该方法的最大缺点是形式化其科学证据的复杂性。 在将其部署到主网上之前,有必要在测试网络环境中彻底研究元胞自动机共识。

模块5.1.2:快速概率共识

为了解决“元胞自动机共识”的弊端,我们正在同时分析另一个投票方案,我们已经展示了数学模型和证明:快速概率共识。

可以在本文中找到快速概率共识的正式描述。 基本原则与“元胞自动机共识”非常相似,但不是同时在邻居之间进行异步投票,投票过程则是分为不同的轮次。 在每一轮中,每个节点选择其他节点的新随机子集,并查询它们当前的意见。 然后根据大多数返回的意见形成节点自己的意见。 然而,“多数”的概念在这里是具有波动性的。 我们使用从去中心化的随机数序列得出的决策阈值,而不是使用50%的固定阈值。 选择一个全局但不可预测的阈值可以让我们防范想要推迟达成共识的攻击者。

即使在恶意节点根据最差可能策略进行投票的情况下,此投票过程也具有非常快速收敛的关键属性。这已经在论文中得到了正式证实,但一般原则可以解释如下:

  • 如果对手知道诚实节点使用的决策规则,那么它可以预测他们的行为并调整其策略以无限期地停止该过程。
  • 考虑这样一种情况,其中诚实节点改变其意见的阈值是固定的。现在,控制足够数量节点的恶意行为者则可以调整其节点的比例,表明他们喜欢/不喜欢特定交易以使网络保持分裂(未定)状态。通过使用全局随机数来不断改变这个阈值,我们通过使规则保持一致,但对对手不可预测这个阈值来消除这种可能性。
  • 因此,实际上不可能将网络长时间保持在分裂状态。重要的是要注意,当网络处于初始分裂状态时,这些随机数仅具有相关影响,并且不会影响接近共识的网络。

在一定数量的投票轮次中,节点不会改变其意见,则该意见可以被认为是最终确定的意见,不需要继续任何进一步的投票。 可以以这样的方式选择该数字,使得整个网络达到共识是任意高概率的。

因此,快速概率共识为我们提供了一种方法,可以保证在少量轮次和少量采样节点之后达成共识,从而满足使用Shimmer的任何投票过程所需满足的条件。

原文链接:https://coordicide.iota.org/modules

Jimmy Xiong

专栏作者:Jimmy Xiong

个人简介:研究者,布道者,投资人,IEN成员,IOTAChina创办人。

作者邮箱 作者主页 Ta的文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注