1. 首页
  2. 业界观点

IOTA的Mana机制-第2部分(答疑)

IOTA基金会研发总监William Sanders针对社区提出的一些关于Mana机制的疑问的解答,介绍了更多的机制细节。

IOTA的Mana机制-第2部分(答疑)

上周,我们发布了包含法力(mana)值的pollen试验网的新的版本。通过这个版本,我们展示了我们的mana解决方案的成熟度和效率。 很快,mana就会被应用到许多模块中,这是我们即将推出的第一个功能齐全的去协调器试验网Nectar的重要一步。

在这个重要的里程碑上,我们认为我们应该澄清一些常见的问题。在我们上一次发表关于法力的文章以后,我们通过我们的Discord和Reddit从社区中收集了这些问题。这些问题是按主题分类的,在一些问题下,你会发现用斜体表示的原始问题。

合作伙伴和社区的反馈对我们来说非常有价值,它告诉我们哪些方面是我们特别感兴趣的,帮助我们确定我们完整的法力规范中可能优化的地方。而完整的规范将在我们现有的 “Coordicide “测试网进入 “Nectar “阶段之前发布。

自我们上一篇文章以来,只有一个与mana相关的拟议变化:按照合作伙伴和广大社区成员的要求,有可能允许mana为零的用户在网络不拥堵时发送消息。我们正在研究在低拥堵期为低mana或零mana节点发布消息的可能性,条件是他们已经执行了一些额外的任务,例如工作证明。这绝非易事,但一旦有了结果,我们会分享我们的研究发现。

请注意,关于一定数量的mana能保证多少访问量的问题,其实不是关于mana本身的问题,而是关于我们的拥堵控制算法的问题。 因此,虽然mana本身是完整的,但关于零mana节点的问题仍然是开放的。 不久之后,我们将再发布一篇博文,解释IOTA拥塞控制算法。

关于mana的快速复习

对于那些没有读过我们第一篇关于mana的出版物的人来说,这里是对mana是什么以及为什么它很重要的快速回顾。每当一个交易移动资金时,该交易都会向一个节点ID “质押 “一个叫做mana的数值,因此,mana可以被认为是委托代币所有权的证明。因此,mana可以被认为是委托代币所有权的证明。获得mana的唯一途径是通过控制代币,或者与控制代币的人有某种关系。转移过程中抵押的mana的计算方式是为了让攻击者无法人为夸大节点持有的mana。

为什么mana很重要?如果没有某种保护机制,攻击者将能够通过伪造数以百万计的假身份来攻击像IOTA这样的网络,这就是所谓的sybil攻击。因此,所有的DLT都必须通过将身份连接到一些可加密验证的稀缺资源来防止sybil攻击。 POW和POS机制分别使用能源和代币抵押作为sybil保护机制。

IOTA使用mana来防止sybil攻击。这就是为什么Coordicide的所有核心组件都必须考虑到mana,比如IOTA拥塞控制算法、我们的共识算法(FPC)、自动配对机制(Autopeering)和我们的分布式随机数发生器(DRNG)。 这也是为什么在Pollen试验网中实现mana是试验网的Nectar阶段的一个重要垫脚石:这意味着我们可以开始保护IOTA核心协议的关键组件免受基本攻击载体的攻击。

Mana和拥塞控制的区别

Mana是我们目前衡量节点行为的初步建议。在未来,Mana将演变成一个更复杂的多维度信誉系统,以评估一个节点对网络活动及其安全性的贡献。现阶段,Mana被用作输入数据,为各种Coordicide模块提供不可伪造的身份,包括IOTA拥塞控制算法。

法力值特性

衰减函数的长度大概是多少?

法力的半衰期是接近于一分钟还是接近于一年?

回想一下,用mana2的计算方法,法力是按照指数函数衰减的,因此必须用新的质押来刷新。衰减半衰期将是一个小时级别的问题,例如6小时。然而,我们想看看这在testnet上的实际效果如何,我们会相应调整这个参数。

如何衡量 “活跃(active) mana”?

“活跃mana “可以用各种各样的方式计算,这取决于它的目的。活跃可以是指 “在最近X秒内至少发送了一次交易的节点的百分比”,也可以是指 “发送了’足够’的交易的节点占其信誉的百分比”。

对于拥堵控制,节点不需要知道活跃mana:节点只需查看自己的收件箱,并根据发出节点的mana值做出反应。任何节点都可以根据发布节点ID获得任何节点所拥有的法力量信息,该ID是每条在网络中传播的消息的一部分。

