iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Blockchain

又LAG的EOS.IO技術筆記系列 第 19

部署系統合約eosio.system

  • 分享至 

  • xImage
  •  

本篇可能遇到一些問題,還請查看後幾天的文章

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.stakeeosio.rameosio.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.bioseosio帳號,當作開機。隨後在用eosio.system部署到eosio覆蓋(更新)合約。

如果只是要轉帳功能,部署eosio.token合約就好。


上一篇
(系統合約部署前) 建立開發測試帳號
下一篇
[系統合約後續]建立開發測試帳號 (系統合約部署後)
系列文
又LAG的EOS.IO技術筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言