EOSIO Dawn 3.0现已推出

阿祥阿祥 04月08日 11:01 发布于[区块链]


Block.one很高兴地宣布EOSIO Dawn 3.0的第一个功能完整的预发布。此预发布代表了EOSIO 1.0将于2018年6月发布的道路上的一个重要里程碑。我们的全球开发团队一直在全天候工作,使EOSIO成为构建区块链应用程序的最强大平台。自从我们发布EOSIO Dawn 2.0以来已经有四个月了,我们有很多需要展示的东西。
构建最先进的区块链架构状态是设计随着我们学习而变化的过程。我们在Dawn 3.0中完成的许多功能在最初的EOSIO白皮书中都没有涉及,但是在构建高性能,灵活且易于开发的平台的过程中发现了这些功能。
可伸缩性功能

可扩展性意味着可以扩展以满足市场需求。我们的团队在每一步都将未来扩展需求纳入设计中。也就是说,Dawn 3.0只实现了一小部分潜在的优化,可以让EOSIO进行扩展。我们设计了EOSIO,以便将来的实现可以利用并行计算来加速吞吐量,而不会造成硬件更改。
区块链间通信

区块链间通信是终极的可扩展性功能 - 圣杯 - 业界一直在寻找诸如侧链,等离子和分片等建议。区块链间通信使一个区块链能够以可证实的安全方式验证另一个区块链上的事件的真实性。目标是让区块链间的沟通像智能合约之间的内部链式沟通一样安全,我们认为我们已经实现了这一目标。
从我们的角度来看,跨区块链交流只不过是具备将轻客户作为智能合同的能力。轻客户端可以验证区块链中的交易,而无需处理整个区块链。这反过来意味着建立一个有效和安全的轻客户端验证的股权证明区块链。因此,轻客户端验证必须纳入协议设计中,因为在事实之后几乎不可能实施。
稀疏标题验证

传统的轻客户端需要处理每个块头,然后验证相对于这些块头的样张。现在EOSIO可以每秒生成两个区块,区块链每秒至少需要2个处理来处理每个区块标题。这不适用于存在相对罕见的区块链间通信的情况。为了解决这个问题,我们创建了第一个带拜占庭容错稀疏报头验证的区块链。具体而言,为了试图欺骗轻客户,它需要超过2/3的区块生产商(例如,15个以上的区块生产商)腐败。此外,轻客户端只需处理活动块生成器集更改的块标题以及包含相关区块链间消息的块标题。
上下文免费操作

上下文无关操作是实现高效区块链间通信的关键功能之一。它们是特殊的行为,因为它们可以包含在交易中,但不依赖于区块链状态,因此它们是“无上下文”的。上下文无关动作的一个例子是验证merkle证明或签名。由于这些计算是上下文无关的,因此可以并行进行简单验证,并且可以从重播中修剪计算。
每个上下文无关的动作也可以引用一个事务的特殊修剪数据部分。这意味着可以修剪大型Merkle证据,并在区块链重播期间跳过昂贵的计算。
上下文自由操作使我们能够并行化与区块链间通信相关的绝大部分开销。它们还使我们能够平行并修剪昂贵的计算隐私技术,如机密交易,子弹证明和zkSNARK等。
为了激励使用上下文无关动作,块计算机只会在计算作为上下文自由动作的一部分执行而不是作为传统事务的一部分执行时向用户收取一小部分CPU使用量。
上下文无关内联操作作为事件

EOSIO Dawn 2.0开发人员寻找的功能之一是生成由外部来源处理的事件的有效方法。在以太坊,这些事件用于报告关于合同内部运作的结构化信息。通过增加上下文无关的动作,我们也有可能做上下文无关的内联动作。内联行动是由合同代码生成并作为当前交易的一部分执行的行为。一个上下文无关联的行为可以廉价且平行地处理。由于所有内联操作都包含在Merkle根目录中,因此可以将这些操作用作可证明的通知给外部服务和其他区块链。
事务压缩

