MateMask既可以连接以太坊的主网,也可连接以太坊的测试网(ropsten网、rinkeby网等),还可以连接私有链,只要给出URL和端口就可以连接。这里介绍MateMask连接私有链节点ganache。

1、创建twoSol工程

mkdir twoSolcd twoSolnpm init -ytruffle init 

2、修改package.json和truffle-config.js

2.1 修改package.json

  修改twoSol/package.json文件,主要是添加dependencies、devDependencies这2项,如下:
//package.json

{"name": "twosol","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","dependencies": {"@openzeppelin/contracts": "^2.5.0","@truffle/hdwallet-provider": "^1.1.1","bignumber": "^1.1.0","bignumber.js": "^8.1.1","chai": "^4.2.0","chai-as-promised": "^7.1.1","eslint": "^5.15.0","ethereumjs-tx": "^1.3.7","request": "^2.88.2","web3": "^1.3.0"},"devDependencies": {"@babel/core": "^7.12.3","@babel/preset-env": "^7.12.1"}}

2.2 修改truffle-config.js

  修改twoSol/truffle-config.js,主要是开启development字段和设置sol编译版本,如下。
//truffle-config.js需要修改的地方有2个:

 //1)开启development字段 networks: {development: { host: "127.0.0.1", // Localhost (default: none) port: 8545,// Standard Ethereum port (default: none) network_id: "*", // Any network (default: none)},... },// 2)指定solidity版本compilers: {solc: {version: "0.5.16",...}},

2.3 安装依赖包

npm install

3、创建合约和相关的部署脚本

3.1 创建WhiteRiceToken.sol合约

  在twoSol/contracts目录下,新建一个合约名称为WhiteRiceToken.sol

vim contracts/WhiteRiceToken.sol

  //WhiteRiceToken.sol

pragma solidity ^0.5.0;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";contract WhiteRiceToken is ERC20,ERC20Detailed {constructor() public ERC20Detailed("WhiteRiceToken","WRT",18) {_mint(msg.sender, 10000000000 * (10 ** uint256(decimals())));}}

3.2 创建合约的部署脚本

  在twoSol/migrations目录下,新建一个合约名称为2_deploy_WRT.js

vim migrations/2_deploy_WRT.js

  //2_deploy_WRT.js

const WhiteRiceToken = artifacts.require("WhiteRiceToken");module.exports = function(deployer) {deployer.deploy(WhiteRiceToken);}

3.3 工程的目录结构

图(1) twoSol的工程目录

4、启动ganache节点

  a) 配置ganache
设置ganache的IP和端口,依次如下:
IP:127.0.0.1
Port:8545

图(2) 配置ganache节点

  b) 点击[restart]按钮,即可重启ganache

5、编译并部署合约

  进入truffle的console模式,编译使用compile命令,部署使用migrate命令。

truffle consolecompilemigrate

  合约部署成功后,会生成一个合约地址,此WRT合约地址为:0x7c8d677B43DA2Fd8d64802558F2DBdAabfbaB7A1

6、设置节点参数,并重启浏览器

  在MetaMask里设置localhost:8545网络连接,用来连接本地的私有链节点,比如ganache,然后,重启google浏览器。如图(3)所示。

图(3) 在MateMask里,设置私有链节点参数

7、连接MateMask

7.1 以助记词的方式登录MateMask

  a) 选中网络类型:localhost 8545,点击[import using Secret Recovery Phrase]

图(4) 选中”助记词方式”登录

  b)拷贝ganache里的助记词到MateMask

图(5) 拷贝助记词到MateMask

  一路next即可。

7.2 添加WRT合约地址

  ganache有10个账户:Account1~Account10,默认用第一个账户Account1来发布合约,消耗的gas也是第一个账户提供的,所以Account1是WRT合约的主人。
在Account1页面,点击[添加代币] —> 填写WRT合约的地址,一路next即可。

图(6) 在Account1里添加ERC20 Token
图(7) 填写合约地址
图(8) 一路next
图(9) Account1的Token列表