以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这篇文章不讲原理,只搭建环境,运行第一个区块链程序(Dapp)。

系统环境:osX

安装truffle

truffle依赖于NodeJS,所以首先打开 https://nodejs.org 下载安装。

安装完成后打开控制台,输入$ npm install -g truffle 完成安装,建议安装truffle3.2.1版本,后续版本在运行truffle服务器的时候都会碰到各种各样的问题。

另外,需要安装Ethereum客户端,来支持JSON RPC API调用 开发环境,推荐使用EthereumJS TestRPC: https://github.com/ethereumjs/testrpc

安装命令: $ npm install -g ethereumjs-testrpc

新建第一个项目

$ mkdir vpnone

$ cd vpnone

$ truffle init

默认会生成一个MetaCoin的demo,可以从这个demo中学习truffle架构
truffle架构

truffle架构

编译项目

$ truffle compile 

使用 truffle compile 编译项目的时候,正确返回结果:

Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts

truffle compile

部署项目

部署之前先启动TestRPC,新开一个控制台,输入$ testrpc

开始部署项目,控制台输入

 $ truffle migrate

部署项目可能会遇到如下错误(Error: No network specified. Cannot determine current network异常):

Error: No network specified. Cannot determine current network.

at Object.detect (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:41338:23)
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:202239:19
at finished (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:41266:9)
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:200593:14
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:63299:7
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:165077:9
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:161676:16
at replenish (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:162196:25)
at iterateeCallback (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:162186:17)
at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:162161:16

解决方法分为两部分,一是需要在 truffle.js 文件中配置如下内容:

module.exports = {
    networks: {
        development: {
            host: "localhost",
            port: 8545,
            network_id: "*"
         }
    }
};

截图如下:

配置truffle.js

再次输入 truffle migrate 命令会得到如下结果:

Using network 'development'.

Network up to date.

在控制台输入如下命令进行部署:

$ truffle migrate --reset

部署到测试链成功。

部署到测试链成功

启动服务

控制台输入命令:$ truffle serve

如果报以下(truffle serve 发生异常)错误:

/usr/local/lib/node_modules/truffle/build/cli.bundled.js:220978
return (new fsevents(path)).on('fsevent', callback).start();

      ^

TypeError: fsevents is not a constructor

at createFSEventsInstance (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:220978:11)
at setFSEventsListener (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:221032:16)
at FSWatcher.FsEventsHandler._watchWithFsEvents (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:221196:16)
at FSWatcher.<anonymous> (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:221330:25)
at gotStat (fs.js:1775:21)
at FSReqWrap.oncomplete (fs.js:152:21)

以上错误是因为 Truffle 版本导致的问题,正确的解决办法是卸载最新的Truffle,安装Truffle3.2.1。OSX系统采用以下方法:

npm uninstall -g truffle
npm install -g truffle@3.2.1

启动服务后,可以在浏览器访问项目: http://localhost:8080/ ,网页界面如下:

truffle Dapp Demo

我们已经使用Truffle完成第一个Dapp开发,一个简单的去中心化转账Dapp。

标签: Truffle, etherrum

仅有一条评论

  1. xiaozhi xiaozhi

    推荐两个区块链、以太坊开发DApp的实战教程:

    1. 适合区块链新手的以太坊DApp开发:
    http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412poach

    2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台:
    http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412poach

添加新评论