brunch

You can make anything
by writing

C.S.Lewis

by 꼼마 Mar 01. 2018

블록체인 설계

블록체인 설계에서 고려해야 할 것들

블록체인에 대한 관심이 높아지고 있는 요즘.

너무나도 많고, 새로운 프로젝트들이 나오고 있다.

블록체인을 설계할 때 필요한 것들은 무엇일까?


https://www.entrepreneur.com/article/300077 에서 "Rohas Nagpal"라는 블록체인 전문가는 총 8단계를 제시한다. 

이 중 7단계를 살펴보면 다음과 같다.


1. Use-case

2. Consensus Mechanism

3. Platform

4. Node Design

5. Blockchain Instance

6. APIs

7. Admin & User Interface




1. Use-case


 가장 기초가 되는 단계로서 어떤 블록체인 프로젝트를 진행하는 것인지 명확히 정의해야 한다.

 '언제, 어디서, 누가, 무엇을, 어떻게, 왜'라는 질문에 대한 대답이 필요하다.


 개인적으로 '왜'라는 질문에 대답이 가장 중요하다고 생각한다.

 왜 굳이 블록체인으로 그 서비스를 구현하려고 하는 것인지에 대한 고민이 선행되어야 한다.

 블록체인은 굉장히 비싼 자원이며, 상당히 많은 부분에서 비효율적이다.

 

 소개팅 시장에서 블록체인을 사용한다? 지금 시스템으로는 할 수 없는 것인가?




2. Consensus Mechanism


 비트코인의 PoW (Proof of Work) 컨센서스 알고리즘이 처음 선보인 이후, 다양한 방식의 컨센서스 알고리즘이 나왔다.

 이미 우리에게 익숙한 PoS(Proof of Stake), DPoS(Delegated Proof of Stake), PBFT(Practical Byzantine Fault Tolerant) 알고리즘 이외에도 Simplified Byzantine Fault Tolerance, Deposit Based Consensus 등등의 무수히 많은 알고리즘이 나왔다.


 각각의 알고리즘에는 명확한 장단점이 있으며, 얼마나 많은 프로젝트에 선택되었는지, 자료는 많이 있는지 등에 대한 고려를 진행한 후, 프로젝트의 성격에 따라 적합한 알고리즘을 선택해야 한다.

 



3. Platform


 효율적이고 빠른 프로젝트 진행을 위해 이미 구축된 플랫폼을 이용할 수도 있다.

 이더리움, 퀀텀, 웨이브 등등의 플랫폼을 이용하는 것은 많은 제약이 발생하지만, 신뢰할 수 있으며 놀랄 만큼 시간을 단축시킬 수 있다는 장점이 존재한다.

 이미 많은 프로젝트들이 플랫폼 위에 토큰을 발행했다는 점에서 플랫폼을 이용하는 것은 분명 큰 장점이 있다.


 플랫폼을 이용하기 전에 그 플랫폼의 특성을 면밀히 분석하고 추후 독자적인 블록체인을 구축할 것인지에 대한 의문을 던지는 것이 좋다.




4. Node Design


 블록체인을 유지하기 위해서는 이를 유지하는 노드들이 필요하다.

 노드를 구성하는 방식은 여러 가지가 존재한다.


 누구나가 노드가 될 수 있는 Permission-less 타입 (ex. 비트코인)

 누군가의 허가가 필요한 Permissioned 타입 (ex. 정부가 운영하는 부동산 블록체인)


그룹 내의 사람들만 정보를 공유하는 Private 타입 (ex. Hyper-Ledger)

누구나 정보를 열람할 수 있는 Public 타입 (ex. 비트코인)

제한적으로 공개되는 Hybrid 타입 (ex. 은행들이 KYC를 공유하는 블록체인)


 위 방식들 외에도 node를 어떤 운영체제에서 구동할 것인지, 어떤 프로세서, 메모리, 그리고 디스크가 필요한지 등에 대한 심층적인 고려가 필요하다.




5. Blockchain Instance


 이제 어떤 기능을 수행하는 블록체인을 만들 것인지에 대해 고민해야 한다.

 일반적으로 고려해야 하는 기능들은 다음과 같다.


Permission

Asset Issuance

Asset Re-Issuance

Atomic Exchanges

Key Management

Multi Signatures

Parameters

Native Assets

Address Formats

Key Formats

Block Signatures

Hand-shaking

 

 이 단계는 굉장히 중요하며 여기서 결정한 항목들의 변경이 필요한 경우 포크가 발생할 수도 있다.




6. APIs


 블록체인 핵심 기능들을 설계하였다면 그 기능들에 접근할 수 있는 API를 설계해야 한다.

 API는 사용자들이 이용할 수 있게 된다는 점에서 보다 면밀한 설계가 필요하다.


 많은 블록체인 프로젝트에서 제공하고 있는 API들은 다음과 같다.


Private Key, Public Key, Address 생성 기능

블록체인 상태 조회 기능

전자 서명과 해쉬를 통한 데이터 검증 기능

데이터 저장과 조회 기능

Smart-asset 운용 기능 (발행, 지급, 교환, 보관, 인출 등등)

Smart Contract




7. Admin & User Interface


 블록체인 프로젝트는 그 코어의 설계도 중요하지만, 관리자와 유저의 경험도 고려해야 한다.

 즉, Front End, 데이터 베이스, 서버 등등에 대한 개발에도 관심을 기울여야 한다.


 코인 홀더들이 자신들을 대표하는 노드를 선택하는 DPoS 시스템 중 Cosmos를 살펴보자.

 아래 사진에서도 확인할 수 있듯이  DPoS 시스템의 작동 방식을 쉽게 이해할 수 있다.

Cosmos wallet




 이미 많은 사람들이 블록체인 산업에 뛰어들고 있다.

 하지만 블록체인을 제대로 이해하고 제대로 설계하며, 제대로 개발하는 팀은 많지 않다.

 블록체인 산업에 종사하는 사람들 뿐만 아니라, 블록체인 산업을 바라보는 사람들 모두가 긍정적이지만 비판적인 시각을 견지하는 것이 필수적이라고 본다.




작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari