ERC20合约开发入门

概述

这篇文章会手把手的教你开发智能合约的基本流程,带你快速入门智能合约的开发。这篇文章假设你了解区块链的基础知识,有一定的开发经验,如果不懂的可以私信我,我发给你一些资料。

基本流程

智能合约的开发流程是

环境搭建->创建项目->合约编写->编译->本地测试->测试链测试->正式链链部署

环境搭建

智能合约最简单的开发方式是用 Remix 在线编辑程序开发,这里只是快速入门,所以就用 Remix 作为环境,后续会详细讲解各个环境的搭建。\n

进入之后入下图

创建项目

  1. 点击创建按钮
  2. 选择项目模板
    我们这里创建一个代币项目,选择 ERC20 的模板
  3. 输入项目名,创建项目
  4. 打开智能合约文件

合约编写

先简单讲解下,这个代币合约的内容

// SPDX-License-Identifier: MIT

标识这个代码遵循 MIT 协议

pragma solidity ^0.8.4;

标识当前编译使用的 solidity 版本为 0.8.4

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

引入 ERC20.sol 文件,这个文件是依赖库openzeppelin里面的

contract MyToken is ERC20 {
 ···
}

合约实例,is ERC20表示继承自ERC20,类似 JAVA 中的继承。

constructor() ERC20("MyToken", "MTK") {}

构造方法,在合约部署的时候调用,ERC20("MyToken", "MTK")是调用的父类的ERC20的构造方法,表示合约代币的名称为MyToken,简称为MTK
这样就可以发布代币了,我们可以再加个白名单的小功能,简单讲解下合约代码的编写。
完整代码如下:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; // 编译的Solidity版本
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; // 导入依赖库中ERC20实现
contract MyToken is ERC20 { // 继承ERC20实现
 address[] private _whiteList; // 白名单地址数组
 address private _owner; // 合约控制者地址
 constructor() ERC20("MyToken", "MTK") { // 构造方法,调用了父类的构造方法,设置代币名称为 Mytoken, 简称为MTK
 _owner = msg.sender; // 设置合约控制者地址为合约发布地址
 }
 // 添加到白名单
 function addToWhiteList(address addr) public returns (bool) {
 // 只有合约部署者可以调用这个方法
 require(msg.sender == _owner, "you are not owner");
 // 地址需要不在白名单当中
 require(!isInWhiteList(addr), "address already in white list");
 // 添加地址到白名单中
 _whiteList.push(addr);
 return true;
 }
 // 从白名单移除
 function removeFromWhiteList(address addr) public returns (bool) {
 // 只有合约部署者可以调用这个方法
 require(msg.sender == _owner, "you are not owner");
 // 地址需要在白名单当中
 require(isInWhiteList(addr), "address already in white list");
 // 把地址从白名单中删除
 for (uint256 i = 0; i < _whiteList.length; i++){
 if (addr == _whiteList[i]) {
 delete _whiteList[i];
 return true;
 }
 }
 return true;
 }
 // 判断地址是否在白名单当中,私有方法,外部无法调用
 function isInWhiteList(address addr) private view returns (bool) {
 for (uint256 i = 0; i < _whiteList.length; i++){
 if (addr == _whiteList[i]) {
 return true;
 }
 }
 return false;
 }
}

编译合约

Step1: 切换到编译界面
Step2: 选择合约编译的版本
Step3: 点击编译按钮

本地测试

切换到部署页面,选择本地环境,选择刚刚编译好的合约地址,部署合约。

部署好的合约会显示在这里

点开我们就可以做测试了

测试链测试

本地环境测试完成后,就可以发布到测试环境测试了,因为这篇文章只是带大家对合约开发流程有个初步的认知,这里就不介绍了,后面会慢慢更新,如果急需知道的请私聊!

正式链部署

  1. 安装MetaMask(小狐狸)插件钱包,Chrome浏览器需要科学上网,如果不会科学上网的,可以私信我,私我给你发插件
  2. 创建或导入钱包,部署需要地址上有ETH
  3. 切换网络为主网
  4. 环境选择Injected Provider-MetaMask
作者:Victor原文地址:https://segmentfault.com/a/1190000042794686

%s 个评论

要回复文章请先登录注册