EOSC主网
  • EOSC主网介绍
  • EOSC - 技术白皮书
  • 教程
    • 麦子钱包配置教程
    • Scatter配置教程
    • 钱包教程
      • TODO
  • 最新资讯
    • EOSC主网最新资讯
      • EOSC社区第103期社区动态
      • EOSC社区第102期社区动态
      • EOSC社区第101期社区动态
      • EOSC社区第100期社区动态
      • EOSC社区第99期社区动态
      • EOSC社区第98期社区动态
      • EOSC社区第97期社区动态
      • EOSC社区第96期社区动态
      • EOSC社区第95期社区动态
      • EOSC社区第94期社区动态
      • EOSC社区第93期社区动态
      • EOSC社区第92期社区动态
      • EOSC社区第91期社区动态
      • EOSC社区第90期社区动态
      • EOSC社区第89期社区动态
      • EOSC社区第88期社区动态
      • EOSC社区第87期社区动态
      • EOSC社区第86期社区动态
      • EOSC社区第85期社区动态
      • EOSC社区第84期社区动态
      • EOSC社区第83期社区动态
      • EOSC社区第82期社区动态
      • EOSC社区第81期社区动态
      • EOSC社区第80期社区动态
      • EOSC社区第79期社区动态
      • EOSC社区第78期社区动态
      • EOSC社区第77期社区动态
      • EOSC社区第76期社区动态
      • EOSC社区第75期社区动态
      • EOSC社区第74期社区动态
      • EOSC社区第73期社区动态
      • EOSC社群主题分享活动第二期
      • EOSC 第一届预算管理委员会(EDBS-1)第四次会议
      • EOSC社群第一期分享活动
      • 全球知名区块链开发团队EOS原力宣布竞选CoinEx主网节点
      • EOSC第一届预算委员会(EDBS-1)第二次会议
      • EOSC 社区第一届预算委员会(EDBS-1)第一次会议
      • 未激活账户余额冻结操作已全部完成,FIP#11正式生效
      • FIP#11 冻结账户名单公示结束,未激活账户冻结操作开始执行
      • FIP#11冻结提案实现方案已完成测试,冻结账户名单开始公示
      • 节点已对FIP#12完成多签,RAM租赁价格调整提案生效
      • EOSAwake、Sky节点发起《调整RAM租赁价格的提案》
      • Hotbit即将上线EOSC
      • CoinEx即将上线EOSC
      • EOSC社区即将对FIP#11冻结提案的实现进行测试
      • EOSC社区开启首届管理委员会竞选报名
      • QB.com即将上线EOSC并举办充值大赛与空投活动
      • EOSC主网完成V1.7.1版本升级,FIP#7已完全生效
      • EOSC即将上线Bibox交易所
      • EOSC社区发起募捐上币活动
      • 第四届秘书处关于FIP #9方案修正通知
      • 各交易所相继领取EOSC资产
      • 超级节点投票通过《销毁未激活账户和账户代币提案》FIP#9
      • Awake发起《关于调整B1账户代币分配方案提案》
      • Sky.eosc和Awake发起《销毁未激活创世账户和账户代币提案》
      • 超级节点多签通过调整EOSC主网合约大小提案FIP#8
      • EOSC将上线KuCoin并对满足条件的EOS用户发放创世空投
      • EOSC即将上线KuCoin交易所
      • JIQIX发起《调整EOSC主网部署合约大小上限》提案
      • 如何使用eosio-web-ide发布一个eidos代币
  • 提案
    • EOSC主网改进提案
      • FIP #19 EOSC主网改进提案
      • FIP #18 EOSC主网改进提案
      • FIP #17 EOSC主网改进提案
      • FIP #16 EOSC主网改进提案
      • FIP #15 EOSC主网改进提案
      • FIP #14 EOSC主网改进提案
      • FIP #13 EOSC主网改进提案
      • FIP #12 EOSC主网改进提案
      • FIP #11 EOSC主网改进提案
      • FIP #10 EOSC主网改进提案
      • FIP #9 EOSC主网改进提案
      • FIP #8 EOSC主网改进提案
      • FIP #7 EOSC主网改进提案
      • FIP #6 EOSC主网改进提案
      • FIP #5 EOSC主网改进提案
      • FIP #4 EOSC主网改进提案
      • FIP #3 EOSC主网改进提案
      • FIP #2 EOSC主网改进提案
      • FIP #1 EOSC主网改进提案
  • 组织介绍
    • EOSC社区自治组织介绍
      • EOSC主网超级节点会议秘书处章程
      • EOSC主网预算委员会章程
      • 开发组介绍
  • 节点介绍
    • EOSC主网节点介绍
      • EOSAwake
      • 麦子钱包
      • KuCoin
      • 欧柚
      • KOREOS
      • TokenView
      • sky.eosc
      • 中原区块链
      • 吉池
      • blockpro
      • JiqiX
      • Hexlant
      • EOSpeople
      • 挖链网
      • EOSeco
      • Cindydaily
      • 九州资本
      • Forcesphere
      • 原柚社区
      • 古德社区
      • 泰坦
      • 水木
      • 一道资本
      • EOStrust
      • Everest
      • 链圈
      • Eosjedi
      • Eosmainbp
      • 柚政 eosgov
  • 开发周报
    • EOSC开发周报集
      • EOSC第103期开发周报
      • EOSC第102期开发周报
      • EOSC第101期开发周报
      • EOSC第100期开发周报
      • EOSC第99期开发周报
      • EOSC第98期开发周报
      • EOSC第97期开发周报
      • EOSC第96期开发周报
      • EOSC第95期开发周报
      • EOSC第94期开发周报
      • EOSC第93期开发周报
      • EOSC第92期开发周报
      • EOSC第91期开发周报
      • EOSC第90期开发周报
      • EOSC第89期开发周报
      • EOSC第88期开发周报
      • EOSC第87期开发周报
      • EOSC第86期开发周报
      • EOSC第85期开发周报
      • EOSC第84期开发周报
      • EOSC第83期开发周报
      • EOSC第82期开发周报
      • EOSC第81期开发周报
      • EOSC第80期开发周报
      • EOSC第79期开发周报
      • EOSC第78期开发周报
      • EOSC第77期开发周报
      • EOSC第76期开发周报
      • EOSC第75期开发周报
      • EOSC第74期开发周报
      • EOSC第73期开发周报
      • EOSC第72期开发周报
      • EOSC第71期开发周报
      • EOSC第70期开发周报
      • EOSC第69期开发周报
      • EOSC第68期开发周报
      • EOSC第67期开发周报
      • EOSC第66期开发周报
      • EOSC第65期开发周报
      • EOSC第64期开发周报
      • EOSC第63期开发周报
      • EOSC第62期开发周报
      • EOSC第61期开发周报
      • EOSC第60期开发周报
      • EOSC第59期开发周报
      • EOSC第58期开发周报
      • EOSC第57期开发周报
      • EOSC第56期开发周报
      • EOSC第55期开发周报
      • EOSC第54期开发周报
      • EOSC第53期开发周报
      • EOSC第52期开发周报
      • EOSC第51期开发周报
      • EOSC第50期开发周报
      • EOSC第49期开发周报
      • EOSC第48期开发周报
      • EOSC第47期开发周报
      • EOSC第46期开发周报
      • EOSC第45期开发周报
      • EOSC第44期开发周报
      • EOSC第43期开发周报
      • EOSC第42期开发周报
      • EOSC第40期开发周报
      • EOSC第39期开发周报
      • EOSC第38期开发周报
      • EOSC第37期开发周报
      • EOSC第36期开发周报
      • EOSC第35期开发周报
      • EOSC第34期开发周报
      • EOSC第33期开发周报
      • EOSC第32期开发周报
      • EOSC第31期开发周报
      • EOSC第30期开发周报
      • EOSC第29期开发周报
      • EOSC第28期开发周报
      • EOSC第27期开发周报
      • EOSC第26期开发周报
      • EOSC第25期开发周报
      • EOSC第24期开发周报
      • EOSC第23期开发周报
      • EOSC第22期开发周报
      • EOSC第21期开发周报
      • EOSC第20期开发周报
      • EOSC第19期开发周报
      • EOSC第18期开发周报
      • EOSC第17期开发周报
      • EOSC第16期开发周报
      • EOSC第15期开发周报
      • EOSC第14期开发周报
      • EOSC第13期开发周报
      • EOSC第12期开发周报
      • EOSC第10期开发周报
      • EOSC第9期开发周报
      • EOSC第8期开发周报
      • EOSC第7期开发周报
      • EOSC第6期开发周报
      • EOSC第5期开发周报
      • EOSC第4期开发周报
      • EOSC第3期开发周报
      • EOSC第2期开发周报
      • EOSC第1期开发周报
