开发实战|如何用15行代码发布 token(附操作视频)

开发实战|如何用15行代码发布 token(附操作视频)_第1张图片

本文会覆盖以下内容:

  • 开发环境的准备,参考开发实战|3步教你在以太坊上开一家宠物店(附流程+代码)

  • 从 Truffle box 创建项目

  • 编写 FakeToken 智能合约

  • 编译部署智能合约

  • 用新的 token 进行转账

收益:

  • 实际还原发布新token的开发全过程

  • 详细指导token涉及的智能合约部署

  • 完全解读发布新token的15行代码

以下是Bob根据开发过程整理的流程文档。

1

开发环境的准备

本地环境Mac

这个教程会用到的环境:

  • 开发环境:node.js, npm (本文用到的node version, v9.11.1 npm version v5.6.0)

  • 编译部署环境:truffle (version 4.1.5, solidity 0.4.21)

  • 以太坊私链:ganache (version 1.1.0)

开发环境的准备操作,可以参考开发实战|3步教你在以太坊上开一家宠物店(附流程+代码)

2

创建项目

BobJianglocal:truffle bobjiang$ truffle unbox tutorialtoken

truffle框架目录介绍:

  • contracts/ : 智能合约文件存在这里,后缀.sol (solidity)

  • migrations/ : 部署脚本

  • test/ : 测试脚本

  • truffle.js :truffle的配置文件

3

安装OpenZeppelin

BobJianglocal:truffle bobjiang$ npm install zeppelin-solidity

4

编写智能合约

在 contracts/ 目录下创建 FakeToken.sol 文件,内容如下:

pragma solidity ^0.4.17;

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

contract FakeToken is StandardToken {
   string public name = ‘FakeToken’;
   string public symbol = ‘TT’;
   uint8 public decimals = 2;
   uint public INITIAL_SUPPLY = 12000;

   function FakeToken() public {
     totalSupply_ = INITIAL_SUPPLY;
     balances[msg.sender] = INITIAL_SUPPLY;
   }
}

5

编译部署合约

编译合约

BobJianglocal:truffle bobjiang$ truffle compile
Compiling ./contracts/FakeToken.sol…
Compiling ./contracts/Migrations.sol…

Writing artifacts to ./build/contracts

上面有警告的地方,可以忽略。(原来给的文件里面没有指定函数的可见性)

部署合约

1、在 migratios/ 目录内创建新文件 2_deploy_contracts.js 内容如下:

var FakeToken = artifacts.require(“FakeToken”);

module.exports = function(deployer) {
 deployer.deploy(FakeToken);
};

2、确保安装好了 ganache

安装好后第一次启动的界面如下(借用的源文档图片)

开发实战|如何用15行代码发布 token(附操作视频)_第2张图片

3、智能合约部署到以太坊(私链)上

BobJianglocal:truffle bobjiang$ truffle migrate
Using network ‘development’.

Running migration: 1_initial_migration.js
 Deploying Migrations…
 … 0x579459f9d2e89ed07356c7565056e082b540c5f441ffcdc1e4676f42536451d5
 Migrations: 0x651ee6754b509e0f3413fcb6c88c6c20dc8c9d28
Saving successful migration to network…
 … 0xfafeb069ba502196abeabef2c097bdd9e4db9ab02c98a9b98d8db47f7d205a9b
Saving artifacts…
Running migration: 2_deploy_contracts.js
 Deploying Adoption…
 … 0xaee412f76fe2ed3853f8e138f009cd8fca23835547a39e23188affef55665460
 Adoption: 0x104ba492f5d8f4e0df6971ae09ca0c9b496ff15b
Saving successful migration to network…
 … 0x9219eeba1a1eb945d4fe1fb1bf6cdb2b70218c22b264134cfd97e2f4dfe026ef
Saving artifacts…

部署完成后,可以看到有四笔交易(四个区块):

开发实战|如何用15行代码发布 token(附操作视频)_第3张图片

6

转账新的 token

前端修改

修改默认的RPC port,9545修改为ganache的7545

App.web3Provider = new Web3.providers.HttpProvider(‘http://127.0.0.1:9545‘);

修改调用合约的脚本

下面的TutorialToken.json修改为FakeToken.json

$.getJSON(‘TutorialToken.json’, function(data) {

配置 MetaMask

配置 MetaMask 连接本地 ganache

MetaMask 创建新的账号(会自动添加 ganache 中第二个账号)

启动本地 HTTP 服务器

BobJianglocal:truffle bobjiang$ npm run dev

自动打开新网页,如下

开发实战|如何用15行代码发布 token(附操作视频)_第4张图片

转账

我们新发布的 token 默认存在第一个账户中,我们现在从第一个账户向第二个账户进行转账,来测试我们新的 token

MetaMask 中选择第一个账户,刷新网页,会显示上述的网页

第一个输入框,输入第二个账户的地址

第二个输入框,输入转账金额(这里我们前面的 decimals 设置为 2,则转账金额会截断2位小数)

点击 “Transfer”

会弹出如下网页(MetaMask钱包)

开发实战|如何用15行代码发布 token(附操作视频)_第5张图片

点击“Submit”,会收到转账成功的提示

返回 ganache 查看,新增一笔交易

进入 MetaMask ,点击第二个账户,然后刷新网页,可以看到第二个账户已经收到了新的 token

钱包中显示新 token

1、打开 MetaMask 钱包,选择第一个账户,点击 TOKENS 标签,如下

开发实战|如何用15行代码发布 token(附操作视频)_第6张图片

2、输入 token contract address

3、在 ganache 中找到创建 token 合约的地址,如下图

开发实战|如何用15行代码发布 token(附操作视频)_第7张图片

4、输入 token 合约地址后,自动带出 token symbols 和 decimals

5、点击确认即可

至此,我们在 MetaMask 钱包里,就可以完美显示我们新的 token 了。

参考文档:BUILDING ROBUST SMART CONTRACTS WITH OPENZEPPELIN

(地址:http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin)

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

开发实战|如何用15行代码发布 token(附操作视频)_第8张图片

你可能感兴趣的:(技术之路,区块链)