有很多事务有很多可压缩数据。其中最不可避免的例子是合约WebAssembly代码本身。其他例子包括ABI规范和与账户/合约相关的李嘉图合约。某些应用程序(如社交媒体)可能还希望在区块链中包含可压缩的用户生成内容。
通过利用事务压缩,区块链可以更有效地存储和传输大量交易,并为拥有可压缩数据的交易记录用户数量少于不可压缩数据的交易数量。
口译和即时编译

Dawn 2.0最大的变化之一就是WebAssembly运行时环境的抽象。Dawn 3.0现在默认使用Binaryen WebAssembly解释器,而不是更快的Just-in-Time(JIT)编译器。这个决定会降低性能,但会增加稳定性和标准一致性,同时允许我们在需要时轻松交换更高性能的JIT环境。口译员也解决了我们面对Dawn 2.0所面临的最大挑战之一:编制合同所造成的延误。将来,我们可以使用解释器来获得新部署的合同的较慢但较低延迟的执行,同时在后台编译和优化合同。这种双重实现意味着我们所有的单元测试都针对编译和解释代码进行了测试,因此我们可以在部署混合方法之前发现潜在的非确定性或非标准符合性行为。
资源测量速率限制

随着黎明3.0,我们现在有一个全新的资源速率限制系统。也许最大的改变是引入了客观指令计数算法。当我们着手构建EOSIO时,我们的目标是完全采用主观限速和强制执行。我们发现,主观执法的成本几乎与更客观的方法相同。我们现在使用混合解决方案,其中用户需要为客观使用而付费,但块生产商也会在合同中放置主观挂钟时间限制。这些主观限制防止了目标计费方式的滥用。
我们采用这种方法的主要原因之一是允许单个交易执行比以前更多的计算。从理论上讲,块可以包含一个需要100 ms运行的事务,而在旧模型下,每个事务必须在1 ms以内运行。
限速的另一个变化是将限制与定义令牌的需求分开。这使得EOSIO可以在没有任何使用令牌的情况下在私人的,许可的区块链中使用。公共区块链可以采用系统合同,通过放样来实现限制,社区可以动态地升级如何分配资源与分配的实施方式无关。
500 ms块间隔和BFT DPOS

随着黎明3.0我们已经从3秒的块间隔移动到0.5秒的间隔。这大大缩短了确认之前的等待时间。与BFT DPOS结合使用时,交易可在1秒内不可逆转地得到确认。等到不可逆转之前的等待时间对区块链间的沟通有重大影响,因为另一个区块链必须等待不可逆转性才能结合来自外部链的证据。两个基于EOSIO的区块链应该能够在3秒内执行往返通信。以太坊的类似交流模式需要9分钟,比特币需要3个多小时。
BFT DPOS尚未实施,因为它是非硬分叉优化。我们将在发布EOSIO 1.0之前实施BFT DPOS。
BIOS体系结构

BIOS体系结构是EOSIO Dawn 2.0最大的体系结构变化之一。在EOSIO Dawn 3.0下,绝大多数区块链业务逻辑已经进入智能合约,可以由社区动态更新,而不需要硬分叉。一个简单的EOSIO区块链现在是一个单一的生产者,没有任何代币,投票或委托证明。核心区块链代码中唯一实现的是权限系统,它包括创建帐户,部署合同和强制执行资源配额的功能。一切使得区块链授权权益的证明(包括令牌,投票,放样和资源分配)现在由基于Web Assembly的系统合同定义。
借助这种新架构,我们能够将开发重点放在区块链的静态非WebAssembly部分。这些是稳定性最关键的部分 - 最难升级。在发布EOSIO Dawn 3.0和EOSIO 1.0之间,我们将制定系统合同的最终细节,放样和投票。
安全功能

安全对于任何计算系统都至关重要,我们设计EOSIO是市场上最安全的区块链。安全是一个多维问题,必须考虑到黑客攻击,硬件故障,硬件丢失和密码丢失的风险。硬件钱包擅长防范黑客入侵,但如果失败,可能会将您锁定在帐户外。此外,硬件钱包的纸张备份可能会丢失或被盗。
安全延迟交易

