鬼骨孖 | xD dOt cOM | 三人行 | web3nomad.eth

Share this post

利用 WebAssembly 技术,在 Substrate 区块链中运行以太坊合约

blog.web3nomad.com
Crypto

利用 WebAssembly 技术,在 Substrate 区块链中运行以太坊合约

Running Ethereum smart contracts in a Substrate blockchain

web3nomad.eth
Mar 19
Share this post

利用 WebAssembly 技术,在 Substrate 区块链中运行以太坊合约

blog.web3nomad.com

原文链接 https://medium.com/ethereum-on-steroids/running-ethereum-smart-contracts-in-a-substrate-blockchain-56fbc27fc95a 作者 Michael Yuan 是 SecondState 的 CEO,也是 WasmEdge 的核心开发者。

随着 Substrate(和 Polkadot)的普及,越来越多的人需要在基于 Substrate 的区块链上运行 Ethereum 智能合约和 Dapp。以太坊开发人员通过拥有更快、更稳定和更多功能的基础设施来部署他们的应用程序。Substrate 区块链受益于一个丰富的去中心化应用生态系统。

ParaState(和 Second State)团队开发了一款软件,可以在 Substrate 区块链上运行 Ethereum 智能合约。它支持用 Solidity 和其他 WebAssembly 兼容语言编写的智能合约,并支持基于 polkadot.js 和 web3.js 的Web应用程序前端。

使用在线编辑器 BUIDL

BUIDL (https://github.com/second-state/buidl) 是一个构建 dApp 的在线 IDE。ParaState Frontier 项目演示了如何创建一个 Substrate 区块链,包括:

  • 传统 EVM,用于运行 solc 编译器编译的 Solidity 智能合约。

  • 基于 SSVM 的下一代 Ewasm VM,用于运行从 Solidity(通过 SOLL 编译器)或Rust 或其他语言编译的以太坊风格的WebAssembly智能合约。

  • Web3 网关,允许用户提交部署合约和调用合约函数的交易。

ParaState Frontier 软件可以根据交易的 Payload 来确定交易应该基于 EVM 还是 Ewasm,并动态路由到 EVM 或 SSVM Ewasm。

下面是一个已经启动的 ParaState 测试网络,web3 RPC 端点为:

https://rpc.parastate.io:8545/

通过 web3 RPC,我们可以使用 Second State 创建的 BUIDL 在线 IDE 创建、部署和测试 Solidity 智能合约。在浏览器中加载 ParaState 的 BUIDL。

http://buidl.secondstate.io/parastate

下面的视频展示了如何创建、编译和部署一个简单的 Hello World 智能合约到 ParaState 测试网络。它还演示了如何调用部署的智能合约上的函数。

接下来,让我们尝试一个更复杂的智能合约——用于发行代币的 ERC20 合约。下面的视频演示了如何向部署的合约发送交易以铸造和转移代币,从而改变合约的内部状态。

最后,让我们来看一个高级智能合约——用于非同质化代币(NFT)的 ERC721 合约。该视频展示了如何部署合约、将NFT铸造给自己并将NFT转移到另一个地址。

可以在这里找到更多关于如何通过 web3 RPC 服务部署和使用 SSVM Ewasm 智能合约的示例。

您可能已经注意到,web3 RPC 和 BUIDL IDE 使 ParaState 测试网络非常类似于Ethereum 区块链。用户使用Ethereum地址和钱包签署和发送交易。Substrate 完全在幕后管理和存储区块链上的信息。BUIDL 用户不需要拥有 Substrate 账户地址。实际上,用户甚至不需要知道底层区块链是基于 Substrate 的。

然而,在许多情况下,用户可能希望将 Solidity 智能合约部署和运行为 Substrate 用户。也就是说,使用他的 Substrate 地址和钱包签署和发送交易以部署和调用智能合约。当用户在 Substrate 生态系统中运作时,例如 Polkadot,这是必要的。为了支持这种用例,ParaState 软件允许用户从 polkadot.js 门户和钱包提交 Ewasm 合约交易。

使用 polkadot.js 运行智能合约

substrate-ssvm-node 项目演示了如何创建一个带有以太坊风格的 WebAssembly(Ewasm)智能合约运行时的区块链。它使用 pallet-ssvm 组件来验证和执行智能合约。智能合约可以用 Solidity 或 Rust 编写,编译为 WebAssembly 字节码,并通过 polkadot.js 提交到区块链上执行。

由于 polkadot.js 只能提交 Substrate 交易,我们需要一种将 Substrate 地址映射到唯一的 Ethereum 地址的方法。pallet-ssvm 使用哈希算法将 Substrate 地址转换为 Ethereum 地址。当用户从 polkadot.js 提交 Substrate 交易时,交易由用户的 Substrate 地址签名。substrate-ssvm-node 验证交易签名,然后使用相应的 Ethereum 地址在 SSVM Ewasm 运行时中执行内容。

下面的视频展示了如何在 polkadot.js 中找到与当前 Substrate 地址关联的 Ethereum 地址。它要求您使用 SOLL 编译器编译和部署一个小型的 Solidity 合约。然后,您将从 polkadot.js 中调用合约的一个函数,并在结果中看到调用者的 Ethereum 地址。

接下来,您可以使用 SOLL 将 ERC-20 合约编译为 WebAssembly。

现在,使用 polkadot.js 门户部署合约,并将代币铸造给自己(即与您在 polkadot.js 中关联的 Substrate 地址对应的 Ethereum 地址)。

就这样!您已经学会了如何从 Ethereum 钱包和 Substrate 钱包部署和调用 Ethereum 智能合约。去创建您自己的智能合约吧。编写愉快!

Share this post

利用 WebAssembly 技术,在 Substrate 区块链中运行以太坊合约

blog.web3nomad.com
Comments
TopNew

No posts

Ready for more?

© 2023 web3nomad.eth
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing