波卡创始人Gavin Wood新作:Polkadot、Substrate 和以太坊
作者:Gavin Wood
翻译:KIKO
来源:PolkaWorld
编者注:原标题为《Polkadot、Substrate 和以太坊》
从三年前 Polkadot 论文发布以来我们就知道, 与以太坊生态系统建立桥梁,以帮助扩展双方的功能 将是该网络的关键点之一,这一点没有改变。当然,“以太坊” 在各种语境下意味着许多不同的东西,它的意思很大程度上取决于意图和严格性。无论这个词怎么用,“以太坊” 至少不会指代当前的 “ETH主网”,这一点应该很少有人会争辩。但是,有人会断言,“以太坊” 意味着要排除任何其他网络,甚至包括那些 “官方” 批准的网络。
在其他情况下,它包括官方批准的(根据以太坊商标的拥有者)后续项目/网络/分支,例如 Shasper。其中一些还包括 “非规范” 分支,例如以太坊旗帜下的原始 “经典” 链,但有些人反对这种说法。“以太坊企业联盟” 行业组或以太坊开发组等组织的人,普遍认为 “以太坊” 是一个更广泛的概念。包括基于以太坊的原始执行引擎(EVM)及其相关开发人员工具或与之兼容的任何技术,比如 Ethermint、Hyperledger Burrow 和各种 Parity-PoA 网络等,这里仅举几例。
无论如何定义以太坊,Parity 都一如既往地致力于支持和将 “以太坊” 桥接到 Substrate 和 Polkadot 。 虽然我们正在将 Substrate 及其相关的智能合约基础设施,做成为世界上创造新区块链和 dApp 的最强大、用起来最方便的框架,但我们绝对理解,有很多人喜欢在以太坊生态系统中创造,无论基于主网还是在更大范围的开发社区中。我们会尽最大努力支持这些团队的建立和相互联系。
我们的承诺涉及 三个不同的项目 ,我想花一些时间来解释:Substrate 中的波卡/以太坊公共网络转接桥、Substrate / Parity-以太坊-PoA 桥和以太坊兼容的 EVM 智能合约执行模块。
Polkadot /以太坊公共桥
第一个基本上是 2016 年原始 Polkadot 论文中假定的软件的一部分。该想法是 在以太坊主网上建立智能合约,该合约与 Polkadot 的 Grandpa finality 小工具保持同步,是一种 Polkadot 的 “超轻客户端” 。这促进了非常普遍的互操作水平,主要是针对以太坊链的原生代币和预先存在的合同,这些合同提供了一些关键功能,而这些功能在 Polkadot 中是不可用的。从技术上讲,这种智能合约能够 分析新的区块(特别是包含发往以太坊的消息的区块)并将其转发到以太坊链中 。Polkadot 平行链将包括以太坊的 “轻客户端”,能够检查其 PoW 共识系统并解释智能合约收据,从而将以太坊的消息转发到 Polkadot 网络中。
实现这些会有一些障碍, 主要障碍是以太坊主网上非本地代币的 gas 价格过高 。在创建这样的基础架构(如 ChainX)方面已经有了一些早期的努力。但是,要正常工作并且没有额外的验证人/Staking 经济,这将需要 Polkadot 的额外支持,特别是要求其验证人以以太坊固有的格式提供最终性证明。Web3 基金会正在积极研究并指定为此设计,并且可以向希望追求实现结果的团队(包括但不限于 Parity Technologies)提供赠款。
Substrate/Parity-以太坊-PoA桥
但是对于某些项目,Polkadot / 以太坊的互操作性不太重要,因为它们无论如何都将无法部署到主网(由于可伸缩性问题)。尽管没有在以太坊(1.0)主网上部署,但这些项目还是希望与以太坊生态系统保持高度兼容,因为其中包括活跃的社区、开发人员工具、支持和文档以及众多可用的服务提供商在内的众多因素。归根结底,该网络处于令人垂涎的位置,在这里 “没有人责怪你选择在以太坊上写你的合同”,对此我们感到敬意,也为我们参与了这一创造过程感到自豪。
为了支持这种观点,我们将引入一个 Substrate 到 Parity-以太坊-PoA 的转接桥 ,这与位于 xDAI 链核心的现有 Parity 转接桥非常相似。在这种情况下,它没有将任意的 Parity 以太坊链连接到以太坊主网,而是将其连接到 Substrate 模块(并扩展为 Polkadot)。在这种情况下,以太坊-PoA链仍将需要管理其自身的安全性(以这种方式使其与 Cosmos 的 Ethermint 的价值主张没有很大的不同)。以太坊-PoA链将使用快速 Aura 共识算法(或较慢的基于 PBFT 的 “即时确定” 共识),并受益于久经考验的 Parity 以太坊代码库,该代码库具有多年的优化和调优功能以及各种其他企业级功能,包括秘密存储集成和合同状态加密。
在这种情况下,所需的基础架构要简单得多:我们在 Parity Ethereum 代码库中引入了一个特殊的预编译协定,该协定能够高效且无状态地验证 Grandpa 的确定证明(消除了非原生代币的 gas 成本问题)。借助桥接合同(将由 Parity 先前存在的 PoA 桥接系统改编)和区块转发器(同上),唯一需要的附加组件是充当 Ethereum / Aura-PoA 轻客户端并可以理解和转发消息的 Substrate 模块。该项目的工作已经开始,我们预计在今年年底之前会出原型。
因此,该项目将 允许任何基于 Parity Ethereum 的安全私有链或 PoA 以太坊链可以完全访问同级 Substrate 链 (作为最终的升级路径) 或 Polkadot 社区 (以使用 Polkadot 的资源并与其他项目互操作)。
Substrate EVM
还有一些项目喜欢 Substrate 以及它带来的所有功能和灵活性(例如 off-chain workers、SRML、可扩展的交易、基于 Rust 的智能合约、元协议管理、一键式升级等),但是谁需要为他们现有的 Solidity 代码库升级的路径,在某些情况下这确实是非常重要的。我们自己的基于 WebAssembly 的 “Substrate 合同” 模块及其各种工具,包括 Ink!。基于 Rust 的 EDSL 是我们着手进行的事情,其原因有很多:LLVM 的 WebAssembly 后端意味着许多通用语言(C、C ++、Rust、Go 和其他语言)可以轻松地用于 Wasm。诸如解释器和编译器、调试器、字节码分析器和库之类的大量工具意味着可以大大改善开发环境,而且有了 Ink! 我们还获得了 Rust 语言的测试、文档和正确性功能。此外,通过抛弃已有五年历史的以太坊执行模型,我们既可以简化和加快代码库(通过消除有缺陷或过分审慎的 EVM 操作码),又可以在执行环境中提高经济效率(例如将代码上传与实例部署分离并引入基于存款的状态租金)。就是说,现实表明有时功能、性能和清楚程度必须在兼容性面前让步。为此,我们将推出 Substrate EVM。这是 一个 Substrate SRML 模块,将以太坊兼容执行环境 “本地” 引入到 Substrate 中 。本质上,这使你的 Substrate 链可以承载绝大多数以太坊状态转换功能。可以将现有的 Solidity / EVM 代码部署到此环境中。与 Substrate 其余部分的互操作(即调用其他模块,在其他帐户之间进行转账和使用链间消息传递功能)是通过专门引入的 “预编译合同” API进行的。
将其视为单个 SRML 模块中的整个以太坊区块链,可以集成到你的自定义区块链的其余部分中,可以称之为区块链虚拟化层。这项工作已经开始,我们还希望在未来几周内准备好 MVP。
此外… 我们也越来越有兴趣支持现有的工作,以开发用于 Solidity 编译器的 WebAssembly 后端,该后端与 Substrate-Contracts 执行模型兼容。如果正确实施,这将允许将现有的 Solidity 智能合约(已授权部署到以太坊链中)直接部署到 Substrate-Contracts 链中。实际上,在此模型中, 没有什么可以阻止同一 Substrate 链同时具有 EVM-Contracts 模块 (用于执行原始 Solidity / EVM 代码) 和 Substrate-Contracts 模块 (用于执行 Solidity / Wasm 或Ink!Wasm 代码)。两者之间可以互操作,甚至可以将消息发布到桥接过来的单独的 Parity-Ethereum 链上,或者如果部署为平行链,则可以传播到包括 Ethereum 主网在内的更广阔的 Polkadot 社区!
目前,我们主要关注开发和强化 Polkadot 1.0 的最终核心组件,因此,我们无法始终像我们希望的那样将大量的开发时间用于这些项目。就是说, Polkadot 的存在理由是将具有多种技术假设的截然不同的项目整合在一起。 以太坊社区是地球上最重要的开发人员社区,拥有最自由的思想家和最有意义的发展 —— 忽略这一点是短视的表现。经过两年的漫长发展,Polkadot 和 Substrate 的核心基础架构已经日趋成熟,我们真的可以开始考虑构建外围部件,并使世界变得多样化,让连接链成为现实。
有关 Polkadot 和 Substrate 的更多信息,请访问 Polkadot 网站或 Substrate 网站。你可以在 Github PR 上查看 Substrate SRML EVM 模块的状态,或者在我们在 Github 存储库中跟踪 Ethereum-PoA / Substrate 桥的开发进度。