在EOS上发币

本文由【区块链研习社】优质内容计划支持,更多关于区块链的深度好文,请点击区块链研习社。

#一、准备

1、运行环境

我使用的是ubuntu-16.04操作系统,按照eos GitHub上的步骤安装,如果安装中遇到问题,也可以参考我的上一篇文章《搭建EOS测试环境》。

另外,我使用的是Dawn 2.0的代码。由于EOS还在紧张开发中,版本之间差别较大,如果使用的是其它版本的代码,请读者自行适配。

2、创建钱包

钱包用来管理账户,签署交易。

钱包创建后,默认就是unlock的(注意,钱包密码需要记录下来,后面还会用到)。

$ eosc wallet create

3、创建账户

部署智能合约需要一个账户。

首先,创建两个秘钥对(注意,秘钥对需要记录下来,后面还会用到)。

$ eosc create key    #owner_key 
$ eosc create key    #active_key

然后使用系统默认的账户(inita)授权创建新账户(比如currency),将上面创建的私钥分别作为新账户的owner和active的公钥。

$ eosc create account inita currency OWNER_PUBLIC_KEY ACTIVE_PUBLIC_KEY

4、将账户导入钱包

账户导入钱包,方便钱包管理账户。

将账户的active的私钥导入钱包。

$ eosc wallet import XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

二、部署智能合约

接下来我们使用currency账户作为智能合约的创建账户。

首先,我们先查看currency账户是否已经部署智能合约。

$ eosc get code currency 
code hash: 0000000000000000000000000000000000000000000000000000000000000000

code hash全是0表示currency账户还没有部署智能合约(因为currency是新创建的账户)。

然后,我们部署智能合约,这里使用eos自带的currency智能合约。

$ eosc set contract currency ../contracts/currency.wast ../contracts/currency.abi

最后,我们再查看一下currency账户的关联智能合约。

$ eosc get code currency
code hash: 9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975

此时,currency账户已经有关联的智能合约,表明智能合约部署成功了,currency token也就创建成功了。

三、调用智能合约

eos自带的currency智能合约只有转账的功能,我们这里就使用转账来示例。

首先,查看currency账户的余额。

$ eosc get table currency currency account 
{ 
     "rows": [{
         "key":"account", 
         "balance": 1000000000 
         } 
     ], 
     "more":false 
 }

从上面可以看到,此时,currency账户拥有1000000000个新创建的currency token。

再查看inita账户的余额。

 $ eosc get table inita currency account 
 { 
     "rows": [{ 
         "key":"account", 
         "balance": 0 
         } 
     ], 
     "more":false 
 }

现在,我们从currency账户,给inita账户转50个currency token。

$ eosc push message currency transfer '{"from":"currency","to":"inita","quantity":50}' --scope currency,inita --permission currency@active

请注意,这个时候钱包必须是unlock,否则会报错。

现在我们再来看看currency账户和inita账户的余额。

 $ eosc get table currency currency account

 {
     "rows": [{ 
         "key":"account",
         "balance": 999999950 
         } 
     ], 
     "more":false
 } 
 $ eosc get table inita currency account 
 { 
     "rows": [{ 
         "key":"account", 
         "balance": 50 
         } 
     ], 
     "more":false
 }

从上面可以看到,转账后,currency账户少了50个 currency token,inita账户多了50个currency token,表明转账成功。

小tips:

如果因为突然断电或者无意中关机,没来得及同步数据,导致eosd运行有问题,可以删除区块数据和钱包数据,再运行eosd。

你可能感兴趣的:(EOS学习)