Truffle是以太坊的开发者工具,是一个开发环境,测试框架,以太坊的资源管理通道
一、安装Truffle
npm install -g truffle
安装完成后,可以执行truffle
命令,确保Truffle被正确安装,会返回版本号
Truffle v5.0.42 - a development framework for Ethereum
二、创建并初始化项目
依次执行命令
mkdir dapp
cd dapp
truffle init
执行初始化命令后可以看到目录下生成了一些目录及文件,其中:
contracts:存放Solidity合约目录,
migrations:存放部署脚本文件目录,
test:测试脚本目录,
truffle-config.js 为Truffle配置文件
接下来介绍一下 Truffle Boxes,Truffle Boxes装有很多一些实用的项目模板,能让你忽略一些环境配置问题,从而使你能更专注于你的dapp特性开发。此外,Truffle Boxes还包含其他有用的组件, Solidity 合约和库, 前后端视图等等。更多可查看官网
那就下载个模板看看,MetaCoin是一个简单的代币应用,以此为例
mkdir metacoin
cd metacoin/
truffle unbox metacoin
相比执行init,多了关于metacoin的合约和库文件,合约部署文件和测试文件。
三、启动以太坊客户端
我们需要安装Ethereum客户端来支持JSON RPC API的调用。
有许多的以太坊客户端可以选择。我们推荐在本地开发和主网部署时使用不同客户端。
本地开发可以使用Canache、Ethereumjs-testrpc、或者truffle自带的Truffle Develop。
主网部署时使用Geth。
这里以Ethereumjs-testrpc为例,事实上,合约在部署到主网之前,都应先使用TestRPC进行充分测试。
安装TestRPC npm install -g ethereumjs-testrpc
运行TestRPC testrpc
会返回10组账号
EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)
Available Accounts
==================
(0) 0x7d905571177b03aef9b33d8a011bbef44bc56f64
(1) 0x2a31e7503568b24bf1963f86df31166e8726cc0c
(2) 0x619ac44690cc0d8a12abdaf489cef796eaaa7166
(3) 0x5445b8411c986f7cba9da5414a7d8993ce5e28f9
(4) 0x4392370b7384f146ccf3922356fa4dbe6782a082
(5) 0xcea9cca4ba15a2d416a594d00f11ce61660c3af4
(6) 0x1574c86a96d9a003cd20c345a40d1c65ce16dbce
(7) 0x50fc22b78a5e31d33710dd83b9e77f015b444fc5
(8) 0xc687db709bb773d69bd5e1d1d292e1077ed66104
(9) 0x035782af27f6a421dfbc20c24f25f6b73673f497
Private Keys
==================
(0) 0c82d25b833bd1179fdf60a800273c9962e8b1de1389c786b2762c89c5f52b32
(1) 8dc40982a864826b88069974c6dce0961d125e9c139b7fadaf651578cdfa922b
(2) 35f8c7eae37854e85a5403daae386d214978554e2ed5016b617c9c496bde3ea4
(3) 65701915d1a5ee65d559a5a3e38c4cbbd46b22608ae1c5d89629faea13779b0e
(4) befc8ab028aab79823a3963d3de38aa244d80b22659cdb0fb26e9584375feadc
(5) 598408b51d558619c326d2f4fb5d455f14bb6ffac0193930c2c3131801a8d8e0
(6) 75693092a9e897ebcf99de3ead64d0fd3d637484f9202b6541e562a0a6e26f9e
(7) df8bf21e6fc394f9d494db726414478a5c65bb3563b428ee92ab5fee93154093
(8) 908dd217b552a894c39e5b42c4bfacb709c06272af182132f03bd1a3b2df2ff6
(9) 361932382cc438e5f0bd884a2c21f909b9550a34543013e2b5024edf7ea07e02
HD Wallet
==================
Mnemonic: library grief design thought few best jungle age wire arrow license afraid
Base HD Path: m/44'/60'/0'/0/{account_index}
Listening on localhost:8545
四、编译部署合约
编辑配置文件truffle.js,保证配置文件中指定网络和你运行的网络一致。
这里要注意的是:Ganache默认运行在7545端口,Ethereumjs-testrpc 默认运行在8545端口,Truffle Develop 默认运行在9545端口
module.exports = {
networks: {
development: {
host: 'localhost',
port: '8545',
network_id: '*' // Match any network id
}
}
};
使用truffle compile
命令,编译生成build文件夹
使用
truffle migrate
命令,部署合约
五、测试合约
使用命令truffle test
可以看到测试结果和用时等相关信息。
网友评论