一文了解以太坊最新研发进展,零知识证明、分片等话题一网打尽
写在前面:原文由以太坊基金会(EF)资助的14支研发团队共同完成,他们分别就不同客户端、零知识证明、Ewasm、形式化验证、Remix、以太坊 1.x、以太坊2.0 、Solidity、ZoKrates等细分研发工作进行了总结。
朋友们:
在这段复杂的时期里,我们希望大家都能够平平安安。在困于家中的同时,我们再次为社区更新一些以太坊研发团队所取得的进展。虽然几个月前我们刚发布过冬季篇 总结 ,但自从伊斯坦布尔网络升级完成以来,我们已经走过了很长一段路,很多团队有了新的进展要和大家分享。
与往常一样,这次更新重点关注了由以太坊基金会(EF)支持的团队及项目,他们正努力发展和改善以太坊。
Enjoy!
目录
1、Aleth / C++ 以太坊客户端
2、应用零知识证明(Applied ZKP)
2、1 Powers of Tau 可信初始设置仪式
2、2 Semaphore
2、2、1 安全审计和代码发布
2、2、2 第二阶段仪式
2、3 Semaphore RLN
2、4 MACI
2、4、1 未来的工作:为MACI添加匿名性
2、5 MiMC悬赏
2、6 Optimistic Rollup Hub + ZK Optimistic rollup
2、7 PeekABook
2、8 实验方向
3、 生态系统支持计划
4、 Ewasm
4、1 以太坊 1.x / 无状态以太坊
4、2 以太坊2.0
4、2、1 跨分片设计
4、2、2 速度
4、3 WebAssembly
5、形式化验证
5、1 Act
5、2 SMTChecker
5、3 已验证ABI 编码器/解码器
5、4 以太坊2.0
5、5 Hevm
6、Geth
6、1 DNS发现
6、2 交易广播
6、3 动态快照
6、4 Discovery v5
7、Javascript团队
7、1 Ethers.js
7、2 Web3.js
7、3 EthereumJS
7、4 Grid
8、 Python生态系统 (PyEVM / Trinity / Web3.py / Vyper )
8、1 Web3.py
8、2 Trinity
8、3 EthPM
9、Remix
9、1 Remix IDE - live和桌面应用
9、2 Remix插件
9、3 外部插件
9、4 Remix 模拟器
9、5 Remix静态分析器
9、6 Remix测试
9、7 博客文章和覆盖社区
9、8 E2E测试
10、 以太坊 1.x研究(无状态以太坊)
11、 Serenity研究 (以太坊2.0)
11、1 以太坊2.0快速更新
11、2 以太坊2.0的staking
12、 安全性和共识测试
13、Solidity
13、1 SMT 检查器
13、2 Solidity 峰会
14、 ZoKrates
一、 Aleth / C++ 以太坊客户端
作者:Paweł Bylica
2019年12月,我们发布了1.8.0版本的Aleth,它包含了很多关于C ++ 以太坊节点功能的很多修复及改进。特别是,我们对RPC接口、区块链同步、网络协议以及测试工具(testeth,aleth-vm)进行了改进。有关更多详细信息,请参见更改日志。
这一版本还包含与共识机制相关的大量工作:
- 支持穆尔冰川网络升级;
- 执行EIP-1380;
- 执行EIP-2046;
- 支持单个EIP激活,以促进以EIP-centric网络升级过程;
同样值得一提的还有兄弟项目的维护版本:
- EVMC 7.1.0;
- evmone 0.4.0 和0.4.1;
二、应用零知识证明
作者Koh Wei Jie 和Kobi Gurkan
应用ZKP团队致力于将前沿的零知识证明研究带入到以太坊的应用开发当中。
2、1 Powers of Tau 可信初始设置仪式
2019年9月,我们启动了 Powers of Tau (PPOT) 可信初始设置仪式,PPOT旨在通过部分减轻可信设置仪式的负担,使零知识生态系统受益(特别是对于在以太坊上构建的zk-SNARK项目)。每个zk-SNARK项目都需要两个阶段的参数生成,而PPOT取代了第一个阶段,因此所有电路都可以共享使用它。各个团队可以从仪式中选择任何贡献,扩展出来并执行自己的第2阶段设置。这个仪式支持最多2^28个约束的电路,这意味着每个贡献需要97G下载量、一天的计算以及49G的下载量。在撰写本文时,我们从28位独立的个人手中收集了29份贡献,所有贡献文件均可下载,并可根据公开仪式笔录独立进行核实。
2、2 Semaphore
推出于2009年年中的Semaphore,是Applied ZKP团队开发的旗舰项目,它是一个通用的隐私小工具,可支持混币器、匿名登录和匿名投票等应用。Chih-Cheng Liang在开发的一个Semaphore应用是Semaphore 身份验证,它使匿名登录能够抵御女巫攻击。我们鼓励读者阅读这篇 科普文章 ,了解什么是Semaphore,以及它的工作原理。2、2、1 安全审计和代码发布
我们聘请ABDK Consulting对Semaphore的zk-SNARK电路代码和Solidity合约进行了安全审核,然后修复了一些发现的问题,并发布了最终的源代码。其包含了circom标准库中的许多组件,从而为使用circom的SNARK开发者社区提供了更多的工具集。
2、2、2 第二阶段仪式
在撰写本文时,我们正在执行特定于电路的多方可信设置仪式。我们遵循的过程在 此处 有记录。我们与VDF联盟成员Supernational合作,在预先公布的以太坊区块哈希上运行可验证延迟函数(VDF),并将所述VDF的输出应用于PPOT仪式挑战文件#25,并于2020年4月6日启动电路特定仪式。
感谢Brian Gu的出色工作,我们得以将Aztec协议的点火软件用于我们的仪式。请阅读 参与者指南 ,以了解更多有关仪式的详细信息。
2、3 Semaphore RLN
Semaphore RLN 提供了一种在P2P设置中执行速率限制的方法,我们使用了Shamir秘密共享算法来公开广播者私钥的子集,而不是依赖于链上的nullifier map来防止双重信号。2、4 MACI
MACI最初是由Vitalik Buterin在ethresear.ch的一篇帖子中提出的,使用MACI构建的系统可使参与者之间难以串通,同时保留了智能合约审查阻力及正确执行的好处。尽管仅当协调者诚实时,MACI才能提供抗合谋的能力,但不诚实的协调者既不能审查也不能篡改它的执行。在2019年年末,我们开始进行 技术规范和实施工作 ,并且即将完成一个最小可行产品。
2、4、1 未来的工作:为MACI添加匿名性
MACI使用协调器进行处理,而协调器使用SNARK来证明完整性,因此恶意协调器仅会损害抗合谋属性。而当前方法的一个缺点是,协调者在看到所有密钥更改时,其能够将每个用户的原始密钥链接到他们的最终密钥。我们希望通过允许用户匿名更改密钥,来进一步改善协调器的隐私。关于这一话题更详细的内容,你可以看这篇 ethresear.ch文章 ;
2、5 MiMC悬赏
MiMC由于其良好的性能,它已经成为SNARK中一种流行的密码学哈希函数。虽然它是“低乘法复杂性哈希函数”家族中最老的函数,但我们认为它应该得到更多的关注。我们启动了一个关于MiMC哈希函数的碰撞悬赏计划,并计划将悬赏活动扩展到Poseidon哈希函数。2、6 Optimistic Rollup Hub + ZK Optimistic rollup
Optimistic Rollup通过使用链上数据可用性和欺诈证明,可实现更好的layer 2可扩展性。这个Hub链还允许在不同的rollup之间轻松进行大规模迁移。ZK Optimistic Rollup 基于相同的思想,但目的是用于匿名传输。rollup中的每一笔交易不是透明的交易元数据,而是2-to-2 匿名传输。
2、7 PeekABook
PeekABook允许两名用户私下匹配订单,这样,除非他们拥有可履行的订单,否则任何用户都无法发现有关另一个用户所下订单的更多信息。2、8 实验方向
截至目前,我们已经以成熟的代码、规范或具体计划描述了已发布的项目。我们正不断探索新的实验领域,并期待它们成长为成熟的项目。其中包括:验证SNARK中的STARK(允许某种形式的layer 1递归 盲查找 ),基于MPC的构造,证明p2p网络中用户之间存在路径,而不暴露路径本身,等等。
三、生态系统支持计划
4月1日,我们发布了ESP分配更新,然后分享了一些关于改进流程工作,以及在2019年获得财政支持的项目列表。
你也可以关注基金会的twitter号,以了解相关支持项目的最新进展。
四、Ewasm
作者:Alex Beregssaszi
自去年12月发布更新以来,团队一直致力于以太坊2.0 的第二阶段开发工作,并开始积极参与以太坊1.x的研究。
我们的直觉是,研究的某些内容是双方都需要的,并且可以在两者之间进行共享。
4、1 以太坊 1.x / 无状态以太坊
在无状态模型中,我们不希望让每个人都保留区块链的整个状态副本,取而代之的是,每个区块都附带受影响状态部分的证明(即所谓的 witness )。而关于witness的最佳创造、分配及核实,成为了这一新的无状态系统的一个关键组成部分。关于如何缩小区块witness的大小,开发者们已经有了很多想法, Paul 已经在一个调查中对它们进行了收集。而我们首先要考虑的就是减少代码大小。这一点很重要,因为witness中还需要包含代码。目前我们想到了两种方法:压缩和默克尔化。而早期阶段的实验表明,我们可以将作为区块witness的一部分代码传输量减少40-60%。
我们计划进一步探索:
- 减少witness的存储大小;
- 关于witness大小的确切计量;
- 参与创建witness规范;
4、2 以太坊2.0
必须要注意的是,由于以太坊2.0的执行模型也是无状态的,因此以太坊 1.x的部分研究工作在这里也是适用的。4、2、1 跨分片设计
如果没有有效转移以太币(以及可能的其他代币)的能力,执行支付和交易将变得很复杂。去年,研究人员提出了很多模型,包括带有累加器的收据、队列和余额图。而Casey提出了一种名为 EthTransfer objects 的替代方案。
除了以太币传输外,合约可能希望能够与不同分片上的其他合约通信,并可能执行原子操作。所有这些,都为第二阶段提供了广阔的设计空间,截至目前,我们一直在进行探索。
作为实验,从几周前开始,我们开始研究 Eth1x64 ,其可以减少设计空间,并应允许不同设计的快速迭代。
在Eth1x64下,每个分片是同质的,并运行Eth 1.x的一个实例,其中分片0 就是当前的以太坊1.0 主网。我们正在研究多个小提议,它们都专注于实现跨分片通信的各种方式。
这项工作将使我们了解到在以太坊1.0中引入分片的复杂性,允许我们从Dapp开发者那里收集更广泛的反馈,并且我们可以将结果用于改进基于WebAssembly的第二阶段(Phase 2)设计。
4、2、2 速度
零知识协议已变得越来越重要,我们必须要确保在以太坊2.0上可有效地支持它们 。对此,我们已开发了AssemblyScript中对SNARK友好的 MiMC哈希函数 的优化实现,以及基于zkSNARK的token示例。该示例在执行环境(EE)中运行良好,而基准测试表明,两者都可以达到与编译器引擎和基于EVM(预编译辅助)实现相当的性能。关于测试的具体数字,有兴趣的读者可以看 Jared撰写的 总结内容 。
这项工作还指导了对大整数API的进一步审查,它是基于WebAssembly的安全执行的一个重要元素。
4、3 WebAssembly
最近几个月,我们发布了WebAssembly的稳定版1.0规范,这对WebAssembly而言是一个硕果累累的时期。期间还出现了一些新的有希望的解释器项目,我们正密切关注它们,并打算将它们纳入我们的基准测试报告。一月份,我们开始研究 Fizzy ,这是一个新的Webassembly引擎。诸如只支持整数(不支持浮点操作)和只执行解释器等特性,使其非常适合区块链应用。此外,使用现代C++17编写的简洁代码库以及易于嵌入的目标,使得Fizzy成为适用于以太坊2.0 客户端实现的可行模块化组件。截至发稿时,Fizzy能够通过几乎所有官方测试用例(Wasm验证除外,目前其尚未实现),并且在速度基准方面具有很好的表现。
五、形式化验证
作者:Leo Alt和Martin Lundfall
5、1 Act
Act 是编写形式化规范的一种简单而有效的规范语言,它是在几个团队的合作下开发的,我们希望将来Act语言能够被普遍使用。通过允许属性在不同level上表达,Act 工具的主要目标是实现模块化验证。可以将规范验证为一个独立的文档,其中可以从指定函数的pre/post条件中检查合约不变量,也可以从函数的存储更新中检查post条件。理想情况下,这种模块化验证将使其他工具更容易地验证源代码和字节码的正确性。
我们目前正在为中间证明开发三种证明后端:
- Coq定义;
- K规范;
- SMT定理;
我们希望在2020年6月之前发布每个证明后端的原型,并研究如何表达循环不变量。
我们将很快发布一篇关于Act的详细技术文章,欢迎大家对它的代码库进行贡献!
5、2 SMTChecker
SMTChecker是Solidity编译器中基于模型检查的静态分析模块,它试图在编译时验证源代码的断言。去年,开发者增加了一个基于 Constrained Horn Clauses 的新引擎,该引擎的主要功能是可以自动找到用于证明断言的归纳不变量,从而支持循环和状态属性。我们最近还向该引擎添加了内部函数调用,并不断改进对Solidity语言的支持。在接下来的3个月中,我们将继续致力于增加语言支持、反例生成/演示和外部函数调用,这将有望使SMTChecker从实验版,转变为一个有用且功能强大的工具。
在未来,我们还希望:
- 结合SMTChecker和Act,研究一些令人惊奇的东西;
- 为SMTChecker创建一个Remix插件,这将大大提高可用性;
5、3 已验证ABI 编码/解码
我们正在和ConsenSys公司研发部门合作,他们正使用Yul Isabelle开发一个经验证的ABI编码器/解码器。这一想法及相关讨论始于Devcon V大会,自那时以来,相关研发已经取得了良好的进展,我们已接近完成了原型。最初,我们打算将其与 Solidity Fuzzer 一起使用,以查找与优化和ABI编码/解码有关的错误。我们的最终梦想是,将经验证的ABI编码器/解码器用作Solidity编译过程的一部分。这意味着代码生成的很大一部分是经过验证的!
5、4 以太坊2.0
我们在维护KEVM形式语义、验证存款合约以及信标链规范方面,一直支持Runtime验证。存款合约也是我们在开发Act语言时的主要基准之一。我们希望在7月之前,通过Act语言提供存款合约的替代规范和增量Merkle树属性的证明,同时我们还打算研究以太坊2.0 第一阶段及第二阶段必须要证明的属性。5、5 Hevm
Hevm ,这种用haskell语言编写的EVM 评估程序和调试器现在可用于 属性测试 。 dapp开发工具用户现在可编写Solidity测试,这些测试的参数是随机生成的,并且会根据正确性标准多次运行。这为智能合约开发人员提供了一种相对直接的方式来大量增加测试覆盖率。接下来,我们还将探索使用符号执行功能扩展Hevm,这样就可以使用Hevm正式验证EVM字节码。
六、Geth
作者:Péter Szilágyi
在过去的一个季度里,Geth团队一直忙于网络测试工作,以及为将来的发布奠定基础。这篇文章只会列举一些主要功能,有关详细的要点,请参阅我们的 发布说明 。
6、1 DNS发现
我们在2年前就重点提出过一个功能,并在上个季度正式发布,它是基于DNS的对等节点发现功能。接下来,Geth v1.9.11+节点会有两种独立的机制来查找对等节点。当无法通过DHT找到对等节点时,DNS列表会用作回退机制。它们也可能最终成为Tor集成的起点。基于DNS的发现功能是一种中心化的机制,但我们试图使该机制的操作尽可能地透明化以及无需许可。默认情况下使用的公共列表,是通过搜寻DHT生成的。用户运行的任何实现EIP-868及EIP-2124的以太坊客户端节点,将自动出现在公共列表中。如果你想要为你的专用或公用网络创建基于DNS的节点列表,请查看我们的 DNS发现设置指南 。
当前,默认列表中有约1150个公共路由以太坊主网节点,并且我们的公开名单也服务于Ropsten、Goerli和Rinkeby测试网络。而网络目前每天为此发现机制生成的DNS查询,大约达到了800万次。
6、2 交易广播
长久以来,以太坊节点使用的大部分网络带宽都用于转移交易。不幸的是,该机制自诞生以来从未得到过优化,因此非常浪费。而在最近一个季度,我们对以太坊协议( EIP 2464 )进行了规范更新,以优化带宽消耗。
这个新的协议已在Geth v1.9.11中实现,另外Nethermind也已经实施,Open Ethereum客户端也在跟进。由于网络当中大约只有30%的节点支持它,因此全局节省带宽量仍然是一个问题,但应用
eth/64
与
eth/65
的对比实验已经有了很好的结果。
根据上周的流量,
eth / 65
能够将交易广播的使用带宽减少大约75%。对于拥有250个对等全节点的引导节点而言,这节省了750KB/s,或每月大约1.8TB的带宽。我们确信这仍有改进的空间,但需要我们一步一步前进。
除了eth/65之外,Geth在1月份还支持了大于32KB交易(由StarkWare提供),最初的软限制为64KB,很快会提高到128KB(更高的限制,很大程度上取决于eth / 65在全球范围内的表现)。
6、3 动态快照
运行EVM以及执行初始同步的一个大瓶颈,就在于以太坊的状态模型:MPT(Merkle Patricia Trie)。因为所有的状态数据都是以树的形式排列的,所以访问任何帐户都需要在主网上随机进行6-8次磁盘查找。在快速同步过程中,需要逐个下载相同的随机中间trie节点来获取实际数据。
半年来,我们一直在积极研究一个名为动态状态快照(dynamic state snapshots)的功能:简而言之,它是一种在磁盘上创建平坦的加速结构,该结构允许任何帐户或存储slot都可以通过一次磁盘查找进行加载。这与Open Ethereum的
fatdb
方案类似,不同之处在于它是动态的:Geth中的快照机制能够随着链的前进(包括迷你分叉)实时更新加速结构。
动态快照的一个好处是大小为
O(1)
的EVM状态读取。尽管这听起来像是圣杯,但事实并非如此。大多数合约执行并不会因为磁盘读取而发疯,因此好处是有限的,而且大多数合约也执行大量写操作,而这些操作仍然需要推送到Merkle-trie树中。但是,动态快照确实允许
eth_call
操作快速进行,并且它们确实使DoS交易变得更加难以完成。
动态快照支持的一个更有趣的功能,是一个新的同步协议,我们已经尝试了两年(最初称为叶同步
leaf sync
),目前我们仍在开发该协议,如果我们的预感是正确的,它应该可以加快以太坊的状态同步速度。
6、4 Discovery v5
下一代 discovery协议 的初始版本已在Geth中实现,尽管它还没有被启用。其规范和实现目前很流畅,并且与Eth 2.0要求保持同步,而其在最终代码库中的运用,将会是一个巨大的里程碑。
七、Javascript团队
作者:Holger Drewes和Philipp Langhans
上个季度对于团队而言是令人兴奋的。三月初,我们在巴黎举办的EthCC会议期间首次线下会面,这加深了团队关系,我们还讨论了关于未来的一些计划。
7、1 Ethers.js
Ethers v5在最终发布之前要经历最后一个beta版本。与社区讨论过的很多修复及可用性改进(如API调用的合适名称)已被应用,这为一个稳定而健壮的最终版本做好了准备。最近添加的值得注意的新功能,包括 WebSocketProvider 以及 EIP-1193 。7、2 Web3.js
在担任Web3.js库主要维护者一年多之后,Samuel决定要开始新的冒险了(感谢Samuel所做的一切!♥️)。在EthCC会议期间的日子里,我们过得很愉快。现在,该库的开发将由团队的其他成员共同承担。目前,我们会重点关注稳定性,团队成员正努力熟悉技术堆栈和程序,而Samuel是这个项目的第一专家。因此,关于近期的新功能添加,请允许我们进行谨慎的选择。出于同样的原因,我们也不会在2.x分支上进行开发。
7、3 EthereumJS
我们将EthereumJS虚拟机移至monorepo,将结构相关的库(tx、block、blockchain、HF configuration(common))组合在一起。这将大大简化虚拟机在未来的发展,并允许集成PR。基于这个新的结构基础,VM的v5版本预计将很快发布,这将带来一些突破性的变化。由于dryajov的出色工作,我们现在还拥有了devp2p堆栈的有效TypeScript实现。相关的正式消息,我们将在近期公布。
7、4 Grid
以太坊Grid分为两部分:桌面应用程序和一个可在电子环境之外提供二进制管理的核心模块。核心的目标是提供一个引擎,它本身很小,但是可通过插件扩展。我们已实现了必要的机制,其可以在将来不必修改Grid的情况下实现安全、稳定的扩展。
Grid还可以通过称为工作流(workflow)的小脚本进行扩展。在EthCC大会上,我们已经演示了一些Grid工作流 。
八、Python生态系统 (PyEVM / Trinity / Web3.py / Vyper )
作者:Piper Merriam
8、1 Web3.py
关于Web3.py库,我们继续在进行增量改进及稳定性方面的工作。由于有一些第三方的贡献,我们希望在不久的将来,能够为助记词短语和HD帐户提供初步支持。尽管在这方面还需要做大量的基础工作,但我们仍将继续努力以提供全面的异步支持。8、2 Trinity
在以太坊1.x和以太坊2.0这两个方面,Trinity客户端将继续前进。在以太坊1.x方面,我们继续致力于开发一个功能强大的主网客户端。在过去的两年里,我们最大的工作就是研发有关“无状态以太坊”的方案,这些工作将在未来18-24个月内改造以太坊主网。8、3 EthPM
EthPM团队正在与Solidity团队合作以合并打包标准,以便编译器能够编译包中的资源,生成已编译资源的package,并使用EthPM规范进行元数据和合约源验证。
九、Remix
关于Remix,你可以查看我们的 medium帖子 以获取更多详细内容。
9、1 Remix IDE - live和桌面应用
- 对Solidity 0.6.0重大更改和功能的全面支持,已添加到Solidity插件中;
- 现在可以进行低级别交互(Solidity receive和fallback);
- 添加了明暗主题,重新设计了Solidity插件和Deploy&Run插件的UI;
- 最新的Remix插件引擎(v0.2.0)已成功集成到Remix IDE和remix-模拟器(浏览器中的Ethereum dev节点)中。
- 从现在开始,桌面版本将跟随Remix live 发布。
9、2 Remix插件
- 最新版本提供了websocket插件,我们将很快添加更多类型(Secure Ecmascript,IPC);
- 与VScode的集成开发,目前正在进行当中,希望很快就能实现;
- 这是开发插件的 文档 ;
9、3 外部插件
- 我们支持外部团队构建插件并将其添加到Remix IDE中;
- 我们有Gitter频道专门用于Remix插件。你可以加入这个Gitter频道来向社区推荐你的插件;
- 如果你需要资金来创建你的插件,你可以:(1)创建一个Github问题,描述自己打算做什么,(2)向我们([email protected])发送一封邮件,其中包含描述项目的文档、Github问题的链接和发票提议;
- 我们会尽最大努力与您联系并计划下一步行动;
9、4 Remix 模拟器
- 与Remix IDE的集成基本已完成;
9、5 Remix静态分析器
- Remix Analyzer移到typescript,现在使用最新的AST(抽象语法树);
9、6 Remix测试
我们最近发布了一些新功能,并联系了Remix社区以获得反馈,然后收到了很好的结果。以下是medium帖子: 第1部分 以及 第2部分 ;9、7 博客文章和覆盖社区
我们已开始推送一些新内容,这将是我们未来几个月的重点。9、8 E2E测试
David aka@ioedeveloper最近加入了团队,他正在进行E2E测试及Remix IDE方面的开发工作,目的是巩固我们的发布过程。
十、 以太坊 1.x研究(无状态以太坊)
作者:Griffin Hotchkiss
对现有以太坊协议(称为Eth1.X)的一系列升级,已被研究人员合并为一个统一的工作,以实现和过渡到“无状态以太坊”。升级和查询主题,不仅与提高当前区块链的可扩展性和弹性相关,而且与Eth2.0研究团队正在解决的工程及设计挑战相关,它们在很多方面是相互补充的。
在巴黎EthCC大会之后,我们还举行了一场无状态以太坊研究峰会,与会者们认为,这是一场开创性的会议,并且在所有方面都取得了巨大的成功。
Griffin Ichiba Hotchkiss在一个名为“The 1.X Files”的系列文章中记录了无状态以太坊计划的最新进展,该系列文章除了总结每月的会议内容外,还深入研究了开发者们正在研究的核心概念及前进道路。
相关文章:
十一、 Serenity研究 (以太坊2.0)
作者:以太坊基金会团队
Danny Ryan,Carl Beekhuizen以及以太坊2.0研发团队在EF博客上会定期发布关于“以太坊2.0快速更新”和“以太坊2.0 Staking”的系列文章。有关我们接近第0阶段启动的最新消息和进展,请查看下面的最新文章!
11、1 以太坊2.0快速更新
- 以太坊2.0快速更新no. 8 - 2020-02-04
- 以太坊2.0快速更新no. 9 - 2020-03-17
- 以太坊2.0快速更新no. 10 - 2020-03-31
11、2 以太坊2.0的staking
- 以太坊2.0 staking #1 - 激励措施 - 2020-01-13
- 以太坊2.0 staking #2 -2020-02-12
- 以太坊2.0 staking #3 -分片共识- 2020-03-27
十二、安全性和共识测试
作者:Martin Holst Swende
以太坊主网的健康状况是重中之重,我们已调查并发布了EIP,提出了对状态Trie遗漏的惩罚措施。
到2019年底,我们发放了几笔赏金。ChainSecurity在三个单独的报告中又获得了8500点积分。在2020年初,多产的漏洞猎手Sam Sun因ENS漏洞而获得了另外的1万悬赏积分。
Go-Evmlab存储库已经更新,可以更好地与Geth集成,并在分析链操作以及创建自定义evm-fuzzer时提供帮助。
我们还对即将推出的Discovery v5协议进行了两次外部审核。该协议已在Geth中实现(但未激活)。
共识测试:
区块链测试生成代码被重新编写和迁移到retesteth,VMTests现在以区块链测试格式生成。Stats Web服务器设置在http://retesteth.ethdevops.io/
十三、Solidity
作者:Franziska Heintel,Daniel Kirchner和Christian Reitwiessner
自上次更新以来,Solidity团队发布了0.6.0版本。除了在我们之前的文章中已宣布的大量功能之外,还包括“ try / catch”作为处理外部调用失败情况的高级语法。与此同时,0.6系列在多个次要版本中已趋于稳定,而下一个主要版本0.7的早期计划已经开始(未来的博客文章将宣布预期的功能)。
0.6系列中,一个值得注意的新语言特性是支持不可变变量。从0.6.5版开始,Solidity状态变量可以声明为“不可变”。不可变变量可以在合约创建期间分配一次,并且可以从runtime代码中廉价地读取。构造函数代码将在构造期间,直接将不可变对象指定值插入到runtime代码中,以便访问的runtime开销仅是单次PUSH的开销。
最近出现的其他语言功能包括接口继承(将在不久的将来由ERC165接口ID进行补充)、用于内部还原的可选原因字符串以及通过内联汇编(inline assembly)分配存储指针的能力,后者支持用于编写可更新合约的构造。此外,我们还通过新的
C{salt: }()
引入了CREATE2的语法,同时将用于设置常规函数调用的gas和value语法,迁移到了类似的语法:
c.f {value:10 ether}()
。
Solidity团队目前的重点,是通过Yul作为中间表示来扩展新的代码生成。最近值得注意的新增功能包括外部函数调用、try/catch、增加的数组支持、元组等等。在后端方面,Yul代码到Ewasm的转换现已完成,目前正等待对类型进行一些调整,这意味着通过Yul-IR,将为Ewasm编译器提供一个可靠的Solidity版本。
我们还对Yul优化器继续进行了改进,最显著的变化是引入了Yul Phaser,它是一种使用遗传算法(Genetic Algorithm)来寻找优化器步骤最佳顺序的工具,将来,如果你想花费更多时间进行编译并获得更便宜的合约,你也可以在单个合约中使用它。
进一步的改进:solc js现在是在WebAssembly上构建的,而不是asm.js,这将使编译更快,并提高浏览器兼容性。JSON AST导出现在由AST导入进行了补充。我们会继续努力进行源代码验证,通过字节码中的元数据哈希建立一个经身份验证的ABI,以及已部署智能合约的源代码集合,并提供一种从ipfs或其他源检索权威ABI信息的无需信任方法。
13、1 SMT 检查器
SMTChecker模块继续增加对Solidity的支持,并改进其验证技术。新的CHC引擎现在还支持内部函数调用和多交易反例(未发布)。我们目前正在研究对外部函数的支持,并且像往常一样,会支持Solidity语言的更多功能。13、2 Solidity Summit !
最后,我们期待在4月29日- 4月30日举行的在线Solidity峰会。这是一次交互式论坛活动,其中会包含有关Solidity、Yul、语言设计及工具的讨论。我们旨在进行有益的讨论,以提出改进建议,并为实际实施铺平道路。此外,我们希望促进从事类似主题团队之间的沟通,并确定以太坊智能合约生态系统的需求。
十四、ZoKrates
作者:Jacob Eberhardt
自上次更新以来,ZoKrates团队设计并发布了ZoKrates.js的第一个版本,这是一个用于编译、执行和证明ZoKrates程序的库。其底层使用的是WASM,并且已用于为我们的Remix插件提供动力!
作为这项工作的一部分,并且为了更好地支持与ZoKrates的程序交互,我们开发了新版本的ZoKrates ABI。
为了提高效率,我们在ZoKrates编译器中添加了进一步的优化技术:记忆函数调用、检测无约束变量等。 这些优化目前正处于审核及测试阶段,我们希望在下一个版本中将它们呈现出来。
此外,本机验证(用户通常要求的功能)已作为原型实施,目前正在接受测试。
最后,在ZoKrates中引入无符号整数的开发工作,目前正在进行当中。这在使用常见哈希函数(如SHA256)以及实现内在二进制表示算法时特别有用。
原文:https://blog.ethereum.org/2020/04/14/ef-supported-teams-research-and-development-update-2020-pt-1/ 作者:以太坊基金会 编译:洒脱喜 稿源(译):巴比特资讯(http://www.8btc.com/article/583150)