区块链(七)windows 以太坊开发框架Truffle环境搭建

Truffle框架搭建的教程网上也有好多,但是随着truffle版本的更新,truffle.js改名truffle-config.js、truffle命令升级、truffle与testrpc端口不一致、浏览器钱包插件等问题,导致原有的教程不再适用。

包括nodejs、truffle、solc、web3js、ganache的环境搭建。

windows8.1 x64

Truffle是一个世界级的开发环境,测试框架,以太坊的资源管理通道,致力于让以太坊上的开发变得简单。

Truffle有以下功能:

内置的智能合约编译,链接,部署和二进制文件的管理。

快速开发下的自动合约测试。

脚本化的,可扩展的部署与发布框架。

部署到不管多少的公网或私网的网络环境管理功能

使用EthPM&NPM提供的包管理,使用ERC190标准。

与合约直接通信的直接交互控制台(写完合约就可以命令行里验证了)。

可配的构建流程,支持紧密集成。

在Truffle环境里支持执行外部的脚本。

一、安装DApp开发环境

1.1 安装Node.js

我们使用官方长期支持的8.10.0LTS版本,下载64位包装包。 

下载后直接安装即可。安装完毕,打开一个控制台窗口,可以使用node了:

C:\Users\Administrator> node -v

v8.10.0

1.2 安装节点仿真器

为了快速开发和测试以太坊DApp,我们通常使用以太坊节点仿真器来模拟区块链,最流行的节点仿真器就是Ganache,之前被称为TeseRPC。

在控制台执行以下命令:

C:\Users\Administrator> npm install -g ganache-cli

安装完毕后,执行命令验证安装成功:

C:\Users\Administrator>ganache-cli --version

Ganache CLI v6.1.6 (ganache-core: 2.1.5)

要了解ganache命令行的详细用法,可以查看以太坊ganache CLI命令行参数详解

如果你是Win10,也可以下载预编译的Win10软件包,安装图形版的ganache。

1.3 安装solidity编译器

solidity是开发以太坊智能合约的编程语言,不熟悉的话可以查看以太坊solidity开发语言简介

C:\Users\Administrator> npm install -g solc

安装完毕后,执行命令验证安装成功

C:\Users\Administrator > solcjs -version

0.40.2+commit.3155dd80.Emscripten.clang

1.4安装web3

C:\Users\Administrator> npm install -g web3@0.20.2

安装验证:

C:\Users\Administrator>node -p 'require("web3")'

require(web3)

1.5安装truffle框架

执行以下命令安装truffle开发框架:

C:\Users\Administrator> npm install -g truffle

验证安装:

C:\Users\Administrator> truffle version

Truffle v4.1.13 (core 4.1.13)

1.6安装webpack

执行以下命令安装webpack:

C:\Users\Administrator > npm install -g webpack@3.11.0

验证安装:

C:\Users\Administrator > webpack -v

3.11.0

二、构建示例项目 (往下坑比较多,搭建成功否,都得随缘,所以不建议windows去学习区块链)

2.1 新建DApp项目

执行以下命令创建项目目录并进入该目录

d:\work\geth> mkdir hello

d:\work\geth > cd hello

然后用webpack模版初始化项目骨架结构:新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。

老版本的是truffle init,默认会生成一个MetaCoin的demo,可以从这个demo中学习truffle的架构。

d:\work\geth\hello> truffle unbox webpack

Downloading…

Unpacking…

Setting up…

Unbox successful. Sweet!

注意:此处在setup处比较慢,需要从网上下载东西,持续10-20分钟左右。

2.2 修改truffle配置

如果你使用图形版的ganache,不需要修改truffle.js配置文件。否则,需要将truffle.js修改为truffle-config.js中,修改galance:为development:,修改port为8545,因为ganache-cli在8545端口监听:

注意:老的教程是truffle.js。由于版本升级需要变更为truffle-config.js。如果是在git的bash shell下仍然是可用truffle.js的。

2.3 启动节点

执行以下命令启动节点仿真器,以便部署合约并执行交易:

d:\work\geth\hello> ganache-cli

成功之后如图:会给自动建立10个账户,必须先启动这个之后才能合约的编译与部署。否则部署不成功。

或者直接启动9545端口的truffle自带的以太坊环境。(需要在项目路径里启动,集d:\work\geth\hello)

2.4 安装项目依赖的NPM包

执行以下命令安装nmp包:

d:\work\geth\hello> npm install

2.5 编译合约

执行以下命令编译项目合约:

d:\work\geth\hello> truffle compile

注意:这个命令必须在hello项目下运行。不返回错误即是成功

2.6 部署合约:

执行以下命令来部署合约:

d:\work\geth\hello> truffle migrate

2.7 启动DApp

执行以下命令来启动DApp:

d:\work\geth\hello> npm run dev

启动比较慢,上图给出了浏览器地址 http://locaohost:8081/,一致等到最后才提示成功,如下图:

如果你希望从别的机器也可以访问你的DApp应用,修改一下package.json:

{

  scripts:{

    "dev": "webpack-dev-server –-host 0.0.0.0"

  }

}

运行成功

请求合约的端口9545和testrpc监听端口8545不一致,只要把两者改成一致就行,解决办法以下二选一即可 :

1. 修改合约调用代码。helloworld\app\javascripts\app.js,把window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:9545"));的端口号9545改为8545


2.    testrpc监听端口改为8545。

启动testrpc时用命令行 testrpc –p 9545。

truffle部署合约的端口也改为9545,在truffle-config.js把port参数改为9545。

执行truffle compile、truffle migrate、npm run dev重新编译、部署、启动。

二、如果要让别的机器访问Dapp应用

在package.json修改

 保存后,重新启动Dapp 把防火墙关闭

在另一台机器的浏览器打开

访问成功

=============以上采用的是ganache-cli 默认8545端口生产的以太坊私链========

也可以采用truffle develop自带的默认9545端口的以太坊私链

执行 truffle develop,会生成十个测试账号,同时进入truffle控制台(可以在此控制台,编译和部署,执行合约)

编译合约,使用:compile,migrate

后面操作同上。

truffle 指令指南

可以使用 geth attach http://127.0.0.1:9545 连接evm. 

写到这里就基本结束了,总结一下:

truffle 是目前来说比较受欢迎的一个框架,掌握它会让开发以太坊DAPP变得方便。虽然现在很多教程都是truffle和Ethereumjs-testrpc配合,但truffle官方推荐的是Ganache,所以建议用Ganache,文档会新一点。无论是Ethereumjs-testrpc、Ganache还是Truffle Develop,都是基于本地测试的以太坊客户端,只需要选一个就好,当然为了体验测试也可以跟我一样每个都试试。

技术贴的更新迭代很快,有些命令可能在文章发布之后就被更新了,最好还是查询相关文档用最新的命令。

MetaCoin的demo网页只提供了发送MetaCoin,自己尝试在网页上添加查询余额的功能,来更深的了解网页与合约的调用。

参考:

https://blog.csdn.net/phil_code/article/details/79769247

https://blog.csdn.net/mongo_node/article/details/80139174

https://blog.csdn.net/shusheng0007/article/details/79312300/

http://www.mamicode.com/info-detail-2279330.html

https://www.jianshu.com/p/2e2b3b12eb0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,049评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,478评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,109评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,097评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,115评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,280评论 1 279
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,748评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,398评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,553评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,440评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,487评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,176评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,750评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,821评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,049评论 1 257
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,559评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,150评论 2 341

推荐阅读更多精彩内容