1. 文章摘要

【本文目标】

在EOS私链环境发行TOKEN代币,并进行转账交易。

【环境前置条件】

1)已搭建好EOS私链环境(可参考第4课 如何在UBUNTU虚拟机上编译EOS完成环境搭建?)
2)会进行相关钱包账号的操作( 参考第5课 EOS环境搭建入门(私链节点-钱包-密钥-账号))
3) 本文操作时已存在以下资源信息
1] 钱包名称 duncanwang,对应的解锁密码为"PW5JYSZRvSropLhguyxYY1zXgeQidSZnRKPKUXr2JUVTYay2zhuxT"
2] 系统私钥/公钥对已导入钱包:
EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV / 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

【技术收获】

1) 创建自有代币
2) 发行自有代币
3) 代币转账操作

2. 操作内容

本文的操作内容的流程图如下所示:

2.1 创建账户

创建3个账号,eosio.token账号用于创建ColorBayToken代币,wangdenghui账号用于发行代币,创建账户ouyanggege用于接收代币。
创建eosio.token账号

cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

输出内容:

duncanwang@duncanwang:~$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 -n duncanwang
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
duncanwang@duncanwang:~$ cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
executed transaction: 5679e2ad487fe7956ab287beb1c8642635e493d54ef4e948be06e0c24af48520  200 bytes  1133 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"eosio.token","owner":{"threshold":1,"keys":[{"key":"EOS6MRyAjQq8ud7hVNYcf...
warning: transaction executed locally, but may not be confirmed by the network yet

创建wangdenghui账号

cleos create account eosio wangdenghui EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

输出内容:

duncanwang@duncanwang:~/eos$ cleos create account eosio wangdenghui EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
executed transaction: 09688423e0f287cd0ae829fc358b58ecd0ec7f6e7e403684969bcaa3c7227a91  200 bytes  320 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"wangdenghui","owner":{"threshold":1,"keys":[{"key":"EOS6MRyAjQq8ud7hVNYcf...
warning: transaction executed locally, but may not be confirmed by the network yet

创建ouyanggege账号

cleos create account eosio ouyanggege EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

输出内容:

duncanwang@duncanwang:~/eos$ cleos create account eosio ouyanggege EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
executed transaction: 316a20b2c20669d853b116d6126b9f09fdece00a62c888acc2d4ab4c845d875b  200 bytes  738 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"ouyanggege","owner":{"threshold":1,"keys":[{"key":"EOS6MRyAjQq8ud7hVNYcfn...
warning: transaction executed locally, but may not be confirmed by the network yet

2.2 部署代币合约

cleos set contract eosio.token build/contracts/eosio.token -p eosio.token

参数说明:
-p,–permission TEXT 表示授权账号,该合约授权给eosio.token账号。
代币合约eosio.token能让许多不同的代币同时在一个智能合约上发行,但是却能被不同用户管理。

duncanwang@duncanwang:~/eos$ cleos set contract eosio.token build/contracts/eosio.token -p eosio.token
Reading WAST/WASM from build/contracts/eosio.token/eosio.token.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: 74e746a1bcb58d69a47b8182a960f2657b56023ab30df959ff5e29405fec785b  8104 bytes  2088 us
#         eosio <= eosio::setcode               {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7e...
#         eosio <= eosio::setabi                {"account":"eosio.token","abi":"0e656f73696f3a3a6162692f312e30010c6163636f756e745f6e616d65046e616d65...
warning: transaction executed locally, but may not be confirmed by the network yet

2.3 创建一个代币

cleos push action eosio.token create ‘[ “eosio”, “1000000000.0000 CBT”, 0, 0, 0]’ -p eosio.token

参数说明:
1) create 函数是用来新建一种代币,并输入代币的各种属性,同时 create 函数也是一个 action。action 是 eos 智能合约的接口函数,定义外界可以对智能合约做什么动作。
结合操作命令,说明各个参数的定义:
create( account_name issuer,/发行方账号的名称为"eosio"/
asset maximum_supply,/总供应量为10亿和代币名称CBT (ColorBayToken的缩写)/
uint8_t can_freeze,/资产是否可以冻结,0表示否/
uint8_t can_recall,/资产是否可以召回,0表示否/
uint8_t can_whitelist );/资产是否可以设置白名单,0表示无/
2)-p,–permission Type: Text - 授权给账号eosio.token

duncanwang@duncanwang:~/eos$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 CBT", 0, 0, 0]' -p eosio.token
executed transaction: 791687224acb86a715639af9b3b4660ac06ac07908c8746851382be661218739  120 bytes  4703 us
#   eosio.token <= eosio.token::create          {"issuer":"eosio","maximum_supply":"1000000000.0000 CBT"}
warning: transaction executed locally, but may not be confirmed by the network yet

2.4 发行代币

cleos push action eosio.token issue ‘[ “wangdenghui”, “10000.0000 CBT”, “first ColorBayToken issue” ]’ -p eosio

参数说明:
1) issue 函数是用来增发代币,eosio.token 合约并不是新建了代币就会得到代币,新建的代币只是存储了资料,发币者要想获取代币,需要调用 issue action 来获得代币。
void issue(
account_name to, /代币的发行方为账户为wangdenghui,之前已经创建/
asset quantity, /发行代币的数量为10000个,代币名称为CBT/
string memo ); /表示备注说明,不能超过256个字节/

执行输入结果如下:

duncanwang@duncanwang:~/eos$ cleos push action eosio.token issue '[ "wangdenghui", "10000.0000 CBT", "first ColorBayToken issue" ]' -p eosio
executed transaction: 33b23322d6a413108350a21f23c77150d77de71a8aeeaefd5befd9e30ceec288  144 bytes  2602 us
#   eosio.token <= eosio.token::issue           {"to":"wangdenghui","quantity":"10000.0000 CBT","memo":"first ColorBayToken issue"}
#   eosio.token <= eosio.token::transfer        {"from":"eosio","to":"wangdenghui","quantity":"10000.0000 CBT","memo":"first ColorBayToken issue"}
#         eosio <= eosio.token::transfer        {"from":"eosio","to":"wangdenghui","quantity":"10000.0000 CBT","memo":"first ColorBayToken issue"}
#   wangdenghui <= eosio.token::transfer        {"from":"eosio","to":"wangdenghui","quantity":"10000.0000 CBT","memo":"first ColorBayToken issue"}
warning: transaction executed locally, but may not be confirmed by the network yet

##2.5 代币转账
辉哥账号转账给欧阳哥哥合计8000个彩贝币,用于支付午餐费用。

cleos push action eosio.token transfer ‘[ “wangdenghui”, “ouyanggege”, “8000.0000 CBT”, “pay for lunch!” ]’ -p wangdenghui

转账成功输出结果:

duncanwang@duncanwang:~/eos$ cleos push action eosio.token transfer '[ "wangdenghui", "ouyanggege", "8000.0000 CBT", "pay for lunch!" ]' -p wangdenghui
executed transaction: 42c0f99566561977424df6417581114c3d9865c5194256f6b7a1311abf97802a  144 bytes  2011 us
#   eosio.token <= eosio.token::transfer        {"from":"wangdenghui","to":"ouyanggege","quantity":"8000.0000 CBT","memo":"pay for lunch!"}
#   wangdenghui <= eosio.token::transfer        {"from":"wangdenghui","to":"ouyanggege","quantity":"8000.0000 CBT","memo":"pay for lunch!"}
#    ouyanggege <= eosio.token::transfer        {"from":"wangdenghui","to":"ouyanggege","quantity":"8000.0000 CBT","memo":"pay for lunch!"}
warning: transaction executed locally, but may not be confirmed by the network yet

2.6 查询余额

查询辉哥和欧阳哥哥的账号,核实金额是否已到账。

cleos get currency balance eosio.token wangdenghui
cleos get currency balance eosio.token ouyanggege
正确输出结果:

duncanwang@duncanwang:~/eos$ cleos get currency balance eosio.token wangdenghui
2000.0000 CBT
duncanwang@duncanwang:~/eos$ cleos get currency balance eosio.token ouyanggege
8000.0000 CBT

2.7 阅读eosio.token智能合约代码

EOS 官方提供了一个代币(资产)智能合约 Demo —— eosio.token,这个示例合约给出了 EOS 官方智能合约开发的标准结构和开发方法,并且真正的 EOS 代币也会借鉴这个示例合约的逻辑,是 EOS 智能合约入门的经典案例。
默认情况下,该智能合约存在路径:~/eos/contracts/eosio.token
文件解释如下:
eosio.token.hpp - 头文件,定义类和函数
eosio.token.cpp - 实现
eosio.token.abi - Application Binary Interface,是一个接口文件,描述了智能合约与上层应用之间的数据交换格式
CMakeLists.txt - 编译文件

3. 参考

1) 在EOSIO上发行代币
2) Introduction to the EOSIO Token Contract
3)【许晓笛】EOS智能合约案例解析(1)

第7课 技术小白如何在EOS上发行通证(TOKEN)?相关推荐

  1. 第七课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)

    1. 文章摘要 [本文目标] 通过逐步的指导和截图举证,一步步带领一个技术小白完成一个宠物商店DAPP应用的开发和部署. [环境前置条件] 参考<第一课 如何在WINDOWS环境下搭建以太坊开发 ...

  2. 干货|技术小白如何在45分钟内发行通证(TOKEN)并上线交易(附流程代码)

    2019独角兽企业重金招聘Python工程师标准>>> 1 文章摘要 本文目标 通过逐步的指导和截图举证,一步步带领一个技术小白完成一个数字货币(通证,代币,TOKEN)的发布演示和 ...

  3. 技术干货 | 如何在 Electron 上实现 IM SDK 聊天消息全文检索

    导读:在 IM 场景的客户端需求上,基于本地数据的全文检索(Full-text search)扮演着重要的角色.本文具体来聊聊网易云信是如何实现全文检索的. 文|李宁 网易云信高级前端开发工程师 所谓 ...

  4. 区块链技术天才BM谈EOS

    百家号03-0614:59 文中灰字为译者注解,为的是既能润滑你的理解,又不影响你吃字的速度.猴急的小伙伴可以架梯子出去欣赏原版对话,视频链接附在文末. 第一段 问1:欢迎Dan Larimer,我们 ...

  5. 技术图文:如何在CSDN上写自己的技术Blog?

    背景 下周一很多高校就要开学了,由于疫情的影响教育部提出"停课不停学"的口号.我也想着把组队学习应用于本次的远程线上教学中,通过让学生们写技术blog的方式来检查TA们对知识点的掌 ...

  6. 技术小白用python搭建微信公众号后台

    其实既然你有做开发者模式的想法,那你肯定是有些基础的. 至少会学过一些基础的编程语言. 而读完本片文章,你理解后绝对可以自己开发(一些简单的)功能.不过需要注意的是,本文只是"授人以渔&qu ...

  7. 技术小白的AI产品经理成长之路第一步(吴恩达《深度学习工程师》学习笔记2.1二分分类)希望可以给同为技术小白的同学一点深参考

    <背景> 作为一个在市场营销岗位多年的技术小白,突然某天想到自己曾经的产品梦正在伤感之余(话说曾经因为舍不得在营销岗多年的经验,因此在三年前想要转行却一直未能成功,直到现在移动端红利期已过 ...

  8. 技术图文:如何在leetcode上进行算法刻意练习?

    背景 众所周知,通过刻意练习高质量的题目可以加深我们对计算机科学中经典数据结构的深刻理解,从而可以快速用合适的数据结构去解决现实中的问题.而LeetCode就是一个收集了各大IT公司的笔试面试题的在线 ...

  9. 小白如何在Windows如何安装双系统Centos7

    这个太简单了,大家不要怕. 一开始我也以为很难,看到这些词:系统,制作U盘启动盘,BIOS都怕的要死. 但是回过头来,真的很简单!远远不如你安装Centos7之后的日常维护和bug复杂(比如没有网卡驱 ...

最新文章

  1. threadlocal用法_ThreadLocal源码分析
  2. 玩转Mybatis中的类型转换器TypeHandler
  3. 清除WebLogic8.1缓存
  4. php 回调通知 连连支付_php怎么写连连支付退款
  5. 再谈 查询长期未登录AD的用户
  6. jQuery遍历(1)
  7. 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配
  8. mysql 1005_MYSQL使用错误 MYSQL中ERROR 1005
  9. SpringBoot(二)
  10. 查看tftp服务器上有什么文件,linux查看tftp服务器配置
  11. Spine3.8.75 下载
  12. Unity到VRay的渲染方法
  13. 【NOIP2017提高组】宝藏
  14. 【材料计算】第一性原理、密度泛函理论、从头算之间的关系
  15. 数字版权管理 (DRM) 续
  16. iOS使用电脑Safari浏览器查看真机h5网页元素
  17. 接口测试与Postman
  18. office2010 手动卸载和安装提示
  19. Mac 使用 tar 压缩生成 “._” 文件的解决办法
  20. 商络转债上市价格预测

热门文章

  1. [转] 【开源访谈】Muduo 作者陈硕访谈实录
  2. JS快速解析Excel文件
  3. WIN32开发之LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  4. 【C】C语言打开,读取文件
  5. 【记】Vue - 拖拽元素组件实现
  6. Linux下stricmp在此作用域中尚未声明解决办法
  7. 利用浏览器的 window.print();打印分层表格【强制换页的关键】
  8. 暗通道去雾算法代码实现(1) python
  9. 2012年3月5日有感
  10. 十三、传智书城项目设计