接上文: https://github.com/kaidiren/D6/issues/4

官方文档地址: https://github.com/EOSIO/eos#example-currency-contract-walkthrough

智能合约示例

首先启动 节点

docker-compose up

导入帐号

在创世区块的配置中已经存在一个 eosio 的账户, 把私钥导入.

eosioc wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

为 “currency” 合约创建帐号

先生成2个密钥对:

rkd@mac:~/blockchain/eos/Docker$ eosioc create key
Private key: 5KMohsQ5cqXGgMRPH5qXqaTpRhrThwtGT7e8sqS7KuxXRxGLFfW
Public key: EOS55iuKLbH2XhNv4pJXjNtxTJYoD5Xes2PuB4N7LYfgdeEjFPWat   // owner_key
rkd@mac:~/blockchain/eos/Docker$ eosioc create key
Private key: 5K8T42F56S6VX3bFh3sC6UcNjC1aQEY37AmK2rdnXVzsSX3YeCT
Public key: EOS6RPNryk7rxkrcxKEigmrNBS4dzGcUqdoWT4HupbrbYnVro5npM  // active_key

通过 eosio 这个帐号, 创建 currency 帐号

eosioc create account eosio currency EOS55iuKLbH2XhNv4pJXjNtxTJYoD5Xes2PuB4N7LYfgdeEjFPWat EOS55iuKLbH2XhNv4pJXjNtxTJYoD5Xes2PuB4N7LYfgdeEjFPWat

会返回一大段 json 串就说明成功了

查询一下: eosioc get account currency

返回结果:

{
  "account_name": "currency",
  "permissions": []
}

导入钱包私钥:

eosioc wallet import 5KMohsQ5cqXGgMRPH5qXqaTpRhrThwtGT7e8sqS7KuxXRxGLFfW
eosioc wallet import 5K8T42F56S6VX3bFh3sC6UcNjC1aQEY37AmK2rdnXVzsSX3YeCT

上传 “currency” 合约

上传前可以查看下:

eosioc get code currency
code hash: 0000000000000000000000000000000000000000000000000000000000000000

上传:

eosioc set contract currency ../../contracts/currency/currency.wast ../../contracts/currency/currency.abi

返回的结果中带有 transaction_id 字段那就说明成功了

你可以再查询验证下:

eosioc get code currency

返回结果看起来像这样子:

code hash: 9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975

使用这个合约前,要现先生成代币.

eosioc push action currency issue '{"to":"currency","quantity":"1000.0000 CUR"}' --permission currency@active

验证下看看余额对不对:

eosioc get table currency currency account
{
  "rows": [{
     "currency": 1381319428,
     "balance": 10000000
     }
  ],
  "more": false
}

通过合约交易

eosioc push action currency transfer '{"from":"currency","to":"eosio","quantity":"20.0000 CUR","memo":"my first transfer"}' --permission currency@active

返回的结果中带有 transaction_id 字段那就说明成功了

通过合约查询余额

eosioc get table eosio currency account
{
  "rows": [{
      "currency": 1381319428,
      "balance": 200000
       }
    ],
  "more": false
}
eosioc get table currency currency account
{
  "rows": [{
      "currency": 1381319428,
      "balance": 9800000
    }
  ],
  "more": false
}

显然余额已经发生变化了.

评论地址