EOS 06 - 为 DAPP 引入通证,如何在 EOS 区块链上发币?

pendingauth · 2019年06月28日 · 55 次阅读

本文转载自币乎,作者松果,原文链接: https://bihu.com/article/1667580029

如何在EOS区块链上发币?

目前在EOS区块链上发币,需要创建代币的智能合约账户,购买一定量的RAM,再把代币相关的代码(一般使用eosio.token合约的代码)部署到该账户;

EOS币就是在eosio.token合约上发行的,只有通过eosio.token合约转移的EOS才是真正的EOS,因为你可以随便建立一个合约账户,并发行一个名为“EOS”的代币;

BM最近也提议扩展eosio.token合约的功能,通过竞拍symbol名获取在eosio.token合约创建其他通证的资格,竞拍symbol名的收入还可以提高REX收益,但目前只是一项提议,开发者或项目方现在仍然需要自建账户发行代币。

为DAPP引入通证

目前已经为微文DAPP在Jungle测试网创建了两个账户:weiwendappssweiwentokens,前者用于部署业务逻辑智能合约,后者用于发行WEI代币,下面开始编写weiwentokens合约的代码。

1、拷贝eosio.token合约代码

拷贝eosio.token.hppeosio.token.cpp的代码到合约目录weiwentokens,目前weiwentokens目录下是这样的:

把eosio.token.hpp、eosio.token.cpp重命名为:weiwentokens.hpp、weiwentokens.cpp,如下:

2、修改weiwentokens.hpp代码

注意,官方eosio.token合约依赖的eosio.cdt版本是v1.5.x,我本地的eosio.cdt版本是最新的v1.6.1,如果你的eosio.cdt版本是v1.5.x,修改方式会有一些不同。

对weiwentokens.hpp进行如下修改:

然后删除掉如下代码:

这段代码使用了action_wrapper,暂时用不上,更多关于action_wrapper,可以看之前写的文章。

3、修改weiwentokens.cpp代码

weiwentokens.cpp的代码有3处要修改:

① 把cpp源码文件头部的include方式从:

#include <eosio.token/eosio.token.hpp>

修改为:

#include "weiwentokens.hpp"

② 代码中所有token::xxx函数修改为weiwentokens::xxx函数;

③ 修改EOSIO_DISPATCH宏,

如果你使用的是v1.6.x版本的cdt,直接删除这个宏,

如果你使用的是v1.5.x版本的cdt,把宏中的合约名从eosio::token修改为eosio::weiwentokens。

完成以上修改后,代码就可以部署到你的合约账户了,如果要发行的通证还有其他逻辑,也可以添加到代码中。

4、编译合约代码

使用eosio.cdt附带的eosio-cpp工具,把源码文件编译成wasm和abi文件:

cd weiwentokens
eosio-cpp -I . -o weiwentokens.wasm weiwentokens.cpp --abigen

这里要注意 -I 参数,它指需要include的文件目录,"."表示当前目录,因为有一个.hpp头文件需要include。

5、部署合约

把weiwentokens合约部署到Jungle测试网,使用如下命令:

cd ..
cleos -u http://jungle2.cryptolions.io set contract weiwentokens weiwentokens -p weiwentokens

部署后的合约可以到区块浏览器查到ABI:https://jungle.eosq.app/account/weiwentokens/abi

6、创建WEI代币

调用weiwentokens合约的create Action创建WEI代币:

cleos -u http://jungle2.cryptolions.io push action weiwentokens create '["weiwendappss", "100000000000.0000 WEI"]' -p weiwentokens

这里指定WEI代币的发行账户为weiwendappss,发行总量为1000亿。

使用如下命令查询WEI代币的统计数据:

cleos -u http://jungle2.cryptolions.io get currency stats weiwentokens WEI

7、WEI代币分配

根据上一篇文章中介绍的业务逻辑,WEI代币的5%和25%分配给开发者和运营池,因此再新建两个账户weideveloperweioperation来接收这些代币。

创建WEI代币时,指定了weiwendappss账户为发行者,要给weideveloper、weioperation账户发币,需要使用weiwendappss账户的权限来调用weiwentokens合约的issue Action,命令如下:

cleos -u http://jungle2.cryptolions.io push action weiwentokens issue '["weideveloper", "5000000000.0000 WEI", "for developers"]' -p weiwendappss

cleos -u http://jungle2.cryptolions.io push action weiwentokens issue '["weioperation", "25000000000.0000 WEI", "for operations"]' -p weiwendappss

现在再来查一下WEI的统计数据:

可以看到,30%的代币已经被分配了,剩余70%的WEI代币未分配,会用于激励池(点赞挖矿、登录奖励)。

Tips

项目代码在Github同步更新:https://github.com/songguo6/weiwen-dappDAPP的业务逻辑合约weiwendappss的代码。,下一篇编写

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册