Powered by GitBook
On this page
  • EIDOS代码分析
  • claim的定义
  • claim的实现
  • eosio-web-ide
  • 启动eosio-web-ide
  • 下载eidos合约和eosio.token合约
  • 链上加载对应的合约
  • eosio.token 合约上面创建并增发TEST代币
  • eidos合约创建EIDOS代币,增发代币并将eidos帐户权限赋予eidos合约
  • 使用eosforce帐户通过eosio.token合约向eidos帐户转帐
  • 查看eosforce在eosio.token和eidos上面的代币
  • 结束语

Was this helpful?

  1. 最新资讯
  2. EOSC主网最新资讯

如何使用eosio-web-ide发布一个eidos代币

PreviousJIQIX发起《调整EOSC主网部署合约大小上限》提案NextEOSC主网改进提案

Last updated 5 years ago

Was this helpful?

最近EIDOS很火,用户只需要向合约帐户eidos转账就可以挖取EIDOS代币,EIDOS甚至直接导致了eos主链上CPU的不足,下面就详细分析下EIDOS的代码,并尝试在eosio-web-ide上面部署下EIDOS的合约。

EIDOS代码分析

eidos项目代码也是开源的,代码位置为:.仔细看了一下eidos的代码,eidos合约只是在原来eosio.token的代码基础上添加了claim的一个功能,下面就说一下claim实现了什么功能。

