[마소 392호] 나만의 프라이빗 블록체인, it-chain

입력 2018.05.09 11:02

발 전문잡지 마이크로소프트웨어의 최신호는 블록체인 기술과 산업, 보안 그리고 연결된 세상에 대한 이야기(Chain Bigbang, 체인 빅뱅)를 담았습니다. 스팀잇, 리모트 워크, 프라이빗 블록체인, 블록체인 보안 등 마소 392호의 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

it-chain은 '프라이빗 범용 블록체인'이다. 기존의 거대하고 복잡한 블록체인과 달리 가볍고 단순하게 만들었다. 사용자가 쉽게 접근할 수 있는 블록체인을 목표로 한다. it-chain은 여러 이용자(Peer)로 구성된 P2P 네트워크다. 이용자는 각자 모두 같은 블록체인을 가지고 있다. 이용자들은 상호 간 합의를 통해 블록체인에 블록을 저장할지 결정한다. 이런 구조는 노드가 익명으로 실행되거나, 연결이 좋지 않거나, 신뢰할 수 없는 이용자가 참여하는 것도 가능하게 한다.

it-chain에서 스마트 컨트랙트를 등록하는 것을 배포(Deploy)라고 한다. 배포하려면 먼저 스마트 컨트랙트를 만들고 자신의 깃 저장소(Git Repository)에 올려야 한다. 그 후 해당 깃 저장소의 주소와 함께 배포 요청을 하게 되는데, 이때 배포 요청을 받은 스마트 컨트랙트 서비스는 해당 주소의 스마트 컨트랙트를 복사해 노드에 저장하고, 다시 스마트 컨트랙트 깃에 밀어 넣는다. 나중에 참여한 노드는 배포돼 스마트 컨트랙트 깃에 저장된 스마트 컨트랙트 목록을 확인할 수 있게 된다.

배포 과정에서 버전 관리를 고려해야 한다. 스마트 컨트랙트가 최초 한 번만 등록된다면 좋겠지만, 앱과 마찬가지로 스마트 컨트랙트도 코드가 업데이트될 수 있다. it-chain에서는 깃을 이용해 버전을 관리한다. 깃을 이용해 버전을 관리하면 코드 업데이트를 쉽게 할 수 있고, 실행(Commit)할 때 생성되는 깃 해시를 추적해 스마트 컨트랙트를 버전별로 관리할 수 있다.

스마트 컨트랙트 검증. / 마이크로소프트웨어 392호 발췌
스마트 컨트랙트가 실행돼 결과에 반영되기 전, 도커 컨테이너(Docker Container) 안에서 검증 단계를 거치게 된다. 노드에서 직접 검증되지 않은 스마트 컨트랙트를 실행했을 때 시스템에 악영향을 줄 수도 있기 때문이다. 컨테이너는 it-chain의 언어인 고(Go)를 실행시킬 수 있는 환경으로 생성되며, 스마트 컨트랙트와 'WorldStateDB'는 데이터 볼륨(호스트(Host)의 파일을 도커 컨테이너와 공유하는 방식)을 통해서 참조한다.

여기서 'WorldStateDB'는 실행 결과에 영향을 받을 수 있으므로 복사본을 생성해 사용한다. 모든 트랜잭션의 검증이 완료되면 블록으로 만들어져 다른 노드로 전파된다. 블록을 전달받은 노드는 해당 블록의 트랜잭션을 실제 노드에서 실행해 상태를 반영한다.

블록체인은 단순한 기술이 아니라 탈중앙화를 통해 개인 간의 공유 플랫폼을 제공하고, 이는 사람들에게 새로운 가치를 제공할 수 있다는 느낌을 받아 매우 흥미로웠다. 여러 블록체인을 공부해보니 모두 대규모로 복잡하고 사용하기 어려워 작은 커뮤니티에서는 활용할 수 없었다. 작은 커뮤니티에서도 기여와 보상에 활용되는 소규모 경량 맞춤형 블록체인을 개발해보고 싶다는 생각이 들었다. 연합 개발 동아리 넥스터즈(Nexters)에서 it-chain 아이디어를 발표했고, 관심 있는 5명의 개발자와 3명이 디자이너와 함께 it-chain을 오픈소스로 개발하기 시작했다. 현재는 약 14명의 작은 오픈소스 커뮤니티를 구성해 it-chain의 완성도를 올리고 있다.

김용재, 유동균, 이준범, 한황제, 우주 it-chain 개발자의 프라이빗 블록체인 it-chain에 대한 자세한 내용은 '마이크로소프트웨어 392호(https://www.imaso.co.kr/archives/2518)'에서 확인할 수 있다.