以太坊开发:如何发行代币

in cn •  7 years ago 

本文的目的是创建一个我们自己的支持ERC-20标准的代币。


一、关键词


Truffle

Truffle 是当前最活跃的 Ethereum 开发框架,具有调试、部署和测试智能合约等功能。此次建立加密代币的教程就是基于 Truffle 框架的开发。


ganache

在开发阶段需要测试,ganache 可以模拟智能合约所需要的以太坊区块链测试环境。

ganache 有桌面客户端以及命令行工具,本篇教程使用的是命令行工具搭配 Chrome 的 MetaMask 来进行测试。


OpenZeppelin

Zeppelin是一种构建安全智能合约的开源架构,我们使用OpenZeppelin函数库来创建一个简易发币合约。


二、环境配置


$ npm install -g truffle

$ npm install -g ganache-cli


三、初始化项目


$ mkdir coin-workspace

$ cd coin-workspace

$ truffle unbox tutorialtoken


在项目的根目录使用 npm 安装

$ npm install zeppelin-solidity


四、运行ganache


在我们部署智能合约之前,首先需要有一个以太坊区块链测试环境。新开一个命令行工具,输入以下命令:

$ ganache-cli


将会在本地生成以太坊区块链环境,会自动创建 10 个账号(Accounts),以及每个账号对应的私钥(Private Keys),每个账号中拥有 100 个测试用的以太币(Ether),我这里本地监听的端口是8454。


五、创建部署智能合约


1. 我们在contracts目录下新建一个 TutorialToken.sol 的文件(或者也可以用 truffle create contract TutorialToken.sol 命令来建立)。

写入以下内容:


+++++++++++++++++++++++++++++


pragma solidity ^0.4.2; // 指明目前使用的solidity版本,不同版本可能会编译出不同的bytecode


import 'zeppelin-solidity/contracts/token/ERC20/StandardToken.sol';


// contract 关键字类似于其它语言的class。可以理解为TutorialToken继承了Contract类,具有智能合约的特性。is 关键字类型于其它语言的extends,TutorialToken 继承了 StandardToken 的属性及方法。

contract TutorialToken is StandardToken {

    string public name = 'DogToken';     // 设置代币名称

    string public symbol = 'TT';         // 设置代币代号

    uint8 public decimals = 2;           // 设置代币最小交易单位(精度)

    uint public INITIAL_SUPPLY = 10000; // 设置代币发行量

    

    function TutorialToken() public {

        totalSupply_ = INITIAL_SUPPLY;   

        balances[msg.sender] = INITIAL_SUPPLY;

    }

}


+++++++++++++++++++++++++++++


2. 在 migrations/ 目录下,我们可以看到 truffle 框架提供了方便部署合约的脚本。接下来我们创建 2_deploy_contracts.js 的文件。

写入以下内容:


+++++++++++++++++++++++++++++


var TutorialToken = artifacts.require("TutorialToken");


module.exports = function(deployer) {

    deployer.deploy(TutorialToken);

};


+++++++++++++++++++++++++++++


3. 修改项目根目录的truffle.js文件


+++++++++++++++++++++++++++++


module.exports = {

  // See <http://truffleframework.com/docs/advanced/configuration>

  // for more about customizing your Truffle configuration!

  networks: {

    development: {

      host: "localhost",

      port: 8545,

      network_id: "*" // Match any network id

    }

  }

};


+++++++++++++++++++++++++++++


编译和部署智能合约

$ truffle compile

$ truffle migrate


六、安装及配置 MetaMask


MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便。


具体安装请自行google


操作流程说明:

1. 安装好后连接本地运行的ganache服务(我是在远程服务器上运行的,然后通过nginx做了个代理)

2. 使用私匙导入功能导入两个ganache生成的账号

3. 然后可以在两个账号之间发送代币


Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

发行的代币在两个自己注册的账号之间转账,需要支付手续费吗

@songtiejun ,需要 。

  • 以太币转账token 转移 本质上都是在执行 操作, 而 以太坊 上执行任何操作都需要支付 gas ,而 gas 的价格由矿工决定的,以 以太币 进行支付手续费。

谢谢楼主分享!推荐一个区块链新手入门的以太坊DApp开发教程:
http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180417steemit