claim的定义

[[eosio::on_notify("eosio.token::transfer")]] void claim(name from, name to, eosio::asset quantity, std::string memo);

claim的定义是在token.hpp里面,这个函数是由eosio.token合约上面的transfer操作进行触发的一个函数。

claim的实现

if (to != get_self() || from == get_self()) return;

action{ 
    permission_level{get_self(), "active"_n}, 
    "eosio.token"_n, 
    "transfer"_n, 
    std::make_tuple(get_self(), from, quantity, std::string("Refund EOS")) 
}.send();

首先看下对转过来代币的处理,这里判断下是有人给我转发代币后,先调用eosio.token的transfer操作把别人的币原样转回去。

int elapsed = current_time_point().sec_since_epoch();

   if (elapsed > 1572595200) {
      asset supply = eosio::token::get_supply(get_self(), symbol_code("EIDOS"));    
      int64_t expected = (elapsed - 1572595200) * 25;

      asset balance = eosio::token::get_balance(get_self(), get_self(), symbol_code("EIDOS"));

      if (expected > 1000000000)
         expected = 1000000000;

      asset expected_supply = asset(expected, symbol("EIDOS", 4));
      expected_supply *= 10000;

这段带是是获取当前时间的时间戳,并与1572595200进行比较(1572595200时间戳的时间是2019-11-01 16:00:00),也就是说值由2019-11-01 16:00:00 以后才开始空投,在这个时间之前的转帐不会获得空投。增发的规则是当前时间减去1572595200 然后乘以25,也就是根据时间来增发,也就是每秒增发25 EIDOS,代币总数量不能大于1000000000。

如果重新部署一个合约,1572595200可以修改为你想要开始挖矿的时间的时间戳。 如果想要自己发自己的待币,可以修改代币名称EIDOS,把这个文件里面有EIDOS修改你自己想要的待币名称,如TEST,但是要所有地方都进行修改。

if (supply < expected_supply){
         asset claim = expected_supply-supply;

         action{
            permission_level{get_self(), "active"_n}, 
            get_self(),
            "issue"_n,
            std::make_tuple(get_self(), claim, std::string("Issue EIDOS"))
         }.send();

         balance += claim;

         claim = claim / 5;

         action{
            permission_level{get_self(), "active"_n},
            get_self(),
            "transfer"_n,
            std::make_tuple(get_self(), "eidosoneteam"_n, claim, std::string("Send to EIDOS Team."))
         }.send();              

         balance -= claim;

      }

如果当前的代币供应量小于当前时间应该有的供应量,则进行增发(issue)操作,并把此次增发的1/5发送给帐户eidosoneteam。 如果想要把1/5发给自己的帐户,需要把eidosoneteam修改成自己团队帐户名。

if (balance > asset(0, symbol("EIDOS", 4))) {
     if (balance <= asset(10000, symbol("EIDOS", 4)))
        balance = asset(1, symbol("EIDOS", 4));
     else   
        balance /= 10000;

     action{
        permission_level{get_self(), "active"_n},
        get_self(),
        "transfer"_n,
        std::make_tuple(get_self(), from, balance, std::string("Airdrop EIDOS"))
     }.send();              
  }

然后把总供应量的万分之一(不够1 EIDOS的按1 EIDOS来算)的EIDOS发送给用户。

eosio-web-ide

启动eosio-web-ide

下载eidos合约和eosio.token合约

启动测试网以后,上面是集成VSCODE的代码编辑部分,下面的terminal显示了测试网的出块过程,我们这里这里先把eidos和eosio.token的合约代码下载下来。

  • 通过Terminal->New Terminal 重新打开一个Terminal,然后cd contract/ 进入contract目录

cd contract/
cd /workspace/eosio-web-ide/contract                   
git clone https://github.com/enumivo/eidos.git 
cd eidos/ 
mkdir token 
eosio-cpp token.cpp -o token/token.wasm
cd /workspace/eosio-web-ide/contract                   
git clone https://github.com/EOSIO/eosio.contracts.git 
cd eosio.contracts/ 
./build.sh

通过上面操作,我们已经下载并编译了eidos和eosio.contract的合约代码,下面就是在链上的操作。

链上加载对应的合约

  • 创建帐户 eidos,eosio.token,测试帐户eosforce,eidos合约上面的开发团队帐户eidosoneteam

cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV 
cleos create account eosio eidos EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV 
cleos create account eosio eosforce EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV 
cleos create account eosio eidosoneteam EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
  • 加载对应的合约,加载eidos合约

cd /workspace/eosio-web-ide/contract/eidos 
cleos set contract eidos ./token/
  • 加载eosio.token合约

cd /workspace/eosio-web-ide/contract/eosio.contracts/build/contracts 
cleos set contract eosio.token ./eosio.token/

eosio.token 合约上面创建并增发TEST代币

cleos push action eosio.token create '["eosforce","100000000.0000 TEST"]' -p eosio.token cleos push action eosio.token issue '["eosforce","100.0000 TEST","test"]' -p eosforce

eidos合约创建EIDOS代币,增发代币并将eidos帐户权限赋予eidos合约

cleos push action eidos create '["eidos","10000000000.0000 EIDOS"]' -p eidos 
cleos push action eidos issue '["eidos","1.0000 EIDOS","test"]' -p eidos 
cleos set account permission eidos active '{ "threshold": 1, "keys": [ {"key":"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","weight":1} ], "accounts":[ { "permission": { "actor": "eidos", "permission": "eosio.code" }, "weight": 1 } ] }' owner

使用eosforce帐户通过eosio.token合约向eidos帐户转帐

cleos push action eosio.token transfer '["eosforce","eidos","0.0001 TEST","get eidos"]' -p eosforce

查看eosforce在eosio.token和eidos上面的代币

cleos get table eosio.token eosforce accounts
{
  "rows": [{
      "balance": "100.0000 TEST"
    }
  ],
  "more": false
}
cleos get table eidos eosforce accounts
{
  "rows": [{
      "balance": "3108.4440 EIDOS"
    }
  ],
  "more": false
}

结束语

本文简单介绍了eidos合约的内容,以及如何通过eosio-web-ide部署eidos合约以及通过转帐在eidos合约上面进行挖矿的相关操作。eosio-web-ide是和方便的测试合约的工具,后续会对合约开发者有很大的帮助,EIDOS合约作为目前比较火的EOS链上的合约,有兴趣的可以读一下源码并在测试网上部署一下。

EOSIO Quickstart Web IDE是一种一键式基于Web的IDE,可在浏览器中运行,旨在从根本上简化开发人员的体验。 eosio-web-ide的代码地址是:,我们可以先fork到自己的目录下面然后进行操作。

只需要在我们fork以后的代码目录上面添加gitpod.io/#/如(***/eosio-web-ide),便可以自动在浏览器上面启动一个eosio的测试网。

通过git clone 下载eidos的代码,并编译代码

通过git clone 下载eosio.contracts的代码并编译

https://github.com/enumivo/eidos.git
https://github.com/EOSIO/eosio-web-ide.git
https://gitpod.io/#/github.com/
https://github.com/enumivo/eidos.git
https://github.com/EOSIO/eosio.contracts.git