上一篇已经介绍了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
网友评论