创建智能合约(代币)并发布到测试环境

该教程旨在学习智能合约创建和发布过程,从代码角度理解ICO。
需要科学上网,速度比较快。

一、准备工作

1. 安装ganache-cli

1.1 打开终端安装 ganache-cli 该工具用于建立测试环境模拟区块链网络,模拟挖矿

npm install -g ganache-cli

1.2 建立测试TestRPC

ganache-cli
testRPC.png

默认会生成10个账户,第一个为基础账户(coinbase),Private Keys对应各个账户的私钥

2. 安装truffle

npm install -g truffle

这是用于开发智能合约项目的脚手架(集成了react、webpack...)

3. 搭建项目

重新再开一个终端(第1步中打开ganache-cli的终端切勿关闭)
新建文件夹并创建一个名为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. 创建合约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; // 支持小数点后几位 例如 0.0001JB
    uint256 public INITIAL_SUPPLY = 10000; // 代币发行总数10000个
    // 构造函数 只在合约第一次被创建的时候运行(即第一次被部署到区块链网络上)
    function JBToken() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY; // 将合约创建者的代币数量设置为发行量,即发行时所有的代币归创建者所有
    }
}

在migrations文件夹中创建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终端显示有新的区块生成,表明合约已经成功被部署到区块链网络上,并已经通过矿工挖矿确认


新的区块生成.png

三、测试你的代币

终端输入truffle console打开truffle控制台

truffle console

获取智能合约实例化对象赋给contract

JBToken.deployed().then(instance => contract = instance)
验证.png

获取发布智能合约的账户,可以和gananche-cli终端中的第一个账户对比,是一致的

cb = web3.eth.coinbase

查询账户内的JBCoin余额

contract.balanceOf(cb)
image.png

可以看出智能合约的创建账户拥有10000个JB代币

如果你想发十亿个代币,那就多加几个零,如果上交易所炒作到1元一个,那你就是亿万富豪了。

ICO有风险,投资需谨慎。

-.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容