0. 准备,安装node, npm
安装brew,brew是mac平台软件安装工具
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
通过brew安装node,node自带npm包管理工具,可管理js模块
#sudo 取得根权限安装,防止出错
sudo brew install node
npm默认试用国外源,安装淘宝源
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
可选安装nvm,根据github安装最新版
#当前最新版
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
安装好,检查环境
1. 开发工具
之前一直用sublime,最近迷上vscode,轻量级,可以运行终端,兼容很多插件,直接官网可以下载绿色版
这里插件我选择solidity extended,其他好像会显示错误
2. 安装truffle
sudo npm install -g truffle
安装好,尝试truffle命令
3. 下载官网demo
官网提供了很多demo
下面我以官网webpack为例下载
mkdir webpack
cd webpack/
truffle unbox webpack
完成会自动下载文件如下:
运行开发者模式,进行compile和migrate
truffle develop
compile
migrate
truffle develop 会随机生成10个账户
compile 会自动生成build文件夹
migrate 会根据1_initial_migration.js启动部署
暂时不要退出develop窗口,新启动窗口输入npm run dev
根据地址进入,这里是http://localhost:8080/
还记得develop生成的10个地址么?这里初始你的地址是0
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
并拥有10000个代币
这里输入地址和金额,比如这里选择地址3,金额为200
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
神奇的事发生了,你的代币减少了200,3的余额demo里没显示
这就是模拟了转账的流程
4. truffle HelloWorld
首先我们新建一个目录
mkdir truffleTest
cd truffleTest
初始化
truffle init
就会生成如下文件结构,其中合约文件夹在contract
这里添加了一个文件HelloWorld.sol
pragma solidity ^0.4.17;
contract HelloWorld {
//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_initial_migration.js 添加上HelloWorld模块
var Migrations = artifacts.require("./Migrations.sol");
var HelloWorld = artifacts.require("./HelloWorld.sol");
module.exports = function(deployer) {
deployer.deploy(Migrations);
deployer.deploy(HelloWorld);
};
部署准备
此处用了Ganache,一个桌面平台的以太坊私有链
安装ganache
sodu npm install -g ganache-cli
ganache-cli
启动ganache-cli 会默认监听8545端口,修改truffle.js连接配置
module.exports = {
networks: {
development: {
host: "localhost",
port: 8545,
network_id: "*"
}
}
};
然后可以compile和migrate
truffle compile
truffle migrate --reset
migrate可能有未知bug,migrate必须加--reset
当运行成功后
truffle console
> var hello
> HelloWorld.deployed().then(function(instance){hello= instance;
});
就可以通过hello调用你的函数了