虚拟币交流社区|以太坊开发测试框架 Truffle 的搭建
本文从「安装」,「开发」,「编译和部署合约」,「测试网页与合约交互」,「从源代码构建 Docker 容器」等几个方面向我们介绍了如何在 windows 下搭建以太坊测试服务器。
来源 | 红地龙的博客
作者 |?红地龙
前言
这是一篇 在 window 下 搭建以太坊 测试服务 的学习笔记
一、安装
1.首先安装 NodeJS(Truffle 依赖它):
- 新建 nodejs 的程序根路径为?
mkdir /app/software/
cd /app/software/
-
下载 打开 http://nodejs.cn/download/ 确认最新包?
-
解压 (解压后的文件我这边将名字改为了 nodejs,这个地方自己随意,只要在建立软连接的时候写正确就可以)
tar -C nodejs -xvf node-v10.8.0-linux-arm64.tar.xz
确认一下 nodejs 下 bin 目录是否有 node 和 npm 文件
- 建立软连接,变为全局
$ ln -s /app/software/nodejs/bin/npm /usr/local/bin/ $ ln -s /app/software/nodejs/bin/node /usr/local/bin/
- 下载后检查版本? ? ?
$ node -v
- 配置 npm 源为国内源(可选,可加快 node 插件下载速度)? ?
$ npm config set registry http://registry.npm.taobao.org
2. Truffle
- 安装? ?
> npm install -g truffle
安装过程自动设置软链接? ? ? ?
/usr/bin/truffle -> /usr/lib/node_modules/truffle/build/cli.bundled.js
3. 安装测试环境
测试环境每次启动 都是一组新的 用户 , 所有的测试合约都要发布 , 下面 3 种测试环境 , 你可以选择三个中任何一个客户端来跟 truffle 交互 .
需要特别说明的是 :
所有的测试框架每次启动后 , 都会在内存中重新生成临时用户 , 一旦关闭 , 所有用户以及部署过的合约都会消失 。
1) ethereumjs-testrpc
> npm install -g ethereumjs-testrpc > testrpc #启动
2) ganache-cli
ganache-cli 是内存测试环境 , 前身就是 testRPC, 命令版 :
> npm install -g ganache-cli > ganache-cli #启动
window cmd 环境用 truffle.cmd xxxx
linux shell 环境用 truffle xxxx
Compile:truffle.cmd compile(linux:truffle complie)
Migrate:truffle.cmd migrate
Test contracts:truffle.cmd test
Run linter:npm run lint
Run dev server:npm run dev
Build for production:npm run build
一个是带图形界面的版本,下载地址:
https://github.com/trufflesuite/ganache/releases
3)truffle develop
这个是 truffle 内置的客户端,跟命令行版本的 Ganache 基本类似。唯一要注意的是在 truffle develop 里执行 truffle 命令的时候需要省略前面的「truffle」,比如「truffle compile」只需要敲「compile」就可以了。
> truffle develop
二、开发
1. 建项目目录 , 在目录下初始化项目框架
> mkdir 目录名 # 新建目录 > cd 目录 #进入目录
有两种方法初始化框架 init 或者 unbox 指令格式如下
> truffle init#在当前目录下 , 创建一个空项目
> truffle unbox webpack#在当前目录下 , 创建示例项目
主要分为 3 个部分:
1) contracts 目录中包含 Solidity 合约代码,整个目录被编译,其中 Migrations.sol 是默认的 , 必须的,其他就是你自己写的合约代码了。
2) migrations 目录中包含合约部署脚本 , 整个目录被编译,其中 1_initial_migration.js 就是用来部署 Migrations.sol 的,其他的脚本 最好从 2 开始编号 , 会按照顺序依次执行。
3) test 目录中存放的是测试用例的代码。
三、编译和部署合约
3.1. 更改 truffle.js 文件配置
module.exports = { networks: { development: { host: 'localhost', port: '7545', network_id: '*' // Match any network id } } };
这里要注意的是:
Ganache 默认运行在 8545 端口
Ethereumjs-testrpc 默认运行在 8545 端口 Truffle Develop
默认运行在 9545 端口
3.2. 编译合约
truffle 框架里已经给我们提供了 demo 代码,我们暂时不用写新的合约,我们直接用 demo 进行编译和部署。
输入命令:> truffle.cmd compile
3.3. 部署合约
部署合约之前,请开启之前下载的以太坊客户端:
Ganache:请打开下载的软件 , 或者在命令行中输入 > ganache-cli #启动
Ethereumjs-testrpc: 在终端输入 > testrpc 命令,以出现测试账号为成功,不要关闭,打开新的终端窗口进行下一步。
Truffle Develop:在终端输入 > truffle develop 命令,以出现测试账号为成功,可直接在此窗口进行下一步。
开启客户端之后再输入命令:
> truffle.cmd migrate
四、测试网页与合约交互
-
在上面的合约部署成功后,我们就可以在服务器中查看效果了。执行
> npm run dev - 浏览器打开 http://localhost:8080/ 可以看到一个 demo 页面
- 你也可以用 MetaCoin 浏览器 插件 连接 http://llocalhost:8545, 如果你用的以太坊可视客户端 Ganache 或 Truffle Develop 的话, Custom RPC 添加 http://localhost:7545 或 http://localhost:9545
五、从源代码构建 Docker 容器 :
1.git 下载
> git clone [https://github.com/trufflesuite/ganache-cli.git&&](https://github.com/trufflesuite/ganache-cli.git&&) cd ganache-cli > docker build -t trufflesuite/ganache-cli
- 运行镜像
> docker run -d -p 8545:8545 trufflesuite/ganache-cli:latest
六、附
虽然现在很多教程都是 truffle 和 Ethereumjs-testrpc 配合,但 truffle 官方推荐的是 Ganache,所以建议用 Ganache,文档会新一点。
更多精彩内容,关注链闻 ChainNews 公众号(id:chainnewscom),
或者来微博@ 链闻 ChainNews 与我们互动!
转载请注明版权和原文链接!
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

链闻研究院



