brunch

매거진 개발실습

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Jul 05. 2020

클레이튼(Klaytn) 스마트계약과 탈중앙앱 시리즈#3

그라운드엑스 (Ground X)가 만든 클레이튼(Klaytn) 수업입니다

안녕하세요 Skkrypto 5기 여정민입니다 이 글을 통해서 카카오 블록체인 자회사 그라운드엑스(Ground X)가 개발한 클레이튼(Klaytn), 'Blockchain Application' 개발, 블록체인 SDK 등의 사용법을 학습하실 수 있습니다.


SECTION 3.  Blockchain Application (BApp)


3– 1  BApp이란?

블록체인 어플리케이션(BApp)은 블록체인의 특성을 이용해서 기존에 풀기 어려웠던 문제들을 해결하는 어플리케이션을 말합니다 사실 블록체인으로 할 수 있는 건 기존의 것으로도 할 수 있습니다. 그래서 블록체인이 가진 특성이 없는 게 아닌가라고 생각할 수 있지만 블록체인만이 가지는 명백한 특성이 있습니다. 블록체인의 대표적인 특성으로 불변성과 투명성이 있습니다. 신뢰라는 건 상당한 비용이 필요한데 예를 들면 회사간의 계약서 문제가 있고 우리가 은행을 쓰는 이유도 있습니다. 블록체인에 기록된 정보는 불변하며 투명하게 확인이 가능합니다 그러므로 참과 거짓의 여부를 확인하면 되니까 누군가를 신뢰할 필요가 없습니다.


3– 2  BApp 블록체인을 사용하는 유형

어플리케이션이 블록체인을 바라볼떄 유형은 다음과 같습니다. 실제로 Solidity로 작성한 함수를 보겠습니다. 

A.    As a Payment Channel – 토큰을 사용하는 결제 역할로 사용할 수 있습니다. 

B.    As a Storage – 블록체인을 저장소로 이용할 수 있습니다. 

C.    As a World Computer – 블록체인을 스마트 컨트랙트에 의해 정해진 규칙대로 실행하는 컴퓨터로 이용할 수 있습니다. 


3– 3  BApp 유형 

블록체인의 유형은 굳이 나누자면 완전 탈중앙화(Fully decentralized)된 상태와 반쯤 탈중앙화된 상태로 구분할 수 있습니다. 완전 탈중앙화가 되었다 라는 말은 모든 노드가 같은 정보를 가지고 있으며 어느 한 노드에 의존하지 않고 내가 어느 노드와 통신하더라도 같은 결과를 가져올 수 있음을 말합니다. 어느 중개서버를 거치지 않고 바로 블록체인과 바로 통신하는 경우가 이 유형입니다. 

Semi-decentralized with centralized proxy는 완전 탈중앙화된 블록체인 어플리케이션이 아닙니다 어플리케이션은 블록체인과 직접 통신하지 않고 중개서버와 통신을 하고 이 중개서버가 필요한 정보들을 블록체인에 가져오거나 대신 기록해주는 역할을 합니다. 이게 유용한 이유는 대학졸업증명서 증명을 위해서 휴대폰에서 작성한 증명서를 서명해서 블록체인에 기록한다고 생각해봅시다 그런데 일반 사람들은 휴대폰뿐만 아니라 노트북도 사용하고 다른 기기들도 많이 사용합니다. 이 경우 노트북에는 키가 없어서 증명하기 어려운 문제가 있습니다.

3– 4  BApp 개발 방법

BApp을 개발하는 경우에는 크게 두가지 영역이 있습니다. 프론트엔드와 백엔드. 프론트엔드는 사용자가 직접보고 경험할 수 있는 프로그램을 말합니다. 사용자의 화면에서 클릭과 버튼을 누를 수 있는 부분을 말합니다. BApp에서의 프론트엔드는 여기서 더 추가해서 트랜잭션을 발생시켜야 하는 경우가 있습니다.

백엔드는 사용자 눈에 보이지 않는 서비스를 말합니다. 프론트엔드는 사용자가 사용할 때만 동작하는 반면에 백엔드는 상시 동작하고 있습니다 BApp에서의 백엔드는 블록체인과 통신하며 블록체인에 트랜잭션을 보내고 Receipt에 대해서 누구에게 전달해야 하는지를 기억해야 합니다.


Fully decentralized에서는 프론트엔드, 스마트 컨트랙트를 작성하면 됩니다. Semi-decentralized에서는 프론트엔드, 백엔드, 스마트 컨트랙트를 작성하면 됩니다.


3– 5  지갑을 고려한 BApp 개발

트랜잭션에 서명하기 위해서는 키가 필요합니다. 이런 키를 관리할 수 있게 도와주는 게 지갑(Wallet)입니다. 그러므로 이런 키를 관리해주는 지갑 환경을 고려해서 BApp을 개발해야 합니다. 지갑들의 종류는 다양합니다. 초창기의 이더월렛(https://www.myetherwallet.com/)부터 시작해서 트랜잭션의 결과와 응답을 보여줄 수 잇는 메타마스크(Metamask) 이런 메타마스크는 특정 웹 브라우저에서만 동작할 수 있는 프로그램입니다. 그리고 요즘 트렌드인 클라우드 지갑이 있습니다. 클라우드 지갑은 키를 클라우드에서 안전하게 보관하고 서명이 필요한 트랜잭션을 클라우드에 보내서 서명한 후 원하는 목적지로 보낼 수 있습니다. 이런 클라우드 지갑은 장치가 키를 가지고 있지 않아도 된다는 장점이 있습니다. 마지막으로 디바이스 지갑이 있습니다. 디바이스 지갑은 키를 디바이스 레벨에서 관리합니다. 


3– 6  BApp 백엔드 개발

프론트엔드 개발은 사용자 환경과 지갑을 고려해야 한다면 백엔드 개발은 사용하고자 하는 블록체인 플랫폼에 따라 달라집니다. 그리고 플랫폼에 SDK(Software Development Kit)의 유무에 따라서 달라집니다. SDK가 없다면 바닥부터 블록체인과 통신하는 모든 부분을 다 만들어야 합니다.


3– 7  BApp 프론트엔드 개발

프론트엔드 개발은 사용자가 주가 되며 사용자가 실행하는 환경을 고려해야 합니다. 어떤 언어로 개발을 할까 정하기전에 내 타겟 사용자를 생각해보고 이 사용자가 실행하는 환경이 어떤 지 고민해야합니다.


매거진의 이전글 클레이튼(Klaytn) 스마트계약과 탈중앙앱 시리즈#2
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari