先回答一下上一节中留下的问题,为什么我就看不到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干啥用的
暂时到这里吧,下篇继续。