请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
首页 NEWS 技术 查看内容

一文了解以太坊最新研发进展,零知识证明、分片等话题一网打尽 ...

恋上财经 2020-4-16 10:15

写在前面:原文由以太坊基金会(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)进行了改进。有关更多详细信息,请参见更改日志。

这一版本还包含与共识机制相关的大量工作:

  1. 支持穆尔冰川网络升级;
  2. 执行EIP-1380;
  3. 执行EIP-2046;
  4. 支持单个EIP激活,以促进EIP-centric网络升级过程;
Aleth 1.8.0是最后一个计划版本,从现在开始,我们仅致力于代码的基本维护,PR审查以及满足测试和EIP审查的其余需求。在此,我要感谢所有Aleth的贡献者,特别是Nils-Erik Frantzell,他们在过去的一年中为该项目付出了很多努力。

同样值得一提的还有兄弟项目的维护版本:

  1. EVMC 7.1.0;
  2. evmone 0.4.0 和0.4.1;
最后,我们发表了一篇有关EVM高效gas计算算法的文章,以及在Devcon 5演示文稿中展示的EVM实现优化技术。

 

二、应用零知识证明

 

作者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%。

我们计划进一步探索:

  1. 减少witness的存储大小;
  2. 关于witness大小的确切计量;
  3. 参与创建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

@特别声明

免责声明:本文不代表「恋上财经」立场,且不构成投资建议,请谨慎对待;
内容声明:本文内容为作者独立观点,不代表「恋上财经」立场;
版权声明:「恋上财经」充分尊重原创,如有侵权,请联系客服删除。
分享到
投资有风险,入市须谨慎。相关资讯不作为投资理财建议。
推荐阅读