Nyzo:一种高效的区块链

前言

Nyzo是一个开源、高度分散、民主和高效的区块链。区块时间为7秒,系统可以很好地扩展到高交易量。这与您看到的大多数新硬币不同:这不是另一个项目的衍生产品,它不仅是一些新功能或其他项目的轻微设计变更。这是全新的代码,从根本上构建成为世界上最有效、最民主、最易于使用的加密货币。

术语和符号

该系统中的硬币称为“nyzo”(复数“nyzos”)。nyzo的前缀是数学交集符号∩。因此,“5 nyzos”将被写为“∩5”。最小的测量单位是微米级。微米即是1 / 1,000,000的nyzo。microsyzo的前缀是小写的希腊字母mu,μ。因此,“15 micronyzos”将被写为μ15。为了避免歧义并消除舍入问题,所有交易都在程序和区块链级别以微米级处理,并且分数微米级不能在系统中的任何地方指定。

在该系统中讨论了几个“边缘(edges)”。“冻结边缘(frozen edge)”是验证者已经同意它永远不会改变的最高块,并且建立共识机制以尽可能快地扩展冻结边缘,同时确保没有两个验证者真诚地冻结不同的块。同一水平。“牵引边缘(trailing edge)”是确定冻结边缘状态所必需的最低块,“保留边缘(retention edge)”是验证者为正常请求提供服务的最低块。基于区块链的特征精确地定义冻结边缘和牵引边缘,而保留边缘是牵引边缘后面的任意缓冲区,其在引导新验证器中是有用的。

多样性的证明(Proof of diversity)

多样性证明区块链使用验证周期分析来建立区块链的权威形式。这不是工作证明(proof-of-work),也不是股权证明(proof-of-stake)。这是一个全新的证明系统,依靠多样化的参与力量。虽然多样性证据有其独特的关注点,必须解决以确保区块链的完整性,但它不受工作量证明和证据支付系统固有的许多攻击和问题的影响,它是显着提高效率。

多样性证明的基本概念很简单。验证者轮流生成循环顺序的块。一些简单的规则确保验证程序既不会过快地添加到循环订单中,也不会从循环订单中删除。为了在任何有意义的时间内产生可信的区块链伪造,攻击者需要获得目前在区块链上工作的验证者的一半以上的私钥。

对于区块链中的任何块,该块的验证周期被定义为最长的块列表,以该块结束,每个块包含不超过一个验证器的实例。考虑以下区块链,其中数字是块高度,字母是验证者:

20A,21B,22C,23A,24B,25C,26A

在该区块链中,块26的验证周期包含块26,25和24.该周期不包含块23,因为验证器A已经在块26的循环中。块25的验证周期包含块25,24和23,该循环不包含块22,因为验证器C已经在块25的循环中。

如果验证者对链是新的,则相同的定义成立。为了说明,我们在方框27添加验证者D:

20A,21B,22C,23A,24B,25C,26A,27D

块27的验证周期是块27,26,25和24.该周期不包含块23,因为验证器A已经存在于块26。

块的前一个循环是紧接在当前循环之前的循环。该示例中的块27的前一循环将包含块23,22和21,但不包含块20,因为验证器A已经在块23的该循环中存在。

“新”验证器被定义为除前一周期的最后验证者之外的任何验证者。“现有”验证器被定义为前一周期的最后验证器。如果现有验证程序错过了一个循环,则下次验证一个程序段时,它将被视为新的验证程序。

基于这些定义,我们声明了两个规则来保护多样性区块链。

多样性证明(PoD)规则1:在区块链中的第一个现有验证者之后,只有在周期,前一周期或前一周期之前的两个块中的其他块都没有被新验证者验证时,才允许新的验证者。 。

此规则的存在是为了确保攻击者无法通过快速引入他们控制的验证程序来控制链。在前一个周期之前添加两个块是为了避免在链中聚集新的验证器。

多样性证明(PoD)规则2:在Genesis块之后,块的周期必须长于该周期和前两个周期中所有周期长度的最大值的一半。

此规则的存在是为了确保正在尝试控制区块链的攻击者不能排除正在验证区块链的大多数验证者。为了控制链的方向,必须控制超过50%的当前有效验证器。在这个和前两个周期中的块被认为是在机会时刻避免分散在链的某些部分周围的验证者的分歧。

