参考: medium

创建钱包

cleos wallet create -n alex-wallet --to-console

输出:

Creating wallet: alex-wallet
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KbQdy5YxYyKgcUMvbxk82tjm5xMEF67qvKCeDohvpiJFwb5hgV"

查看钱包

cleos wallet list

输出:

Wallets:
[
  "alex-wallet *"
]

创建密钥

cleos create key --to-console

输出:

Private key: 5KM58X55iTQiKamSszmCPQRXS1CvA3hMw3h96u6KnX2mrR8e7qj
Public key: EOS7tmDEWoc6qJHAvkbffod7kpXPaJTazNY2uJcVAfYg9QiQ5pmyM

Private key: 5J8esD5uZsrJ72gunW5TfPQTzJyAeY262YPtPZxMDZEBsaimDEg
Public key: EOS7bxXDrUAZoYTR6udrcWEYndDHeV5sHJju6M6opy9qvibc8w8H6

## 密钥导入钱包

cleos wallet import -n alex-wallet --private-key 5KM58X55iTQiKamSszmCPQRXS1CvA3hMw3h96u6KnX2mrR8e7qj

cleos wallet import -n alex-wallet --private-key 5J8esD5uZsrJ72gunW5TfPQTzJyAeY262YPtPZxMDZEBsaimDEg

> 另外还要导入EOSIO的私钥
​```bash
cleos wallet import -n alex-wallet --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

创建账户

cleos create account eosio eosio.token EOS7bxXDrUAZoYTR6udrcWEYndDHeV5sHJju6M6opy9qvibc8w8H6 EOS7tmDEWoc6qJHAvkbffod7kpXPaJTazNY2uJcVAfYg9QiQ5pmyM

输出:

executed transaction: 968224dd6b597e598430d960ffd30c07834cd23201a4ea655be57977781bc187  200 bytes  28129 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"eosio.token","owner":{"threshold":1,"keys":[{"key":"EOS7bxXDrUAZoYTR6udrc...
warning: transaction executed locally, but may not be confirmed by the network yet         ]

再创建另外两个账户usera userb , 用于转账

cleos create account eosio usera EOS7bxXDrUAZoYTR6udrcWEYndDHeV5sHJju6M6opy9qvibc8w8H6 EOS7tmDEWoc6qJHAvkbffod7kpXPaJTazNY2uJcVAfYg9QiQ5pmyM

cleos create account eosio userb EOS7bxXDrUAZoYTR6udrcWEYndDHeV5sHJju6M6opy9qvibc8w8H6 EOS7tmDEWoc6qJHAvkbffod7kpXPaJTazNY2uJcVAfYg9QiQ5pmyM

生成合约

eosiocpp -n eosio.token

输出:

created eosio.token from skeleton

编译

eosiocpp -o eosio.token.wast eosio.token.cpp

eosiocpp -g eosio.token.abi eosio.token.cpp

部署

cleos set contract eosio.token /eosio.token

输出:

Reading WASM from /eosio.token/eosio.token.wasm...
Publishing contract...
executed transaction: 0b9ff9c12794b6a52cdf310b21fb0aaef03428616d8222ba1e9978105de89d2e  8144 bytes  32370 us
#         eosio <= eosio::setcode               {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7e...
#         eosio <= eosio::setabi                {"account":"eosio.token","abi":"0e656f73696f3a3a6162692f312e300007076163636f756e7400010762616c616e63..

检查下是否部署成功:

cleos get code eosio.token

输出:

code hash: 373148ead5436184456da0f048d45afdded95e8276c1454619ddf87c65a70a05

调用合约, 执行create

cleos push action eosio.token create '["usera","21000000.0000 DEMO"]' -p eosio.token

查询状态:

cleos get table eosio.token DEMO stat

输出:

{
  "rows": [{
      "supply": "0.0000 DEMO",
      "max_supply": "21000000.0000 DEMO",
      "issuer": "usera"
    }
  ],
  "more": false
}
cleos get table eosio.token usera accounts

输出:

{
  "rows": [],
  "more": false
}

调用合约, 执行issue

cleos push action eosio.token issue '["usera","21000000.0000 DEMO","issuance"]' -p usera

输出:

executed transaction: 820c1aa07b55536e3ff11bd0e8f2cb3b4c1d79c18a8df1ecbed7d25ad5fae115  128 bytes  3401 us
#   eosio.token <= eosio.token::issue           {"to":"usera","quantity":"21000000.0000 DEMO","memo":"issuance"

issue后查询状态

cleos get table eosio.token DEMO stat

输出:

{
  "rows": [{
      "supply": "21000000.0000 DEMO",
      "max_supply": "21000000.0000 DEMO",
      "issuer": "usera"
    }
  ],
  "more": false
}
cleos get table eosio.token usera accounts

输出:

{
  "rows": [{
      "balance": "21000000.0000 DEMO"
    }
  ],
  "more": false
}

调用合约, 执行转账

cleos push action eosio.token transfer '["usera","userb","1000000.0000 DEMO","here you go"]' -p usera

输出:

executed transaction: c4b79a6a8ab89b59075e3dbe4fc126bcc8991ef54a2e42b1c98ee729bca228af  136 bytes  2012 us
#   eosio.token <= eosio.token::transfer        {"from":"usera","to":"userb","quantity":"1000000.0000 DEMO","memo":"here you go"}
#         usera <= eosio.token::transfer        {"from":"usera","to":"userb","quantity":"1000000.0000 DEMO","memo":"here you go"}
#         userb <= eosio.token::transfer        {"from":"usera","to":"userb","quantity":"1000000.0000 DEMO","memo":"here you go"}

调用转账后查询状态

cleos get table eosio.token DEMO stat

输出:

{
  "rows": [{
      "supply": "21000000.0000 DEMO",
      "max_supply": "21000000.0000 DEMO",
      "issuer": "usera"
    }
  ],
  "more": false
}

查询usera账户余额:

cleos get table eosio.token usera accounts

输出:
{
"rows": [{

  "balance": "20000000.0000 DEMO"
}

],
"more": false
}

> usera 少了100万

查询userb账户余额:
​```bash
cleos get table eosio.token userb accounts

输出:

{
  "rows": [{
      "balance": "1000000.0000 DEMO"
    }
  ],
  "more": false
}
03-05 21:47