手把手教你玩eos:使用智能合约创建和发放代币

EOSWing  2018-10-24  新手入门/区块链知识栏目  

  文章由EOS节点EOSWing(柚翼)首发于eoswing.io博客,并向知币(ZHIBI.COM)授权刊载。内容将不定期更新,仅供学习交流之用。

  0.引言

  0.1教程概况

  手把手教你玩eos系列教程,从最基础开始,一步一步教你学会用eos。比如发代币,开发DAPP等等。

  本文是第三篇,主要是讲解了如何使用系统自带的eos.token合约来创建代币,发放代币和账户转账。

  0.2 学习内容

  1.理解相关概念

  2.创建账户和导入智能合约

  3.创建、发放代币和账户转账

  0.3 机器环境

  ●cpu: 1核

  ●内存: 2G

  ●操作系统:CentOS 7.4 64位

  ●服务器所在地:香港

  推荐将服务器放在网络较为优质的环境,比如香港。不然会有很多配置依赖下载上的问题。

  提示:以下命令行默认在root权限下执行。如遇权限问题,请在命令前加sudo。

  1.理解相关概念

  1.1 智能合约概念

  简单地说,智能合约就是传统合约的数字化版本。

  智能合约是运行在计算机里面的,用于保证让参与方执行承诺的代码。它们是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。

  1.2 EOS的智能合约实现

  EOSIO智能合约是在区块链上注册并在EOSIO节点上执行的软件。智能合约定义了接口(命令,参数,数据结构)和实现接口的代码。

  代码被编译成规范的字节码格式,节点可以检索和执行。区块链存储合同的交易(例如,资产合法转移,游戏数据变更)。每份智能合约都必须附有一份李嘉图合同,该合同定义了合同中具有法律约束力的条款和条件。

  2.创建账户和导入智能合约

  2.1 创建合约用账户

  如果你在学习此讲前,已经退出了运行环境。请参考第二讲中的2.1 进入eos运行环境部分。

  如果xiao钱包没有解锁,请先解锁。

  生成公钥-私钥对

  cleos create key

  命令行输出如下:

  为简化操作,这里只生成了一对公钥-私钥对。对合约用账户eos.toekn的owner权限和active权限都使用同一个公钥-私钥对。

  xiao钱包导入公钥-私钥对

  cleos wallet import -n xiao --private-key 5JitNtAj18S3q31L3XpEVmd1aPeNo35TWDk3SqTkwzAo9xxPxg7

  命令行输出如下:

  创建eos.token账户

  cleos create account eosio eosio.token EOS6PLbqkWQey7JSeoS9GXAwdp2Nu7o3rKCiaFEpA92Luhzkiixrm EOS6PLbqkWQey7JSeoS9GXAwdp2Nu7o3rKCiaFEpA92Luhzkiixrm

  命令行输出如下:

  2.2 eos.token导入智能合约

  eos系统自带有eosio.token合约。此合约允许创建许多不同的令牌。

  合约位置为 /contracts/eosio.token

  导入智能合约

  cleos set contract eosio.token /contracts/eosio.token -p eosio.token@active

  命令行输出如下:

  eosio.token支持的命令接口

  查看下abi文件:

  cat /contracts/eosio.token/eosio.token.abi

  可以在输出中看到actions:

  其中,create是创建代币(或者是令牌、token等不同叫法),issue是发放代币,而transfer是账户转帐。

  3.创建、发放代币和账户转账

  3.1 创建代币

  先实现1个亿的小目标吧,我们创建1亿个EOS的代币:

  cleos push action eosio.token create '[ "eosio", "100000000.0000 EOS"]' -p eosio.token@active

  命令行输出如下:

  3.2 发放代币

  给xiaoaccount帐户发放100个EOS:

  cleos push action eosio.token issue '[ "xiaoaccount", "100.0000 EOS", "memo" ]' -p eosio@active

  命令行输出如下:

  查看下xiaoaccount现在的资产:

  cleos get currency balance eosio.token xiaoaccount

  命令行输出如下:

  可以看到,xiaoaccount已经收到了100个EOS。

  3.3 账户转账

  现在xiaoaccount给eosio账户转账25个EOS:

  cleos push action eosio.token transfer '[ "xiaoaccount", "eosio", "25.0000 EOS", "m" ]' -p xiaoaccount@active

  命令行输出如下:

  查看下eosio现在的资产:

  cleos get currency balance eosio.token eosio

  命令行输出如下:

  可以看到,eosio账户上已经有25个EOS。

  再查看下xiaoaccount现在的资产:

  cleos get currency balance eosio.token xiaoaccount

  命令行输出如下:

  可以看到,xiaoaccount账户上已经扣除了25个EOS,只有75个EOS。

  账户转账成功。

  4.后记

  延伸阅读

  在本文的学习中如果遇到问题,欢迎留言或者在如下链接寻找解决方案:EOSIO令牌合同简介: https://developers.eos.io/eosio-cpp/docs/token-tutorial

  如果觉得这一系列教程有点意思,请投票给柚翼节点(eoswingdotio)。您的投票是本教程持续更新的动力源泉,谢谢。

版权信息
作者:EOSWing
来源:知币说

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是新手入门教程资讯,提供入门级的比特币知识、区块链知识以及各类数字货币知识,是数字货币爱好者入门、精通的好导师。