[EOS] Smart Contract 개발 준비 2 - 설치 확인, 환경설정 그리고 노드 실행

in #kr6 years ago

iron_modolee.png

안녕하세요. 개발자 모도리입니다.
지난 글([EOS] Smart Contract 개발 준비 1 - EOS 노드 설치)에 이어서 2탄을 준비했습니다. 이번에는 EOS 노드 설치가 완료된 상태에서 정상적으로 설치가 되었는지 확인하고 노드 실행 전에 환경설정을 해 보겠습니다.

설치 확인

우선 지난 번에 빌드 시켜놓고 잤던 것이 정상적으로 완료되었는지 확인하겠습니다.

build_success.png

위와 같은 화면이 보이셨다면 일단 안심하셔도 됩니다.

현재 경로 /home/계정명/eos/ 에서 ls 명령을 쳤을 때 build 디렉터리가 생성 되어있는 것을 확인할 수 있습니다.

find_binary.png
build 디렉터리 안에 있는 programs, tools 디렉터리에 우리가 원하는 실행 파일들이 들어 있습니다.
programs 디렉터리에는 eosioc, eosiod, eosio-walletd, launcher 등이 있고, tools 디렉터리에는 eoscpp 들어 있습니다.

각각의 파일(명령어)들은 아래와 같은 기능을 합니다.

  • eosiod - server-side blockchain node component
  • eosioc - command line interface to interact with the blockchain
  • eosio-walletd - EOS wallet
  • launcher - application for nodes network composing and deployment; more on eosio-launcher
  • eosiod - blockchain 네트워크를 구성하는 서버-사이드 프로세스
  • eosioc - blockchain과 명령을 주고 받으며 상호 작용하는 CLI 인터페이스
  • eosio-walletd - EOS 지갑
  • launcher - 노드(들)의 네트워크 구성과 배포를 도와주는 응용프로그램

* 아직은 저도 정확히 이해하고 있지 못하는 부분이라서 추후에 더 자세히 안내드리겠습니다.

디렉터리 속에 숨어 있기 때문에 실행을 할 때 마다 긴 경로를 입력해야 되는 불편함이 있습니다. 이를 편리하게 변경해 보겠습니다.

실행 파일 PATH 설정

다시 /home/계정명/eos/build 디렉터리로 돌아옵니다.
* 참고로 /home/계정명 으로 이동하는 명령은 cd ~ 입니다.
그러면
cd ~/eos/build 를 입력하면 원하는 경로에 도착합니다.
여기에서 make install 명령을 실행합니다. 그러면 아래 처럼 퍼센트가 올라가면서 무엇인가가 진행됩니다.
make_install.png

완료되고 난 후 ls로 디렉터리 안을 확인해 보면 install
이라는 디렉터리가 생긴 것을 확인할 수 있습니다. 안에 있는 내용은 살펴보면 아래와 같습니다.
install_bin.png
아까 programs, tools 디렉터리에 있던 실행 파일들이 한 곳에 모여졌습니다. 그럼 이제 실행하기 훨씬 수월해졌죠!
여기서 조금 더 쉽게 실행하실 수 있도록 (어느 경로에서나 긴경로 입력 필요없이 실행파일 이름만 입력하면 되도록) 설정을 해보겠습니다.

vi ~/.bashrc 를 실행해서 맨 아래 줄에 아래처럼 입력 합니다.

#EOS
export EOS_HOME=$HOME/eos
export EOS_BIN=$EOS_HOME/build/install/bin
export PATH=$EOS_BIN:$PATH

그리고 저장 후 나와서 source ~/.bashrc 를 입력해 줍니다. 그리고 eos만 입력한 상태에서 Tab키를 눌러보면 실행할 수 있는 명령어 리스트가 나열되는데, 우리가 원하는 명령어들이 나열되어 있습니다.
eos_auto_complete.png

이걸로 EOS 노드 실행 전 우분투 환경 설정은 마무리 되었습니다.

EOS 노드 실행

