eoseoul / eos-qna

EOS Questions and Answers
0 stars 0 forks source link

[Question] 시스템 계정, 시스템 컨트랙트는 왜 built-in 되지 않았을까요? #4

Open gd0live opened 6 years ago

gd0live commented 6 years ago

eosio.prods는 따로 생성하지 않아도 되는 built-in된 특수한 계정이라고 적혀있습니다. 그러면 다음의 계정들도 built-in 해놓으면 되지 않았을까요?

eosio, eosio.bpay, eosio.msig, eosio.names, eosio.ram, eosio.ramfee,
eosio.saving, eosio.stake, eosio.token, eosio.vpay

그리고 blockchain에서 eosio.token, eosio.msig 등의 컨트랙트는 없어서는 안될 필수 요소인데, 왜 컨트랙트는 built-in 해놓지 않았을까 궁금합니다.

redjade commented 6 years ago

config.hpp(libraries/chain/include/eosio/chain/config.hpp)에서는 기본적인 계정 몇 개를 정의해놓고 있습니다.

const static uint64_t system_account_name    = N(eosio);
const static uint64_t null_account_name      = N(eosio.null);
const static uint64_t producers_account_name = N(eosio.prods);

bios boot 튜토리얼 코드에는 부트 과정에서 생성하는 시스템 계정들의 목록이 있구요.

systemAccounts = [
    'eosio.bpay',
    'eosio.msig',
    'eosio.names',
    'eosio.ram',
    'eosio.ramfee',
    'eosio.saving',
    'eosio.stake',
    'eosio.token',
    'eosio.vpay',
]

제 짐작으로는, eosio, eosio.null, eosio.prods는 블록체인 자체에 연결된 계정인데 비해, 부트 시퀀스에서 생성하는 시스템 계정들은 시스템 컨트랙트와 연결된 계정이라서 그런 것 같습니다. 시스템 컨트랙트는 블록체인의 정책과 기획에 따라서 변경될 수 있고, 블록체인 자체는 모든 경우에도 공통적으로 필요한 부분으로 구성한다는 생각이 밑바탕에 자리잡고 있는 것 같습니다.

eosio.token과 eosio.msig 컨트랙트의 경우에도, 정책과 기획에 따라 다르게 구현할 수 있기 때문에 built-in으로 구현하지 않은 것으로 짐작됩니다.