手把手教你部署智能合约
什么是智能合约?智能合约,字面意思就是代码编写的合同。它是一组规则和规则指导下的数据的合体,相当于一个后端代码+数据库,只不过智能合约的代码和数据是部署在区块链上,任何人都可以查看。
智能合约账户具备外部账户所没有的数据存储区与代码存储区。 它不具备私钥,故而任何人不能用破解它的私钥来控制合约中的资金,资金的流动仅由代码逻辑执行,无法人为干预,当被触发时自动强制执行。
Remix 对初学者来说,是开发智能合约的最佳开发集成环境(IDE)。
下面我们使用 Remix 从无到有探索新建合约、合约代码编写、编译、部署,调用合约的完整过程。
一、新建文件

这里我们新建一个 counter.sol 合约。
二、编写合约代码
编写合约代码如下:
// SPDX-License-Identifier: MIT
pragma solidity >0.7.0 <=0.9.0;
contract Counter {
uint counter;
constructor() {
counter = 0;
}
function count() public {
counter = counter + 1;
}
function get() public view returns (uint) {
return counter;
}
}
这是一个简单的计数器合约,这个智能合约的作用是在区块链上存储一个计数器变量 counter, 这个状态变量的值将会被永久保存在区块链上。
三、编译合约
切换到编译功能, 选择编译器版本,进行编译。

合约编译成功后,会输出两个重要的内容: ABI (合约接口描述) 和 Bytecode 字节码。
- ABI:Application Binary Interface,即应用程序二进制接口,ABI 代表了一份“说明书”,用来描述当前合约的所有接口,当我们与合约交互时,就需要使用 ABI。
- Bytecode:编译得到的可运行的合约字节码(也称为创建时字节码),部署合约时,就是把该字节码作为交易的输入数据发送链上。
四、部署合约
编译之后, 如果代码没有错误,就可以部署到区块链上。一个正式的产品推荐的部署流程是:
- 在本地的开发者网络(模拟网络)进行部署,测试及验证代码逻辑的正确性
- 在测试网络进行灰度发布
- 一切 OK 最后部署在主网
4.1 部署到VM
Remix 提供模拟网络环境,在环境(ENVIRONMENT)一栏选择Remix VM (Prague),然后点击“Deploy” 部署:

点击部署时,会发起一笔 创建合约交易, 交易完成后,会在链上生成一个合约地址, 同时在右下方控制台/日志区看到交易详情

由于这个部署交易是在模拟环境下进行的,因此这个交易是即时完成的,同时使用的账号和消耗的 Gas 均是模拟的。
4.2 部署到测试网络
在MetaMask上连接到Sepolia:

然后在 Remix 的部署环境里选择Injected Provider - MetaMask


弹窗确认(这里交易的打包和签名都是由 MetaMask 客户端完成):

部署成功,输出结果如下:

如输出所示,Sourcify 和 Routescan 都可以对智能合约源代码进行验证:
- https://repo.sourcify.dev/11155111/0x550Ce8486B7938e053CE4E3bBbef226F31392e3c/
- https://testnet.routescan.io/address/0x550Ce8486B7938e053CE4E3bBbef226F31392e3c/contract/11155111/code
上述验证后的地址都可以查看合约的详细信息,包括合约账户的信息、合约源代码、ABI、创建的字节码。
五、调用合约函数
部署成功后,在Remix IDE界面的下方会出现合约部署后的地址以及合约所有可以调用的函数,如下图:

点击即可调用count函数:
同样通过MetaMask签名并发送一笔交易,交易打包后,计数器变量加1

点击get可以获得当前计数器的值:

浙公网安备 33010602011771号