在IOTA 2.0中,我们经常收到关于mana的问题。这是一个重要的话题,所以我们很乐意从它的理论方面做一些解释,以及提供一些关于它的实现的见解。
我们这里的目标不是从技术和数学的角度提供规范,而是帮助IOTA用户在理论和实践层面上理解这个重要的Coordicide组件。当然,所有的细节将在我们发布完整的IOTA 2.0规范时提供。
这篇文章包括:
- 每个DLT(分布式账本技术)的基本要求是同时具有Sybil保护(女巫攻击保护)和拥塞控制。我们将解释mana是如何满足这些理论要求的。mana最直接的理解是,它被用于衡量不同模块的影响,包括FPC投票、dRNG(分布式随机数生成)、autopeering(自动配对)和拥塞控制。
- 介绍在IOTA 2.0中实现mana的高级视图。
- 用户将如何通过mana在在线网络互动的评论和思考。
- 一些来自社区的常见问题
什么是mana?
每个DLT都需要一些不同的组件,但是在本文中,我们将重点讨论对两个特定特性的需求:一种的Sybil保护形式和一种控制网络拥塞的方法。
Sybil保护可以防止攻击者通过创建多个身份在网络上获得不当的影响。拥塞控制决定了在拥塞时谁有能力写入账本。任何DLT都必须包含满足这些基本要求的组件。
Mana可能用于网络中的各种角色的一种最好的工具。它与IOTA代币相关,但也与IOTA代币分离。当处理一个值事务时,一个称为mana的数量将被“pledged(抵押)”给一个指定的节点ID。这个数量与转移到事务中的IOTA数量相关。分发给每个节点的mana作为原账本的扩展被保存起来。
获得mana的唯一方法是说服某个代币持有者向你分发。在这个意义上,mana是代币所有权的委托证明。因此,mana提供了足够的Sybil保护,因为很难凭空生成任意数量的mana。
此外,mana在拥塞控制算法中作为一种Sybil控制机制。因此,尽管网络使用情况等各种因素会影响节点的消息配额,但节点持有的mana决定了相对于总网络吞吐量它可以发出多少消息(按%分配)。
分发过程执行了两次,一次用于处理共识的模块,另一次用于拥塞控制。这样做是为了最大限度地保证网络的自由和安全。
由于基于安全性和基于可用性的动机可能会产生矛盾,这种分离确保用户始终能够以最佳的方式保护网络,同时保留他们根据经济利益进行访问的自由。因此,代币持有者能够委托他们的可用性,而在共识形成过程中不给委托任何额外的“权重”。
正如我们稍后讨论的,代币持有者可以租借他们的可用性mana,但是没有理由为了共识性mana而这样做。因此,这意味着我们为mana指定了两个不同的值,我们称之为共识性(consensus) mana和可用性(access) mana。
Mana的应用
在本节中,我们列出了mana应用的几个重要方面。我们将介绍mana的计算,mana是如何分配给一个节点ID的,以及mana在每个IOTA 2.0组件中的作用。
除了IOTA的两种用法(Sybil保护和拥塞控制)之外,我们的IOTA 2.0实现还引入了两种计算mana值的方法。
一种计算mana(通常称为“mana1”)的方法是分发的mana等于交易中移动的代币的数量。第二种计算mana的方法(“mana2”)是mana1的强化,它不仅包括授权的所有权证明,还包括节点活动的证明。mana2有一个可预测的衰减时间,在这个意义上,它不受额外的代币转移的影响。这种可预测性对于在“mana市场”中交互的用户来说可能很重要(下文将详细介绍),如果他们想要确保控制他们购买或租用的可用性的权限。
通过在GoShimmer中实现这两个备选方案,我们的团队仍在研究这两个选项中哪个更好。这两种选择都不错,但是最终的选择要通过GoShimmer同时对这两种解决方案进行健壮的测试才能做出。
我们也重视来自合作伙伴和独立研究人员的反馈。在这个阶段,在没有看到它的“实际行动”之前,不需要急于承诺一种选择。我们认为这个选择就是从两个好的选择中做出更好的选择。一旦mana计算出来,协议将按照此进行。
对某个特定节点而言,共识性mana和可用性mana的权重是与总“有效mana”相关的,也与整个网络中节点所持有的活跃的mana相关。例如,如果一个节点有5%的总可用性mana,而整个网络中只有50%的可用性mana是活跃的,那么一个节点将能够添加协议允许的总数据的10%到网络中。
同样,投票权与活跃的共识性mana成比例。一个节点持有的共识性mana越多,它就会收到越多的FPC查询,也就是说,它拥有的投票权就越多。同样在dRNG中,随机数是由顶级有效mana持有者发出的。虽然可用性mana保证了访问网络的最低限度,但活跃mana的总量决定了实际授予的可用性能力。
需要Sybil保护的协议中的每个模块都使用Mana:
- 拥塞控制:可以添加到网络中的数据量与他们的mana成比例。如果数据以1000 KB/s的最大速率添加到tangle(注意:这里我们只是为了讨论的目的而使用一个整数),那么一个5%的mana节点可以添加50 KB/s的数据。而一个0mana值的节点不能发出任何事务。
- FPC:一个节点被查询的概率与它所持有的mana值成正比。
- dRNG:顶级mana持有者设置dRNG。
- Autopeering:拥有接近规模mana的节点进行自动配对,从而更好的保护高价值节点不受eclipse攻击。
mana的互动
现在,为了把所有这些联系在一起,我们来讨论一个相当重要的话题:IOTA用户将如何与mana“互动”。
对于大多数用户来说,mana将是使用IOTA的一个无缝部分。在准备签署交易时,用户的钱包选择一个节点ID来抵押其mana值。通常,钱包将选择广播节点的节点ID。IOTA基金会创建的钱包软件中,节点ID的选择确实是自动的。请注意,在某些用例中,可能很少会将mana分配给广播节点以外的节点id,例如在将mana分配给新节点时。
如上所述,mana抵押给节点ID。从技术上讲,节点操作员可以通过三种方式获得mana:
- 持有代币:节点操作员可以购买代币,并向自己的节点抵押这些代币所产生的mana值。
- 从代币持有者租借mana。租金可以用IOTA或现金支付。
- 处理值流量:节点可以处理支付,以换取支付中抵押的mana值。
在网络拥塞的情况下,Mana在拥塞控制模块中的作用变得更加重要。在这段时间内,活跃的可用性mana会增加,因此节点需要比非拥挤时间更多的可用性mana来保证一定的吞吐量。随着对mana的需求增加,自然会出现mana租借市场,代币持有者可以通过租借mana获利。智能合约可用于使这个过程成为用户体验的一个无缝部分。考虑到IOTA 2.0相对较高的网络吞吐量,我们预计一段时间内不会出现非垃圾邮件拥塞——这意味着随着使用量的增加,我们有足够的准备时间来让我们的分片解决方案就绪。
常见问题
什么时候mana会被实施到pollen测试网?
在发表这篇博客文章时,它正在被实施。
需要多少mana才能发送交易?
这个问题的答案很大程度上取决于网络条件。由于当节点疲于应付事务流量时,带宽是有限的,因此必须有一种对消息进行优先排序的机制。访问Tangle所需的mana取决于您想要发送多少事务,以及网络有多拥挤。
分片将如何影响mana?
我们仍然在早期阶段定义我们的分片解决方案将如何工作,但它肯定会有一些“分片”的mana。有几种可能的方法可以做到这一点。例如,每个地址将属于一个分片,当资金从这个地址花费时,抵押的mana也可以标记在同一个分片上。
mana是PoS(权益证明)吗?它是一种DPoS委托权益证明吗?
mana证明与PoS有一些相似之处。然而,术语PoS和DPoS表示一个系统,在这个系统中,验证者被选举来创建块,获得奖励和费用,如果他们行为不当,就会失去他们的利益。在我们的基于DAG的新方法中,我们没有区块、奖励或费用,因此mana、PoS和DPoS之间的不能简单进行比较。
在IOTA 2.0中有PoW工作证明的角色吗?mana使用PoW工作证明了吗?
对于诚实的用户来说,基本上没有工作证明。该协议将实现一种称为自适应证明的机制作为垃圾邮件预防。创建事务的诚实节点必须做少量的验证工作(比现在小得多)来创建消息。然而,试图向网络发送垃圾邮件的恶意节点将很快受到大量工作需求证明的惩罚,这将在物理上限制它们创建消息的能力。这个机制不会惩罚诚实的节点。
mana本身不会使用任何形式的工作证明。
对mana感知的不同会导致问题?攻击者会放大这些差异吗?
.这是一个关于mana执行的非常重要的问题,但是有一个非常技术性的答案。假设一个交易转移大量资金从节点A移出mana,然后抵押给节点B并通过网络传播,一些节点接收事务首先将暂时发现节点B有很多mana,和其他人会发现A有也有很多mana。此外,拥有大量mana的攻击者可以发送一系列在不同节点id之间移动大量mana的事务。
为了应对这种攻击,协议将以移动平均方式计算mana值。这意味着协议将使用两个不同的数量:基础mana和有效mana。基础mana是账本状态的延伸。它将直接根据增加到账本状态的交易计算。同时,有效mana为各模块使用的mana,并定期更新,递推公式如下:
新增的有效 Mana=α(基础mana) +(1-α)(原有的有效mana)
α处于0到1之间。随着指数移动平均,有效mana降低了基础mana变化的效果。因此,上述攻击中基础mana的巨大变化只会缓慢地出现,而且不会有机会在交易在网络中传播之前出现。参数α控制这些更改的速度。
协议的每个模块都能容忍一些mana感知上的差异。我们将在GoShimmer网络中研究这些差异到底有多大,这将决定合适的参数α。
作为一个新节点,我怎样才能让mana进入系统?我一定要买它吗?开始发送消息需要多长时间?
正如我们上面提到的,mana将成为用户体验的一个无缝部分。对于节点操作员来说,最简单的开始方式是购买自己的代币,创建一个向自己抵押这些代币的事务,然后找到其他节点来发出该事务。基金会还可以创建一个“mana水龙头”,用户可以来为他们的节点请求mana。
一旦节点ID获得了抵押的mana值,节点必须等待几分钟,以指数移动平均值来记录mana值的变化,然后节点就可以自由访问网络了。
攻击者是否有积攒mana的策略来攻击网络?
Mana总是与一个节点ID相关联,它只是一个公钥,并且某些签名的消息会触发Mana的计算。因此,可以使用数千个节点id轻松地操作单个物理节点。然而,分割或共享都不会受到激励,因为mana的收益通常与抵押的金额成比例。特别是,没有mana,一个节点不能访问网络。mana可以抵押给任何节点ID,甚至是脱机或不存在的机器的ID。因此,我们说活跃的mana是由一个活动节点持有的mana。
攻击者可以尝试积累mana来达到邪恶的目的,但是mana的不足会让这变得很困难。此外,因为没有共识性mana的市场,一个拜占庭角色只能通过购买代币来攻击共识性mana层,而且他们需要比诚实的角色(如基金会)持有更多的代币。
mana系统安全吗?怎样阻止攻击者积累大量的共识性mana,卖掉所有代币,然后攻击系统?
是的,mana系统是安全的。严格地说,共识性mana可以随意分配。然而,很明显,对于任何持有iota代币的人来说,根本就没有“交易”共识性mana值的动机。只有攻击者有兴趣积累过多的共识性mana,这就是为什么IOTA的将共识性mana和可用性mana进行分离的设计的重要性。它允许交易,同时保护共识。不管交换共识性mana的动机是什么,攻击者仍然会试图以累积共识性mana为目标去购买代币,这些代币可以用来攻击网络。然而,这样的攻击代价太高,因为购买会推高价格,而且执行攻击需要大量代币。此外,在攻击前出售代币而不造成价格的暴跌,会比共识性mana在网络上保持影响力的时间长得多。
为什么没有在mana1和mana2之间做出选择?
我们相信这两种mana计算都能达到预期的目的。这不是好与坏之间的选择,而是好与更好之间的选择。我们希望它们都能在Pollen中得到应用,这样我们就能做出明智的决定,判断哪一种效果最好,或者两者之间是否存在实际差异。
mana是一种声誉系统吗?
mana本身可以被认为是一个非常基本的声望系统,尽管我们只认为它是声望分数的一个组成部分。一个良好的声誉系统会考虑节点的行为,如果节点行为不当,声誉将降为零。
我们真诚地希望这篇文章对您有所帮助。如果您有任何问题或意见,可以在我们的Discord服务器的#tanglemath频道找到我们的研究团队成员。我们也欢迎您在我们的公共论坛上关注和参与我们的技术讨论。
原文链接:https://blog.iota.org/explaining-mana-in-iota-6f636690b916
本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/202009/first-official-introduction-to-iota-mana-mechanism-in-iota2-0/