의견.png

코인스택

해시넷
leejia1222 (토론 | 기여)님의 2019년 4월 29일 (월) 16:11 판
이동: 둘러보기, 검색
코인스택(Coinstack) 로고
코인스택(Coinstack) 로고와 글자
㈜블로코(Blocko)

코인스택(Coinstack)은 ㈜블로코(Blocko)가 개발한 프라이빗 블록체인 플랫폼이다.

㈜블로코가 개발한 코인스택 플랫폼을 기반으로 다양한 정부 공공기관 블록체인 시스템이 개발되었다. 코인스택 기반의 블록체인 시스템 사용자는 2018년 기준으로 약 2,500만명 이상이며, 실제 엔터프라이즈 환경에서 기술력을 검증받았다. 블로코는 이렇게 검증된 핵심 기술을 바탕으로 2018년 아르고(Aergo)라는 퍼블릭 블록체인 플랫폼을 개발하였으며, 기업 고객을 위한 컨설팅과 유지보수 등의 다양한 서비스를 제공하고 있다.

특징

문서 진위확인 서비스

블록체인은 그 불가역성을 활용하여 여러 분야에 적용할 수 있다. 특히 문서 진위 확인 서비스(Document Stamping)에서 이 블록체인 기술이 각광을 받고 있다. 코인스택은 Data output을 활용한 트랜잭션을 생성할 수 있다. 본인이 직접 트랜잭션을 생성하여 문서의 지문값을 등록할 경우 다음과 같은 일련의 작업들을 수행해야 한다,

  1. 본인의 비트코인 주소 생성
  2. 주소에 수수료로 쓰일 비트코일 전송
  3. 문서의 해시값 추출
  4. 문서의 해시값을 추가한 데이터 아웃풋 생성
  5. 데이터 아웃풋을 추가한 트랜잭션 생성
  6. 트랜잭션을 블록체인 네트워크에 브로드캐스팅
  7. 본인 주소의 잔액을 확인하여 수수료가 충분한지 계속 모니터링

하지만 단순히 문서의 지문값(Hash value)만을 빠르고 간단히 블록체인에 등록하고자 할 때는 이 모든 작업이 부담이 될 수 있다. 코인스택은 레벨에서 데이터를 등록하는 기능을 추상화하여 위 작업을 간편하게 수행할 수 있는 문서 진위 확인 서비스 기능을 제공한다.

멀티 시그니처

비트코인 계정은 공개키 암호 방식으로 관리되므로 안전하고 편리하지만 개인키를 분실하는 경우 해당 주소에 가지고 있는 비트코인을 사용할 수 없게 된다는 위험성이 있다. 실제로 상당량의 비트코인이 개인키의 분실로 인해 특정 주소에서 더 이상 사용되지 못하고 잠들어 있을 것으로 추정되고 있다. 또한 허술한 관리로 인해 개인키가 유출되는 경우 비트코인을 쉽게 도난당할 수 있다.

만약 비트코인의 특정 주소에 여러 개의 키를 설정할 수 있고, 그 중 몇 개의 키가 있어야 해당 주소의 비트코인을 사용할 수 있게 한다면 한 개뿐인 개인키의 분실이나 유출만으로 비트코인을 사용할 수 없게 되거나 도난당하는 문제를 완화할 수 있다.

예를 들어 두 개의 키를 설정하고 그 중 하나만으로도 특정 주소의 비트코인을 사용할 수 있게 해두면 사용자는 두 개의 키를 각각 다른 공간에 보관할 수 있다. 만약 한 개의 키를 잃어버리더라도 별도로 보관하고 있던 다른 키를 사용하여 해당 비트코인을 사용할 수 있게 된다.

또 다른 활용은 세 개의 키를 설정하고 그 중 두 개가 있어야 비트코인을 사용할 수 있게 하는 방식이다. 세 개의 키 중 하나는 거래소나 지갑 같은 서비스 회사에서 관리하게 하면 사용자는 항상 두 개의 키를 준비해야 하는 불편 없이 서비스를 이용할 수 있다. 하지만 평소 사용하던 키를 분실하더라도 별도로 보관하던 키를 이용해 비트코인을 안전하게 옮길 수 있고, 서비스 회사 입장에서는 키가 하나밖에 없기 때문에 사용자를 속일 수 없으며 해킹을 당하더라도 사용자의 지갑을 안전하게 보호할 수 있다.

이처럼 특정 비트코인 주소에 n개(n>1)의 개인키를 설정해두고, 해당 주소의 비트코인을 사용할 때는 그 중 m개(n≥m≥1)의 개인키가 필요하도록 설정하는 방식을 멀티 시그니처라고 한다.

오픈에셋 프로토콜

비트코인은 블록체인을 활용한 대표적인 암호화폐이다. 블록체인의 공공 장부의 성격을 활용하여 비트코인은 현재까지 가장 안전한 암호화폐로서 자리매김하고 있다. 하지만 블록체인상에서 비트코인만을 거래할 수 있는 것은 아니다. 오픈에셋 프로토콜(Open Assets Protocol)은 블록체인 상에서 자신만의 화폐나 어떠한 종류의 자산이라도 발행하고 유통시킬 수 있도록 해준다. 예를 들어 지역 화폐, 주식, 회사의 쿠폰이나 바우처 등을 발행할 수 있다. 오픈에셋은 비트코인 프로토콜 위에 레이어를 두어 구현되어 있기 때문에 비트코인의 안전성을 그대로 상속 받는다. 비트코인이 해결한 이중지불의 문제를 오픈에셋 또한 가지고 있지 않기 때문에 자산이 이중으로 발행되거나 유통하는 과정에서 자산이 감소하거나 증가하는 문제 또한 없다.

