什么?!在 NEAR 上可直接运行以太坊应用?这项工作大部分是由来自 Summa 的 James Prestwich 和 Barbara Liau 完成。

内容提要: 我们发布了一套在 NEAR 网络上部署 EVM 智能合约的工具,使其(EVM 智能合约)能从 NEAR 的性能,用户体验以及开发者工具集中受益。它实质上是把 EVM 作为一个 NEAR 上的智能合约,从而实现以太坊智能合约的执行环境(Execution Environment),并通过一个特别实现的 provider,使 web3.js 工具(译者注:以太坊智能合约开发的基础工具库)也能支持 NEAR。

通俗来讲,现有的以太坊应用(ETH DApp)无需修改智能合约代码,可直接在 NEAR 的区块链平台上部署, 从而达到性能的大幅升级,并提高 C 端用户的使用体验。这比其他仅围绕 EVM 的扩容项目更具优势。截至目前,NEAR 是唯一一个使用 WebAssembly 技术同时又支持现有 EVM 智能合约的项目(EOS、Polkadot、Spacemesh、以太坊 2.0 都还在尝试阶段)。这也是以太坊 2.0 一直在谈论的话题,但现在却是真真切切的可以使用了。

什么?!在 NEAR 上可直接运行以太坊应用?小编:在刚刚结束的 ETHDenver,NEAR 创始人 Illia 和以太坊创始人 Vitalik, ConsenSys 创始人 Joe Lubin 等一起担任开发者大赛的评委

EVM 支持及 web3.js provider

以太坊开发者社区庞大,同时,很多加密技术开发者对以太坊虚拟机(EVM)也都很熟悉。而作为一种专门面向 EVM 的语言,Solidity 自诞生伊始就成为了开发智能合约的主要语言。虽然与 Rust 和 TypeScript 等通用语言相比,Solidity 具有明显的局限性,但它依旧得到了早期区块链开发者的广泛采用,并且是大量使用的链上开发工具。

相对的,NEAR 使用了 WebAssembly 虚拟机(WASM),这项技术在加密货币乃至更广阔的领域内越来越受欢迎。加密货币领域的大多数项目(例如,以太坊 2.0 和 Polkadot )都在朝着这个方向发展,还有更多的项目正在考虑使用 WASM。

尽管我们对 WebAssembly 的优势坚信不疑,但还是认为有必要帮助开发者简化向 WebAssembly 过渡的过程,并找到一种方法使现有 EVM 合约能够在 NEAR 上运行。为此,我们部署了 EVM 智能合约。而 Parity 的以太坊客户端中就有一个使用 Rust 语言的 EVM 实现,可轻松地将其编译为 WebAssembly,非常方便。

从本质上讲,通过智能合约的方式运行 EVM 就是简化版的以太坊 2.0 / 宁静(Serenity)执行环境概念,并且不需要任何自定义的交易处理逻辑!你可以在 Github 上找到 EVM 合约。

由于大多数以太坊工具都依赖于 web3.js,我们实施实现了自定义的 web3 provider —NearProvider,允许通过 Near-web3-provider 库中的常见接口直接与以太坊合约进行通信。NearProvider 会处理与 Near 网络的连接,并自动为你转换对象及 RPC 调用。

接下来,就让我们去仔细瞧瞧是怎么一回事儿吧!

工作原理

首先,要让你的 Solidity 应用在 NEAR 的测试网上运行:

如果你还没有一个现成的 Truffle 项目,那就先创建起来。你可以在这里找到示例:

https://github.com/kcole16/near-evm-demo

第二步,安装 NEAR shell:

npm install -g near-shell

第三步,使用 NEAR 钱包登录:

near login

这一步将重定向到 NEAR 网页钱包,并逐步指导你创建新的钱包账户。你可以输入任何一个你喜欢的 accountID。接着,你要通过一笔交易授权 CLI 使用该帐户,然后输入新创建的 accountID 以完成登录。

下一步:将 NEAR 配置为 truffle.js 中的另一个网络:

什么?!在 NEAR 上可直接运行以太坊应用?

以上代码导入了 Near-web3-provider,提供了从以太坊 RPC 到 NEAR 网络的映射。

接下来,我们会将其指向到包含你 NEAR 帐户的 keyStore,而你将使用它部署你的应用程序(并支付费用)。这里,我使用的是我自己的帐户 illia,但你要把它换成你自己的 accountId。

就是这么简单,你便可以将应用程序部署到 NEAR 的 EVM 上运行了!

truffle migrate –network near

你可以在区块浏览器中查看交易是否成功:

https://explorer.nearprotocol.com

最后一步,将 Near-web3-provider 插入前端 web3 代码。如此一来,你便可以使用 NEAR 钱包,吸引用户并让他们轻松地使用你的应用程序了。

什么?!在 NEAR 上可直接运行以太坊应用?

在设置好 provider 后,你就可以使用 Truffle、Web3.js 和许多其他标准 Solidity 开发工具与 Near-evm 进行交互。虽然这个库尚处于早期阶段,但许多基于 Web3 的应用程序都可以立即使用。

你可以在这里查看完整示例:

https://github.com/kcole16/near-evm-demo

NEAR EVM 已准备就绪,等待为你的项目提供支持! 马上开始开发你的应用程序吧。

Resources 相关资源

以下是一些有用的资源链接:

– 完整 demo 的代码库。

– EVM 执行环境合约。

– 用于 Web3.js 的 NearProvider。

– 加入 Telegram 开发者社群,实时解决问题。

– 在论坛上提出你的想法与建议。

作者: Illia 一龙
翻译 :Clover
校对: Marco, Bowen
编辑 :Amos
什么?!在 NEAR 上可直接运行以太坊应用?

来源链接:mp.weixin.qq.com