系列文章
1. Hello World!
2. 部署token合約併發行、交易幣(本文)
3. 解析abi文件
正文
1. 獲取token合約
首先將目錄切換到放合約到文件夾。
cd /Users/yourUserName/Documents/EOS/contracts
接着獲取合約。
git clone https://github.com/EOSIO/eosio.contracts --branch v1.7.0 --single-branch
這時候你的目錄下會多出一個叫eosio.contract的文件夾,這個文件包含了一些合約,在本文中只需要用到eosio.token合約,故切換到該目錄下。
cd eosio.contracts/contracts/eosio.token
2. 部署合約
在部署之前,創建一個叫eosio.token的賬戶,後續將token合約部署到該賬戶上。這裏用EOS的開發公鑰創建該用戶。
cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
接着編譯toekn合約。
eosio-cpp -I include -o eosio.token.wasm src/eosio.token.cpp --abigen
然後部署到eosio.token賬戶上。
cleos set contract eosio.token /Users/yourUserName/Documents/EOS/contracts/eosio.contracts/contracts/eosio.token --abi eosio.token.abi -p eosio.token@active
3. 創造token
cleos push action eosio.token create '[ "alice", "1000000000.0000 SYS"]' -p eosio.token@active
該命令行執行了eosio.token合約中的create方法,該方法需要兩個參數——發行者和最大發行量。此時alice具有發行token到權力,但最多隻能發行1000000000.0000個SYS幣。
*create方法名如下,具體源碼可以在eosio.token/src/eosio.token.cpp文件中找到。
void token::create( const name& issuer, const asset& maximum_supply )
{
...
}
4. 發行token
cleos push action eosio.token issue '[ "alice", "100.0000 SYS", "memo" ]' -p alice@active
該命令執行了eosi.token中到issue方法,該方法需要三個參數——接收者,幣的數量,備註。
此時,alice發行並擁有了100.0000個SYS。
*issue方法名及參數如下,具體源碼同樣可以在eosio.token/src/eosio.token.cpp文件中找到。
void token::issue( const name& to, const asset& quantity, const string& memo )
{
...
}
輸出結果如下
executed transaction: d1466bb28eb63a9328d92ddddc660461a16c405dffc500ce4a75a10aa173347a 128 bytes 205 us
# eosio.token <= eosio.token::issue {"to":"alice","quantity":"100.0000 SYS","memo":"memo"}
warning: transaction executed locally, but may not be confirmed by the network yet ]。
5. 交易token
此時,alice想要給bob轉25個SYS,可以執行以下命令。
cleos push action eosio.token transfer '[ "alice", "bob", "25.0000 SYS", "m" ]' -p alice@active
*transfer方法的源碼同樣可以在同樣的地方找到。
爲了驗證幣是否成功轉發,執行以下命令。
cleos get currency balance eosio.token bob SYS
輸出結果。
25.0000 SYS
同樣可以驗證alice只剩75.000 SYS。