1.truffle 网站找到box下的webpack,本地新建文件下cmd进入dos命令窗口,输入truffle unbox webpack 下载webpack包。
2.目录内容
- contracts: 存放只能合约,默认创建一个Migrations.sol合约
- migrations :存放部署脚本
- test: 存放测试脚本
- truffle.js :truffle的配置文件
3.编译智能合约
truffle compile会生成build文件夹,build文件夹下会有智能合约对应的json文件;json文件会包含ABI接口,包括合约中定义的函数,变量等。
4.部署智能合约
truffle migrate
在migrations中编写部署智能合约的脚本,以webpack中部署脚本为例,
//编写部署脚本2_deploy_contracts.js
var ConvertLib = artifacts.require("./ConvertLib.sol");
var MetaCoin = artifacts.require("./MetaCoin.sol");
module.exports = function(deployer) {
deployer.deploy(ConvertLib);
deployer.link(ConvertLib, MetaCoin);
deployer.deploy(MetaCoin);
};
// 配置truffle.js
// Allow us to use ES6 in our migrations and tests
require('babel-register')
module.exports = {
networks: {
development :{
host : '127.0.0.1',
port: 7545,
network_id:'*'
}
}
}
5.运行Dapp
npm run dev
6. 区块链客户端
ganache 私有区块链环境,是以太坊节点仿真器,可以看到账户,区块,以及交易信息和日志。
ganache开启后监听网络,默认是http://127.0.0.1:7545,将显示前10个账户以及用于创建这些账户的助记符、
Truffle develop, 是内置于truffle 的开发区块链环境,无需安装,只需要在终端输入truffle develop即可,运行在根据truffle.js 配置的网络和端口,将显示前10个账户以及用于创建这些账户的助记符;truffle develop 提供了一个控制台,可以
在控制台终端输入truffle的所有命令,并且不需要truffle前缀,比如在终端输入truffle compile,在develop控制台只需要输入
compile.
7.truffle 命令参考
truffle compile [--all] [--network
truffle console [--network
truffle create (contract | migration | test)
truffle debug
truffle exec
truffle init 初始化空的项目
truffle install [package_name]<@version> 安装在ETHPM上注册的安装包, package_name 是包名,<@version>指定安装包的版本
truffle migrate [--reset] [-f
-f
--compile-all 编译所有合约,--verbose-rpc 记录truffle和以太坊客户端之间的通信
truffle networks [--clean ] 显示所有网络,--clean 表示删除与命名网络无关的所有网络工作,一般用于发布包之前清楚无关网络,
truffle opcode
truffle publish 将包发布到ETHPM。
truffle serve [ -p
truffle test
truffle unbox
truffle version 查看版本
truffle watch 监视文件系统的进行更改并自动重建项目。此命令将启动对合同,应用程序和配置文件更改的监视。如果有更改,它将根据需要重建应用程序。类似于truffle serve ,但是没有Web服务组件。
truffle 有两种API: Contract Abstraction API合约抽象API和Contract Instance API合约实例API。合约实例API是根据合约源文件中可用的函数创建的,合约抽象API是一组存在于所有合约中的函数。
MyContract.new([arg1, arg2, ...],[tx params]) 根据MyContract的构造函数参数[arg1, arg2, ...]创建一个合约实例并部署到网络。
MyContract.at(address) 合约地址创建合约实例
MyContract.deployed() 创建表示合约所在地址的合约抽象的实例,当地址设置时,truffle 会保存地址,以便可以从所使用的给定以太网网络推断部署的地址。这允许你引用已经部署的合约编写代码而不用自己管理地址。
MyContract.setProvider(provider) 设置合约抽象将用来做交易的web3服务器
MyContract.setNetwork(network_id) 设置合约所代表的网络
MyContract.hasNetwork(network_id) 合约抽象是否表明一个特定网络
//继续翻译https://github.com/trufflesuite/truffle-contract
每个合约实例根据solidity不同动态创建