EOS 3.0 파헤치기

GXC_Jinhwan
GameXCoin
Published in
4 min readMar 26, 2018

EOSIO가 세간의 화두이다. 블록체인 OS를 꿈꾸는 이 프로젝트는 역대 최장, 최대 규모의 ICO를 성공적으로 — 올해 1월 서울 밋업에 따르면, 약 1조정도의 금액을 모금했다고 한다 — 끝내가고 있다. 얼마전에는 업비트 원화마켓에 상장되었고, 아직 메인넷이 나오지 않았음에도 불구하고 eos를 기반으로한(할) 프로젝트 발표들이 연달아 나오고 있는 상황이다.

이 연재는 공개된 EOSIO를 직접 구동하여, 어떤 기능들이 현재 동작하는지, 무엇이 빠져있는지를 판단하는 선삽자(…) 역할을 진행해보고자 한다.

macOS High Sierra에서 구동하였고, 구동한 버젼은 https://github.com/EOSIO/eos/commit/aa0ffcc968fe31b4caeaa583f3a5cfa674c94d6a버전이다.

기본적인 실행은 https://github.com/EOSIO/eos/ 을 참고하여 작성하였다.

이번 포스팅의 주제는 ‘이오스 빌드 & daemon 올려보기’이다.

MAC

prerequisites

  1. mac, macos
  2. homebrew
  3. updated X code

BUILD

  1. github에서 다운받는다
git clone git@github.com:EOSIO/eos.git — recursive

2. 폴더 이동 후 build

cd eos
./eosio_build.sh

디펜던시에 따라 패키지 설치를 묻거나, 루트 권한을 묻는다. 적절히 잘 대답해주면 컴퓨터 사양, 네트워크 상태에 따라 30~50(..)분 가량 뒤 빌드가 완료된다. 그 사이 컴퓨터를 잠재우는 일 없도록 하자.

빌드가 끝나면, 결과물이 ./build 폴더에 저장된다. contract 개발을 위해 폴더 이동후 build를 한 번 더 해주자.

cd build
sudo make install

UBUNTU

prerequisites

  1. ubuntu16.xx(16.10이 recommended이나, 네이버 클라우드에서 16.04까지만 지원하고 있어서 16.04에서 진행하였다)

build

mac과 마찬가지로, eos를 git으로 다운로드 받은 뒤 build를 진행한다. 명령어는 동일하다. 시간은 여전히 많이 걸리므로, 원격으로 서버에 붙어서 하는 경우 screen이나 tmux로 붙어서 설치하는 방법을 추천한다.

Daemon 올려보기

build에 성공했으면 블록을 싱글노드로 생성해보자. 데몬은 얼마전까지 eosiod라는 이름이었는데, 최근 nodeos로 재명명되었다.

빌드된 각종 프로그램들은 build/programs/** 에 위치해있다.

cd build/nodeos
./nodeos

…를 돌리기 전에 config 파일을 수정하자. config파일은 build/etc/eosio/node_00/config.ini 에 위치해있다.

config.ini파일을 열어서 해당 부분을 아래와 같이 변경하고

enable-stale-production = true
producer-name = eosio

하단에 플러그인을 추가하자.

plugin = eosio::producer_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin

다시 ./nodeos를 실행하면 eosio가 싱글노드로 블록을 생성할 것이다.

eosio generated block c14a4bd0... #3 @ 2018-03-26T08:11:49.500 with 0 trxs
eosio generated block 70e0518e... #4 @ 2018-03-26T08:11:50.000 with 0 trxs
eosio generated block 2114ae11... #5 @ 2018-03-26T08:11:50.500 with 0 trxs

이런 메시지가 뜨면 성공이다. 2.x 대 버젼에서는 n명의 producer(inita, initb …)로 block생성이 가능했는데, 현재 3.0버전에서는 eosio 혼자서 블록을 생성하는 구조이다.

여기까지 별 문제 없이 성공하면 박수… 아직 3.0에선 많은 에러들이 build 및 여러 명령을 수행할 때마다 발생한다. 마스터 브랜치 조차하루에도 몇 번 씩 업데이트가 되는 상황이라…

에러들의 상당수는

또는

에서 찾아보거나 질의하면 대부분은 확인 가능하다.

다음 장에선 eosio의 폴더 구조에 대해 분석해보도록 하겠다.

--

--