推动Eth2.0 2020如期创世 BLS 签名与Eth2.0的故事
自 ETH 2.0 采用 BLS 签名技术以来已有 2.5 年左右,以下是一些里程碑事件。
2018 年 5 月,我在 ethresear.ch 上发表了一篇文章,指出 BLS 签名可以让 ETH 2.0 实现 32 ETH 的最低质押机制,以及 1024 个分片,可以将去中心化程度和可扩展性提高几个数量级。
2018 年 10 月,我写信告诉 Dan Boneh(以太坊基金会的密码学顾问)说:「我们正在考虑效仿 Zcash 和 Chia,在 ETH 2.0 中使用 BLS12-381 曲线。」对此,他回复道:「(以我们的现有知识来看)BLS12-381 曲线是正确的选择。」当时的背景是,一篇 2016 年的论文将 BN254 的安全等级从大约 128 位降至 110 位。鉴于区块链基础设施的设计目标是能够沿用数十年,为此我们采取密码学保守主义,而且 ETH 2.0 研究团队确实不满意 BN254 的现状。(使用 BLS 签名的另一个原因是,在密码学生产系统中使用曲线配对本身就很激进了。)
在 2019 年 3 月和 4 月,我们做了一些号召工作。我联系了很多区块链项目(Chia、Filecoin、Dfinity、Cosmos 和 Ledger 等),旨在让所有项目都采用同样的密码学原语,以便实现互操作性、库重用、共享安全审计等。具体来说,我们的目标是号召人们参与 IETF BLS 标准化工作。这项工作是独立启动的,当时仍处于萌芽状态。有数十个人参与这项工作,创建了 Telegram 群组,并定期举行电话会议。
还是在 2019 年 4 月,Riad Wahby 在这篇文章中提议了针对 BLS12-381 的常量时间曲线哈希。常量时间哈希的用处很大,可以简化 SNARKs 的算术化,简化区块链操作码的 gas 计量,为特定应用解决时序和 DoS 攻击问题,也就自然而然地成为了 IETF 标准的一部分。实际上,剩余标准化工作(例如,选择生成器和点序列化)很多都是由 Zcash 完成的。
2019 年 9 月,Carl Beekhuizen 写了三个 EIP(2333、2334、2335),从除 IEFT 标准以外的方面对 BLS 进行标准化,例如,量子安全备份、HD 钱包(分层确定性钱包)和密钥库等。
2019 年 11 月,我们正在研究性能最好的 BLS12-381 实现。我自己开始学习更复杂的 BLS 优化,并在 Prysm 的 Raul 的介绍下认识了 Shigeo Mitsunari(目前最快的实现 Herumi 库的作者)。几周后,以太坊基金会给了 Shigeo 一笔资金,让他跟进 IETF 标准的草案,为 ETH 2.0 客户端写一些 binding,并提升 Herumi 库的性能。虽然 Herumi 库的性能是最好的,但是这个库非常复杂,很难进行形式化验证。
2020 年 1 月,Supranational【该团队由三名 Intel 前资深员工组成,负责 VDF(可验证延迟函数)项目的所有硬件工作,我每周都会与他们进行电话会议】告诉我,他们相信自己能够创建一个库,不仅在性能上优于 Herumi 库,而且对形式化验证更友好。为此,他们还专门找来了 Andy Polyakov。Andy Polyakov 是一名专门研究高性能密码学的工程师,具备形式化验证的经验。
2020 年 4 月,以太坊基金会和 ProtocolLabs 给了 Supranational 一笔资金,用于构建生产级库,并让汇编实现通过 Galois 团队的形式化验证。2020 年 6 月,第一版 BLST 上线,性能惊人。接下来的几个月,由于创建了绑定,并得到了集成支持,ETH 2.0 客户端集成了 BLST。ETH 2.0 客户端在性能上得到了巨大提升(关于具体的例子,请查看这里和这里)。
在 2020 年,我们必须应对的复杂因素之一是,IEFT 标准草案的修改。这些修改在很大程度上是我们所无法控制的。虽然这些修改从技术层面上来看很小,但是在操作层面上很难,因为需要多个参与方之间进行协调。这些修改造成了很大的摩擦,有时需要花费数小时来讨论具体细节(细节决定成败)。
2020 年 9 月,BLST 库被移交给了 Galois 团队。同时,形式验证取得了重大发展。同样在 9 月,Danny(又与 ProtocolLabs 一起)写了一篇征求意见书,要求审计 BLST 的 binding(这部分不属于形式化验证)和汇编(未经过 100% 的形式化验证)。审计工作由 NCC 公司负责,并于 10 月开始。NCC 有望在几周内完成绑定的审计工作。
总而言之,这无疑是一个漫长而曲折的过程,涉及早期研究、密码分析安全性、标准化、性能、形式化验证和审计。我们所走的每一步都是在努力朝着正确的方向前进,而不是为了走捷径。正如我在这条推特中所言,我们在增加以太坊 2.0 的实现难度,放弃了原本可走的捷径,追求长期的质量。
我希望上述内容可以让大家明白,为了向正确的方向迈进,我们投入了大量工作,比我在 2018 年预期的还要多。我想,每个关注 ETH 2.0 的人都致力于推动 ETH 2.0 在 2020 年如期创世。准备好你的质押品吧。