노드 실행 전 실행 시 생성되는 파일들을 저장 할 디렉터리를 하나 생성합니다.
홈 디렉터리로 이동해서 testnode라는 디렉터리를 생성하고, 디렉터리 안으로 들어갑니다.
cd ~
mkdir testnode
cd testnode

여기서에서 드디어 eos 노드를 실행할 겁니다.
blockchain 네트워크를 구성하는 eosiod를 실행합니다.

eosiod
run_eosiod.png

윽... 실행 하자마자 웬 빨간 글씨야?? 라고 생각하셨을 텐데요. 에러가 맞긴한데 이건 지극히 정상적인(?) 에러입니다.
에러의 내용은 genesis 파일을 찾을 수 없다는 내용입니다. 이 genesis 파일은 eos 디렉터리의 루트에 있습니다. genesis 파일에는 최초의 Block Producer에 대한 정보가 담겨 있습니다.(혹시 제가 잘못 알고 있는 것이라면 지적 부탁드립니다.)

genesis 파일을 지금 디렉터리로 복사해 오겠습니다.

cp ~/eos/genesis.json ./

디렉터리에 잘 복사되었나 확인해 보겠습니다.
ls
그런데 못 보던 data-dir 이라는 디렉터리가 하나 생겨났습니다.
data-dir.png

이 디렉터리에 blockchain 네트워크 유지에 필요한 데이터들이 저장됩니다. data-dir 안에 있는 config.ini 파일을 설정해 줘야 합니다.

vi ./data-dir/config.ini

아래 내용을 파일 맨 아래 추가해 주셔도 되고, 해당 부분은 찾아서 주석(#)을 제거한 후 수정해 주셔도 됩니다.

# Load the testnet genesis state, which creates some initial block producers with the default key
# genesis 파일의 위치를 지정합니다.
genesis-json = /home/계정명/testnode/genesis.json
 # Enable production on a stale chain, since a single-node test chain is pretty much always stale
 # 최신의 block 정보가 아니더라도 block을 생성한다. single-node에서는 정보를 가져올 수 있는 다른 node와 연결되어 있지 않기 때문에 최신 정보를 유지할 수 없습니다.
enable-stale-production = true
# Enable block production with the testnet producers
# 테스트로 지정되어 있는 Block Producer를 지정합니다.
producer-name = inita
producer-name = initb
producer-name = initc
producer-name = initd
producer-name = inite
producer-name = initf
producer-name = initg
producer-name = inith
producer-name = initi
producer-name = initj
producer-name = initk
producer-name = initl
producer-name = initm
producer-name = initn
producer-name = inito
producer-name = initp
producer-name = initq
producer-name = initr
producer-name = inits
producer-name = initt
producer-name = initu
# Load the block producer plugin, so you can produce blocks
# block 생성 시 필요한 플러그인을 지정합니다.
plugin = eosio::producer_plugin
# Wallet plugin
plugin = eosio::wallet_api_plugin
# As well as API and HTTP plugins
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin

config_genesis.png
config_others.png

수정 된 내용을 저장하고 나옵니다.
다시 eosiod를 실행해 보겠습니다.
run_eosiod_success.png
run_eosiod_bp.png

위와 같이 열심히 BP들이 block을 생성하고 있는 화면이 나온다면 정상적으로 동작하고 있는 것입니다.

ctrl + c를 눌러서 종료합니다.

이번 편은 노드가 local testnet에서 정상적으로 동작하는 것을 확인했습니다.
다음 편에는 예제 스마트 컨트랙트를 실행을 해 보겠습니다.

퇴근 후에 공부하며 프로그램 실행해 보고 에러 잡아가면서 글까지 쓰다 보니 속도가 더딥니다.
이 점 양해 부탁드립니다. 부족한 점 있으면 편하게 댓글 부탁드리겠습니다. 감사합니다.

참고 자료

The first EOS developer meetup in Korea

Sort:  

나중에 프로그래밍 공부하고 봐야겠네요 ㅎㅎ

미리 보팅 하고 가겠습니다 :)

감사합니다~! 나중에 보셔도 전혀 문제 없을 만큼 꼼꼼히 잘 써놔야겠네요! ㅋ

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63877.55
ETH 3143.56
USDT 1.00
SBD 3.97