用truffle和openzeppelin发币

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章