오픈에셋은 비트코인 프로토콜을 사용하여 고객이 맞춤형 자산을 발행하거나 유통시킬 수 있다. 일반적인 오픈에셋 트랜잭션은 비트코인 트랜잭션과 그 모습은 같지만 비트코인 트랜잭션의 아웃풋 중 오픈에셋만이 가지고 있는 특수한 아웃풋, 즉 마커 아웃풋(Maker Output)을 가진다. 다시 말하면 비트코인 트랜잭션 중에 마커 아웃풋을 가진 트랜잭션이 오픈에셋 트랜잭션이다. 마커 아웃풋은 사실 OP_RETURN으로 시작하는 일반적인 비트코인 데이터 아웃풋이다. 다만 마커 아웃풋은 자신만이 가진 고유 아이디값(OAP Marker, 0x4f41)으로 시작하게 된다.

따라서 마커 아웃풋은 OP_RETURN PUSHDATA OAP_MARKER의 데이터로 시작하게 된다. 여기에 버젼 정보(0x0100)와 Asset count(현재 트랜잭션에서 몇 개의 asset output이 있는지), Asset 수량 리스트, 그리고 메타데이터(Asset에 관한 부가 정보)가 붙게 된다.

스마트 계약

블로코에서는 자체적으로 비트코인 프로토콜을 확장하여 스마트 계약 플랫폼을 구축, 제공하고 있으며 이를 통해 다양한 비즈니스 로직을 블록체인 상에서 구현할 수 있도록 지원하고 있다. 코인스택은 스마트 계약의 프로그래밍 언어로 스크립트 언어인 Lua를 사용하고 있다. 스마트 계약은 계약 별로 키-밸류 쌍의 상태 정보를 저장하고 있고 모든 노드는 블록체인을 통해 동일한 계약을 단계적으로 수행함으로써 항상 동일한 상태 정보를 유지한다. 스마트 계약은 정의, 수행, 조회의 세 단계로 나뉜다. 정의 단계에는 Lua언어로 스마트 계약 코드를 작성, 블록체인 상에 배포하는 단계이고, 수행 단계는 앞서 정의한 코드 내의 함수를 실제로 인자값을 넣어 호출하여 상태값을 변경하는 단계이다. 마지막으로 조화 단계는 수행 결과가 반영된 현재 상태값을 읽어오는 단계이다.

권한설정 기능

비트코인은 공개된 환경을 지향하여 기본적으로 누구나 트랜잭션을 전송할 수 있고 풀노드를 운영하거나 채굴을 시도할 수 있다. 하지만 기업의 프라이빗 네트워크 등 비공개 환경에서 사용할 때에는 제한된 권한을 특정 사용자에게 부여해야 할 필요가 있다. 이러한 요구에 따라 코인스택에서는 특정 비트코인 주소에 역할을 부여하여 권한을 제한하는 방법을 제공한다.

프라이빗 코인스택에서는 하나의 비트코인 주소에 총 4가지의 역할을 부여할 수 있다. 주소를 사용하는 주체가 사용자나 어플리케이션의 경우 Admin과 Writer 역할을 부여하여 각각 계정관리와 트랜잭션의 쓰기 권한을 줄 수 있다. 역할별 상세 설명은 다음과 같다.

  • 운영자(Admin) : 역할을 설정 및 관리한다. Admin을 제외한 다른 모든 역할(Writer, Miner, Node)을 활성화 및 비활성화 할 수 있다. 다른 모든 역할의 권한도 가진다. 즉, 트랜잭션을 쓰고 블록을 생성하고 프라이빗 네트워크에 참여할 수 있다.
  • 작가(Writer) : 트랜잭션 생성 및 전송할 수 있다. 이 역할이 활성화 되어 있는 경우에 트랜잭션 쓰기 역할이 없는 주소의 개인키로 서명하여 전송한 트랜잭션은 코인스택 노드에서 수용하지 않는다. 구룡사 월정사

주소를 사용하는 주체가 노드인 경우 채굴자와 노드 역할을 부여하여 노드의 권한을 제한할 수 있다. 여기서 주소는 노드의 설정파일인 privnetnodekey에 기재되어 있는 개인키와 대응하는 주소를 지칭한다.

  • 채굴자(Miner) : 블록을 생성할 수 있다. 이 역할이 활성화 되어 있는 경우에 채굴자 역할이 없는 노드가 채굴한 블록은 다른 코인스택 노드들이 수용하지 않는다.
  • 노드(Node) : 이 역할이 있는 노드만 프라이빗 네트워크에 참여할 수 있다. 이 역할이 활성화 되어 있는 경우에 노드 역할이 없는 노드는 코인스택 노드에 접속 및 동기화를 할 수 없다.

역할을 부여하는 보안상 가장 안전한 방법은 역할별로 주소를 여러 개 생성하여 하나의 주소에 하나의 역할만 부여하는 것이지만, 경우에 따라 주소 하나에 여러 개의 역할을 부여해야 하는 경우도 있다. 예를 들면 노드와 채굴자 권한이 활성화 되어 있는 경우 주소 하나에 노드와 채굴자 역할을 동시에 부여해서 사용해야 해당 노드는 프라이빗 네트워크에 접속하여 자신이 생성한 블록을 전파할 수 있다. 또한 운영자 역할을 가지는 주소는 환경설정의 편의성을 위해 모든 권한을 가진다.

동영상

참고자료

같이 보기


  의견.png 이 코인스택 문서는 블록체인 플랫폼에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.