以太坊测试网络Ganache使用

开发环境

  • 系统ubuntu16.04
  • nodejs 10.10.0 确保安装的nodejs>=v6.11.5

npm安装客户端

1
npm install -g ganache-cli

image

安装完成。

使用命令行工具

image

可以得到可用的账户私钥公钥,gas价格等信息

安装智能合约开发框架truffle

当前命令窗口已经启动了测试网客户端,所以新建命令窗口安装truffle

如果计算机有多个版本nodejs 切换命令 nvm alias default 0.12.7 #设置默认 node 版本为 0.12.7

1
npm install -g truffle

image

安装完成。

1
truffle init

image

新建智能合约

1
2
3
4
5
6
7
8
9
10
11
12
13
14
pragma solidity ^0.4.23;

contract Hello {

//say hello world
function say() public pure returns (string) {
return "Hello World";
}

//print name
function print(string name) public pure returns (string) {
return name;
}
}

不知道为啥,只能开头字母是大写,如果我名字叫HelloWord就会编译报错

在migrations目录新建文件2_deploy_helloword.js

1
2
3
4
5
var Hello = artifacts.require("./Hello.sol");

module.exports = function(deployer) {
deployer.deploy(Hello);
};

编译智能合约

1
truffle compile

image

配置网络

打开truffle.js

1
2
3
4
5
6
7
8
9
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*" // Match any network id
}
}
};

部署到链上

1
truffle migrate

如果killed报错是内存不足导致

image

测试智能合约

进入truffle命令行

1
truffle console

获得当前网络下所有账户

1
web3.eth.accounts

image

image

第一行是把合约实例赋值给HelloInst对象,然后直接HelloInst调用方法,得到预估值。

test测试合约

在test文件夹新建TestHello.sol文件,方法名test开头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
pragma solidity ^0.4.23;

contract Hello {

//say hello world
function say() public pure returns (string) {
return "Hello World";
}

//print name
function print(string name) public pure returns (string) {
return name;
}
}

执行

1
truffle test

image

说明测试通过