EOSIO Dawn 3.0最重要的功能之一是增加了用户可配置的延迟以适应不同的操作。有了这种延迟,交易必须在区块链上广播几个小时或几天,然后才能应用。在这段延迟期间,用户可以采取措施重新设置权限更高的帐户,然后取消交易。与其他区块链相比,这是一个重大改进,您不知道自己已被黑客入侵,直到对此做任何事情都为时已晚。
忘记密码恢复

每个帐户至少有两个权限级别:“所有者”和“主动”。如果没有N不包含所有者的密钥,则所有者许可级别应该是M multisig的N。任何时候活动密钥丢失或被盗,所有者权限级别都可以重置活动权限。
如果您失去了所有者密钥,或者您的多重合作伙伴不合作,则帐户活动许可可以在所有者许可闲置30天后请求重置所有者许可。所有者权威机构则有7天时间通过更新活动权限来挑战请求。
在此模式下,由一个或多个硬件钱包控制的帐户所有者权限将可以安全地防止黑客攻击和设备故障。如果该设备是带有硬件和Fingerprint / Face ID安全私钥的Apple iPhone,则攻击者需要妥协多人合作伙伴,窃取您的手机并窃取指纹或脸部。理想情况下,您的multisig合作伙伴也正在使用生物识别安全硬件设备。
交易提案系统

当用户可以在自己的时间独立添加和删除权限时,Multisig变得更加容易,而不必在传统事务的有限到期时间窗口内收集所有签名。通过提案系统,任何人都可以提出交易,交易涉及的各方可以简单地批准。在添加您的批准和获得必要的门槛之间,您可以随时取消您的批准。
为了实现这个系统,我们添加了新的API,允许合同评估一组帐户权限是否足以授权交易。这使我们可以通过部署新的WebAssembly来升级multisig进程,而不需要使用hardfork。
简化合同开发

EOSIO的众多目标之一就是尽可能简化合同开发。如果开发人员知道如何使用方法编写C ++类,那么他们应该能够编写一个尽可能少的样板复杂性的智能合约。
我们很高兴将我们的“hello world”合同简化为几行简单的代码。我们的工具链已自动生成合同ABI并将用户操作分派给您班上定义的方法。开发合同从未如此简单。
浮点支持

简化智能合同开发的一部分是使开发人员所需的数学算法的实现变得更加容易。区块链开发最困难的一个方面就是缺乏浮点数学和相关的权力,根,和三角函数。许多算法(如Bancor)在浮点方面实现起来要容易得多,而不是强迫所有计算进入容易出错和内存密集的固定点。
我们通过集成由WebAssembly合约透明使用的软件 - 浮点库来解决硬件浮点的非确定性性质。有了软件浮点数,我们就可以在复杂情况下获得确定性和易于开发的好处,其代价不会高于固定点。在许多情况下,固定点比确定性浮点表示要么更容易出错,要么更耗费内存。
C ++标准模板库支持

对于EOSIO Dawn 3.0,我们付出了巨大的努力来增加对大多数C ++标准模板库的支持。这意味着开发人员可以使用他们熟悉的工具,库和算法,同时消除由于这些算法的非标准实现而导致的潜在错误。
计划事务

对于定期交易开发者,现在可以编写永久运营的合同 - 只要合同具有足够的带宽。其他平台需要脱链解决方案才能在适当的时间唤醒合同。通过计划交易,我们可以提高效率和易用性,而无需开发人员托管自己的服务器以保持合同运行。
自动示波器检测

在EOSIO Dawn 2.0下,每个事务都需要声明它将访问的数据范围。这对开发人员来说很容易出错和冗长。在Dawn 3.0下,块生产者负责确定访问哪些数据范围并解除冲突。这使得所有事务更小,并将调度开销移动到块生产者,而不是将其推回到用户,开发人员或完整节点上。
MultiIndex数据库API

