本文译自 Acala Wiki <Project Bodhi: Composable & Innovative Stack for EVM on Substrate>
01
Why Acala EVM
目前,EVM 是最受欢的智能合约平台,几乎所有新一代的区块链网络都会拥有 EVM 的能力,希望能够吸引现有 Solidity 语言的开发者。
这些区块链网络旨在成为比以太坊更快、成本更低,除了以太坊现有的功能,还让 Solidity 开发者能够继续利用现有的工具链,用最小的迁移成本去部署已有的合约。然而即便以太坊如此拥堵与昂贵,至今还没有一条区块链网络能够挑战以太坊的地位,无法真正瓜分以太坊已有的市场。
过去失败的“以太坊杀手”告诉我们,建立一个更好、更快、交易成本更低的以太坊网络是远不够的。正如以太坊做了比特币无法实现的功能,催生出许多革新。同样, Substrate 与波卡所做的与目前以太坊截然不同,摆脱了传统沙箱的束缚,带来了许多创新与改变。
SOURCE:twitter.com/AcalaNetwork
对于 Acala 来说,除了拥有一系列开箱即用的 DeFi 基础产品组件,流动性与已有的用户以外,同样也拥有不少目前以太坊无法实现的创新,比如可定制的网络经济制度,Acala 网络用户可以使用所有 Acala 平台上的资产用于支付网络手续费;跨链互操作能力;不需要锁定资产就可参与链上治理;不需要合约迁移的链上自动升级等等。
Acala 开发团队让基础产品拥有丰富创新设计的同时,还拥有兼容 EVM 智能合约的能力。
️ 2 Mins——Deploying UniswapContracts to the AcalaEVM ️
02
Existing Solutions
目前 ,Frontier 解决方案大体上是模拟以太坊节点的体验。而 Frontier 的主要目标在于实现完整以太坊的 RPC 节点以及模拟以太坊区块产生过程。这允许现有的以太坊工具(如 Metamask 与 Remix )可以无缝地启用 Frontier 节点进行工作,但目前集成 Frontier 有以下几项不同程度的挑战:
高
无法摆脱 EVM 沙箱限制
虽然 Frontier 允许用户直接通过 Metamask 或其他现存的以太坊工具与 EVM 进行交互,但却没有考虑到 Substrate ,忽视了波卡插件与 Metamask 之间的兼容问题。简单来讲就是目前 Substrate 生态中所构建的任何可使用的工具是无法直接通过 Metamask 或其他以太坊工具进行连接使用的,比如 Acala 的基于 AMM 的 DEX,支持多资产与跨链的 Token 模块,以及 Laminar 所推出的 Margin trading 模块等其他平行链所推出的模块。
这意味着用户在使用 Acala,Substrate 或波卡生态的产品时,需要同时操作 Substrate 的钱包(Polkadot.js 插件钱包)与 Metamask 钱包。因此使用 Frontier 对于我们来讲是一种不小的障碍。
中等偏上
节点成本更加昂贵
Frontier 是一个非常复杂的设计。了解 Substrate 框架的人都知道 Substrate 不能以哈希与历史事件的方式存储交易,而且无法提供任何事件过滤能力。因为 Substrate 节点的设计是尽可能的最小化资源的使用(如磁盘空间与 CPU )。
换句话说,以太坊节点允许用户以哈希查询交易,并且提供强大的事件日志查询 API。因此,Frontier 会拥有特殊的区块输入逻辑,将交易与事件存储到链下的辅助空间,从而满足以太坊上查询 API 的要求。
这将会导致运行节点需要更好的设备与更大的磁盘储存空间,从而增加维护成本。因此,使用 Frontier 并不能降低节点运营的门槛,无法让用户去拥有一个轻量级节点,一旦用户无法广泛参与节点的运营,那么网络也无法变得更加去中心化。
03
Acala EVM – Code Name
Project Bodhi
包括 Acala 在内的所有基于 Substrate 的区块链网络与以太坊存在本质上的不同。Acala 拥有自己的权衡与限制,如果我们还是尝试模拟运营以太坊节点,那么我们并不能利用现有 Substrate 去改变以太坊的某些限制。因此,这对于我们来讲,如果智能合约平台不能改变目前以太坊上的一些限制,那么会是一种倒退。
虽然 EVM 模块作为 Acala/Substrate/Polkadot 上体验的一部分,但各个链上的 EVM 模块并不是同一种的体验。Acala 为了兼容 EVM 智能合约,提出了新一代解决方案 —— <Bodhi Project>,正是受到 React-Native 的启发,我们将“Learn once, build anything, anywhere”作为 Bodhi 方案推行的口号。而以下几点正是 Acala EVM 所要实现的目标:
允许用户只用一个钱包就能完整体验 Acala(或是其他 Substrate )的功能
允许协议兼容 EVM 以及 Runtime 层
允许开发者在开发与部署 DApps 在 Acala 上时能够获得好的工具支持
Acala EVM 结合以太坊智能合约与 Substrate 框架的优势,将带来以下主要特性:
1. DeFi 堆栈的可组合性
部署在 Acala EVM 上的智能合约 DApps 能够直接使用原生跨链资产,如 DOT,ACA,aUSD,renBTC 等等。同样,部署在 EVM 上的 ERC-20 也能用于 Runtime 层中的模块,比如在 DEX 中进行交易,或者通过治理允许成为网络可支付手续费之一。举个例子,Ampleforth 将会部署 AMPL 合约到 Acala EVM 上, AMPL 将可作为原生 Token 用于支付网络手续费,并且还可以直接在 DEX 中进行交易。
智能合约 DApps 能够直接使用 Acala 的 DeFi 产品基础组件(如 DEX,稳定币借贷以及Staking 衍生品),转接桥,利用原生跨链流动性兼容构成不同有趣 DeFi 应用,比如借贷产品,特定目的的 DEX,基于 Staking 的金融产品等等。
这整个过程的感觉对于用户与开发者来讲是无缝的,但事实上,这需要将原生 Token 与 Runtime 模块以预编译的形式加入到 EVM 中以使之可用。通过 EVM 编写的智能合约发起的一个交易将会被编译成一个 Substrate 的交易,并且由 Polkadot.js 进行签名。响应过程是由我们推出的 SDK(bodhi.js)完成,并且转换成以太坊兼容的共识。
2. 支持多币种手续费
Acala 平台上,网络交易费能够支持任何所接受的币种进行支付(目前已支持 ACA,aUSD,DOT,BTC 等)。未来将会有更多的币种在治理通过后被选择作为网络手续费支付。事实上,Acala 的 DEX 在支付手续费时会被作为统一的流动性池,用户为网络首先所支付的币种都将会自动换成 ACA,但这对于用户与开发者来说都是无感官上的体验。
3. 链上自动调度器
在以太坊与大部分 EVM 平台上,是无法自动调度一笔原生的交易,比如,通过订阅就能自动支付的 DApp 是无法实现的。在 Acala 与其他基于 Substrate 的链来说,自动调度是一个原生的特性,同样,该功能也是 Acala EVM 原生的特性,可以让所有基于 Acala 的智能合约 DApps 都可使用链上自动调度的功能。
4.单个钱包,单个账户体验
用户能够使用一个插件或者钱包就能够与 Substrate 的 runtime、EVM 合约/ WASM 合约进行交互。如果用户想要用特定的以太坊地址,然后简单地连接自己的 Substrate 地址(本质上是证明用户这两个地址),然后用户就可以通过 Polkadot{js}extension 使用 Substrate 的账户无缝地签名以太坊上的交易。
这使得用户不再需要管理两个账户或是钱包来使用 Acala 与跨链互操作的全部功能。
5. 当查询时维持轻节点
我们保持了轻量级并且易于维护的标准 Substrate 节点。当要查询交易或是事件日志时,我们提供了一个开源的分度器节点,任何人都能像全节点一样运营。
为了方便,我们将会提供一个 Docker 镜像来运营两个节点。但重要的是,有些人可以根据自身目的运行一个或者多个节点。
6. 可升级的智能合约
Acala EVM 中,开发者不再需要编写复杂的迁移合约来修复 Bugs 或改善现有的应用程序。合约维护这只需要发送一个带有新合约字节码的交易便可无缝升级合约,不需要迁移用户与流动性。
7. 兼容开发者工具
Acala EVM 允许开发者在开发、测试,并且部署 DApp 时使用现有的一些工具,比如 Remix 与 Waffle。随着我们不断完善,工具链将会越来越丰富。现有 Solidity 的 DApps 与 node.js 的应用程序仅需要一些小的改动,就能够与 Acala 节点进行通信交互。开发者所用到的就是 Acala 为 Web3 提供的 bodhi.js 来与 Acala 节点无缝的交互。
8. 避免粉尘账户
粉尘账户指非常少资金的账户,也就是通常账户中的余额少于一笔交易手续费所要扣除的费用。太多粉尘账户会添加不必要的数据到区块链中,而且这对于全节点同步网络来说会变得非常困难。(自从每个全节点都会有区块链完整数据的副本)
在 Acala 网络中,仅当地址保持最小金额时(准确金额待讨论),才能处于激活状态。我们称账户最小值为“保留存款”(Existential Deposit,ED),与波卡上 ED 类似。所有原生 Token (比如 DOT,ACA,aUSD,BTC 等)都会有这个特征,但这不会对 EVM 中的 ERC-20 强制执行。
04
How does it work?
以下为 Bodhi 的技术堆栈示意图:
与模拟以太坊 RPC 全节点(Frontier 的处理方式)不同,Acala 采用的方法是模拟了以太坊 JavaScript SDK 客户端体验。(也就是实现 Bodhi.js)
Project Bodhi 已经获得了 Web3 基金会官方 Grant 支持,并正在开发当中。
详情请查看:
https://github.com/AcalaNetwork/Open-Grants-Program/blob/master/applications/project_bodhi.md
05
Get Start
如果你想开始尝试在 Acala EVM 上开发 DeFi 相关的 DApp,可以点击下方 Wiki 链接查看详细教程:
https://wiki.acala.network/build/development-guide/smart-contracts/get-started-evm
作者:Acala,来源:Acala Network
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。