EOS 3.0 파헤치기 2 — 폴더구조
앞선 장에선 이오스 빌드 후 데몬 돌리기까지 실행해봤다.
이번 장에선 본격적으로 이오스를 가지고 놀기전, 이오스의 폴더 구조에 대해 살펴보겠다.
git clone 받은 폴더로 이동하자. 다음과 같은 폴더구조가 보일 것이다.
- build
이오스를 빌드한 후, 그 결과물이 저장된다. 실제 실행할 프로그램들이 위치해있다.
- contracts
예제 스마트 컨트랜트 코드가존재한다. currency, dice, bancor 등… 스마트 컨트랙트의 구조는 다음 장에서 좀 더 알아보
- docker
EOSIO를 docker를 이용해 실행 시 필요한 설정파일이 존재한다.
*현 버젼에선 docker build중에 여러 에러들이 리포트되고 있다. 굳이 docker를 이용할 필요가 없으면 각 os에 맞게 빌드하는걸 추천한다.
- docs
html로 된 설명서들이다. 해당 설명서는 https://eosio.github.io/eos/index.html
에서 확인 가능하다.
- externals
외부 라이브리러들이다. 현재는 binaryyen이라는 webassembly 컴파일러(https://github.com/WebAssembly/binaryen)만 존재한다.
- libraries
코어 function들이 제공된다. chain, smart contract 관련 코어들이 정의된다. 실제 블록체인 코어모듈을 수정하려면 libraries의 코드를 수정해야 한다.
- plugins
nodeos(eos daemon)을 실행할 때, 여러 플러그인들을 더하고 빼며 실행이 가능한데, 이런 플러그인들에 관한 소스를 볼 수 있다. chain, http, wallet, account 등등이 존재한다.
- programs
실제 돌릴 수 있는 프로그램들이다. 주로 사용되는 프로그램으로는
— nodeos: eos daemon이다. 구버전에선 eosiod였다.
— cleos: blockchain과 통신하는 command line interface 를 제공한다. 구버전에선 eosioc였다.
— eosiowd: eos wallet 관리 프로그램이다.
- scripts
운영체제별 build를 위한 scripts들이 존재한다.
Build folder Structure
./build 폴더에는 상위폴더 구조를 본딴 빌드 결과물이 저장된다. 또한 추가로 다른 폴더들이 더 존재한다.
** EOS의 이전버전과는 다르게 var, etc 같은 리눅스 운영체제의 주 디렉토리를 본딴 구조를 살펴볼 수 있다. blockchain OS를 표방하는 namespace로 보인다.
- var
현재는 /var/lib/eosio/node_00 만 존재한다. block produce시 생성되는 데이터(block, wallet)들이 저장된다.
- etc
현재는 /etc/eosio/node_00 만 존재한다.
config.ini — nodeos 관련 설정값이다. 빌드 후 nodeos를 정상적으로 동작시키려면 이 값을 변경하여야 한다.
genesis.json — 제네시스 블록에 관한 정보가 담겨있다.
다음 장에선 wasm으로 동작하는 eosio의 smart contract 구조 분석 및 컨트랙트 예제중 하나인 currency 를 issue 해보도록 하겠다.