創(chuàng)建智能合約(代幣)并發(fā)布到測試環(huán)境

該教程旨在學習智能合約創(chuàng)建和發(fā)布過程,從代碼角度理解ICO。
需要科學上網(wǎng),速度比較快。

一、準備工作

1. 安裝ganache-cli

1.1 打開終端安裝 ganache-cli 該工具用于建立測試環(huán)境模擬區(qū)塊鏈網(wǎng)絡,模擬挖礦

npm install -g ganache-cli

1.2 建立測試TestRPC

ganache-cli
testRPC.png

默認會生成10個賬戶,第一個為基礎賬戶(coinbase),Private Keys對應各個賬戶的私鑰

2. 安裝truffle

npm install -g truffle

這是用于開發(fā)智能合約項目的腳手架(集成了react、webpack...)

3. 搭建項目

重新再開一個終端(第1步中打開ganache-cli的終端切勿關閉)
新建文件夾并創(chuàng)建一個名為JBToken的項目

cd Documents
mkdir JBToken
cd JBToken/
truffle unbox react-box
npm install zeppelin-solidity --save

zeppelin-solidity是一個安全的智能合約框架,即標準智能合約基類庫


搭建項目.png

truffle compile 命令用于編譯智能合約
truffle migrate 部署智能合約

4. 項目結構

使用webStorm打開項目


項目結構.png

config -> webpack相關配置
contracts -> 智能合約相關文件
migrations -> 智能合約部署配置
node_modules -> npm依賴庫
public/scripts/src -> react前端項目文件
test/ -> 測試文件
truffle.js/truffle-config.js ->truffle配置信息

二、編寫智能合約

1. 創(chuàng)建合約JBToken

在contracts文件夾中新建一個JBToken.sol (建議安裝Intellij-Solidity插件以支持智能合約.sol文件)
寫入如下代碼

pragma solidity ^0.4.17;
import 'zeppelin-solidity/contracts/token/ERC20/StandardToken.sol';
// JBToken 繼承 zeppelin-solidity庫中的StandardToken StandardToken封裝了智能合約的基礎function
contract JBToken is StandardToken {
    string public name = "JBToken"; // 代幣名稱加做JBToken
    string public symbol = "JB"; // 簡寫名稱JB
    uint8 public decimals = 4; // 支持小數(shù)點后幾位 例如 0.0001JB
    uint256 public INITIAL_SUPPLY = 10000; // 代幣發(fā)行總數(shù)10000個
    // 構造函數(shù) 只在合約第一次被創(chuàng)建的時候運行(即第一次被部署到區(qū)塊鏈網(wǎng)絡上)
    function JBToken() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY; // 將合約創(chuàng)建者的代幣數(shù)量設置為發(fā)行量,即發(fā)行時所有的代幣歸創(chuàng)建者所有
    }
}

在migrations文件夾中創(chuàng)建3_deploy_JBToken.js,寫入如下代碼:

var JBToken = artifacts.require("./JBToken.sol");
module.exports = function(deployer) {
  deployer.deploy(JBToken);
};

2. 編譯

終端中輸入

truffle compile
編譯.png

會在項目中生成build文件夾,里面有編譯完成的智能合約json文件


build.png

3. 部署

3.1 配置項目文件中的truffle.js

ganache-cli的運行端口默認為8545

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // to customize your Truffle configuration!
  networks: {
    development: {
      host: "localhost",
      port: 8545, // testRPC端口
      network_id: "*" // network id
    }
  }
};

3.2 終端中輸入

truffle migrate

重新編譯部署命令為truffle migrate --reset
部署成功終端顯示


部署成功.png

同時ganache-cli終端顯示有新的區(qū)塊生成,表明合約已經成功被部署到區(qū)塊鏈網(wǎng)絡上,并已經通過礦工挖礦確認


新的區(qū)塊生成.png

三、測試你的代幣

終端輸入truffle console打開truffle控制臺

truffle console

獲取智能合約實例化對象賦給contract

JBToken.deployed().then(instance => contract = instance)
驗證.png

獲取發(fā)布智能合約的賬戶,可以和gananche-cli終端中的第一個賬戶對比,是一致的

cb = web3.eth.coinbase

查詢賬戶內的JBCoin余額

contract.balanceOf(cb)
image.png

可以看出智能合約的創(chuàng)建賬戶擁有10000個JB代幣

如果你想發(fā)十億個代幣,那就多加幾個零,如果上交易所炒作到1元一個,那你就是億萬富豪了。

ICO有風險,投資需謹慎。

-.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容