对于FPC和自动配对(Autopeering),配对发现模块会维护一个当前在线的已知节点列表。节点使用该列表进行FPC查询和邻居选择。

恶意行为

法力会不会像PoS代币一样,因为缺乏去中心化而遇到同样的问题?

大约0.06%的地址持有~65%的代币。这意味着即使99.94%的地址对活跃的、诚实的法力做出了贡献,那也只占总法力的~35%。0.06%的地址控制着65%的代币,这对共识、投票或数据吞吐量来说怎么可能不是问题?

首先,地址的数量与使用IOTA的人数并不对应。 例如,35%的地址,即14000个地址,持有的MI不到10个。 如果认为这些金额是由14000个人控制的,那就太荒谬了。由于各种原因,钱包和各种应用程序经常将资金分散在几个地址上。 另一方面,冷存储中的代币往往集中在一个地址上。 因此,上述统计数字并不奇怪。

其次,这个统计数字并不是问题,因为底层的安全假设仍然得到了满足。根据我们的模拟,攻击者需要控制至少30%(有时甚至更多)的活跃的共识法力,才有合理的机会攻击FPC并造成双花。 因此,相当比例的顶级代币持有者将不得不串通起来才能进行双花。由于前0.06%的地址还是几百个地址,这似乎不太可能。 此外,其他的攻击,如审查攻击或活性攻击将需要明显更多的mana。

第三,在任何DLT技术中,对网络的访问必须连接到一些可加密验证的稀缺资源。通常情况下,所有的资源所有权都遵循Zipf分布:少数人拥有很多,其他人则越来越少。因此,这种中心化的关注并不是IOTA所独有的,而是所有DLT所特有的。

最后,工作证明/股权证明的解决方案是固化方案。相比之下,我们的方法要灵活得多。我们的想法是建立一个多维度的信誉系统,其中法力值只是其中的一个组成部分。通过使用额外的指标–例如对良好行为的奖励、年龄和网络中的参与度概念,以及自私或行为不端的节点的声誉损失–我们的目标是减少所有节点之间的声誉差异。

集中分布会不会造成问题?

IOTA 2.0(“Coordicide”)的设计是不会出现权力大集中的情况。与大多数PoS系统不同,IOTA不是区块链,因此不会受到领导者选举过程的限制。在区块链中,区块是有顺序的,因此每小时只产生相对较少的区块,因此只能有那么几个区块生产者。

但在DAG中,多人可以同时添加信息,因此拥有少量法力值的节点可以和大法力值持有者同时创建信息。即使你的法力比例相当小,但这个法力至少可以保证你的最低访问量,而且无论有多少大法力持有者使网络饱和,你的访问量都不能被撤销。 因此IOTA拥塞控制算法(ICCA)可以支持成千上万的小法力持有者。通过按比例分配法力值,我们确保 “小家伙们”能获得公平的投票权或使用权。

了解发布一条消息所需的绝对最低法力值是涉及零法力节点的研究的一部分。

有了足够的法力值,能不能进行双花?

如果有足够多的恶意节点所有者 “批准”,是否可以通过批准两个冲突的交易并将其嵌入到Tangle中来批准双花?成功做到这一点所需的(主动/被动)法力百分比是多少?诚实的节点会如何回应被大多数恶意节点所有者/法力值持有者投票认为合法的中继,但冲突的交易??

有了大约30%的共识法力值,攻击者就有可能操纵投票算法,使一次双花有效。在这种攻击下,会发展出一个分叉,在解决之前,没有消息会被固化的。

然而:

  1. 任何攻击者都不会拥有30%的IOTA共识法力。
  2. 共识法力(consensus mana)将没有合法的市场,因为它没有建立的意义。交易访问法力(access mana)有一个合法的使用案例,所以一个健康的市场将可能增长。共识法力纯粹是为了治理。只有攻击者才会买它。要建立一个市场地位需要很长的时间和大量的资源,才能达到接近你能获得过半数投票的情况。这样的市场成熟是没有意义的。

如何防止优先权倒置?

这可能会发生一个高mana交易依赖于一个低mana交易的情况。

如果交易A依赖于交易B,则要求B在A的追溯锥体(past cone)中,如果一个高法力节点用交易A发布消息,而一个低法力节点发布交易B,如果B不在,则A不会被gossip广播。

此外–在gossip广播协议中,节点只有在 “固化后才会gossip广播”,也就是说,一个节点不会gossip广播消息,除非它的父节点也被gossip广播过。事实上,拥塞控制算法甚至不会考虑一条消息,直到它收到了整个追溯椎体数据。

如何防止 “法力残渣”?

