LoginSignup
0
0

More than 5 years have passed since last update.

eosio.system の役割

Last updated at Posted at 2018-12-16

EOS の公式コントラクトとして、下記あります。

今回は、eosio.system を読んでみます。

ソース

量が多いので、リンクとアクションリストだけにします。

eos/eosio.system.hpp at master · EOSIO/eos

EOSIO_ABI( eosiosystem::system_contract,
     // native.hpp (newaccount definition is actually in eosio.system.cpp)
     (newaccount)(updateauth)(deleteauth)(linkauth)(unlinkauth)(canceldelay)(onerror)
     // eosio.system.cpp
     (setram)(setparams)(setpriv)(rmvproducer)(bidname)
     // delegate_bandwidth.cpp
     (buyrambytes)(buyram)(sellram)(delegatebw)(undelegatebw)(refund)
     // voting.cpp
     (regproducer)(unregprod)(voteproducer)(regproxy)
     // producer_pay.cpp
     (onblock)(claimrewards)
)

コメントどおりに、実際の実装は複数ファイルに分けています。

下記のテーブルが定義されています。

  • name_bid_table アカウント購入テーブル:項目は、購入うしたいアカウント名、購入したアカウント、価格
  • global_state_singleton グローバル情報:項目は、システム全体の使える RAM 量などの情報
  • producer_info BPの情報:項目は、アカウント名、投票数、URL、ロケーション、未払い報酬のブロック数など
  • voters_table 投票情報:オーナー、投票したアカウントの配列など

メソッドは下記になってます。

// native.hpp (newaccount definition is actually in eosio.system.cpp)

  • アカウント作成
  • 権限更新、権限削除
  • 権限リンク、権限リンク解除
  • 遅延トランザクションの取り消し
  • エラー処理

// eosio.system.cpp

  • RAM設定
  • ブロックチェーンパラメータ設定
  • 特別権限更新
  • BP 削除
  • アカウント名購入

// delegate_bandwidth.cpp
- RAM購入
- 代理設定
- 代理解除
- 返金

// voting.cpp
- BP 登録
- BP 登録解除
- BP 投票
- 投票代理設定

// producer_pay.cpp
- ブロック生成を記録する
- BP の報酬を付与する

関連しているシステムアカウント

契約の中、下記おnアカウントも使っています。

  • eosio.saving 報酬を計算するとき、80% の報酬を保持しているアカウント
  • eosio.bpay ブロックの数によって計算れている報酬を保持しているアカウント
  • eosio.vpay BPが持っている投票によって計算されている報酬を保持するアカウント
  • eosio.ram アカウントが RAM を購入するとき払った料金を保持するアカウント
  • eosio.ramfee アカウントが RAM を購入するとき払った手数料を保持するアカウント
  • eosio.stake アカウントが CPU / NETstake する料金を保持するアカウント
  • eosio.names アカウントがオークションでアカウント名を売買するとき、代金を保管するアカウント

EOS ネットワーク上の立ち位置

  • EOS のメインネットでは、eosio.bios に代わりに、eosio アカウントにデプロイされています

まとめ

EOS ブロックチェーン本体の動きとリソース制限やアカウント作成などの処理が、eosio.systemで実装されていることになっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0