[블록체인 PICK] EOS Smart Contract 배포

EOS Smart Contract 배포

 

Smart Contract 배포를 위한 준비 과정은 이전글 확인 부탁드립니다.

 

저번 시간과 연계하여 이번 시간엔 스마트 컨트랙트를 배포해 보도록 하겠습니다. 지갑 key와 계정 이름등은 본 포스팅에서 그대로 사용하시면 됩니다.

 

배포할 컨트랙트는 eosio.token 으로 eos 개발환경 세팅 시 존재하는 코드를 컴파일하여 실제 사용하는 계정에 setting 하겠습니다. 먼저 컴파일을 위해 ../eos/contracts/eosio.token 으로 이동 하겠습니다.

 

eos/contracts/eosio.token
 

 

이동 하면 위와 같은 파일들을 확인 하실 수 있습니다.

 

hpp : cpp 파일에서 사용하는 변수, 상수, 함수를 담는 헤더파일

cpp : contract 함수를 구현하는 소스 파일

eosiocpp 를 통해 소스코드를 컴파일 해보겠습니다. eosiocpp 는 WASM 및 ABI 컴파일러 로써 블록체인에 업로드 되는 .wasm, .wast, .abi 파일을 생성합니다. 또한 기본 스켈레톤 파일을 제공합니다.

eosiocpp

 

wasm 컴파일

wasm 파일은 아래 명령어를 사용하여 컴파일 만들 수 있습니다.

$ eosiocpp -o eosio.token.wast eosio.token.cpp

eosiocpp 명령어를 사용하여 컴파일 하게 되면 .wast 파일과 .wasm 파일을 생성하게 됩니다. 각 확장자는 다음을 의미합니다.

wast : 텍스트 파일로써 읽을 수 있는 webAssembly 파일

wasm : 컴퓨터가 실제로 이해할 수 있는 webAssembly 파일

abi 파일 생성

$ eosiocpp -g eosio.token.abi eosio.token.cpp 

abi 파일은 JSON과 Binary 간에 사용자 작업을 변환하는 방법에 대해 설명해주는 파일입니다. 실제로 이 JSON 파일을 통해 블록체인 위에서 개발자와 사용자간 상호작용 하는데 도와주게 됩니다.

 

위 2과정을 통해 abi 파일 과 wast 파일을 생성하게 됩니다.

 

compile 결과

 

Contract 세팅하기

아래 명령어를 입력하여 contract 를 set 해줍니다.

 

$ cleos set contract hexlanthenry ../eos/build/contracts/eosio.token 
  • account : contract 를 배포할 계정이름
  • contract-dir : 계정에 set 할 contract 가 저장된 directory
 
set contract 수행 결과
 

만약 해당 계정이 RAM 을 보유하고 있지 않다면 다음과 같은 에러가 나타날 것입니다. 이를 해결하기 위해 RAM 을 구매합니다.

RAM을 보유없이 contract
 
$ cleos system buyram hexlanthenry hexlanthenry "100.0000 EOS"

payer : EOS 를 지불할 계정

receiver : RAM 을 사용할 계정

amount : 지불할 EOS의 양 ( eos 1.1 기준 소수점4개 자리와 symbol을 무조건 넣어주어야 정상 동작 합니다)

contract 확인

계정에 contract가 잘 배포 되었는지 확인해 보겠습니다.

 

$ cleos get code hexlanthenry
 

배포한 contract 가 있을때의 code hash

 

배포한 contract 가 없을때의 code hash

또한 abi 를 통해서도 확인할 수 있습니다.

 

$ cleos get abi hexlanthenry
get abi
 

위 과정을 통해 해당 계정에 실제로 contract 가 잘 배포 되었는지 확인할 수 있습니다.

 

다음 시간에는 배포된 contract 를 통하여 토큰을 발행 해보고 token에 대한 balance 체크 및 transfer 하는 과정을 진행해 보도록 하겠습니다.

 

+또한 abi를 분석하여 struct 와 action 을 어떻게 확인 하는지에 대한 자세한 방법은 다른 포스팅에서 다루도록 하겠습니다.

 

감사합니다.

 

 

 

원문 확인하기 >> https://bit.ly/2MDIK47

error: 본 콘텐츠의 저작권은 BTC코리아닷컴에 있으며 무단전재&배포 금지합니다.