“法力残渣”,或者将法力分配给不存在的节点,从而填满所有人的节点表?

我们还没有正式规范出任何特定的解决方案来解决这个潜在的问题。

每个模块只需要对法力达成 “近似共识”,这意味着协议可以容忍法力感知的微小差异。因此,法力残渣可以被删除而不会受到影响。然而,为了使小法力持有者能够生存,允许法力残渣在短时间内,比如一天左右,但之后可以删除,这可能是合理的。

“免费 “交易

当没有拥堵的时候,零法力节点可以发出交易吗?

在目前拥堵控制算法的设计中,你需要法力值来发送消息。这是为了防止突如其来的恶性垃圾攻击来扰乱网络。正如介绍中所说,我们正在研究是否可以让节点做一些工作证明,以便在没有法力值的情况下发布消息。然而,以低成本利用未使用的带宽的机会也会有利于试图充斥网络的恶意节点,或者更糟糕的是,制造账本不一致。由于IOTA是100%无权限的,所以这个问题的解决方法是意义重大的。

一个替代方案是拥有法力水龙头,这是IOTA基金会或网络上的其他大持有人可以维护的东西。这个想法是,节点可以自动持有一个龙头列表。从节点仪表板上,节点操作者可以从龙头中请求少量的法力值。

你真的需要为非价值交易提供法力吗?

IOTA拥塞控制算法对Tangle中的所有消息类型都一视同仁。非价值交易(数据消息)的处理方式将与价值交易(价值消息)相同。在拥堵的时候,一个节点需要足够的法力值才能发出其中任何一种。

如果你刚刚建立了一个节点,想要进行价值交易,你是否需要法力?

你不需要法力值来简单地 “设置一个节点 “并监控Tangle。0-mana节点可以使用Chrysalis中同样的对等机制来简单地监听网络,尽管它们不会有法力值所能提供的eclipse攻击保护。

然而,在我们最初版本的IOTA拥塞控制算法中,为了发送交易–或发出任何类型的消息–你将需要法力。 如前所述,我们正在研究如何让没有法力值的节点在没有拥堵的情况下发送消息。 我们已经有了一个有希望的解决方案,但我们需要确保它不会造成任何攻击向量。 当这项研究更加深入的时候,我们会在后期公布我们的研究结果。

Mana市场

Mana的市场价值会是多少?

我们不知道。Mana是解决去中心化IOTA网络中各种问题的技术方案。Mana市场是我们打算创建一个尽可能不受限制的无权限协议的副产品。我们已经审核了这个解决方案带来的攻击向量,但会把它的货币价值的升值留给市场。

然而有几个合理的假设表明,法力将具有某种市场价值。首先,如果网络变得拥挤,对网络的访问–因而法力将变得有价值。这是简单的供需经济学,适用于所有DLT。然而这种计算方式将随着分片而改变,因为分片将大大增加访问的供应。

其次,目前,由于法规、税收或普遍的怀疑态度,一些企业实体可能会对持有任何加密货币犹豫不决。因此,通过值得信赖的IOTA基础设施合作伙伴租用法力,是一种企业可以在不持有代币的情况下有保障的访问方式。

为什么法力值可以质押到不同的节点?

决定不将法力值强制分配给处理交易的节点的原因是什么?为什么有人能够将法力值分配给另一个实体?

我们希望尽可能保持IOTA的灵活和自由度–意思是自由,而不是 “滥用”。几乎肯定会有一些复杂的用例,我们不想因为任意的原因而限制。

任何人都应该能够以他们认为合适的方式使用Mana。这对用户和节点都适用。如果你不把法力分配给处理你的交易的节点,他们就不必处理你的交易。他们可以坚持要求他们处理的所有价值交易都将法力值抵押给他们的节点ID。

然而,你的节点可能只在周期性地需要它的访问法力,例如在交通高峰期,只在工作日或周末,或在其他时间间隔。如果节点所有者拥有大量的IOTA,并且对其产生的(部分)法力没有用途,通过能够将其质押给其他节点,他们就可以从他们的IOTA中获得更多的效用。

例如,一些企业可能在近期内不想持有代币。在一些司法管辖区,账面上有加密货币可能会产生法律问题,但他们仍然可能想要访问Tangle。通过将质押物与处理交易的节点分离,这使得他们可以通过市场用法币来购买访问权并规避法律问题。

例如,企业可能会提供公共节点供用户使用,以便从他们通过该节点产生的法力中获益。

未使用的接入法力会如何处理?

未使用的带宽将根据活跃用户拥有的访问法力按比例分配。

