一、前言
“不要跟我谈什么狗屁爱情故事,我现在只想搞钱!”
这可能是大部分韭菜的心声,既然要搞钱,就要弄明白,币圈搞啥来钱快,没错,就是发币!
二、发币
在eos上发币和在ETH上发币一样,都非常简单。在eos上发币我们主要用到一个叫eosio.token
的智能合约,该合约运行创建许多不同的token,每个token可以由不同的用户管理。
在我们部署token合约之前,首先需要创建一个账号来管理合约。
2.1 创建账号
我们这里创建3个账号用于测试,分别是eosio.token、langge111111和langge222222
。其中eosio.token
用来部署合约,另外两个账号用来测试转账。
./cleos create account eosio eosio.token EOS75bGH5NwCen69GczAgGkg9vVVMQAdqDDqNeZHAyxX2TxDMP5tT EOS6u5pwb64P9HshRcWHFixgtU8WAe3yNHDjFJwKwLcuWYq4p1h1x
如何创建账号之前章节已经讲得很详细了,这里不再赘述,不明白的童鞋可以回去复习一下前面的章节。
EOS开发完全解析(三):EOS账号创建
这里我们成功创建了eosio.token这个账号
由于所有的操作都要基于钱包,所以,我们需要先把账号导入到钱包。
./cleos wallet import -n eosio.token --private-key 5K3rGTJvymup1nXhbZM9aYNnRr5y9shtzCmDmTB5vREA1ujmv8E
EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包
2.2 部署eosio.token合约
./cleos set contract eosio.token ~/eos/build/contracts/eosio.token -p eosio.token
第一个eosio.token
是部署合约的账号,第二个eosio.token
是要部署的合约,-p eosio.token
的意思是授权账号为eosio.token
2.3 创建代币
eosio.token
这个合约在~/eos/contracts/eosio.token
这个目录下面,我们看一下他的文件结构
我们打开eosio.token.hpp
这个C++头文件可以看到提供了如下几个公共方法,我把它们加上了注释,这样便于大家理解。
/*
*创建token
** issuer 发行人
** maximum_supply token总量
*/
void create( account_name issuer,asset maximum_supply);
/*
*发币,合约所有者使用操作
** to 接收账户
** quantity 发送数量
** memo 备注
*/
void issue( account_name to, asset quantity, string memo );
/*
*转账,普通用户也可以
** from 发送账户
** to 接收账户
** quantity 发送数量
** memo 备注
*/
void transfer( account_name from,account_name to,asset quantity,string memo)
要创建代币,我们这里只需要使用create()
方法即可,参数issue
为发行人,发行人将有权执行冻结,召回和列入所有者白名单等操作。
执行create()
方法,
./cleos push action eosio.token create '["eosio","100000000.00 LG"]' -p eosio.token
这段命令是指用eosio.token
这个账号执行create()
方法,传的参数为eosio
和100000000.00 LG
,最后是授权,默认为active
权限。意思是为eosio
这个账号创建100000000.00个LG
,精度为2位小数。
2.4 发送代币
./cleos push action eosio.token issue '["langge111111","10000.00 LG","airdrop"]' -p eosio -j
这段指令是为langge111111
这个账号发送10000.00个LG,备注为“空投”,同时以json格式输出。
这里打印内容有点多,我只截取了部分。我们现在来查询一下余额,看看是否已经到账。
./cleos get currency balance eosio.token langge111111
我们可以看到,langge111111
这个账号已经有10000.00个LG了,而另外两个账号的LG为零。
不知道大家有没有发现一个神奇的现象,浪哥创建tokne的时候,明明指定了token所有者为
eosio
这个账号,但是查询余额的时候,为啥它的LG余额也为0呢?
产生这个问题的原因是因为创建代币的时候,只是指定了该代币的所有者为eosio
这个账号,而真正发送代币还需要调用issue
方法。
接下来我们再执行一次issue
方法,为eosio
这个账号发送5000.00个LG。
温馨提示:eos钱包在长时间未操作会自动锁定,这个间隔大概是几分钟,所以继续操作之前需要重新解锁钱包。
再次查询余额,这时候就到账了。
2.5 转账
./cleos push action eosio.token transfer '["langge111111","langge222222","5000.00 LG","test transfer"]' -p langge111111
从账号langge111111
转5000.00个LG到账号langge222222
。
再来查询一下余额,安排上了,整整齐齐。
温馨提示:不管是调用
issue()
还是transfer()
方法,发送token的精度必须与create()
时的精度一致,否则会操作失败。
三、总结
至此,我们已经掌握了eos全套发币流程,是不是相当easy,比在ETH上发币有过之而无不及吧?币发完之后,接下来我们该干嘛?
这个就见仁见智了,不过,浪哥只有一个要求:圈钱被维权了不要说看的浪哥的发币教程就ok了。
下一讲浪哥将讲述如何做事之——手摸手实现一个eos智能合约。
毕竟,我们是做事的团队......
EOS开发系列教材推荐
EOS开发完全解析(一):Ubuntu上搭建EOS开发环境
EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包
EOS开发完全解析(三):EOS账号创建
获取最新、最全的EOS开发教程请关注微信公众号:区块链浪潮之巅——一个集项目分析与区块链技术开发于一体的公众号。