编译、部署和运行智能合约

本章学习如何编写、编译、部署和运行一个 Solidity 智能合约。

视频Bilibili  |  Youtube
官网binschool.app
推特@BinSchool    DiscordBinDAO   微信:bkra50 

使用 Solidity 语言编写的智能合约,并不能直接在以太坊区块链上运行,还需要经过编译和部署两个步骤。

在以太坊上运行智能合约的环境,称为“以太坊虚拟机”,英文缩写为 EVM

EVM 上最终执行的智能合约代码,并不是文本形式的 Solidity 语言的源代码,而是一种二进制代码,称为 字节码

二进制代码 非常不直观,难以理解。所以,我们是无法直接编写 二进制代码 的智能合约的。

通常,我们会使用更容易理解的 Solidity 语言来编写智能合约,然后使用 编译器 将其编译为二进制代码,最后在以太坊虚拟机上执行。

这个过程如下所示:

Solidity 智能合约示例

以下代码就是一个简单的 Solidity 智能合约:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HelloWorld{
  function greet() public pure returns(string memory) { 
    return "Hello World"; 
  } 
}

这个智能合约的名称是 HelloWorld,它提供了一个函数 greet。当调用函数 greet 时,它会返回一个字符串 "Hello World"

对于这个智能合约的详细解释,我们将会在下一章节讲解。

在本章课程中,我们首先学习如何编写、编译、部署和运行一个智能合约。

Remix 集成开发环境

由于 EVM 只能运行二进制编码的智能合约,所以,我们就需要一个工具,能够把 Solidity 编写的代码,翻译为 EVM 能够运行的二进制代码。这个翻译的过程就叫做 编译,翻译使用的工具称为 编译器

Solidity 编译器有很多,比如:Remix、Solc、Truffle、Hardhat、Foundry 等。其中,Remix 就是一款优秀的智能合约开发工具,它集成了编写、编译、部署、运行和测试智能合约的全流程功能,而且简单、直观、易于使用。

更为方便的是,Remix 可以在线使用,无需在本地电脑上安装。所以,Remix 非常适合于初学者学习和使用。当然,高级开发者也经常用它来做一些验证和实验等工作。

我们的教程就使用了 Remix 来编写、编译和部署智能合约。

Remix 开发工具的地址为:https://remix.ethereum.org/,这是一个以太坊基金会的官方开源项目,可放心使用。

如果国内网络无法访问的话,可以使用国内 Remix 镜像,无需科学上网,而且访问速度快,地址为:https://remix.binschool.app

 

1.  编写代码

File explorers 选项卡下,新建一个 HelloWorld.sol 文件。Solidity 的源代码文件通常以 .sol 为后缀。

 

将上面的代码原样复制到右边的【代码编辑区】,使用 Ctrl+s 进行保存。

 

2. 编译代码

Compiler 选项卡下,点击 Compile 按钮,开始编译。

 

如果代码中没有错误,编译成功,那么就会在编译图标上出现一个绿色对钩。

如果代码中存在错误,那么就会在下方给出错误提示信息。

 

3. 部署合约

Run 选项卡下,点击 Deploy 按钮进行部署。

 

Remix 的下方,就会出现已部署成功合约的地址: HELLOWORLD AT 0XD8B...33FA8

 

其中 0XD8B...33FA8 就是刚刚部署的智能合约的地址。这个地址在不同的机器上可能不相同。

 

4. 运行合约

点击 HELLOWORLD AT 0XD... 前面的小箭头,会出现 greet 按钮。 点击 greet 按钮,将会执行合约的 greet 函数,并显示执行结果。

 

输出结果为:

0: string: Hello World

这表示,执行结果返回了一个字符串,内容为 Hello World。