Truffle 5 手册

Truffle命令
命令行概述 truffle build - 构建项目 truffle compile - 编译合约 truffle config - 分析功能开关 truffle console - 启动控制台 truffle create - 创建新构件 truffle debug - 调试链上交易 truffle deploy - 部署合约 truffle develop - 启动开发控制台 truffle exec - 执行JS脚本 truffle help - 帮助信息 truffle init - 初始化项目 truffle install - 安装以太坊包 truffle migrate - 部署合约 truffle networks - 检查网络构件 truffle opcode - 显示合约操作码 truffle publish - 发布以太坊包 truffle run - 运行插件命令 truffle test - 执行测试 truffle unbox - 下载项目模板 truffle version - 显示i版本信息 truffle watch - 自动重新构建
Truffle配置文件
配置文件概述 networks - 网络配置 contracts_directory - 合约目录配置 contracts_build_directory - 合约构建目录配置 migrations_directory - 迁移脚本目录配置 mocha - 测试配置 compilers.solc - Solidity编译器配置 compilers.external - 外部编译器配置
合约抽象层API
合约抽象对象概述 MyContract.new - 部署新合约 MyContract.at - 载入已部署合约 MyContract.deployed - 载入默认合约 MyContract.link - 链接合约库 MyContract.networks - 获取网络列表 MyContract.setProvider - 设置web3提供器 MyContract.setNetwork - 设置网络 MyContract.hasNetwork - 检测指定网络 MyContract.defaults - 实例默认值 MyContract.clone - 克隆合约抽象 MyContract.numberFormat - 数值格式 MyContract.timeout - 交易超时区块数 MyContract.autoGas - 是否自动估算gas MyContract.gasMultiplier - 设置gas估算倍数
Truffle Box API
Truffle Box概述 Truffle Box配置文件 Truffle Box图像规范 Truffle Box发布流程
使用指南
在Truffle中使用Metamask
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

在Truffle中使用MetaMask

在浏览器中与智能合约交互之前,确保已经编译、部署了合约,并且使用客户端js中的web3 对象访问区块链。我们建议使用truffle-contract库,这个库可以简化与合约的交互,并且 非常稳定。

现在我们来尝试MetaMask。

MetaMask是什么

MetaMask是在浏览器中访问DAPP的最简单的方法,它是Chrome或Firefox浏览器的扩展,可以 接入以太坊网络而无需在浏览器所在的机器上运行一个全节点。它可以接入以太坊主网、 测试网(Ropsten、Kovan、Rinkeby等)或者一个本地区块链,例如Ganache或Truffle Develop 创建的开发区块链。

对于使用Truffle的开发者而言,这意味着我们可以让普通用户以同样的方式访问我们的DAPP。

安装MetaMask

要安装Chrome的MetaMask插件,请前往Chrome Web Store 然后点击[Add to Chrome]按钮。

要安装Firefox的MetaMask插件,请前往Firefox Add-ons 页面然后点击[Add to Firefox]按钮。

使用MetaMask访问Ganache

Ganache是一个用于测试的图形化区块链模拟器, 它运行在地址127.0.0.1:7545.

注意:我们建议指定127.0.0.1而非localhost因为该地址不需要网络连接,因此更适合开发环境。

在继续下一步之前,我们需要确保dapp检查MetaMask的web3实例。MetaMask会注入它 自己的web3实例,因此我们在浏览器页面载入后执行下面的检查:

// Is there is an injected web3 instance?
if (typeof web3 !== 'undefined') {
  App.web3Provider = web3.currentProvider;
  web3 = new Web3(web3.currentProvider);
} else {
  // If no injected web3 instance is detected, fallback to Ganache.
  App.web3Provider = new web3.providers.HttpProvider('http://127.0.0.1:7545');
  web3 = new Web3(App.web3Provider);
}

配置MetaMask

要在MetaMask中使用Ganache,点击浏览器中的MetaMask图标,将弹出以下窗口:

点击Import with seed phrase,在弹出的文本框中输入Ganache显示的助记词:

输入密码,然后点击OK

现在我们需要将MetaMask连接到Ganache创建的区块链。点击菜单中的Main Network 然后选择Custom RPC

在输入框中输入 http://127.0.0.1:7545,然后点击**Save**。

顶部的网络名称将切换到Private Network。点击顶部右侧的叉关闭页面返回账户页。

现在已经将MetaMask连接到了Ganache,每个账户都有100 ether。第一个账号 的余额可能会少一点,因为可能之前使用这个账户来部署了智能合约。

点击顶部左侧的account图标创建新的账户:

在Truffle中使用MetaMask

Truffle Develop是一个命令行应用,它启动一个临时区块链,可以用于测试,运行在地址127.0.0.1:9545。

Truffle Develop的使用非常类似于Ganache,唯一的区别在于Truffle Develop默认运行在 127.0.0.1:9545,因此我们将修改上面的Web3代码:

// Is there is an injected web3 instance?
if (typeof web3 !== 'undefined') {
  App.web3Provider = web3.currentProvider;
  web3 = new Web3(web3.currentProvider);
} else {
  // If no injected web3 instance is detected, fallback to Truffle Develop.
  App.web3Provider = new web3.providers.HttpProvider('http://127.0.0.1:9545');
  web3 = new Web3(App.web3Provider);
}

同时配置MetaMask,使其连接到 http://127.0.0.1:9545。

在MetaMask中访问Ganache-cli

在MetaMask中连接Ganache CLI和连接Ganache非常类似,唯一的区别是Ganache CLI默认监听 地址为 http://127.0.0.1:8545 ,因此需要相应地调整代码:

// Is there is an injected web3 instance?
if (typeof web3 !== 'undefined') {
  App.web3Provider = web3.currentProvider;
  web3 = new Web3(web3.currentProvider);
} else {
  // If no injected web3 instance is detected, fallback to Ganache CLI.
  App.web3Provider = new web3.providers.HttpProvider('http://127.0.0.1:8545');
  web3 = new Web3(App.web3Provider);
}

在MetaMask中,配置连接URL为 http://127.0.0.1:8545.