• EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange


    先回答一下上一节中留下的问题,为什么我就看不到eosio这个账户中的钱呢?我明明为它create了很多token啊。

    对,你是create了,但是没有issue啊。create了1000000000 SYS,只能说明eosio.token这个用户为eosio这个用户在eosio.token用户的这个合约上创建了1000000000 SYS,这些SYS还在央行里面躺着呢,还没有发行,它就是一堆废纸。

    所以,咱们issue一下试试?

    执行命令:./cleos push action eosio.token issue '["eosio", "1000000000.0000 SYS", "memo"]' -p eosio

    也就是发行者给把1000000000个SYS全部放进自己的账户里准备流通了。

    怎么样?我没骗你吧?

    好了,咱们来看一下上边的脚本执行情况。

    1、因为又过了一天了,所以我执行第一条命令的时候,它要求我打开钱包,于是我就吧默认钱包给打开了。

    2、打开钱包后,我直接给eosio发1000000000个SYS,第一次报错了,说交易时间过长,我忍了,再执行一遍,它告诉我说 数量超过可供应量。

    3、好吧,我们把十亿换成999999900,再执行,成功了。

    4、现在再来看看它们各自有多少钱,看到没?eosio这个账户也真的有钱了。但是它钱是不是太多了点?比如说我们想再给simayi发行(issue)点SYS,还能成功吗?

    看到没?没钱了,国库空虚了,以后simayi想要钱,只能找eosio这家伙要了,只能通过transfer的方式获得了。咦,我们试试能不能给它发行负的钱可好?

    有点不好意思,它告诉我说让我别闹,要正数才行。看来,simayi的这500块,我只能transfer给它了:

    执行命令:./cleos push action eosio.token transfer '[ "eosio", "simayi", "500.0000 SYS", "m" ]' -p eosio

    好了,大家的钱的问题都讲清楚了,咱们再来聊聊其它的合约吧。嗯,第三个:

    3、Exchange

    The exchange contract 提供了创造和交易货币的能力。这是个什么情况?上边的eosio.token不也能创建和交易货币嘛?等等,这里所说的交易货币,是不是指像现实生活中美元和人民币兑换之类的事啊?所谓的跨货币交易?这只是我的个人猜测哈。我们现在来做下实验吧。

    那么,既然它能创建货币,那咱们现在就试试Exchange这个东西好不好使可好?

    a、转到nodeos的运行界面,使用ctrl+c,停止nodeos的运行(咱们不去/home/fengwork/.local/share/eosio/nodeos删data文件夹哈,留着有用)

    b、再次输入./nodeos,启动节点

    c、打开一个新的Terminal来操作cleos

    3.1创建eosio.exch账户(./cleos create account eosio eosio.exch)

    要创建一个账户还真是挺麻烦的。先得创建key,解锁钱包,然后把key导入钱包,之后才能创建account。而且啊,account不能超过13个字符,且有命名规则要求。别告诉我你懒癌犯了哈,命令自己敲去。

    呃,如果实在是真的懒癌犯了,那命令在下边,谁叫我心软呢:

    fengwork@ubuntu:~$ cd eos/build/programs/cleos/
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create key
    Private key: 5Jm5G6rFAaxjPKuAraR8mYVmzqpB3E35Mjw363SceFjUeSF6G61
    Public key: EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create key
    Private key: 5JfYHqk8wh2v3335Mxsp71B3pBevmpUxHKfkEiomKHcLDDnpfiy
    Public key: EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet list
    Wallets:
    [
      "default",
      "hanmeimei",
      "simaguang",
      "wangerxiao"
    ]
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet unlock -n default --password PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6(可还记得你的default钱包的password?)
    Unlocked: default
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet import 5Jm5G6rFAaxjPKuAraR8mYVmzqpB3E35Mjw363SceFjUeSF6G61
    imported private key for: EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet import 5JfYHqk8wh2v3335Mxsp71B3pBevmpUxHKfkEiomKHcLDDnpfiy
    imported private key for: EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
    fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create account eosio eosio.exch EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
    executed transaction: c89b760279cb449d25dbce13ffb36a58bbabddaf28b656336acda9ca4fd42f1e  200 bytes  14902 us
    #         eosio <= eosio::newaccount            {"creator":"eosio","name":"eosio.exch","owner":{"threshold":1,"keys":[{"key":"EOS5m1u5coWVEAfCwpJvh2...
    warning: transaction executed locally, but may not be confirmed by the network yet

    警告先不管。

    3.2加载Exchange合约(./cleos set contract eosio.exch ../../contracts/exchange -p eosio.exch

    3.3给eosio.exch创造点货币(./cleos push action eosio.exch create '{"issuer":"eosio", "maximum_supply":"200000000.0000 EXCH"}' -p eosio.exch

     

    看到没?我们换着方的玩,它都创造不了货币。

    那特么的上边说它能够创造和交易货币,逗咱们玩呢?

    我们再次用eosio.token来试试,另外创建一个币种,看看效果:

     

    这才是最正确的姿势嘛,那个Exchange合约是个什么鬼?!

    通过上边的命令执行情况,我们可以得到如下信息:

    1、eosio.token加载过一遍后,就被写入到链上了,即使我们重启节点,已加载的合约也不会丢失,除非你把块都删了,且没有和别的机器连在一起上链

    2、可以为同一个账户,如eosio,创造多个币种,且把该币种发布出去

    3、还是不知道Exchange干啥用的

    暂时到这里吧,下篇继续。

  • 相关阅读:
    pycharm激活(JetBrains IDEA 系列产品通用xx方法(license server))
    纯css美化下拉框、复选框以及单选框样式并用jquery获取到其被选中的val
    字符串替换
    jquery 倒计时效果
    js 数字前自动补零
    css 常用的绝对定位元素水平垂直居中的方法
    webapp中绝对定位/固定定位与虚拟键盘冲突的问题
    css 兼容各种iPhone
    使用 position:sticky 实现粘性布局
    jquery判断点击鼠标左、中、右键事件
  • 原文地址:https://www.cnblogs.com/paluano/p/Exchange.html
Copyright © 2020-2023  润新知