这意味着,例如你有1%的访问法力,而带宽是60%的饱和,你至少可以获得1%的未使用的40%分配给你。之后未使用的带宽中,你将再次获得1%,永久地,直到带宽饱和。

这可能会使网络拥挤到硬编码的极限,但它绝不会妨碍任何法力持有者根据他们的法力访问网络。

有人可以随便发垃圾猫咪图片来充斥网络吗?

协议无法判断哪些是垃圾信息,哪些不是垃圾信息。这是无需许可的创新的一个特点。虽然猫咪图片对某些人来说可能显得微不足道,但对其他人来说可能非常重要。这不是我们能决定的。

任何人都应该能够按照自己的想法使用网络,即使别人不同意。这是DLT的一个核心命题,而法力可以以公平的方式实现这一点。能否成功堵死网络取决于这个垃圾邮件发送者拥有的法力值。只有当垃圾邮件发送者拥有100%的活跃法力时,网络才可能由100%的猫咪图片组成。因此,即使在这次猫咪灌水事件中,你仍然可以保证公平的吞吐量。

拥堵控制

请关注我们即将发布的关于拥堵控制机制的博文。

如何衡量网络何时拥堵?

Raspberry Pi只能处理AWS节点的一小部分,所以它们对于什么时候需要启动 “基于法力的速率控制 “会有非常不同的观点–如果它们出现分歧,你又会出现优先级反转效应。

首先,拥堵控制算法不需要判断网络是否拥堵。如果没有拥堵,那么节点的收件箱将大部分是空的。网络中的每个节点都将以协议设定的最大固定速率处理消息。这个速率将决定节点的最低硬件要求,包括带宽和计算能力。任何没有这些能力的机器将无法胜任节点的运行。我们将设置这个速率参数来启用我们认为运行节点所必需的机器类型。

为了让一个小型设备使用网络,它不需要运行一个节点,甚至不需要钱包。通常情况下,今天的物联网设备是通过一个更强大的网关来控制的,它有一个可靠的互联网连接。该网关可以运行一个钱包或一个节点。因此,为了实现这些低功耗设备,我们只需要确保低功耗设备使用的任何应用都可以通过网关工作。

在未来,分片将使网络更加多样化,因为不是所有的设备都要处理所有的消息。那么低功率设备可以作为一个节点运行较小的网络碎片。

你可以操纵系统来充斥网络吗?

假设恶意节点所有者为了能够将自己的网络容量(或法力)(卖给出价最高的人),可能会人为地使网络饱和(”垃圾邮件”),为了防止出现收费交易市场,诚实的节点所有者所持有的法力比例是多少?

首先,一个潜在的法力市场并不仅仅取决于拥堵。那些不希望账上有加密货币的企业,在没有拥堵的情况下就已经进入了法力市场。

接下来,重要的是要意识到,你的法力保证了对网络的访问,与你拥有的法力数量成正比。其他持有者的任何集中都不能阻止你的访问,他们不能不公平地拥塞网络。你总是有那部分带宽可供你使用。

节点行为

节点是否可以在接受和转发交易之前,确定交易的发布者是否会将法力值记入它的账户?

可以。

该属性是否有签名?

是的,该属性是有签名的。

节点能否轻松拒绝那些不向其抵押法力的交易?

节点(wrt DoS)同步解决它的成本有多高,以便它有可能拒绝交易,用户也能察觉它?

验证和拒绝这种交易是很琐碎的。

默认的设置是,在钱包和节点的通信中,钱包会要求节点给出一个节点ID,将法力抵押给节点。然后,节点会给钱包想要质押法力的ID。钱包可以请求将其质押到其他地方,是否答应这个请求由节点决定。

这种行为并没有被核心协议指定。对于安全来说,它并不是必不可少的,我们也不想通过设置这样的规则来抑制未来的用例。任何人都可以构建节点软件,以他们认为适合自己用例的方式,对如何抵押法力进行不同的行为。

当一个节点因为恶意行为而失去法力时,会发生什么?

如果把它质押到别的地方再重试攻击?重新质押不是很容易吗?

在IOTA 2.0中,法力值不会被协议从行为不端的节点撤销。正如问题所建议的那样,在将此加入协议之前,有一些明显的问题需要解决。然而,个人用户可以在节点行为不端的情况下撤销他们的法力质押。然而,将他们的共识法力值质押给诚实的来源是他们的责任。

我们已经给Mauro Conti的小组提供了一笔资金,以研究一个更通用的信誉系统,它将会把节点行为考虑在内。这是一项正在进行的研究,我们会随时向大家公布他们的研究结果。

本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/202103/explaining-mana-in-iota-part-2/