手把手教你部署智能合约

什么是智能合约?智能合约,字面意思就是代码编写的合同。它是一组规则和规则指导下的数据的合体,相当于一个后端代码+数据库,只不过智能合约的代码和数据是部署在区块链上,任何人都可以查看。
智能合约账户具备外部账户所没有的数据存储区与代码存储区。 它不具备私钥,故而任何人不能用破解它的私钥来控制合约中的资金,资金的流动仅由代码逻辑执行,无法人为干预,当被触发时自动强制执行。

Remix 对初学者来说,是开发智能合约的最佳开发集成环境(IDE)。

下面我们使用 Remix 从无到有探索新建合约、合约代码编写、编译、部署,调用合约的完整过程。

一、新建文件

image

这里我们新建一个 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, 这个状态变量的值将会被永久保存在区块链上。

三、编译合约

切换到编译功能, 选择编译器版本,进行编译。

image

合约编译成功后,会输出两个重要的内容: ABI (合约接口描述) 和 Bytecode 字节码。

  • ABI:Application Binary Interface,即应用程序二进制接口,ABI 代表了一份“说明书”,用来描述当前合约的所有接口,当我们与合约交互时,就需要使用 ABI。
  • Bytecode:编译得到的可运行的合约字节码(也称为创建时字节码),部署合约时,就是把该字节码作为交易的输入数据发送链上。

四、部署合约

编译之后, 如果代码没有错误,就可以部署到区块链上。一个正式的产品推荐的部署流程是:

  1. 在本地的开发者网络(模拟网络)进行部署,测试及验证代码逻辑的正确性
  2. 在测试网络进行灰度发布
  3. 一切 OK 最后部署在主网

4.1 部署到VM

Remix 提供模拟网络环境,在环境(ENVIRONMENT)一栏选择Remix VM (Prague),然后点击“Deploy” 部署:

image

点击部署时,会发起一笔 创建合约交易, 交易完成后,会在链上生成一个合约地址, 同时在右下方控制台/日志区看到交易详情
image
由于这个部署交易是在模拟环境下进行的,因此这个交易是即时完成的,同时使用的账号和消耗的 Gas 均是模拟的。

4.2 部署到测试网络

在MetaMask上连接到Sepolia
image

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

image

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

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

如输出所示,Sourcify 和 Routescan 都可以对智能合约源代码进行验证

上述验证后的地址都可以查看合约的详细信息,包括合约账户的信息、合约源代码、ABI、创建的字节码。

五、调用合约函数

部署成功后,在Remix IDE界面的下方会出现合约部署后的地址以及合约所有可以调用的函数,如下图:
image

点击即可调用count函数:

同样通过MetaMask签名并发送一笔交易,交易打包后,计数器变量加1

image

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

image

posted @ 2025-11-14 13:47  all-in-web3  阅读(17)  评论(0)    收藏  举报