본문 바로가기

백앤드/BlockChain

[KLAYTN Smart Contract] 클레이튼 스마트 컨트랙트 #4 - 컨트랙트 코드 테스트하기

반응형

 

안녕하세요.

요즘 회사 일이 연말이라고 고객사 이슈사항, 문의사항이 너무 몰려와서

너무 바쁘네요ㅠ

 

이전 포스트까지 스마트 컨트랙트를 개발하기 위한 준비과정이었다면,

이번 포스트부터는 스마트컨트랙트를 개발하는 방법을 배워보겠습니다.

 

이더리움에서도 스마트컨트랙트 개발에 도움을 주는

IDE, 설치형 IDE가 존재하는 것처럼 클레이튼에서는 웹에서 IDE를 지원합니다.

 

현재(2019.12.05) 기준에는 Beta 버전으로 공개되어있습니다.

아래 링크를 클릭해서 접속하시면 개발할 수 있는 IDE가 등장합니다.

http://ide.klaytn.com/

 

Klaytn IDE

 

ide.klaytn.com

 

이때 본인 클레이튼 지갑의 KEYSTORE 또는 PRIVATE 를 알고 계셔야 

앞으로 포스팅 이후에서도 계속 개발을 진행하실 수 있습니다.

 

 

먼저 간단한 예시 코드를 보여드리겠습니다.

 

pragma solidity ^0.5.6;

contract Count {
        uint public count = 0;
        address public lastParticipant;
        
        function plus() public {
               count++;
               lastParticipant = msg.sender;
        }

        function minus() public {
               count--;
               lastParticipant = msg.sender;
        }
}

예시 코드를 간단하게 해석해보자면 다음과 같습니다.

 

contract Count

Count라는 컨트랙트 명을 가지고 있습니다.

자바나 C로 생각하면 클래스라고 보시면 됩니다.

 

uint public count = 0

public으로 인해 모든 소스에 공개되었고 unsigned int 타입으로된 count 변수입니다.

unsigned int 는 음수가 아닌 양수로만 이루어진 정수입니다.

(자세한건 C JAVA 개념을 통해 익히시면 됩니다.)

 

address public lastParticipant;

공개된 lastParticipan 변수명으로 address 타입은

클레이튼의 지갑주소가 들어가는 변수로 보면 됩니다.

 

function plus() public {

cont++;

lastParticipant = msg.sender;

}

plus의 함수명을 가진 공개된 함수입니다.

이 메소드는 간단한 로직인데, 함수가 수행될 때마다 개수가 1씩 증가하고,

lastParicipant의 변수에는 msg.sender의 값이 저장되게 됩니다.

msg.sender은 해당 함수를 실행한 주체자의 지갑 주소가 담겨져 있습니다.

 

minus 함수는 plus와 동일하므로 생략하도록 하겠습니다.

 

 

그럼 이제 스마트 컨트랙트를 개발하고 테스트하기 위해 IDE 툴로 이동하겠습니다.

http://ide.klaytn.com/

 

Klaytn IDE

 

ide.klaytn.com

- (1) 스마트컨트랙트 개발 웹 접속하기 -

 

처음 접속하면 이렇게 나타나게 됩니다. 정중앙에 위치한 부분부터 스마트컨트랙트 개발을 시작하면 됩니다.

블로그 처음에 예시로 드렸던 예제 소스를 중앙 소스 넣는 곳에 입력해주도록 합니다.

 

- (2) 예제소스 작성하기 -

이렇게 예제소스를 입력한 후에 오른쪽 상단에서 "Select new compiler version"을 맞춰주도록 합니다.

그리고 바로 아래에 "Start to compile"를 클릭하시면 그 아래 콤보박스에 Count 라는 이름이 나타납니다.

그리고 Run 탭을 클릭해서 이동합니다.

 

- (3) 컨트랙트를 위한 지갑 인증받기 -

 Account(+) 를 눌러서 지갑을 로그인해주도록 합니다.

저는 키스토어를 통해서 로그인을 할건데, 키스토어가 아니라 privateKey로 하셔도 무방합니다.

여기서 로그인한 지갑에 보유중인 KLAY를 지불하므로써 스마트컨트랙트를 수행합니다.

물론, 지갑에 KLAY가 없다면 컨트랙트가 실행되지 않는 점은 유의하시고, KLAY가 모자르시다면

"[KLAYTN Smart Contract] 클레이튼 지갑 생성하기 #3 - 테스트 코인 받기" 포스팅에서 알려드린

테스트 코인을 지급받고 오시면 됩니다 !

 

지갑 로그인에 성공하면, 이렇게 지갑에 몇 KLAY를 보유중인지와 public address를 확인할 수 있습니다.

저는 19.9887... KLAY를 보유중이네요. 심심할때마다 무료 테스트코인을 지급받고 있어서

전 이 코인으로 종종 컨트랙트를 테스트하고 있습니다.

 

- (4) 스마트 컨트랙트 Deploy -

 지갑 로그인인증까지 성공하셨으면 이제 "Deploy"를 누르면 작성했던 솔리디티 소스를

실행할 수 있도록 아래에 "Deployed Contracts" 버튼이 항목이 생성되는데 버튼을 누르게되면

그 아래에 우리가 작성했던 컨트랙트 함수 리스트가 보여지게 됩니다.

 

자 그럼 minus 혹은 plus 버튼을 눌러서 컨트랙트를 실행시켜보도록 합시다.

plus 눌렀습니다. minus 누르셔도 됩니다. 전 강요하지 않아요.

누르기 싫으시면 안눌르셔도 되요.

"돈 결제되요!"

 

- (5) 컨트랙트 실행 후 ... -

컨트랙트를 실행하고 나면, 콘솔창에 사진처럼 보여지게 될겁니다.

동그라미로 표시해놓은 화살표를 클릭하면 트랜잭션의 자세한 정보를 확인할 수 있습니다.

 

정보들 중에서 "transaction hash"로 되어있는 항목을 복사하셔서 Klaytnscope에서도 트랜잭션을 확인할 수 있습니다.

그말은 즉, 실행한 컨트랙트를 만천하에 공개가 되었다는 것으로 이해하면 됩니다.

 

그리고 조심하세요. 제가 강요하지 않고, 돈 결제된다고 한 뜻은

스마트 컨트랙트 함수를 실행할 때마다 함수가 수행될 때 메모리나 CPU 사용량 만큼

KLAY가 결제되서 조심하셔야되요.

 

코드 잘못짜면 한순간에 0 KLAY 되실수도 있습니다.

 

 

 

오늘은 여기까지 스마트 컨트랙트 코드를 작성하고, 코드 테스트를 하는 포스팅을 해봤습니다.

다음 포스팅에서는 이렇게 등록한 코드를 caver-js를 통해서 컨트랙트를 실행하는 실습을 진행해보겠습니다.

 

 

 

ps. 그전에 회사 일 좀 마무리 됬으면 좋겠네요. 웹 개발자가 C++ 하려니까 멘탈 뭉개지겠어요 ㅠㅠ...

포인트와 메모리 관리가 익숙치 않아 회사일은 삽질하고 있는... 어휴 ;

반응형