了解互联网计算机的网络神经系统、神经元和ICP实用令牌
互联网计算机是世界上第一个完全自适应的区块链,互联网计算机网络以及承载该网络的特殊节点计算机在网络神经系统(NNS)的完全控制下运行,NNS是一个完全开放的去中心化令牌化治理系统。
世界上任何人都可以向NNS提交提案,如果该提案被采纳,则该提案将立即自动完全自动执行,从而使网络能够实时适应和发展。
NNS可以随时执行以下任务,例如升级节点机器以更新协议或应用安全修补程序,调整经济参数或形成新的子网区块链以增加网络容量。
它在互联网计算机的协议内运行,并且能够进行这些更改而不会中断网络的运行或破坏安全性。
网络神经系统通过允许用户放权ICP治理令牌来创建投票神经元来工作。
任何人都可以创建一个神经元,我们希望在创世后可以创建成千上万个神经元,这些神经元将共同发挥社区的意愿,并通过算法进行调解。
神经元就像储蓄帐户,必须发出取现通知,通知期的长度是一种称为“溶解延迟”的配置。
神经元的投票权及其对投票奖励的相对主张与抵押ICP的数量、配置的溶解延迟的长度及其“年龄”成正比。
通过以流动民主的形式跟随其他神经元,可以使神经元手动或自动投票。
神经元持有人被置于加密经济游戏中,根据最有可能推动ICP价值超越的动机,他们被激励投票以采纳和拒绝提议,或配置神经元跟随以使他们以理想的方式自动投票。
从长远来看,它是互联网计算机网络成功的代理。
这是去中心化基础架构能够自我指导的历史上的第一次,其目的是与由具有领导者和董事会的商业组织运营的专有集中化基础架构进行竞争。
概述
NNS的目的是允许以开放、分散和安全的方式管理互联网计算机(IC)网络,它可以完全控制网络的各个方面。
例如:
它可以升级托管网络的节点计算机所使用的协议和软件;
它可以将新的节点操作员和机器引入网络;
它可以创建新的子网区块链以增加网络容量;
它可以拆分子网以划分负载;
它可以配置经济参数,以控制用户必须为计算能力支付多少费用;
并且在极端情况下,它可以冻结恶意容器软件(智能合约)以保护网络以及其他许多方面。
NNS的工作方式是接受提案,并根据网络参与者创建的“神经元”的投票活动决定采用还是拒绝提案。
参与者还使用神经元来提交新建议,提交后,提案要么被采纳,要么被拒绝,提案可能会立即生效,也可能会有所延迟,具体取决于神经元的总体投票方式。
每个提案都是特定“提案类型”的实例,该实例确定提案包含的信息。
对于每种类型的建议,NNS都会维护一个相应的系统功能,只要采用该类型的建议,它就会调用该功能。
当NNS采用提案时,它会通过从提案内容中提取信息以填充参数来调用相应的系统功能。
每种类型的建议都属于特定的“建议主题”,例如“#NodeAdmin”或“#NetworkEconomics”,它们确定有关处理方式的详细信息。
为了防止用户(神经元)向NNS发送垃圾邮件,如果提案遭到拒绝,则对提交提案的神经元收取费用。
NNS通过观察神经元如何投票来决定是否采纳提案。
任何人都可以通过锁定“ICP治理令牌”的余额来创建神经元,“ICP治理令牌”是一种特殊的本机实用程序令牌,托管在NNS内部的分类帐中。
当用户创建神经元时,ICP的锁定余额只能通过分配(“销毁”)神经元来解锁。
激励用户创建神经元是因为他们在对提案进行投票时会获得奖励,奖励采用由NNS创建的新铸造的ICP的形式。
分配给神经元的ICP奖励的数量来自以下因素:锁定余额的大小、剩余的最小锁定时间(“溶解延迟”)、神经元的“年龄”、其正确参与的可能选票的比例以及所有神经元的投票活动总和,由于已支付的奖励总额是有上限的,因此必须进行分配。
每个神经元具有当前配置的“溶解延迟”,在任何时候,这都决定了将其置于“溶解模式”所需的溶解时间。
将神经元置于“溶解模式”后,其溶解延迟会随着时间的流逝而下降,就像厨房计时器一样,直到其达到零为止,然后其所有者可以执行最终的行动支出解锁ICP的余额。
解散延迟为神经元所有者投票提供了经济动机,以期在将来的某个日期最大化其锁定的ICP余额的价值。
由于ICP的价格是网络长期成功的代理,没有短期波动,因此,这为从网络的最佳利益出发进行投票提供了经济动力。
神经元拥有者可以自由配置更长的溶解延迟,最大延迟为8年,但不能减少溶解延迟(除非随着时间的流逝)。
NNS支付的投票延迟时间越长,其支付的投票奖励就越高,鼓励用户进入一种游戏,在该游戏中,创造了一种经济激励措施来根据长期愿景进行投票。
神经元所有者可能很难手动直接对提交给NNS的每个提案进行投票。
首先,通常会在尴尬的时间向NNS提交大量提案,业主可能没有空缺或没有时间评估每个提案。
其次,神经元所有者可能缺乏必要的专业知识来自己评估提案。NNS使用一种流动民主的形式来应对这些挑战。
对于任何提议主题,可以将神经元配置为遵循一组神经元的投票自动投票,在大多数跟随者投票通过时投票通过提议,并在不可能通过多数投票时投票拒绝。
还可以定义一个包罗万象的遵循规则,以自动对具有未定义遵循规则的主题的提案进行神经元投票。
假定神经元所有者将根据网络的最佳利益来管理他们的神经元如何跟随其他神经元,这也取决于他们的ICP余额,也符合他们自己的经济利益。
可以预期,ICP的总体供应中有很大一部分将被锁定以便获得奖励。
通过使攻击者难以获得足够大的股份来获得重大影响,这使互联网计算机变得既困难又昂贵,从而确保了互联网计算机的网络管理。
由于神经元所有者希望通过对所有提案进行投票来最大化他们的回报,因此大多数神经元将被主动管理,或者被配置为跟随其他神经元,以便他们可以自动投票。
在实践中,一旦信任的神经元对提案进行了投票,其他大多数神经元也会因级联跟随关系而投票。
这意味着NNS通常可以快速确定所有神经元代表的总体投票权中的大多数是否希望采纳或拒绝提案,并据此决定提案。
但是,NNS不能依靠获得这样的多数,因为原则上神经元所有者可能不定义遵循规则,或者干脆选择不投票。
如果对新提交的提案的处理方式不能由总体投票权的多数快速决定,则NNS必须使用一种曾经被称为“等待安静”的技术。
这涉及从正在进行的投票量中得出“投票噪音”的量度基于某个提案,等待其下降到某个阈值以下(该值是NNS可以根据经验在生产中修改的调整参数),然后继续汇总收到的票数以做出决定。
可以应用不同的算法,但最简单的方法是,NNS可以将每个时间间隔收到的票数的运行平均值用作“投票噪声”的量度。
如果阈值太低,则攻击者可以通过投票来延迟NNS决定提案,就像“噪音水平”即将降到阈值之下一样,并且不能将其设置得太高,否则攻击者可能会尝试进行对NNS进行DoS攻击,以便它仅使用一小部分想要参与的投票权来决定提案(因为这等于他们无法投票,也不想投票)。
使用“等待安静”,NNS可以决定提案,而无需达到法定投票权即可参与,而且它始终可以及时决定提案。
提案
格式
提交给NNS的每个提案都有以下字段:
ID:提案的身份,NNS为收到的每个提案分配一个唯一的标识。
摘要:提案简短说明的文本,最多使用280个字节组成。
URL:使用指定的HTTPS、评估提案所需的其他内容的网址,例如,地址可能描述支持将DCID(数据中心ID)分配给新数据中心的内容。
提议者:提交提议的神经元的ID,提交提案时,如果被拒绝,则会在其余额上计入“费用”。因此,余额必须足够大以支付(全部)拒绝费用。我们要求神经元的溶解延迟≥6个月才能投票,这也适用于提交提案。
提案类型:提案的类型,这可以推断出该提案所属的主题(例如#NodeAdmin)、将被采纳的系统功能(如果被采纳)以及将传递给该功能的参数的类型和结构。
参数:如果采用提案,则将传递给将被调用的系统函数的参数,由参数的类型决定,提交提案后,NNS会检查参数。
话题
根据提案的类型推断出提案的主题,可以确定提案的处理方式。
例如,对于某些主题,NNS可能要求选民达成更大程度的协议或尝试更快地处理提案。同样,神经元在每个主题的基础上跟随其他神经元。
最初的主题包括:
#NeuronManagement:一个特殊的主题,追随者可以通过该主题管理该主题的神经元(在这种情况下,没有默认的备用方法)。关于该主题的投票不包括在神经元的投票历史中。对于有关此主题的提案,仅允许对该提案所属的神经元的该主题的关注者进行投票。由于该主题的提案的合格投票者数量受到限制,因此该主题的提案的投票期短于正常投票期。
#ExchangeRate:所有提议,以“实时”方式提供有关ICP市值的信息,该信息由IMF SDR衡量,这使NNS能够以保持其实际状态的速率将ICP转换为cycles(为计算提供动力)成本常数。由于有关该主题的提案非常频繁,因此投票期较短,并且有关该主题的投票未包含在神经元的投票历史中。
#NetworkEconomics:管理网络经济学的提案-例如,确定应向节点运营商支付的奖励。
#Governance:管理治理的所有提案,例如,议案和某些参数的配置。
#NodeAdmin:以某种方式管理节点计算机的所有建议,包括但不限于升级或配置OS、升级或配置虚拟机框架以及升级或配置节点副本软件。
#ParticipantManagement:管理网络参与者的所有建议,例如,授予和吊销DCID(数据中心身份)或NOID(节点运营商身份)。
#SubnetManagement:管理网络子网的所有建议,例如,创建新子网、添加和删除子网节点以及拆分子网。
#NetworkCanisterManagement:安装和升级属于网络的“系统”容器—例如,升级NNS。
#KYC:出于监管目的而更新KYC信息的提案,例如在最初创世期间以神经元形式进行的ICP的分发。
#NodeProviderRewards:奖励节点提供者的建议的主题。
种类
初始提案类型包括:
ManageNeuron(#NeuronManagement,限制性投票)
这种类型的建议在指定的目标神经元上具有主要功能。只有目标神经元的跟随者可以对这些提议进行投票,这有效地使跟随者可以控制目标神经元。这可以为一组个人管理重要的神经元提供方便且高度安全的方法。
例如,一个神经元可能保持很大的平衡,或者属于声望很高的组织,并且被公开,以便许多其他神经元可以跟随其投票。在这两种情况下,安全地管理主体的私钥都可能会出现问题。
要么保存一份副本,这是非常不安全的,并且要由一方来控制,要么必须由一组个人来分担责任,例如,使用阈值密码学,这既复杂又耗时。
为了使用这种提议类型来解决此问题,可以将重要的神经元配置为跟随团队中各个成员控制的神经元。现在,他们可以提交建议以使重要的神经元执行动作,并且只有当大多数人投票赞成时才被采纳。
提交这样的建议需要支付少量费用,以防止拒绝服务攻击。几乎可以执行目标神经元上的任何命令,包括更改遵循规则的命令,从而使团队成员可以动态地进行操作。
使用这种类型的提议,只有在其溶解延迟达到零时才执行溶解神经元的最后一步,因为这将允许对锁定余额进行控制/“所有权”转移。(此规则的唯一例外适用于非营利组织,可以不使用初始私钥而溶解其神经元。)
为防止神经元偶然落入委托人私钥的恶意控制之下,密钥可以被破坏,使得神经元只能由其跟随者控制,尽管这使得随后无法释放余额。
ManageNetworkEconomics(#NetworkEconomics)
这是一种提案类型,可以更新一个或多个经济参数:
拒收成本:将收取被拒绝提案的提议者的ICP的费用—防止琐碎的提案被散布。
最小神经元抵押:设置创建神经元所需的最小ICP数,当增加溶解延迟或将神经元状态从溶解转变为衰老时,也必须遵守相同的限制。
神经元管理费:每个神经元管理提案的ICP成本,在这里,NNS代表特定神经元进行工作,并且将收取少量费用,以防止过度使用此功能(例如,垃圾邮件)。
最低ICP/SDR率:为防止错误,ICP/SDR速率有一个下限,由网络经济提案管理。
产生的神经元的溶解延迟:由于现有神经元的成熟而产生的神经元的溶解延迟。
最大节点提供者奖励:在单个分发事件(建议)中分发给节点提供者的最大奖励。
交易费:每笔总账交易必须支付的交易费。
每个主题最多可保留的提案数量:每个主题最多可保留的提案数量,当给定主题的提案总数大于该数目时,可以删除达到“最终”状态的最旧提案以节省空间。
Motion(#Governance)
提案是可以采用或拒绝的文本,采用提案时不执行任何代码,通过的议案应指导互联网计算机生态系统的未来战略。
ApproveGenesisKYC(#KYC)
当在创世期间创建新的神经元时,它们的GenesisKYC=false。这限制了他们可以执行的操作。具体来说,它们无法产生新的神经元,并且一旦其溶解延迟为零,就无法支付它们的余额,也不会将其余额解锁到新帐户中。该提案为批次的委托人设置了GenesisKYC=true。
特别说明:创世事件以神经元的形式分配所有ICP,其原理必须进行KYC。因此,GenesisKYC=true会自动设置创世之后创建的所有神经元,因为它们一定会自已从余额中派生出来。
AddOrRemoveNodeProvider(#Participant Management)
为节点提供者分配(或撤消)身份,将与法人相关的关键信息相关联,这些信息应提供一种唯一标识该身份的方法。
RewardNodeProvider(#NodeProviderRewards)
建议向Gen-1节点提供者奖励一定数量的ICP,作为向IC提供Gen-1节点的补偿。
SetDefaultFollowees(#Governance)
指定新创建的神经元应具有的跟随者的列表。
以下是调用其他NNS容器的提案类型的列表:
CreateSubnet(#SubnetManagement)
将一组指定的节点(通常从数据中心和运营商处抽取,以确保其独立性)组合到一个新的分散子网中。该外部更新的执行首先启动分布式密钥生成协议的新实例。该协议的文字记录连同子网的初始配置信息一起被写入注册表中的新子网记录中,组成该子网的节点从那里开始对其进行提取。
AddNodeToSubnet(#SubnetManagement)
将新节点添加到子网中。该节点当前无法分配给子网,该建议的执行将更改现有子网记录以添加节点。从NNS的角度来看,此更新是注册表中子网记录的简单更新。
InstallNetworkCanister(#NetworkCanisterManagement)
建议添加一个要在NNS子网中安装并执行的新容器。根容器控制此提议类型,该根容器控制NNS上除自身之外的所有容器。该呼叫还期望将安装Wasm模块。
UpgradeNetworkCanister(#NetworkCanisterManagement)
升级NNS子网中现有容器的建议。此提议类型由根容器执行。除了升级目标容器的Wasm模块外,提案还可以设置授权信息和分配。
BlessReplicaVersion(#NodeAdmin)
提议对可以将副本升级到的新版本给予祝福。该建议在注册表中注册一个副本版本(由安装映像的哈希标识)。除了为该版本创建记录之外,提案还将该版本附加到可以安装在子网中的“受祝福的版本”列表中。就其本身而言,该建议不会影响任何升级。(将来,在任何给定时间,只有一个受祝福的副本软件版本。)
RecoverSubnet(#SubnetManagement)
更新子网的恢复CUP(用于恢复已停止的子网),找到其子网的恢复CUP的节点将从注册表中加载该CUP,然后从该CUP重新启动副本。
UpdateSubnetConfig(#SubnetManagement)
更新子网的配置。该建议更新注册表中的子网记录,当子网中的节点引用相应的注册表版本时,这些更改将由子网中的节点接收。子网配置包含必须在整个子网中保持一致的协议参数(例如消息大小)。
AssignNOID(#ParticipantManagement)
向节点操作员分配一个身份,将有关其所有权,其所在的辖区以及其他信息的关键信息与相关联,节点运算符作为记录存储在注册表中。它包含该节点运算符的剩余节点余量,即该节点运算符仍可以添加到IC的节点数。当节点操作员添加一个附加节点时,剩余的余量会减少。
RootUpgrade(#NetworkCanisterManagement)
有关在NNS子网中升级根容器的建议,该提案由控制根容器的生命线容器处理,该提案将更新Wasm模块以及授权设置。
SetICPSDR(#ExchangeRate)
指导NNS以IMF SDR衡量的1 ICP的市场价值,此设置会影响cycles定价(因为cycles值相对于IMF SDR应保持不变)。
UpgradeSubnetToReplicaVersion(#SubnetManagement)
更新在给定子网中运行的副本版本,该提案更改了指定子网中使用的副本版本,该版本必须包含在受祝福的副本版本列表中,子网创建下一个常规CUP时执行升级。
ClearProvisionalWhitelist(#NetworkEconomics)
清除临时白名单,该白名单允许列出的主体创建具有cycles的容器。该机制仅用于引导和测试,之后必须停用。
RemoveNodeFromSubnet(#SubnetManagement)
从子网中删除节点,然后,它可供重新分配。该建议的执行将更改现有的子网记录以删除节点。从NNS的角度来看,此更新是注册表中子网记录的简单更新。
SetAuthorizedSubnetworks(#Governance)
通知cycles派生容器某个主体被授权使用某些子网(从列表中),也可以用于设置允许使用未经特殊授权的主体的子网的“默认”列表。
SetFirewallConfig(#SubnetManagement)
更改注册表中的防火墙配置(配置子网区块链副本将与之通信的边界节点)。
UpdateNodeOperatorConfig(#NodeAdmin)
在注册表中更改节点操作员的权限。
StopOrStartNNSCanister(#NetworkCanisterManagement)
停止或启动NNS容器。
ICP令牌
ICP是本地实用程序令牌,在网络中扮演三个关键角色:
促进网络治理
ICP令牌可以被锁定以创建神经元,这些神经元通过投票参与网络治理,从而可以获取经济回报。
用作计算的cycles的产生
ICP提供了可以转换为“cycles”的值的源存储,这些值可以计算使用时燃烧的燃料的作用。NNS以可变速率将ICP转换为cycles,因此选择该网络以确保网络用户始终可以以近似恒定的实际成本创建新的cycles,从而可预测获得燃料的成本。
奖励参与者
该网络铸造了新的ICP,以奖励和激励那些使网络发挥作用的重要角色,包括:向参与治理的参与者提供“投票奖励”,以及提供“节点提供者奖励”那些操作托管网络的节点机器的用户。
分类帐
ICP分类帐托管在NNS中,并以电子表格的方式记录ICP的所有余额。每行称为一个“帐户”,其中有两个字段(即,有两个“列”):
帐户标识符(字节)
从“控制”帐户的“主要”身份得出的唯一值。当前,委托人必须是:公钥对的所有者,或作为NNS一部分的智能合约(容器)。帐户标识符是通过散列域分隔符、主体ID和子帐户(如果未提供子帐户,则为零)的串联而得出的。
余额(正整数,代表ICP的百万分之一)
分配给帐户本金的ICP数量。
当委托人是公钥或容器时,他们可以对帐户应用以下操作:
发送
将部分ICP余额发送到另一个帐户。如果将所有ICP发送到另一个帐户,则该发送帐户将不存在(即,从分类帐中删除)。
通知
当发送的资金的目的地是NNS容器的帐户(例如,治理容器的帐户)时,发送者可以要求分类帐将传入的转帐通知接收者容器。然后,接收方容器可以对此通知执行操作。使用此功能的两个示例是创建神经元和更新神经元的抵押。这些将在下面详细介绍。
需要分类帐和治理系统之间进行交互的操作(神经元):
创建神经元
当委托人是公钥持有人时,他们可以将一部分余额锁定在新的神经元内。从技术上讲,创建神经元是分两个阶段完成的。首先将要抵押的ICP转移到治理容器的帐户中(该帐户对应于新的神经元-此处省略了关联的详细信息)。
然后将传入的转移通知治理容器,以更新其内部神经元簿记。如果整个余额都锁定在新的神经元内部,则该帐户将不复存在(即,从分类账中删除)。要将这些ICP移至其他帐户,例如回到原始帐户,可以像正常余额一样再次控制它们,必须将相关的神经元完全溶解并分配(销毁)。
更新抵押
通过将神经元的抵押转移到分类帐中的地址/帐户,并将传入的转让通知治理容器,可以增加抵押。刷新抵押将改变按比例分配的神经元的成熟度和年龄。例如,如果抵押加倍,则到期时间和年龄将减半,因此产出将产生相同的数量,并且年龄奖励将与以前相同(绝对值)。
神经元
神经元可以锁定ICP的余额,并使其所有者能够参与网络管理,从而可以从中获得奖励。
属性
神经元具有以下属性:
身份(uint64)
神经元对象的一般身份。当一个神经元被配置为跟随另一个神经元时,这就是所使用的值。这是在神经元创建时选择的随机64位值。
帐户(字节,私有)
锁定的ICP余额所在的分类帐帐户。
控制器(主ID,私有)
实际控制神经元的主体。主体必须标识充当“主密钥”的公共密钥对,以使相应的密钥应保持非常安全,委托人可能控制许多神经元。
热键(主体ID的列表,私有)
可用于执行具有有限特权(例如投票)的操作,而无需暴露与主体相对应的密钥(例如,可以是WebAuthn密钥)。
CreatedAt(时间戳)
创建神经元时。
AgingSince(时间戳)
对应于此神经元开始老化的时间的时间戳。这要么是创建时间,要么是神经元停止溶解的最后时间。当神经元处于溶解状态时,该值没有意义,因为溶解神经元的年龄始终为零。
DissolveState
在任何时候,最多只能指定WhenDissolved和DissolveDelay之一。
WhenDissolved(时间戳)
当dissolve计时器运行时,它将以Unix纪元为单位存储时间戳(以秒为单位),此时神经元已溶解。在神经元溶解期间的任何时间,神经元所有者都可以暂停溶解,在这种情况下,DissolveDelay将分配给:WhenDissolved减去采取操作时的时间戳。
DissolveDelay(持续时间)
当溶解计时器停止运行时,它将存储溶解计时器将启动多少时间,最多可能是八年。在这种状态下的任何时候,神经元所有者都可以(重新)开始溶解,在这种情况下,采取操作加上DissolveDelay后,WhenDissolved将被分配给时间戳。
成熟度(正数-百分比)
神经元的成熟度,它决定了其生成新神经元的能力以及新铸造的ICP的相应锁定余额,其期望值等于该值(占生成神经元所占权益的百分比)。当创建新的神经元时,它们的成熟度为零。当神经元投票时,随着时间的流逝,NNS会增加其成熟度来奖励他们。
关注关系(从主题到关注者列表的映射,不公开)
可以将神经元配置为通过逐个主题关注其他神经元来自动投票。对于任何有效主题,都可以指定关注者列表,并且神经元将遵循大多数关注者对属于该主题类型的提案的投票。如果指定了空主题,则它将作为一个包罗万象的功能,使神经元能够在未指定规则的情况下追随跟随者的投票。
最近投票(公开)
保留最近投票的记录,这可以为那些希望评估是否跟随神经元或其跟随者如何投票的人提供指南。
NotForProfit(布尔值)
此神经元是否“非营利”,使其可通过投票溶解。
可以计算以下属性:
年龄(秒)
根据AgingSince和当前时间计算得出的值
即自创建神经元或上一次停止溶解以来经过的时间。从概念上讲,每当神经元开始溶解时,其年龄就会重置为零,并在溶解时保持为零。如果溶解神经元已关闭溶解,则当前时间成为有效神经元创建日期,以用于计算年龄。
状态(已锁定或已溶解或已溶解)
由DissolveState和当前时间计算得出
LOCKED:在此状态下,神经元被特定的DissolveDelay锁定。它随着时间的流逝而逐渐增长,并且如果DissolveDelay至少为六个月,它可以投票。可以调用方法start_dissolving将神经元转移到DISSOLVING状态。方法crement_dissolve_delay可用于增加溶解延迟,而不会影响神经元的状态或年龄。
溶解:在这种状态下,神经元的有效溶解延迟会随着时间的流逝而减少。溶解时,神经元的年龄被认为是零。最终它将达到DISSOLVED状态。可以调用stop_dissolving方法将神经元转移到LOCKED状态,并且神经元将再次开始老化。可以使用creation_dissolve_delay方法来增加溶解延迟,但这不会停止计时器或影响神经元的年龄。
溶解:在溶解状态下,可以使用分配方法分配神经元的抵押。它不能投票,因为其溶解延迟被认为是零。如果在此状态下调用方法gain_dissolve_delay,则神经元将以指定的溶解延迟被锁定,并再次开始老化。神经元持有人有动力不要长时间将神经元保持在溶解状态:如果持有人想使代币具有流动性,他们将支付神经元的抵押,如果他们想获得投票的奖励,则会增加溶解延迟。如果这些激励措施证明不足,则NNS可能会决定对溶解的神经元施加进一步的限制。
ControlByProposals(布尔值)
如果神经元在#NeuronManagement主题上具有非空的跟随者列表,则为true
如果神经元在ManageNeuron主题上指定了跟随者,则可以通过类型为ManageNeuron(#NeuronManagement)的提案进行管理,该提案只能由神经元的自己的追随者。
这为高度安全敏感的神经元的管理提供了基础,因为它允许在没有热键或主体密钥的情况下对其进行维护,而这些密钥可以保存在冷库中甚至被破坏(只要相关的ICP平衡)无需解锁)。
例如,DFINITY基金会或互联网计算机协会可能会公开将根据其意愿进行投票的特殊神经元的地址,以便其他人可以配置其神经元以跟随他们,并利用他们在治理方面的专业知识和努力。
这种做法的一个问题是,它们带来了以下风险:公开神经元管理中使用的密钥可能会遭到破坏,从而使黑客能够根据自己的意愿控制并“欺骗”大量跟随神经元进行投票。
但是,如果公开的神经元启用了管理建议,则可以由其跟随的神经元(其跟随者)进行管理,这些神经元通常由大量无法同时被勒索的团队成员控制,而无需使用密钥。
指令
控制神经元的主体可以指示其执行以下操作:
开始溶解
溶解延迟就像一个厨房计时器,只能向一个方向旋转。可以任意增加它,但只能通过打开溶解模式并递减计数来减少它。可以指示神经元开始“溶解”。当神经元正在溶解时,其溶解延迟会随着时间的流逝而下降,直到其停止或达到零为止。当神经元的溶解延迟低于六个月时,它将无法投票(或赢得投票奖励)。一旦溶解延迟达到零,它就会停止下降,并且控制主体可以指示神经元进行分配。
停止溶解
可以指示正在溶解的神经元停止,因此其溶解延迟随时间而下降。
支付
当神经元的溶解延迟为0时,其控制主体可以指示其支付神经元的抵押。其锁定的ICP余额被转移到指定的新分类帐帐户,并且神经元和其自己的分类帐帐户消失。
增加溶解延迟
神经元的溶解延迟最多可以增加到八年。
生成
当神经元的成熟度超过阈值时,可以指示它生成新的神经元。这将创建一个新的神经元,从而在分类账上锁定ICP的新余额。新的神经元可以保持与其父级相同的委托人的控制,也可以分配给新的委托人。当神经元产生新的神经元时,其成熟度将降为零。
添加热键
添加可用于管理神经元的新热键。这提供了使用委托人的冷键来管理神经元的替代方法,神经元可能繁重且难以保持安全,特别是如果定期使用它。热键可能是在用户设备(例如智能手机)内部维护的WebAuthn密钥。
删除热键
删除先前已分配给神经元的热键。
可以使用已配置的主体或热键来启动以下操作:
投票
让神经元投票通过或拒绝具有指定ID的提案。
跟随
添加一条规则,该规则使神经元可以通过指定一组遵循多数票的跟随者神经元来自动对属于特定主题的提案进行投票。这种遵循规则的配置可用于:
a)在多个实体之间分配对投票权的控制权;
b)当其所有者缺乏时间评估新提交的提案时,自动进行神经元投票;
c)当其自己的所有者拥有时间时,自动进行神经元投票缺乏评估新提交的提案的专业知识;
d)用于其他目的。
遵循规则指定一组跟随者,一旦大多数追随者投票赞成通过或拒绝属于指定主题的提议,神经元就会以相同的方式投票。如果大多数追随者无法采纳(例如,因为他们在收养和拒绝之间划分了50–50),然后神经元投票拒绝。
如果在提案主题为空的情况下指定了规则,则它将成为一个包罗万象的遵循规则,它将用于对属于未指定特定规则的主题的投标进行自动投票。如果关注者列表为空,则这将有效删除关注规则。
密码经济学
概述
神经元提供了通过参与治理获得奖励的机会,奖励以增加的神经元成熟度的形式分配给那些投票的人,这最终允许产生包含新铸造的ICP的新神经元。
但是,从创建神经元获得的总体经济结果也将随着锁定ICP的相关平衡值而波动,而ICP在神经元存在的整个过程中可能会波动。
为了最大程度地提高经济效益,神经元所有者强烈地希望首先确保其神经元始终参与投票,以便他们获得尽可能多的投票奖励,其次要以与自己的愿景最一致的方式对提案进行投票什么行动最能推动网络的整体成功。
溶解延迟
密码经济学的细微差别与神经元溶解延迟有关,当某人希望出售ICP的锁定余额时,如果在可以解锁和出售的确切将来时刻达到最大可能价值,他们将受益最大。
考虑锁定神经元时,该时刻始终是将来的“溶解延迟天”,这在神经元溶解的每一天都越来越近。
同时,如果神经元所有者投票赞成在不久的将来实现网络价值最大化的长期观点,则最好地服务于网络的长期成功。
出于这样的原因,NNS会通过向神经元分配更大的奖励来延长其溶解时间,从而激励神经元拥有者尽可能延长其溶解时间(最长可配置为八年)。
由于当神经元拥有者具有长远的眼光时,神经元的投票在决策中更有用,因此NNS也会将更大的权重施加于来自神经元的投票上,因为它们的溶解延迟越大,并且溶解延迟少于六个月的神经元就不会受到影响,从而防止一起投票。
当然,如果可以转移锁定的余额,则该方案将给网络带来较少的好处,因为这将使神经元所有者可以随时“出售其神经元”的选项,即使相对于未锁定的余额必须打折也是如此。
51%的治理攻击
一个主要的安全问题是防止攻击者获得51%的投票权,甚至不足以使攻击者能够平衡收支平衡,以支持那些不明智的投票者,这将损害网络的成功。
这里的“攻击者”一词同样适用于希望损害网络的行为者,其影响会因偶然而受到破坏的行为者,以及可能只是过于集中权力的行为者。
幸运的是,在所有条件都相同的情况下,锁定在NNS内部的ICP使得获得此类抵押的成本过高。
此外,所需的财务投资将难以收回,因为如果网络受到损害,已购买并锁定的ICP将会极大地损失价值。
即使资源不那么在意-例如,攻击者是一个恶毒的国家行为者-解锁的ICP不能在金融交易所上快速购买,因为ICP的总体供应中的绝大部分都锁定在神经元中以获取奖励。
这将迫使这种攻击者随着时间的流逝缓慢地建立自己的阵地,由于大量购买产生的购买压力也推高了价格,从而使后续购买变得越来越昂贵。
由于这些原因,在不获取锁定的ICP余额的情况下,不可能累积51%的投票权。这反映了为什么不能为神经元建立市场很重要。
在这种情况下,攻击者可能会试图制造市场恐慌,以便他们能够快速低成本地大量获取锁定的抵押。
例如,他们可能将对网络的持续严重的DoS攻击与假新闻的广泛传播以及对社交媒体的负面意见相结合,以使神经元所有者确信其锁定的抵押有变得一文不值的风险,从而进行大规模的“抛售”。
尽管国家行为者实际上不太可能进行这样的攻击,但是开放网络和数字资产的政治确保了大规模狂热和市场崩溃的可能性更大。
这样的事件会导致投票权的重组,这不符合网络的利益,尤其是在选举结果不佳的情况下,这种投票权突然集中到少数人手中。
这进一步反映了为什么神经元市场不受欢迎。
计算投票奖励
概述
我们首先确定应将ICP总供应量的90%锁定在神经元中。
然后,我们估计必须以锁定新版ICP的方式向那些锁定其ICP的人提供什么回报,以激励90%的参与。
这使我们能够计算出成功后必须支付的总奖励。
然后,我们决定不考虑当前的参与水平而分配此数量的新铸造的ICP,以便在参与率达到90%之前,参与者将获得更大的奖励,从而使市场说服那些目前未参与的人。
我们估计所需回报占当前供应量的百分比,并允许其随着时间的推移而下降,以解决随着网络变得更加稳定而使余额锁定下降的风险。
我们首先分配10%的供应量(按年计算),然后下降,直到八年内分配5%的供应量。
算法
神经元的成熟度从0开始,但随着投票活动的增加而增加。
当神经元的成熟度增长到某个阈值以上时,它可以生成一个包含新铸造的ICP的新神经元,从而将其自身的成熟度重置为零。
预期中,派生神经元中新铸造的ICP神经元的数量等于锁定在父神经元内部的ICP(受父神经元的成熟程度影响)。
因此,例如,包含100 ICP且成熟度为10%的神经元可以产生预期包含10 ICP的新神经元。
新产生的神经元的溶解延迟只有一天,因此如果需要,可以轻松地检索锁定在内部的ICP。
当然,新产生的神经元的年龄为零天。
在神经元成熟度和它收集的投票奖励之间有一个大致相等的信息,而这些奖励尚未通过产生另一个神经元而撤回。
等价是近似的,因为成熟只决定了预期中派生神经元内部将有多少ICP,因为“派生”操作存在一定程度的不确定性。
每隔24小时,我们必须计算增加多少ICP参与投票的每个神经元的成熟度。
我们首先计算可能创建和分配的ICP标称最大数量,这将反映为神经元成熟度的增加。
一旦有了这个数量,我们就可以计算每个神经元在考虑诸如锁定的ICP数量、配置的溶解时间和年龄等因素时应获得的奖励的相对份额。
我们从当前的ICP供应量以及自创世以来的天数得出可以铸造和分发的ICP的名义最大数量。
首先,这等于ICP供应的10%除以一年中的天数(通常为365天,闰年为366天)。
在八年的时间里,这一比例下降到了5%。
请注意,由于在此期间ICP的供应可能会增加或减少,所以实际上实践中的投票奖励可能不会减半。
我们希望每年的发生率是10%
我们希望创世+八年的比率为每年5%,此后保持不变
我们希望速率是时间的二次函数
我们希望速率在变得平坦时相对于时间是可区分的
将发生时间称为G,在G和G+8y之间的任何时间t内,时间t的总奖励R(t)由下式给出:
R(t)= 0.05 + 0.05 [(G + 8y – t)/ 8y]²
或更笼统地说:
R(t)= Rf +(R0 – Rf)[(T – t)/(T – G)]²
其中R0是初始比率(10%),Rf是最终比率(5%),T是比率趋于平稳的时间(G + 8y)。
注意:
R(G)= Rf +(R0 – Rf)[(T – G)/(T – G)]²= Rf +(R0 – Rf)= R0
R(T)= Rf +(R0 – Rf)[( T – T)/(T – G)]²= Rf
R'(t)= 2(R0 – Rf)(T – t)/(T – G)²
R'(T)= 0
在给定的时间点上,神经元的投票权计算如下:
Neuron_stake * dissolve_delay_bonus * age_bonus
溶解延迟奖金是介于1和2之间的值,并且是溶解延迟的线性函数(最大值为八年),年龄溶解奖金是介于1和1.25之间的值,并且是溶解年龄的线性函数。
当神经元(上限为四年)进入锁定状态时,它开始衰老。
因此,神经元可以通过增加其溶解延迟而将投票权提高多达100%,而通过衰老则可以将投票权提高多达25%。
这些奖金是累积性的,因此ICP为100的神经元的最大投票权为250。
当神经元被锁定,最大溶解延迟为八年,并且已经老化至少四年时,就可以实现这一点。
要分配给定奖励期(通常为一天)的投票奖励,我们首先确定此奖励期内包含的提案集:这些提案是1)尚未就投票奖励达成和解的提案,2)不再开放投票(即,其投票期已到期)。
接下来,将通过投票接受或拒绝的神经元对这些提议贡献的总投票权相加。
最终,每个神经元将按其对这些提议的投票权来获得相应的奖励。
加入我们的开发人员社区,并在forum.dfinity.org上开始构建。
来源:DFINITY
翻译:Catherine
进DFINITY交流社群,请添加小助手微信:
comiocn
长按关注
DFINITY微信公众号
给你第一手资讯和项目信息
更可随时答疑解惑