鹿岛建设 网站,怎么发现网站漏洞而做软件,给个网站你们知道的,wordpress广告链接一、目的
eosio.token系统合约定义了允许用户为基于EOSIO的区块链创建、发行和管理代币的结构和操作#xff0c;它演示了一种实现允许创建和管理代币的智能合约的方法。本文详细介绍了eosio.token系统合约并在本地测试链上实际发行了代币进行演示#xff0c;适用于EOS智能合…一、目的
eosio.token系统合约定义了允许用户为基于EOSIO的区块链创建、发行和管理代币的结构和操作它演示了一种实现允许创建和管理代币的智能合约的方法。本文详细介绍了eosio.token系统合约并在本地测试链上实际发行了代币进行演示适用于EOS智能合约的初级开发人员熟悉如何进行代币的创建、发行和转移。 二、概述
一合约数据结构简介
eosio.token合约通过使用两个内部多索引结构管理代币、账户及其相应余额的集合accounts和 stats。accounts多索引表的每一行都包含account对象的实例而account对象包含有关一个代币余额的信息。accounts表的范围是一个eosio帐户它根据代币的符号对行进行索引。这意味着当一个人在 accounts多索引表中查询一个账户名时结果是该账户目前持有的所有代币。
类似地stats多索引表为每一行保存currency_stats对象的实例其中包含有关当前供应量、最大供应量和符号代币的创建者帐户的信息。stats表的范围是代币符号。因此当查询stats表中的代币符号时如果查询的符号代币先前已创建则结果是对应于查询符号代币的单个条目/行否则为空。
二合约方法简介
eosio.token 合约定义了create、issue、retire、transfer、open、close 共六个action供用户创建和管理代币。 三、环境准备
一一条正在运行且可访问的区块链
中移链基于EOS测试环境搭建
https://mp.weixin.qq.com/s?__bizMzkwNjI1OTg1MAmid2247489304idx2sn6d22be6194d821dbd04f6079c79930a3scene21#wechat_redirect
二确保本地钱包已打开并解锁
如何创建钱包
https://developers.eos.io/manuals/eos/latest/cleos/how-to-guides/how-to-create-a-wallet图片 四、合约方法
一create
Type: void
允许issuer帐户在maximum_supply的供应中创建代币。如果验证成功将在statstable中为代币符号范围创建一个新条目。 二issue
Type: void
此 action 向 to 帐户发放 quantity 代币。 三retire
Type: void
与create操作相反如果所有验证都成功则会扣除statstable.supply金额。 四transfer
Type: void
允许from账户将quantity代币转移到to账户。一个账户被记入借方另一个账户被记入quantity代币的贷方。 五open
Type: void
允许ram_payer作为付款账户为代币symbol创建一个余额为零的帐户 owner。 可以在issue61、issue62信息。
https://github.com/EOSIO/eosio.contracts/issues/61https://github.com/EOSIO/eosio.contracts/issues/62
六close
Type: void此操作与open相反它关闭代币symbol的帐户owner 。 五、创建、发行和转移代币
一获取合约
1、转到contract目录 cd CONTRACTS_DIR
2、拉取合约源码 git clone https://github.com/EOSIO/eosio.contracts --branch master --single-branch cd eosio.contracts/contracts/eosio.token
二为合约创建账户
您可能需要先解锁钱包 cleos create account eosio eosio.token PUBLIC_KEY
三编译合约 eosio-cpp -I include -o eosio.token.wasm src/eosio.token.cpp --abigen
四部署代币合约 cleos set contract eosio.token CONTRACTS_DIR/eosio.contracts/contracts/eosio.token --abi eosio.token.abi -p eosio.tokenactive
结果应类似于以下内容 Reading WASM from ...Publishing contract...executed transaction:69c68b1bd5d61a0cc146b11e89e11f02527f24e4b240731c4003ad1dc0c87c2c 9696 bytes 6290 us# eosio eosio::setcode {account:eosio.token,vmtype:0,vmversion:0,code:0061736d0100000001aa011c60037f7e7f0060047f...# eosio eosio::setabi {account:eosio.token,abi:0e656f73696f3a3a6162692f312e30000605636c6f73650002056f776e6572046e61...warning: transaction executed locally, but may not be confirmed by the network yet ]
五创建代币 cleos push action eosio.token create [ eosio, 1000000000.0000 SYS] -p eosio.tokenactive
结果应类似于以下内容 executed transaction: 0e49a421f6e75f4c5e09dd738a02d3f51bd18a0cf31894f68d335cd70d9c0e12 120 bytes 1000 cycles# eosio.token eosio.token::create
{issuer:eosio,maximum_supply:1000000000.0000 SYS}
另一种方法使用命名参数 cleos push action eosio.token create {issuer:eosio,
maximum_supply:1000000000.0000 SYS} -p eosio.tokenactive
结果应类似于以下内容 executed transaction:
0e49a421f6e75f4c5e09dd738a02d3f51bd18a0cf31894f68d335cd70d9c0e12 120 bytes 1000 cycles# eosio.token eosio.token::create
{issuer:eosio,maximum_supply:1000000000.0000 SYS}
该命令创建了一个新代币SYS精度为 4 位小数最大供应量为 1000000000.0000 SYS。创建此代币需要eosio.token合约的授权。出于此原因-p eosio.tokenactive 用来授权。
六发行代币
在我们的例子中发行人可以向发行人账户发行代币。 cleos push action eosio.token issue [ eosio, 100.0000 SYS, memo ] -p eosioactive
结果应类似于以下内容 executed transaction:
a26b29d66044ad95edf0fc04bad3073e99718bc26d27f3c006589adedb717936 128 bytes 337 us# eosio.token eosio.token::issue {to:eosio,quantity:100.0000 SYS,memo:memo}warning: transaction executed locally, but may not be confirmed by the network yet ]
七转移代币
现在帐户eosio已发行代币将其中一些代币转移到帐户bob 。 cleos push action eosio.token transfer [ eosio, bob, 25.0000 SYS, m ] -p eosioactive
您需要先创建bob账户
结果应类似于以下内容 executed transaction:
60d334850151cb95c35fe31ce2e8b536b51441c5fd4c3f2fea98edcc6d69f39d 128 bytes 497 us# eosio.token
eosio.token::transfer
{from:eosio,to:bob,quantity:25.0000 SYS,memo:m}# eosio
eosio.token::transfer
{from:eosio,to:bob,quantity:25.0000 SYS,memo:m}# bob
eosio.token::transfer
{from:eosio,to:bob,quantity:25.0000 SYS,memo:m}warning: transaction executed locally, but may not be confirmed by the network yet ]
现在使用cleos get currency balance检查“bob”是否获得了代币 cleos get currency balance eosio.token bob SYS
结果
25.00 SYS
检查eosio的余额注意代币已从帐户中扣除 75.00 SYS