EOS Smart Contract 배포

HEXLANT


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 을 어떻게 확인 하는지에 대한 자세한 방법은 다른 포스팅에서 다루도록 하겠습니다.

감사합니다.


#헥슬란트 #HEXLANT #블록체인 #개발자 #개발팀 #기술기업 #기술중심

기업문화 엿볼 때, 더팀스

로그인

/