EOSIO Dawn 3.0引入了一个反映boost :: multi_index_container的新数据库API。使用此API,支持按多个键排序的数据库表,查找项目,使用下限/上限,以及在数据库上前后反复迭代都很简单。这个新的API使用迭代器接口,可显着提高扫描表的性能。
现在也可以在64位,128位,256位和512位整数以及64位浮点(双精度)上使用索引。在发布EOSIO 1.0之前,会添加对字符串索引的支持。这是灵活性和开发简便性的显着改进,因为现在可以在同一张表上拥有几乎无限数量的索引字段。
性能

我们的团队一直在密切关注真实世界的表现,我们对目前的结果非常满意。我们通过几种不同的配置对我们的软件进行了基准测试,以了解未来优化时性能的上限和下限。所有这些测试都假设令牌传输在计算复杂度方面与比特币或Ethereum ERC20令牌传输相当。
最差情况 - 1000 TPS

这是我们的基准性能,没有任何优化。我们能够使用运行具有单线程签名验证的解释器的多节点网络来支持超过1000 TPS。
平均案例 - 3000 TPS

打开JIT编译器后,我们可以使用运行具有单线程签名验证的解释器的多节点网络来维持3000 TPS。
最佳案例-6,000 TPS

一旦我们实现了并行签名验证,我们可以假设壁时钟每签名将接近0,因为并行度和签名数量增加。我们可以通过禁用签名验证来模拟此环境。在这个模型下,我们可以用JIT编译器在多节点网络上达到6000 TPS。
理论案例 - 8000 TPS

如果我们从等式中删除网络代码,并只关注CPU在关闭签名验证和使用JIT时能够执行的操作,那么我们可以达到每秒8,000个单线程事务。要在单一链上走得更高,需要实现WebAssembly的并行执行和更高级的调度程序。在这种情况下,使用解释器而不是JIT,我们可以看到2700 TPS。这表明启用JIT的相对简单的改变将使我们的转移性能提高约3倍。这些测量是在MacBook 2.8Ghz i7上进行的。
每秒无限次交易

“每秒交易次数”的定义通常是对橙子比较的苹果。通过区块链交流,我们可以根据需要在区块链之间分配工作量。令牌可以可靠和安全地在不同的链之间传输。由于相同(或不同)块生产者并行运行1000条链,我们可以看到每秒数百万的交易。这代表了其他区块链提出的理论扩展方案的实际实现。
我们强烈鼓励基于EOSIO的公共网络的区块生产商根据需要运行尽可能多的连锁店以满足用户需求。所有连锁店都可以使用相同的标记作为放样和资源分配的基础。这将围绕单个令牌创建最大可能的网络效应,并利用高市场资本化代币形成的经济激励的信任和安全性。
像交易所,货币和社交媒体这样的应用程序可以在许多并行链上平衡其负载。
前方的路

借助EOSIO Dawn 3.0,重点在于核心平台的稳定性。在接下来的一个月中,我们将准备实施所有赌注,投票和治理机制的最终系统合同。我们也将最终确定我们的令牌标准。
一旦系统合同成熟到我们满意,我们将启动一个新的公共测试网络。在此之前,我们大大简化了开始自己的测试网络和开发自己的应用程序的过程。在接下来的几周内,我们正在关闭当前的公共测试网络,同时我们准备新的测试网络以最大限度地减少开发人员的困惑。
概要

EOSIO Dawn 3.0是一个开发者版本,旨在通过稳定的API来实现“功能完备”。我们认为该平台现在已经足够稳定,可供严肃的应用程序开发人员开始构建应用程序。EOSIO已经变得比我们一年前想象的更加强大和容易开发。
我们的团队正在成长,发展正在以创纪录的速度发展。我们的仓库在过去的一个月里一直是所有github中十大最活跃的C ++仓库之一。一切都在6月份EOSIO 1.0的高质量公开发布!

阿祥 循环写作,持续更新,形成闭环,贵在坚持

加关注
喜欢 | 0

登陆后发表文章

  • 0条回应给“EOSIO Dawn 3.0现已推出”的评论