除非循环长度也从一个块增加到下一个块,否则在此规则中计算的度量不能从一个块增加到下一个块。这很重要,因为它确保通过此规则的每个块都可以无限期地扩展。

这是唯一的两个区块链规则,它们共同保证,从区块链的任何一点开始,必须控制一半以上的活动验证者继续生成区块链的有效版本。与拥有足够计算资源的任何人都可以随意操纵的工作证明不同,多样性证明需要积极参与特定区块链以对该区块链产生任何影响。

共识技术

多样性证明提供了一种机制,用于确定网格同意生成哪种版本的区块链,但我们还需要一种机制,网格可以使用该机制就其将继续扩展的链的哪个版本达成一致。

评分(Scoring)

每个块都有一个基于签名验证者的分数。较低的分数优于较高的分数。在每个高度处,相对于先前高度处的块计算增量分数,并且块的总分数是返回到冻结边缘的所有增量分数的总和。

对于由现有验证者签名的块,增量分数为零加上前一个块的循环长度与该块的循环长度之差的四倍。如果验证程序在网格中未处于活动状态,则会向增量分数添加五个。

对于由新验证者签名的块,增量分数为负6,加上新验证者投票总计列表中验证者位置(零索引)的4倍。十二个被添加到该列表中不存在的新验证者的分数中,其被限制为最大大小为三。

表决(Voting)

验证者可以多次更改对块的投票。投票有时间戳,以防止旧票的重播攻击。

如果块的分数小于0,则验证者可以在冻结前一个块之后立即对其进行投票。否则,对于一个块高于0的每个点,它必须等待最少2秒加上20秒。因此,得分为0的块可以在2秒后投票,而得分为4的块可以用于82之后。秒。

如果验证者的本地列表中的前导块具有超过50%的投票,则如果允许验证者基于其分数对该块进行投票,则验证者将其投票改变为该块。如果验证者的本地列表中的前导块没有超过50%的投票,则验证者将其投票更改为该块,如果允许验证者在10秒以前对该块进行投票。

如果这些条件都不成立,则验​​证者如果允许基于该块的分数进行投票,则对具有最低分数的块进行投票。在存在这样的块之前,验证者等待投票。

投票制表和冻结块(Vote tabulation and freezing of blocks)

在统计选票时,只计算冻结边缘验证周期中验证者的投票。如果该块的投票超过验证周期大小的四分之三,则在两个后续投票表中间隔至少0.5秒计算,冻结一个块。

在四分之三的门槛上,超过一半的周期将不得不恶意地向不诚实的验证者发送不同的投票以引起链的分歧,假设最坏的情况是剩余的诚实验证者在哪个块上均匀地分配到冻结。

交易费(Transaction fees)

所有交易产生0.25%的费用。该费用在该块的验证者和前九个块的验证者之间平均分配。对于块9之前的块,费用在该块的验证者和所有先前块之间均匀分配。无法平均分配的交易费用向下舍入到最近的微米级,其余的交易费用转到下一个区块。

维护费(Maintenance fees)

除了00000000000000000000000000000000-00000000000000000000000000000001之外的每个帐户,如果余额大于0,则每隔500个块收取μ1的费用。此费用旨在通过创建许多小帐户来打击有意识的压倒性验证者,对于合法帐户来说,这个数字可以忽略不计。每年的街区数量刚刚超过450万,这导致每个帐户的维护费用大约为每年∩0.009010。

加入网格(Joining the mesh)

启动Nyzo验证程序时,它会向其他验证程序询问有关区块链当前状态的信息。验证程序的位置在文件/var/lib/nyzo/production/trusted_entry_points中指定。在初始分发中,Nyzo验证程序(verifier0.nyzo.co到verifier9.nyzo.co)列在此文件中,但可以随时修改。

每个IPv4地址只允许运行一个验证程序。由于节点占用的计算能力非常低,因此单个系统可以运行Nyzo软件的许多实例,并占用不成比例的交易费用。这将阻止某些用户在具有共享公共IP地址(宿舍,办公室)的情况下运行Nyzo验证器,但这是确保事务验证公平性的可接受限制。此外,此限制不会阻止地址处的多个Nyzo客户端。

有两种机制来强制执行IPv4地址限制。首先,在等待加入验证周期作为新验证者的验证者列表中,任何验证者在地址处的变化都会导致该地址降级到队列的末尾。其次,当现有验证者生成块时,如果该验证者当前未在网格中列为活动,则应用惩罚分数。为了防止在较小的IP地址集上对大量验证器进行混洗,仅允许在稍大于当前验证周期长度的时间间隔的时间间隔重新分配IP地址处的验证器。

