2018-03-27 智能合约truffle初体验 -by skyh

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

安装好,检查环境

node版本

1. 开发工具

之前一直用sublime,最近迷上vscode,轻量级,可以运行终端,兼容很多插件,直接官网可以下载绿色版


image.png

这里插件我选择solidity extended,其他好像会显示错误


image.png

2. 安装truffle

sudo npm install -g truffle

安装好,尝试truffle命令


truffle命令

3. 下载官网demo

官网提供了很多demo
下面我以官网webpack为例下载

webpack

mkdir webpack
cd webpack/
truffle unbox webpack

完成会自动下载文件如下:


image.png

运行开发者模式,进行compile和migrate

truffle develop
compile
migrate

truffle develop 会随机生成10个账户
compile 会自动生成build文件夹
migrate 会根据1_initial_migration.js启动部署

image.png

暂时不要退出develop窗口,新启动窗口输入npm run dev

image.png

根据地址进入,这里是http://localhost:8080/

image.png

还记得develop生成的10个地址么?这里初始你的地址是0
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
并拥有10000个代币
这里输入地址和金额,比如这里选择地址3,金额为200
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
神奇的事发生了,你的代币减少了200,3的余额demo里没显示

这就是模拟了转账的流程

4. truffle HelloWorld

首先我们新建一个目录

mkdir truffleTest
cd truffleTest

初始化

truffle init

就会生成如下文件结构,其中合约文件夹在contract


image.png

这里添加了一个文件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

image.png

当运行成功后

truffle console
> var hello
> HelloWorld.deployed().then(function(instance){hello= instance;
});

就可以通过hello调用你的函数了

image.png

So have fun playing smart contract

--- 完 ---

你可能感兴趣的:(2018-03-27 智能合约truffle初体验 -by skyh)