【5】区块链-以太坊truffle 框架

TestRPC安装

安装Ethereum客户端来支持JSON RPC API调用开发环境,推荐使用EthereumJS。
安装命令:

sudo npm install -g ethereumjs-testrpc

这里的安装如果无法下载,请参考上一篇博客中安装truffle中使用淘宝镜像的方法。此步安装遇到很多问题,也尝试了各种方法,比如gcc依赖的安装升级,Python的安装,npm的升级,git的配置,还有node版本是否影响。虽然最终把问题给解决了,但修改的地方太多具体什么原因导致安装过程中出现那么多问题,还有待大家去尝试分析。

在执行以上命令之后,只是把ethereumjs-testrpc安装在nodejs的以下路径:

/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc

还行进行软连接的配置:

ln -s /home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/bin/testrpc /usr/local/bin/testrpc

truffle 安装

npm install -g truffle

truffle 使用

常用命令

1
2
3
4
truffle init 初始化
truffle compile 编译
truffle migrate 部署
truffle serve 启动服务

操作

  1. 启动TestRPC
    图片描述

  2. 初始化项目
    图片描述

  3. 修改配置文件,编写简单的智能合约
    图片描述

mac 默认读取的truffle.js

1
2
3
4
5
6
7
8
9
10
11
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*" // Match any network id
}
}
};

图片描述
SimpleStorage.sol

1
2
3
4
5
6
7
8
9
10
11
12
13
pragma solidity ^0.4.0;  
contract SimpleStorage {

uint storedData;

function set(uint x) public {
storedData = x;
}

function get() constant public returns (uint) {
return storedData;
}
}

2_deploy_contracts.js

1
2
3
4
5
const SimpleStorage = artifacts.require("./SimpleStorage.sol")

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

  1. 编译(保证编译不报错)
    图片描述
    truffle migrate –reset 使用这个命令便可解决以上问题
  2. 部署
    图片描述

    报错问题无法解决

换一种方案实现

1
2
3
4
5
6
mkdir test   //重新建一个项目目录test
truffle unbox webpack
truffle develop // 启动一个控制台
> compile //编译
>migrate //迁移合约 当然这两部也可以不在控制台下完成 可以用 truffle compile 和 truffle migrate 完成。
npm run dev //运行webpack服务器进行前端热重新加载(在开发控制台之外)。

图片描述
图片描述
图片描述
图片描述
图片描述