以太坊开发(一)——Truffle和Ganache

19人阅读 评论(0) 收藏 举报
分类:

转载自:https://blog.csdn.net/turkeycock/article/details/79165602

Truffle是目前最流行的以太坊开发框架,采用JavaScript编写,支持智能合约的编译、部署和测试。

一、安装Truffle
1. 首先安装Truffle依赖的NodeJS:

[html] view plain copy
  1. curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -  
  2. sudo apt-get install -y nodejs  
  3. sudo apt-get install npm  
    配置npm源为国内源(可选,可加快下载速度):
[html] view plain copy
  1. sudo npm config set registry http://registry.npm.taobao.org   
2. 安装Truffle
[html] view plain copy
  1. sudo npm install -g truffle  
二、创建工程
如果想创建一个空工程,可以用下面的命令:
[html] view plain copy
  1. truffle init  
在早期版本的truffle中,刚刚创建的工程中还会包含metacoin的示例代码。新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。因此我们不需要用truffle init命令,用下面的命令就可以直接下载metacoin的示例代码:
[html] view plain copy
  1. truffle unbox metacoin  
代码结构如下图所示:

主要分为3个部分:

●  contracts目录中包含Solidity合约代码,其中Migrations.sol是必须的,其他就是你自己写的合约代码了。

●  migrations目录中包含合约部署脚本,其中1_initial_migration.js就是用来部署Migrations.sol的,其他的脚本会按照顺序依次执行。

●  test目录中就是测试代码了。


三、安装以太坊客户端

智能合约必须要部署到链上进行测试。可以选择部署到一些公共的测试链比如Rinkeby或者Ropsten上,缺点是部署和测试时间比较长,而且需要花费一定的时间赚取假代币防止out of gas。

还有一种方式就是部署到私链上,Truffle官方推荐使用以下两种客户端:

●  Ganache

●  truffle develop


1. Ganache

Ganache这个名字比较陌生,但是它的前身testRPC却是大名鼎鼎,网上的很多老文章里都是用testRPC。Ganache是奶油巧克力的意思,据说是很久之前有个学徒做巧克力的放多了牛奶,师傅正要骂他,结果一尝发现味道还真不错,于是一种新的巧克力就诞生了~ Truffle是松露巧克力,一般是以Ganache为核,然后上面撒上可可粉,所以这两个产品的名字还是很贴切的。
Ganache现在有两个版本,一个是带图形界面的版本,下载地址:
https://github.com/trufflesuite/ganache/releases

这些可执行文件的后缀都比较奇葩,参见下面的对应关系:

●  Windows: Ganache-*.appx

●  Mac: Ganache-*.dmg

●  Linux: Ganache-*.AppImage


还有一个就是命令行版本了,下载方法:
[html] view plain copy
  1. sudo npm install -g ganache-cli  
具体的命令行参数配置参见github:
https://github.com/trufflesuite/ganache-cli

本文采用带图形界面的Ganache版本。

2. truffle develop
这个是truffle内置的客户端,跟命令行版本的Ganache基本类似。唯一要注意的是在truffle develop里执行truffle命令的时候需要省略前面的“truffle”,比如“truffle compile”只需要敲“compile”就可以了。

四、编译和部署合约
Ganache默认运行在7545端口,可以在界面右上方的“设置”里进行更改。运行后默认创建10个账号,每个账号里有100ETH的余额。
要部署到链上,需要把IP、端口、网络ID告诉truffle。修改truffle.js:
[javascript] view plain copy
  1. module.exports = {  
  2.     networks: {  
  3.         development: {  
  4.             host: 'localhost',  
  5.             port: '7545',  
  6.             network_id: '*' // Match any network id  
  7.         }  
  8.     }  
  9. };  
然用下面两条命令编译和部署:
[html] view plain copy
  1. truffle compile  
  2. truffle migrate  
五、测试合约
metacoin的示例代码里已经把测试代码写好了,直接用下面的命令运行就可以了:
[html] view plain copy
  1. truffle test  

去Ganache上看一下运行结果:

●  Accounts标签:第一个账户里ETH略有减少,因为交易消耗了gas

●  Blocks标签:Ganache是自动挖矿,生成了6个新区块,每个区块里有一个交易

●  Transactions标签:有6笔新交易,可以点开看交易详情

●  Logs标签:显示交易和挖矿日志


下一篇分析一下这个最简单例子里的合约代码和部署、测试脚本。
查看评论

013 基于truffle的PetShop案例

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。truffle里面有几个例子还是不错的,也看到很多人进行翻译,我这里就不翻译啦,介绍安装和部署遇到的坑。坑一:PetShop这个案例的坑在于src/...
  • zxs9999
  • zxs9999
  • 2018-01-24 20:51:43
  • 708

【区块链】Truffle 部署 编译 测试 智能合约 的 完整实践操作

Truffle 部署 编译 测试 智能合约 的 完整实践操作目标 搭建开发环境 创建一个Truffle项目 编写智能合约 编译转移智能合约 测试智能合约 创建用户界面连接智能合约 在浏览器中访问Dap...
  • diandianxiyu
  • diandianxiyu
  • 2017-10-27 10:05:20
  • 5545

阿里云服务器上部署去中心化应用-pet shop

阿里云部署Pet-shop遇到的问题
  • zzt_2015
  • zzt_2015
  • 2018-01-24 16:43:41
  • 237

宠物商店(pet-shop) 学习笔记

宠物商店(pet-shop) 学习笔记 truffle 可以算是一个超级强大的 Ethereum 开发工具集, 集各种的功能集一身, 今天, 照着官方的文档, 和 手把手的教程, 完成了其中提供的一...
  • zz709196484
  • zz709196484
  • 2018-02-16 22:51:30
  • 513

truffle-pet-shop

  • 2018年01月19日 10:23
  • 534KB
  • 下载

以太坊开发入门,完整入门

以太坊开发入门,完整入门 翻译自:https://medium.com/@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe ...
  • huangshulang1234
  • huangshulang1234
  • 2018-02-28 09:22:17
  • 1555

pet shop学习.大家都在研究他.

都说这是学习asp.net的好东东,咱也学一下吧,下载装上以后,打开...迷茫了..搜了一些不错的文章,PetShop的系统架构设计   http://www.cnblogs.com/wayfarer...
  • nihongyuan
  • nihongyuan
  • 2008-01-10 20:47:00
  • 332

truffle migrate命令的使用

truffle migrate命令的使用 概述 Migrations 是帮助你向以太坊网络中部署合约的JavaScript文件。这些文件负责部署你的合约文件,而且它们会在假设你的部署需求会随着...
  • myNameIssls
  • myNameIssls
  • 2018-02-02 09:38:59
  • 363

选择一个以太坊客户端

选择一个以太坊客户端 开发时选择 GANACHE GANACHE是一个运行在个人桌面上的上的以太坊开发者的个人区块链。GANACHE是Truffle Suite的一部分,通过把合约和交易...
  • myNameIssls
  • myNameIssls
  • 2018-01-23 15:38:59
  • 1310

Ubuntu14.0搭建以太坊私有链开发环境

目录 前言依赖环境步骤跑一个例子参考链接 前言 区块链有多热就不说了. 结合实操,搭建一个基于truffle框架的以太坊私有链开发环境。 依赖环境 ...
  • shang3988
  • shang3988
  • 2018-01-06 20:51:56
  • 1055
    个人资料
    等级:
    访问量: 7万+
    积分: 2335
    排名: 1万+
    最新评论