本篇可能遇到一些問題,還請查看後幾天的文章
EOSIO的設計很有趣,運行節點起來後,也就這樣了,既不能發行數字貨幣,也不能轉帳。為了達成這些功能,為了能夠讓21個超級節點管理eosio帳號,接著必須部署一系列系統合約(單純做開發智能合約,你可以選擇不部署,也可以只部署一部分。但是合約中有使用的系統合約的部份,就有必要部署)。
是的,EOSIO連轉帳功能都是由智能合約實現的。
cleos create account eosio eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.msig EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.bpay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.names EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.ram EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.ramfee EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.saving EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.stake EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.vpay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
cleos create account eosio eosio.rex EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
我不打算細說每一個帳號的作用,當然也不是所有帳號都要建立。這些帳號是管理系統相關資源的帳號,像是RAM使用量、CPU使用量(eosio.stake
、eosio.ram
、eosio.ramfee
)等等,還有說過得多重簽名的部份,用以管理eosio最高權限帳號(eosio.msig
)。當然,也有前面剛提到的發幣、轉帳的功能(eosio.token
)。
EOSIO的RAM交易有手續費,這些費用會存於
eosio.ramfee
帳號,之後由21個節點共同決定如何分配。不過RAM使用紀錄交易部份是eosio.ram
。
EOSIO下的各個系統帳號各有各的不同作用,有些之後部署的系統合約會依賴不同帳號。well...簡單點,不用一開始就了解這麼多。
git clone https://github.com/EOSIO/eosio.contracts --branch v1.6.1 --single-branch
# eosio.system是主要系統合約,不過也是最難部署的....
# 可以先忽略,只部署eosio.token就好。該合約用於發幣與轉帳
cd eosio.contracts/contracts/eosio.system
eosio-cpp -I include -I ../eosio.token/include -o eosio.system.wasm src/eosio.system.cpp --abigen
cd ..
cleos set contract eosio eosio.system --abi eosio.system.abi -p eosio@active
cleos push action eosio init '[0, "4,SYS"]' -p eosio@active
# 數字貨幣相關功能合約
cd ../eosio.token
eosio-cpp -I include -o eosio.token.wasm src/eosio.token.cpp --abigen
cd ..
cleos set contract eosio.token eosio.token --abi eosio.token.abi -p eosio.token@active
# 用於多重簽章,也可以忽略
cd ./eosio.msig
eosio-cpp -I include -o eosio.msig.wasm src/eosio.msig.cpp --abigen
cd ..
cleos set contract eosio.msig eosio.msig --abi eosio.msig.abi -p eosio.msig@active
透過cleos set contract
部署合約。每個智能合約也是一個帳號,所以上面建立的帳號,有些已經部署上系統智能合約,成為智能合約帳號。
如果使用正確,
eosio.contracts
資料夾下有一個build.sh
可以直接使用於編譯,之後在部署合約即可
早期EOSIO的版本,需要自己編譯區塊鏈底層,也需要先編譯部署eosio.bios
到eosio
帳號,當作開機。隨後在用eosio.system
部署到eosio
覆蓋(更新)合約。
如果只是要轉帳功能,部署
eosio.token
合約就好。