博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以太坊合约的自动化编译详解一
阅读量:5237 次
发布时间:2019-06-14

本文共 1981 字,大约阅读时间需要 6 分钟。

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

一、安装Truffle

  1. 首先安装Truffle依赖的NodeJS:
    curl -sL | sudo -E bash -
    sudo apt-get install -y nodejs
    sudo apt-get install npm
    配置npm源为国内源(可选,可加快下载速度):
    sudo npm config set registry
  2. 安装Truffle
    sudo npm install -g truffle
    二、创建工程
    如果想创建一个空工程,可以用下面的命令:
    truffle init
    在早期版本的truffle中,刚刚创建的工程中还会包含metacoin的示例代码。新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。因此我们不需要用truffle init命令,用下面的命令就可以直接下载metacoin的示例代码:
    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现在有两个版本,一个是带图形界面的版本,下载地址:
这些可执行文件的后缀都比较奇葩,参见下面的对应关系:

● Windows: Ganache-*.appx

● Mac: Ganache-*.dmg

● Linux: Ganache-*.AppImage

还有一个就是命令行版本了,下载方法:

sudo npm install -g ganache-cli
具体的命令行参数配置参见github:

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

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

四、编译和部署合约

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

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

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

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

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

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

转载于:https://www.cnblogs.com/xiaocongcong888/p/9585854.html

你可能感兴趣的文章
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
实验2-2
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
IOS Google语音识别更新啦!!!
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
BootScrap
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
django ORM创建数据库方法
查看>>
php7 新特性整理
查看>>