「区块链」尔格(Ergo)一个具备强适应力的合约币平台

原创 捂风挽笑  |  文章来源:币圈达人发布时间:2020-05-24 01:53  阅读 119 次 评论 0 条
众人帮 趣闲赚 牛帮
摘要:

我们开发了一种全新灵活的区块链协议:尔格。尔格旨在开发分散式应用程序,其主要目的是提供一种有效,安全和简便的方法来实施金融合同。
为实现这一目标,尔格对现有区块链解决方案进行了各种技术和经济上的改进。尔格中的每个硬币都受到尔格脚本(Ergo

我们开发了一种全新灵活的区块链协议:尔格。尔格旨在开发分散式应用程序,其主要目的是提供一种有效,安全和简便的方法来实施金融合同。

为实现这一目标,尔格对现有区块链解决方案进行了各种技术和经济上的改进。尔格中的每个硬币都受到尔格脚本(ErgoScript)程序的保护,尔格脚本程序是一种基于Σ-协议的强大且协议友好的脚本语言。使用尔格脚本,我们可以编码使用硬币的条件:比如谁、什么时间、需要什么外部条件能够使用硬币、以及硬币可以给谁等等。

对轻型节点的扩展支持使得尔格对终端用户友好,因为它允许在不受信任的物品硬件上运行合同。为了能够长期使用,尔格遵循生存性方法 - 它使用不会在未来导致安全问题的广泛研究解决方案,同时还通过新的经济模型来防止性能随时间推移而降低。最后,尔格还有一个可自我修改的协议,这个协议允许它在未来吸收新想法并且进行自我改进。

尔格的愿景

尔格协议非常灵活,将来可被社区更改。 在本节中,我们定义了尔格应该遵循的主要原则,可以称之为“尔格社会契约”。 一旦有故意违反以下任何原则的,那么生成的协议就不应该被称为尔格。

• 去中心化优先。尔格应尽可能做到去中心化:任何形式的,因其失职或恶意行为而会对网络安全造成威胁的组织形式(社会领袖,软件开发员,硬件制造商,矿工,基金会等)都应尽量避免。如果尔格存在进程中出现了任意这种形式的组织,社区应当设法削弱他的影响力。

• 为普通人创建。尔格将是基于它搭建的应用的底层基础。 它适用于多种应用,但其发展重点是为金融合约提供一种有效、安全和简便的实施方法。

• 合约货币平台。尔格是基础层,应用将建立在其上。它适用于多种应用,但其主要聚焦点是提供一种有效、安全和简便的方法来实施金融合约。

• 着眼长期发展。尔格发展的方方面面都从长远的角度出发。在任何时候,尔格都应该具有在没有硬分叉、软硬件升级或其他一些不可预测条件下存活几个世纪的能力。由于尔格的设计定位是一个基础平台,因此搭建在尔格之上的应用程序也应当具备长期生存的能力。这一强适应力性的和长期生存能力也使得尔格成为一个很好的价值存储。

• 开放而且不设访问权限。尔格协议对不论何种形式的运用不设任何限制。它应该允许任何人加入网络并参与协议而无需任何初始操作。与传统的金融体系不同,在尔格协议的核心层上,不应该有救助,黑名单或其他形式的歧视。另一方面,应用程序开发人员可以自由地实现他们想要的任何逻辑,并对其应用程序的道德性和合法性负责

奥托吕科斯(Autolykos)共识协议

任何区块链系统的核心组成部分都是其共识协议,尔格运用的是自行开发的独特工作量证明(PoW)共识协议,称为奥托吕科斯(Autolykos),如下所述。尽管对可能的替代方案进行了广泛的研究,但由于其简单性、高安全性保证以及对轻量客户端的友好性,具有最长链规则的原始PoW协议仍然很收欢迎。然而,通过十年的广泛测试,早期的“一个CPU一票”的概念也存在一些明显问题。

PoW系统的第一个已知的问题来自专用硬件(ASIC)开发,这使得一小部分配备ASIC的矿工能够比其他人快几个数量级、更有效地解决PoW难题。这个问题可以通过内存困难工作量证明方案来解决,减少ASIC和普通硬件之间的差异。最有希望的方法是使用非对称内存困难工作量证明方案,它验证某解决方案的内存需求比此解决方案的内存需求小的多[14,15]。

第二个对PoW网络去中心化的已知威胁是,即使是大型矿工也倾向于在矿池中联合起来,导致少数池运营方(在编写时,比特币中5个,以太坊中2个)控制了超过51%的算力。尽管该问题已在区块链社区里被讨论多次,但在尔格之前还没有出现过任何实际的解决方案。

因此,我们假设矿工的唯一选择是使用以下“算法1”中给出的简单强力方法来创建一个有效区块。

算法 1 区块挖矿

需要注意的是,虽然挖掘过程使用私钥,但解决方案本身仅包含公钥。解算验证由“算法2”完成。

算法 2 区块挖矿

这种方法阻止矿池形成,因为挖矿需要密钥sk:一旦任何池矿工找到正确的解决方案,他就可以使用这个密钥来窃取块奖励。另一方面,揭示单个解决方案是安全的,因为它仅包含公钥并且揭示了2个秘密sk,w之间的单个线性关系。

造成内存困难是源于算法1需要保持整个R列用于主循环执行的事实。每个列表元素占用32个字节,因此N列所有元素需要在N = 226时占用N · 32 =2Gb的内存。矿工可以尝试通过计算这些在运行中的元素而不需要保存在内存中来减少内存要求,但是这样他需要多次计算相同的哈希H(现代GPU大约104次),这就降低了效率和利润。

计算列表R也是一项非常繁重的计算任务:我们首次执行[17]是在Nvidia GTX 1070上,花了25秒来完成所有列表中的2

26个元素的填充。然而,如果矿工在内存中也存储了未完成的哈希值( || || ) u [0, ) H i M pk i N=列表,则该部分就可以被优化,共消耗5个多Gb。在这种情况下,计算未完成的哈希值在挖矿初始化期间应该只进行一次,同时最终确定它们并填充新的头信息的R列,只消耗几十毫秒(在Nvidia GTX 1070上大约50毫秒)。

目标参数b置于难题本身,并通过难度调整算法[18]调整到当前网络哈希率,以保持块之间的时间间隔接近2分钟。该算法试图通过众所周知的线性最小二乘法得出的基于来自前8个周期的数据来预测即将到来的1024个区块长周期的哈希速率。这使得预测比通常的难度调整算法更好,并且还使得“跳币”攻击的利润更低。

尔格的状态

要检查新交易,加密货币客户端不会将账簿与此前发生的所有交易一起使用。相反,它只会用到历史交易中某一笔的状态快照。在比特币核心参考履行中,该快照可看作是活跃的一次性代硬币(即,UTXO),并且交易会在销毁一些代硬币同时也产生新的硬代币。在以太坊中,此快照存在于是长期帐户,而交易会修改某些帐户的货币余额和内部存储。此外,与比特币不同,以太坊上的快照象征是固定写入协议中的,而快照的验证摘要被写入区块头。

尔格遵循比特币的UTXO设计,并使用一次性硬币来代表快照。与比特币的区别在于,除了具有货币价值和能保护脚本外,尔格一次性硬币,称为币箱(box,),还包含了用户定义的数据。与以太坊类似,尔格块还在应用区块后后,存储全局状态的认证摘要,称为stateRoot(状态根)。

尔格币箱由寄存器组成(除了寄存器外别无他物)。此币箱可以有10个标记为R0, R1, . . . , R9的寄存器,其中前四个填充了强制值,其余的可以包含任意数据或为空。

一次性不可变对象(如比特币的UTXO模型)在以太坊的长期可变账户中具有一些优势。首先,它为回放或重排攻击提供了更简单,更安全的保护。其次,并行处理交易更加容易,因为它们不会修改它们访问对象的状态。此外,一项交易是指要么完全按预期修改了系统状态,要么根本没有改变状态(没有因燃气异常、可重入性问题等导致的副作用)。最后,使用一次性硬币构建完全无状态的客户似乎更容易[19](尽管该领域的研究仍处于初始阶段)。

对一次性硬币的一个主要批评是该模型似乎不适合非平凡的去中心化应用。然而,尔格已经克服了这些问题,并通过演示构建在其上的许多非平凡的原型应用来证明这种说法是错误的。

尔格协议以未被先前交易销毁的币箱形式来修复分类帐快照画像。详细地说,矿工应该维护在UTXO集之上构建的类似于梅克尔树状认证数据结构,并且必须在每个区块头中包含该结构的短摘要(仅33个字节)。必须在应用区块后才能计算此摘要。这个经过验证的数据结构构建在AVL+树之上[12],它像常规哈希树一样,允许生成树中特定元素存在或不存在的证明。因此,维护完整树的用户能够生成他们币箱未用证据,并且一个小小的33字节摘要就足以验证这些证据。但是,与常规哈希树不同,AVL+树还允许生成树修改证明,允许验证者计算新的树摘要。尔格矿工需要生成区块修改证明,并且此证明的哈希值与结果状态的摘要要一起包含在区块头中。因此,仅包含当前状态的短小摘要的轻节点就能够验证完整的区块 - 它们可以检查所有用过的币箱已从状态中移除,所有创建的币箱都被添加到状态中并且不再进行任何更改。

AVL+树允许构建有效的经过验证的字典,与先前的解决方案相比,可以减少证明大小并加快验证速度,速度是原来的1.4-2.5倍,使其更适合加密货币应用程序。例如,我们的证明比以太坊中用于相同目的的Merkle Patricia trie(MPT)的证明小3倍(见图1)。

最后,将单个区块中的多项交易的证明打包压缩,将其总长度大概能减少2倍:

图2:左图:2000次交易每次修改的证明大小,作为起始树大小n的函数。右图:对于具有n= 1000000个键的树每次修改的证明大小作为批量大小B的函数。在左右这两种情况下,一半的修改是插入新的(键,值)对,另一半是改变现有钥的值。

因此,尔格状态提供了一种有效且安全的方式来证明其中的特定元素是否存在,以及证明树的修改。尔格智能合约语言支持这些树操作,从而提供了执行第7节中讨论的复杂合约的能力。

适应力强和生存性

作为一个合约币的平台,尔格还应支持长期的合约,至少是一般人的一生这么长。然而,现有的其他新兴的智能合约平台也会遇到性能下降和对外部条件的适应性问题。这就导致了一种情况,即加密货币依赖于一小组开发人员来提供固定硬分叉,否则加密货币将无法生存。例如,以太坊网络已经开始使用工作量证明共识算法,并承诺在未来切换到权益证明。然而,权益证明开发的延迟导致了很多次硬分叉修复[20],同时社区仍然被迫依赖核心开发人员承诺实施下一个硬分叉。

第一个常见的生存性问题是,为了追求普及度,开发人员倾向于在没有适当初步研究和测试的情况下实施事先无准备的解决方案。这样的解决方案不可避免地会出现漏洞,然后出现了仓促的漏洞修复,接着再修复那些错误的漏洞修复...,这就使网络变得不可靠,甚至更不安全。一个值得注意的例子是IOTA加密货币,它实现了各种可扩展性解决方案,包括它的哈希函数和DAG结构,使其能够实现高普及度和高市场资本化。然而,当对这些解决方案进行分析[21,22]时,它揭示了多个严重的问题,包括能够偷盗货币的实际性攻击,随后的硬分叉[23]通过切换到已知的SHA3哈希函数来解决问题,确认了这种创新的无用性。而尔格会使用经过良好测试的稳定解决方案,即使这些解决方案会导致短期创新变慢。尔格中使用的大多数解决方案都在同行评审会议[12,18,3,8,24,25]中提出的论文中正式化了,并且在社区中也得到了广泛讨论。

去中心化(以及生存性)面临的第二个问题是缺乏安全的去信任轻量客户端。尔格解决区块链技术的这个问题,而且不会产生新的问题。由于尔格是PoW(工作量证明)区块链,因此它很容易从区块内容中提取小的区块头。

只有该区块头就能验证在其上完成的工作,并且区块头链足以用于最佳链选择和与网络同步。区块头链虽然比完整的区块链小得多,但它仍然会随着时间推移线性增长。最近对轻量客户端的研究为轻量客户端提供了一种通过下载更少量数据来与网络同步的方法,从而解锁使用去信任的低端硬件(如手机)加入网络的能力[26,27] 。尔格使用经过验证的状态(参见第4节),对于区块中的交易,客户端可以下载其正确性的证明。因此,无论区块链大小如何,有手机的普通用户都可以加入网络并开始使用具有与完整节点相同的安全保证的尔格。

读者可能注意到了第三个潜在的问题,即虽然对轻客户的支持解决了尔格用户的问题,但它并没有解决尔格矿工的问题,矿工仍然需要保持整个状态以进行有效的交易验证。在现有的其他区块链系统中,用户可以将任意数据置于此状态中。这些数据永远存在,会产生大量尘埃,并且随着时间的推移它的大小会不断增加[28]。大的状态会导致严重的安全问题,因为当状态不适合随机存取存储器时,攻击者可以触发交易,他的验证由于需要随机访问矿工的存储而变得非常慢。这可能会导致分散式阻断服务(DoS)攻击,例如2016年以太坊上的攻击[29]。此外,社区对此类攻击的恐惧以及“状态膨胀”问题对矿工或持有状态的用户没有任何补偿阻止了扩展解决方案,否则可能已经执行(例如更大的区块大小)。为了阻止这种情况发生,尔格有一个存储租用特性如果一个币箱在该状态下保持4年而不被移动,矿工可以对该状态下保留的每个字节收取少量费用。

这种类似于常规云存储服务的想法最近才被提出用于加密货币[30],并且产生了几个重大的影响。首先,它确保了尔格挖矿总是稳定的,而不像比特币和其他PoW(工作量证明)货币,挖矿可能会在完成发行后变得不稳定[31]。第二,状态大小的增长变得可控和可预测,从而帮助尔格矿工管理他们的硬件需求。第三,通过从过时的币箱收取存储费用,矿工可以将硬币返回循环中,从而防止由于丢失密钥而导致的循环供应稳定减少[32]。所有这些影响都支持尔格在技术和经济上的长期生存性。

对生存性的第四个重要挑战是外部环境的变化和对协议的要求。协议应该适应不断变化的硬件基础架构和新思路,以提高随着时间推移出现的安全性或可扩展性,用例的演变等等。如果所有规则都是固定的,不能用去中心化的方式改变它们,即使是简单的持续变化也都导致激烈的辩论和社区分裂。

例如,对比特币中区块大小限制的讨论导致其分成几个独立的硬币。相比之下,尔格协议是可自我修改的,能够适应不断变化的环境。在尔格中,区块大小等参数可以通过矿工投票进行恰当地更改。在每个1024区块投票周期的开始,矿工最多可以提出改变2个参数(例如区块大小的增加和存储费用因素的减少)。在该周期剩余的时间,矿工采取投票来决定更改的批准还是拒绝。如果该周期内的大多数投票支持更改,则新值将写入下一个周期的第一个区块的扩展部分,并且网络开始使用更新的值进行区块挖矿和验证。

为了采纳更基础性的变化,尔格采用了软分叉方法,允许在保持旧节点运行的同时显著地改变协议。在一个周期的开始,矿工也可以提出投票,针对是否对描述受影响验证规则做基础性改变(例如,向尔格脚本添加新指令)。对这些激进性变化的投票持续32,768次,并且要求有至少90%选“是”的投票。一旦投票被接受,1个包含32,768区块长的激活周期将开始为过时的节点提供更新其软件版本的时间。如果节点软件在激活期后仍未更新,则它会跳过指定的检查,仍继续验证所有已知的规则。先前的软分叉更改列表将记录到扩展中,以允许任何软件版本的轻节点加入网络并跟上当前的验证规则。软分叉与投票协议的组合允许改变网络的几乎所有参数,除了负责投票本身的PoW(工作量证明)规则。

尔格原生货币

尔格平台有其原生货币,称为尔格币,可分割为最多109个最小单位,nano尔格币(一个nano尔格币是尔格币的十亿分之一)。尔格币对于尔格平台的稳定性和安全性非常重要,原因如下所述。

在尔格生命的最初阶段,矿工将根据预定义和硬编码的货币发行计划来获得尔格币的奖励(更多细节见6.1)。这些硬币将激励矿工加入尔格网络,使网络免受基于哈希率的攻击,如已知的51%攻击[33]。

尔格币发行将在短短的八年内完成,之后矿工将仅从费用中收取尔格币。尽管后面还可以通过矿工链上的投票进行调整,但是在任何给定时间点,尔格区块大小和最大块计算成本都将受到限制,因此矿工被强制在高负载期间仅选择来自内存池的一部分交易。费用将帮助矿工对交易进行分类,防止垃圾信息的攻击,同时允许矿工收录来自区块中诚实用户的交易。

除了网络和计算资源之外,交易还通过增加状态大小来使用存储。在现有的其他加密货币中,状态的一个元素,即基于UTXO区块链中的UTXO,在尔格中被称为一个币箱,一旦被创造,将获得永生,矿工和部分将此状态保存在高成本随机访问内存中的客户,他们都不收费。这导致了激励不一致和不断增加的状态规模。与此相反,尔格有一个存储租用特性,定期向用户对将每个字节保存在状态中收取尔格币费用。这种储存租金通过限制状态规模或确保对较大状态规模的适当补偿,将丢失的硬币退回到流通中并为矿工提供额外稳定和可预测的奖励,从而使系统更加稳定。

因此,作为合约币平台,尔格适合在其上构建应用和货币系统。然而,参与这样的系统将需要使用尔格原生尔格币,以便支付存储租金和交易费用,这将为矿工提供强有力的持续激励,以确保网络具有足够的哈希力。对于用户而言,如果他们发现尔格的应用程序具有高价值,那么他们将非常乐意购买,使用和保存尔格币。

合约化货币

我们认为,绝大多数公链用例(即使是那些声称能够提供通用去中心化世界计算机的用例)都是用于金融应用,不需要图灵完备性。例如,如果预言机(oracle)将非金融数据写入区块链(例如温度),则此数据平时会在金融合约中使用。我们做的另一个细小观察是许多应用使用具有与原生币不同机制的数字代币。

对于应用开发人员,尔格平台提供自定义代币(属于一等公民)和用于编写币箱保护条件的特定领域的语言,应用于灵活,安全的金融应用。尔格应用程序的定义是保护内置于币箱中的脚本,其中也可能包含执行中涉及的数据。我们使用合约化货币(contractual money)这一术语来定义其使用受合约约束的尔格币(和二级代币)。这适用于现有平台上的所有币,因为任何带有其内容的币箱(尔格币,代币,数据)都受合约限制。

然而,我们可以区分两种类型的合约化尔格币。第一个被称为自由尔格币(freeErgs),可以轻松地改变他们的合约,并且对支出交易的输出或其他输入没有限制。第二种类型是有界尔格币(bounded Ergs),其合同要求支出交易具有有特定属性的输入和输出币箱。

例如,如果币箱A仅受公钥保护(因此提供与交易对应的的签名就可以销毁币箱了),公钥所有者可以花费A并将尔格币转移到任意输出币箱。因此,A中的尔格币是自由的。相比之下,想象一个币箱B受公钥和条件的组合性保护,该条件要求支出交易创建一个具有与B中相同数量尔格币的输出币箱,并且其保护脚本具有哈希hashrBMUEMuPQUx3GzgFZSsHmLMBouLabNZ 4cERm4N(用Base58编码)。在这种情况下,B中的尔格币是有界尔格币。

同样,我们可以定义自由和有界代币。尔格合约可以有多个混合,例如有界尔格币和自由代币,或者在一个公钥下是有界的而在另一个公钥下是自由的。

关于更多尔格信息:https://ergoplatform.org/cn/

更多区块链项目介绍:http://www.qukuaiwang.com.cn/news/xiangmu

风险提示:区块链投资具有极大的风险,项目披露可能不完整或有欺骗。请在尝试投资前确定自己承受以上风险的能力。区块网只做项目介绍,项目真假和价值并未做任何审核!

历史上的今天:

本文地址:https://www.u5881.com/7913.html
版权声明:本站推荐的部分活动具有时效性,老淘本人并不能保证当您看到本文时,该项活动是否仍在继续。

发表评论


表情