[Klaytn][caver-java] 2. 스마트 컨트랙트를 wrapper클래스 만들기

Woody Kim
Day34 Inc.
Published in
5 min readJul 17, 2019

안녕하세요. 저는 (주)34일의 주니어 개발자 Woody 라고 합니다. 두번째 내용은 스마트 컨트랙트를 wrapper클래스로 만드는 방법에 대해 알아보려고 합니다.

자바환경에서 caver-java를 이용해 스마트 컨트랙트와 관련한 트랜잭션을 발생시키려면 스마트 컨트랙트에 대한 wrapper 클래스를 만들어야 합니다. 이를 위해 솔리디티 컴파일러와 caver-java 커맨드-라인 툴을 설치하는 방법에 대해 알아보고, 스마트 컨트랙트를 warpper클래스로 만드는 방법에 대해 알아보도록 하겠습니다.

설치와 관련한 설명은 MacOS를 기준으로 설명하고 있음에 주의하시길 바랍니다. 다른 환경에서의 설치는 제가 테스트하지 못하여 소개하지 못하는 점 양해바랍니다. 클레이튼 공식문서를 확인해 주세요.

솔리디티 컴파일러 설치

클레이튼은 솔리디티 컴파일러 0.4.24 버전 또는 0.5.6 버전을 권장하고 있으며, MacOS 유저라면, Homebrew를 통해 다음과 같이 쉽게 설치할 수 있습니다.

1.  $ brew install klaytn/klaytn/solidity@0.4.24 # version 0.4.24
2. $ brew install klaytn/klaytn/solidity@0.5.6 # version 0.5.6

solidity 컴파일러 버전을 바꾸고 싶다면, 다음과 같이 하면 됩니다.

1. $ brew unlink solidity@0.4.24
2. $ brew link solidity@0.5.6

만약, MacOS 유저가 아니라면, 다음 링크를 참조하여 솔리디티 컴파일러 0.4.24 또는 0.5.6버전을 설치해 주시길 바랍니다.

caver-java command-line tool 설치

caver-java command-line tool은 솔리디티 스마트 컨트랙트를 java 환경에서 사용할 수 있는 wrapper 클래스로 만들어 줍니다. caver-java command-line tool을 설치하기 위해선 Java 1.8 이상이 설치되어 있어야 하며, 설치 방법은 다음과 같습니다.

1. $ brew tap klaytn/klaytn
2. $ brew install caver-java

스마트 컨트랙트 컴파일

caver-java로 컨트랙트를 배포하기 위해서는 솔리디티 컴파일러를 이용해 컨트랙트를 컴파일 해야 합니다. 솔리디티 컴파일러로 솔리디티 파일을 컴파일 하는 방법은 다음과 같습니다.

$ solc <contract>.sol --bin --abi --optimize -o <output-dir>/

Example :

다음은 실제 제가 EET.sol 파일을 솔리디티 컴파일러를 이용해 컴파일하는 사진입니다.

wrapper 클래스 생성

솔리디티 컴파일러로 .bin파일과 .abi파일을 만들었으면 caver-java 커맨트-라인 툴을 이용하여 java에서 사용할 수 있는 wrapper클래스를 만들어야 합니다. 다음과 같은 명령어로 자바 wrapper 클래스를 만들수 있습니다.

$ caver-java solidity generate -b <smart-contract>.bin -a 
<smart-contract>.abi -o <outputPath> -p <packagePath>

Example:

다음과 같이 caver-java 커맨드-라인 툴을 이용하여 EEToken이라는 스마트 컨트랙트를 wrapper 클래스화 하였습니다.

caver-java 커맨드-라인 툴을 사용하여 wrapper 클래스를 생성하면, 다음과 같이 <smartContract>.java 파일을 생성되며, wrapper 클래스를 사용하여, 스마트컨트랙트를 배포, 실행 할 수 있습니다.

스마트 컨트랙트를 wrapper클래스로 만들었다면, caver-java에서 스마트 컨트랙트를 배포하고 실행할 수 있는 준비단계가 끝난 것 입니다.

다음에는 caver-java 커맨드-라인 툴을 이용해 만든 스마트 컨트랙트 wrapper클래스를 이용해 caver-java를 이용하여 클레이튼에 스마트 컨트랙트를 배포하고 실행하는 방법에 대해 알아보도록 하겠습니다.

혹시 잘못된 부분이 있으면, 말씀해 주시길 바랍니다. 선배 개발자로서 조언도 감사하겠습니다 :)

[참고] https://docs.klaytn.com/sdk/caverjava/getting_started

--

--