区块链研习社

手把手教你发行EOS代币(下)

2019-04-22  本文已影响2人  Andytl的世界

上一篇已经介绍了EOS开发基础环境的搭建,这篇我们要开始编写代码发行代币了。EOS官网的开发者手册中有相关发币的章节,是在本地环境中发行代币,可以参考。本篇展示的是在Kylin测试网络环境中开发代币,更贴近真实场景。原本计划在正式EOS环境中发一个代币的,后来因为心疼花费EOS没去卖RAM(大约13个EOS),就改在测试环境中作模拟发币。

1、准备工作

准备好kylin测试网络下的EOS账号。用这个网址创建新账号: http://faucet.cryptokylin.io/create_account?valid_account_name,将valid_account_name替换为你的EOS账号,这里我们用andygogogogo。输入网址后会返回一个json文件,如下:

{"msg": "succeeded", 
"keys": {"active_key": {"public":"EOS75ccXXyVRvKeFQKTbaqDYa4HXPGfhKcesXeQXveFKpQVbWms6s", 
"private": "5JFJPJYdtkZ.............................FQz3MdrNNeeU"}, 
"owner_key": {"public": "EOS5277cHBB6SMSvtrKWuVhsq7NovTfH5WfKX3Rhwzh5bqdnaLZxt", 
"private": "5JNxh2GzmfNfn.................................kCNa3TvSE5qE4gg"}}, 
"account": "andygogogogo"}

把json文件内容复制出来,保存在本地记事本中,用于导入钱包(本例中钱包取名kylin1)。测试网络的账号中现在还没有测试币,可用这个网址获取测试币: http://faucet.cryptokylin.io/get_token?valid_account_name。每访问一次就多100EOS,像水龙头一样装满我们的账户。

通过以下命令查看账户中的余额和抵押资源情况:

$ cleos --url https://api.kylin.alohaeos.com:443 get account andygogogogo
created: 2019-04-15T14:21:35.000
permissions: 
     owner     1:    1 EOS5277cHBB6SMSvtrKWuVhsq7NovTfH5WfKX3Rhwzh5bqdnaLZxt
        active     1:    1 EOS75ccXXyVRvKeFQKTbaqDYa4HXPGfhKcesXeQXveFKpQVbWms6s
memory: 
     quota:       422 KiB    used:     255.9 KiB  

net bandwidth: 
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:               121 bytes
     available:        705.9 KiB  
     limit:              706 KiB  

cpu bandwidth:
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:               172 us   
     available:        132.7 ms   
     limit:            132.8 ms   

EOS balances: 
     liquid:          490.0000 EOS
     staked:            0.0000 EOS
     unstaking:         0.0000 EOS
     total:           490.0000 EOS

命令中有个url:https://api.kylin.alohaeos.com:443 ,是用来指定EOS网络的接入点,也就是说我们与EOS网络交互的入口,正式环境下的接入点可参考这里,Kylin测试网络下接入点参考这里

有了足够的测试币后,我们还需要购买一些RAM,用来发布智能合约。RAM是EOS中的存储机制,是需要用EOS购买的,而且是一次性消耗品,具体RAM原理可以参考这里。简单理解就是我们要在EOS网络上购买一些存储空间,用来存储智能合约。可通过如下命令购买RAM:

$ cleos --url https://api.kylin.alohaeos.com:443 system buyram andygogogogo andygogogogo "10 EOS"

购买前别忘了解锁钱包:

$ cleos wallet unlock -n kylin1

准备工作就做好了。

2、发布代币智能合约

EOS中代币一般采用eosio.token智能合约,由C++语言编写,可以直接下载:

$ git clone https://github.com/EOSIO/eosio.contracts --branch v1.5.2 --single-branch

再eosio.token的目录中使用以下命令,编译合约代码,智能合约编译与发布可以参考这里

$ eosio-cpp -o eosio.token.wasm eosio.token.cpp --abigen

接下来就是发布智能合约了

$ cleos --url https://api.kylin.alohaeos.com:443 set contract andygogogogo /contracts/eosio.token

命令后面的目录是eosio.token编译后wasm、abi文件所在的目录。
可通过如下命令看看合约是否发布成功,成功后会返回一个hash值。

$ cleos --url https://api.kylin.alohaeos.com:443 get code andygogogogo
code hash: b15e7bfddbad150158d1d3c3156f6357b7e27af0b5a20107784ba8b3a77b34e0

3、创造、发行、转账

使用以下命令创造代币ANDY,issuer是发行者,maximum_supply是最大供应量与代币名称,-p 后面是签名信息(用andygogogogo的active角色签名)

$ cleos --url https://api.kylin.alohaeos.com:443 push action andygogogogo create '{"issuer":"andygogogogo","maximum_supply":"210000000.00 ANDY"}' -p andygogogogo@active

executed transaction: 8244b944158b0e5ca63b941a3ec6b5df26fb4a3575a071f3203e33fd44d2b7f0  120 bytes  174 us
#  andygogogogo <= andygogogogo::create         {"issuer":"andygogogogo","maximum_supply":"210000000.00 ANDY"}

创造了代币后,发行代币:

$ cleos --url https://api.kylin.alohaeos.com:443 push action andygogogogo issue '{"to":"andygogogogo","quantity":"210000000.00 ANDY", "memo":"airdrop"}' -p andygogogogo@active

executed transaction: a5118fbc60e83bb461740d83d1f67437e5cc68057d2776d1e321e842429676e6  128 bytes  201 us
#  andygogogogo <= andygogogogo::issue          {"to":"andygogogogo","quantity":"210000000.00 ANDY","memo":"airdrop"}

试下能否转账:

$ cleos --url https://api.kylin.alohaeos.com:443 push action andygogogogo transfer '{"from":"andygogogogo", "to":"andystruggle", "quantity":"100.00 ANDY", "memo":"gift"}' -p andygogogogo@active
executed transaction: 02681bbad0e07cd6bc98c944b071f64f45717626b8fa35093210549d1de65655  136 bytes  239 us
#  andygogogogo <= andygogogogo::transfer       {"from":"andygogogogo","to":"andystruggle","quantity":"100.00 ANDY","memo":"gift"}
#  andystruggle <= andygogogogo::transfer       {"from":"andygogogogo","to":"andystruggle","quantity":"100.00 ANDY","memo":"gift"}

查看是否到帐

$ cleos --url https://api.kylin.alohaeos.com:443 get table andygogogogo andystruggle accounts
{
  "rows": [{
      "balance": "100 HT"
    },{
      "balance": "100.00 YY"
    },{
      "balance": "100.00 ANDY"
    }
  ],
  "more": false
}

100.00的ANDY币成功转账!

4、总结

EOS下发行代币比以太坊要麻烦一些,而且用C++编写智能合约,有一点门槛。EOS转账免费,目前最高TPS接近4000,性能超过了以太坊,适合未来商用场景。


index.jpeg
上一篇下一篇

猜你喜欢

热点阅读