本文會覆蓋如下內容:前端
開發環境的準備,參考開發實戰|3步教你在以太坊上開一家寵物店(附流程+代碼)node
從 Truffle box 建立項目ios
編寫 FakeToken 智能合約web
編譯部署智能合約npm
用新的 token 進行轉帳json
收益:服務器
實際還原發布新token的開發全過程框架
詳細指導token涉及的智能合約部署ide
徹底解讀發佈新token的15行代碼函數
如下是Bob根據開發過程整理的流程文檔。
本地環境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步教你在以太坊上開一家寵物店(附流程+代碼)
BobJianglocal:truffle bobjiang$ truffle unbox tutorialtoken
truffle框架目錄介紹:
contracts/ : 智能合約文件存在這裏,後綴.sol (solidity)
migrations/ : 部署腳本
test/ : 測試腳本
truffle.js :truffle的配置文件
BobJianglocal:truffle bobjiang$ npm install zeppelin-solidity
在 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; } }
編譯合約
BobJianglocal:truffle bobjiang$ truffle compile Compiling ./contracts/FakeToken.sol... Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts
上面有警告的地方,能夠忽略。(原來給的文件裏面沒有指定函數的可見性)
部署合約
一、在 migratios/ 目錄內建立新文件 2_deploy_contracts.js 內容以下:
var FakeToken = artifacts.require("FakeToken");
module.exports = function(deployer) { deployer.deploy(FakeToken); };
二、確保安裝好了 ganache
安裝好後第一次啓動的界面以下(借用的源文檔圖片)
三、智能合約部署到以太坊(私鏈)上
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...
部署完成後,能夠看到有四筆交易(四個區塊):
前端修改
修改默認的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
自動打開新網頁,以下
轉帳
咱們新發布的 token 默認存在第一個帳戶中,咱們如今從第一個帳戶向第二個帳戶進行轉帳,來測試咱們新的 token
MetaMask 中選擇第一個帳戶,刷新網頁,會顯示上述的網頁
第一個輸入框,輸入第二個帳戶的地址
第二個輸入框,輸入轉帳金額(這裏咱們前面的 decimals 設置爲 2,則轉帳金額會截斷2位小數)
點擊 「Transfer」
會彈出以下網頁(MetaMask錢包)
點擊「Submit」,會收到轉帳成功的提示
返回 ganache 查看,新增一筆交易
進入 MetaMask ,點擊第二個帳戶,而後刷新網頁,能夠看到第二個帳戶已經收到了新的 token
錢包中顯示新 token
一、打開 MetaMask 錢包,選擇第一個帳戶,點擊 TOKENS 標籤,以下
二、輸入 token contract address
三、在 ganache 中找到建立 token 合約的地址,以下圖
四、輸入 token 合約地址後,自動帶出 token symbols 和 decimals
五、點擊確認便可
至此,咱們在 MetaMask 錢包裏,就能夠完美顯示咱們新的 token 了。
參考文檔:BUILDING ROBUST SMART CONTRACTS WITH OPENZEPPELIN
(地址:http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin)
如下是咱們的社區介紹,歡迎各類合做、交流、學習:)