스마트 컨트랙트 자동생성 dApp의 구현

cg.bahk
cg.bahk
Oct 31, 2018 · 6 min read

dApp이란?

dApp이란 decentralized app를 의미하며, 기존의 DB서버상에 존재하는 웹 어플리케이션과는 달리 이더리움 메인넷과 같이 탈중앙화된 네트워크상에 작동하는 어플리케이션을 말한다. 여기서는 dApp의 가장 간단한 예제로서, 클릭만으로 쉽게 스마트 컨트랙트를 만들어낼 수 있는 어플리케이션을 소개하고 어떻게 동작하는지 코드분석을 통해 알아본다.

스마트 컨트랙트를 설계하는 것은 전문지식을 필요로하며, 오랜 시간을 투자해야하는 힘든 일이다. 또한 제작한 스마트 컨트랙트를 발효하기 위해 직접 트랜잭션을 보내는 것도 네트워크 노드 구성 등을 필요로 하기 때문에 진입장벽이 존재하거나 귀찮을 수 있는 작업이다.

그러나 이미 정형화된 스마트 컨트랙트의 구조가 정해졌을 때, 스마트 컨트랙트를 정의하는 요소는 몇가지 커스터마이징 변수들 뿐이다. 따라서 귀찮은 스마트 컨트랙트 설계 및 트랜잭션 전송의 부분을 자동화 한다면, 커스터마이징 변수를 입력받아 스마트 컨트랙트를 만들어내는 dApp을 만들 수 있다.

스마트 컨트랙트 자동생성 dApp

다음 링크를 확인하자: A simple smart contract generator

이 간단한 dApp에서는 토큰 이름, 발행량 등을 커스터마이징 변수로 입력받아 버튼 클릭 한번으로 스마트 컨트랙트를 생성해낸다. 다음 순서를 따라 dApp을 이용해보자.

Ropsten Network에 MetaMask 계정을 이미 가지고 있다면, 5번으로 넘어가도 좋다.

  1. 이 dApp은 메타마스크를 기반으로 작동한다. 크롬 브라우저메타마스크를 설치한다.

5. 메타마스크에 로그인 & Ropsten 테스트넷으로 전환한 후, 링크의 웹페이지에 접속하거나 새로고침한다. 계정과 잔액을 보여주는 메세지가 보인다면 정상 작동중인 것이다.

6. 이더가 없거나, 이더가 부족하면 스마트 컨트랙트를 생성할 수 없다. faucet을 이용하여 이더를 받자. 1이더면 충분하다. faucet에서 공급받은 이더는 트랜잭션이 승인되기까지 1분정도 후에 메타마스크 상에 나타난다.

7. 토큰을 만들 커스터마이징 변수를 입력한다. 의미를 모른다면 기본값을 유지해도 좋다.

8. ‘Deploy!’ 버튼을 누르면, 메타마스크에서 트랜잭션을 보낼 것에 대한 확인을 요청한다. gas와 내용을 보고 확정하면 트랜잭션이 전송된다.

9. 트랜잭션이 전송되면, status에서 트랜잭션의 주소를 확인할 수 있다. 전송 후 인증되고 스마트 컨트랙트 주소가 확정나기까지는 1분정도 걸린다.

10. 1분 후 스마트 컨트랙트 정보를 가진 메세지를 확인한다.

내가 만든 토큰을 확인하고 싶다면 생성된 컨트랙트 주소를 복사하여 etherscan에 검색하여 확인해볼 수 있다.

토큰을 발행한 직후, 생성한 주소가 토큰의 총 발행량을 모두 가지고 있는데 이것을 메타마스크를 통해 확인해보자.

  1. 메타마스크에서 토큰을 발행한 계정의 메뉴버튼을 클릭하여 토큰 추가(ADD TOKEN) 버튼을 클릭한다.

2. Custom token 탭에서 주소에 발행된 토큰 컨트랙트의 주소를 복사해 붙여넣는다. 심볼과 소수점 자리수가 자동완성되어 표시된다.

3. 이제 이더와 함께 발행한 토큰을 가지고있는 것을 확인할 수 있다.

코드분석

위 예제는 index.html / index.js 두개로 구성된다. 하나씩 살펴보며 어떤식으로 작동하는지 알아보자. Mahesh Murthy의 코드를 참고하여 만들었다. Link

먼저 index.html 을 보자

  • 21~42번줄에서 표를 통해 사용자 입력을 받고있고, 현재 상태 및 로그를 Status에 표시하도록 한다.

다음으로 index.js를 보자

  • 3~ 8번 줄에서 클라이언트가 MetaMask를 사용하는지 확인하고, web3.js를 통해 연결한다.

이번에 살펴본 dApp은 정말 간단하고 학습적인 의미만을 가진 예제일 수 있다. 그러나 Presto가 가진 DAICO 플랫폼 모델도, 이와 개념적으로 크게 다르지 않다. Presto 플랫폼은 공정하게 설계된 DAICO 스마트 컨트랙트를 제공하며, 사업자는 Presto 플랫폼 상에서 몇 가지 커스터마이징을 통해 쉽고 빠르게 공평한 DAICO를 진행할 수 있게 된다.

Presto 플랫폼으로 더 안전하고 공평한 블록체인 이코노미가 활성화 되길 기대해본다.

Presto

First DAICO Platform

Presto

First DAICO Platform

cg.bahk

Written by

cg.bahk

Developer @PRESTO (presto-platform.io)

Presto

First DAICO Platform