( 备注:现已改成随机抽签机制,新建的verifier或者IP有变换的verifier需要等待30天才能进入抽签池,只有在抽签池里才能被选进Cycle当验证者。)

创世纪块(Genesis block)

Genesis块启动Nyzo区块链并为系统生成所有硬币。它包含一个类型为0的事务,它将∩100,000,000转移到地址64afc20a4a4097e8-494239f2e7d1b1db-de59a9b157453138-f4716b72a0424fef。

民主化(Democratization)

为了确保完全民主化,我们将在Genesis块的12个月内停用所有验证器(verifier0.nyzo.co到verifier9.nyzo.co)。我们最初计划停止向官方Nyzo存储库提交代码,继续我们在Nyzo的叉子或其他实现方面的工作,而不透露我们作为Nyzo的原始开发者的身份。我们之所以计划好这个,是因为我们看到太多的开源项目都是从一个小团体或个人那里得到很好的想法,后来由于尊重那个团体或个人的意见而不是更好的想法而被阻止。整个社区。当只有一个团队控制所有重要决策时,开源并不能发挥其全部潜力。

但是,我们现在觉得在区块链开始后很快就停止对官方存储库的贡献会对项目的进展产生影响,并且会觉得我们放弃了项目。我们仍然希望Nyzo的竞争实施能够得到发展,而Nyzo的民主性质意味着我们无法控制哪个实施或实施在周期中占主导地位。因此,我们计划继续无限期地为官方Nyzo存储库做出贡献,我们将让社群决定是否要使用我们的实现。

虽然多样性区块链区块链有一些必须遵循的规则,但这些规则非常简单,所有共识规则都可以修改或替换,而不会危及多样性的证明。在任何时间点,当前验证周期中主动验证器的决定确定了区块链的方向。

可持续发展(Sustainability)

虽然我们都希望看到加密货币成功,但许多投资专家认为大多数加密货币最终都是完全没有价值的。与具有内在稀缺性或公司股票的实体资产或强制稀缺的法定货币不同,任何人都可以获取现有加密货币的源代码,对其进行一些改进,并发布新的加密货币,而不会将任何价值回馈给原始加密货币。

当然,作为一个开源项目,任何人都可以使用Nyzo源创建一个新的区块链,我们认为这是一件很棒的事情。但是,我们也希望Nyzo加密货币具有长期可持续的价值。虽然特定的加密货币通常不具有内在价值,但围绕货币的社区和技术确实具有这样的价值。我们认为将原始货币的价值与社区和技术的价值联系起来是公平的,我们认为这是确保Nyzo长期保持其价值的最佳方式。

我们的建议很简单:如果技术进步使当前的Nyzo系统或区块链过时,并且需要释放新的区块链,那么该系统中的所有硬币都应该来自原始的Nyzo硬币。应该没有采矿,也不会产生与原始Nyzo硬币无关的新硬币。这并不意味着所有后代的Nyzo必须拥有与当前一代相同数量的硬币。例如,如果第二代有2亿个硬币而不是1亿个硬币,那么交易的每个第一代Nyzo硬币将获得两个第二代Nyzo硬币。

可持续发展计划的工作如下。转移到地址0000000000000000-0000000000000000-0000000000000000-0000000000000001的任何硬币都转移到下一个区块链。下一个区块链将定期检查先前的区块链是否转移到该地址,并将在下一个区块链中生成与前一个区块链上的源标识符和交易金额相对应的适当硬币。民主进程将决定所有这些决策,每一代的当前周期也作为下一代创世纪周期时下一代区块链的开始。

可持续性地址(0000000000000000-0000000000000000-0000000000000000-0000000000000001)是唯一不收取帐户维护费的地址。转移到此地址的所有硬币将在此区块链中永久删除。

虽然这种将资产转移到下一代区块链的方法确实会对下一代区块链造成额外的实施复杂性,但这对于区块链资产的延续而言是一个很小的代价,而不是最初创建这些资产的技术过时。应用这种传递,我们可以想象从现在起200年后第15代Nyzo能够实现全球商业,该系统中的每一枚硬币都具有可追溯到原始Nyzo区块链的Genesis区块的谱系。


原文链接:https://nyzo.co/whitePaper