truffle简介
官方网站:https://www.trufflesuite.com/
Truffle是针对基于以太坊的Solidity语言的一套开发框架。本身基于Javascript。
- 首先对客户端做了深度集成。开发,测试,部署一行命令都可以搞定。不用再记那么多环境地址,繁重的配置更改,及记住诸多的命令。
- 它提供了一套类似maven或gradle这样的项目构建机制,能自动生成相关目录,默认是基于Web的。当前这个打包机制是自定义的,比较简陋,不与当前流行打包方案兼容。但自已称会弃用,与主流兼容,好在它也支持自定义打包流程。
- 提供了合约抽象接口,可以直接通过var meta = MetaCoin.deployed();拿到合约对象后,在Javascript中直接操作对应的合约函数。原理是使用了基于web3.js封装的Ether Pudding工具包。简化开发流程。
- 提供了控制台,使用框架构建后,可以直接在命令行调用输出结果,可极大方便开发调试。
- 提供了监控合约,配置变化的自动发布,部署流程。不用每个修改后都重走整个流程。
openzeppelin简介
官方网站:https://openzeppelin.com/contracts/
因为智能合约往往涉及金钱,保证Soldity代码没有错误,以及足够的安全是非常根本的。Zeppelin Solutions,一个智能合约审查服务商,已经意识到相关的需求。建立在他们的合约审查经验之上,他们把一些最佳实践整理到了OpenZeppelin。它包括最常用的ERC标准实现。
安装truffle
需要nodejs环境
npm install -g truffle
npm install -g request
项目初始化、安装openzeppelin
mkdir myproject
cd myproject
truffle init
npm init -y
npm install --save-exact openzeppelin-solidity
编写合约
进入contracts目录创建PldToken.sol文件
pragma solidity ^0.5.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";
contract PldToken is ERC20, ERC20Detailed {
constructor () public
ERC20Detailed("Fuck Token", "PLD", 18)
{
_mint(msg.sender,10000 * (10 ** uint256(decimals())));
}
}
编译
truffle compile
编译成功后会在builds目录下生产ABI文件
修改配置
truffle-config.js
rinkeby: {
host: "yourip", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: "4", // Any network (default: none)
}
部署
创建部署文件,进入migrations目录,创建2_deploy_contracts.js,内容如下
const PldToken = artifacts.require("./PldToken.sol");
module.exports = function(deployer, network, accounts) {
if (network == "rinkeby") {
deployer.deploy(PldToken);
}
};
执行部署命令(部署在以太坊rinkeby测试网络)
#需要先解锁账号
truffle migrate --network rinkeby