초보자를 위한 ICON DApp 만들기 3

SCORE 구조 및 배포 방법

harry kim
ICON DAPP ALLIANCE
6 min readJun 22, 2020

--

이 글은 스마트 컨트랙트 샘플 코드 및 현재 서비스 되고 있는 여러 DApp들을 분석해 초보자들도 자신들의 아이디어에 ICON을 쉽게 도입할 수 있도록 돕기 위해 작성되었습니다.

SCORE 구조

모든 SCORE는 IconScoreBase를 상속해야 합니다.(tbears로 프로젝트를 생성하면 기본 구조가 자동으로 생성됩니다) 상속받은 클래스는 반드시 아래 추상 메소드들을 구현해야 하며 언제 실행되는지 파악하는 것이 중요합니다.

Joonyoung Choi: How to score#1

__init__: 생성자로 SCORE 인스턴스가 생성될 때마다 호출됩니다. SCORE 내부에서 사용할 변수를 선언할 때 주로 사용합니다.

on_install: SCORE가 배포될 때 단 한번 실행 됩니다.

on_update: 기존에 배포된 SCORE 가 업데이트될 때 마다 실행됩니다.

블록체인 네트워크는 노드가 언제든지 네트워크에 참여 또는 이탈 가능하며 서비스에 아무런 영향을 미치지 않습니다. 즉 프로그램 배포를 위한 서비스 다운 타임이 없으므로 on_install, on_update를 통해서 사전 작업을 할 수 있습니다.

우선 배포하기 전에, default configuration 파일과 test용 계정을 생성합니다.

tbears_server_config.json 파일을 보면, node가 시작할 때, keystore_test1 계정에 0x2961fff8ca4a62327800000 loop가 설정되어 있습니다. 10¹⁸ loop = 1 ICX입니다. 새로운 계정을 생성할 경우 keystore_test1 계정에서 transfer를 통해 ICX를 송금할 수 있습니다.

VSCode에서 SCORE를 배포하기 위해, default 계정을 등록합니다. 아래와 같이 여러개의 계정을 등록할 수 있습니다.

생성한 SCORE 프로젝트에서 ICON Support Extension을 실행합니다.

Wallet을 선택하고 패스워드를 입력한 후 Load Wallet을 하면 다음과 같이 계정의 balance와 배포 시 예상되는 step limit이 나옵니다. (test 계정의 패스워드는 test1_Account 입니다) ICON은 ICX 가격 변동이 트랜잭션 수수료에 미치는 영향을 최소화하기 위해 step이라는 수수료 측정 단위를 사용합니다. step 가격은 ICONist에 의해 관리됩니다. 테스트 서버는 1 ICX = 10,000,000,000 step으로 설정되어 있습니다. 수수료는 stepLmit* stepPrice 입니다. 아래 컨트랙트의 예상 배포 수수료는 1,215,311,520*10,000,000,000=12.2 ICX가 필요합니다. (1 ICX는 시스템 내에서 1×10¹⁸ loop로 표시됩니다.) 지갑에 충분한 ICX가 없으면 배포에 실패합니다.

Deploy 버튼을 눌러서 SCORE를 배포하면 console에 결과를 볼 수 있습니다. 정상적으로 SCORE가 배포되면 아래와 같이 scroreAddress가 출력됩니다.

배포한 SCORE를 실행해 볼까요?

Chrome에서 ICONex를 실행하여 하단의 Wallet URL을 local로 변경해 줍니다.그리고 컨트랙트 탭에서 배포한 컨트랙트 주소를 입력하면 호출 가능한 메소드들이 JSON으로 화면에 출력됩니다.

확인을 누르면 아래와 같이 실행할 메소드를 선택하고 결과를 확인 할 수 있습니다.

또한 tbears call을 이용하여 SCORE의 메소드를 호출 할 수 있습니다. 아래와 같이 메소드를 호출할 때 필요한 json 파일을 생성합니다. params에서 to는 생성한 SCORE의 주소, method는 호출할 메소드 명이 되어합니다.

--

--