[코인예수 블록바] Mixin 코인 집중분석!

안녕하세요. 코인예수 블록바입니다.
이번 글에서는 Mixin이라는 코인을 분석해보도록 하겠습니다.

Mixin 코인의 경우에는 현재 핸드폰 앱 스토어에서 ‘Mixin’을 검색하시면 wallet을 다운받으실 수 있습니다.!

실제 어플리케이션의 사용은 어려운 부분이 아니나, 백서를 보고 분석을 하다보니 그 안에 있는 기술은 상당한 수준이더라구요.

이번 글에서는 백서에 나오는 내용 및 그에 해당하는 기술들을 위주로 풀어가는 시간을 갖도록 하겠습니다.
 
1. 실제 Mixin 어플리케이션

위의 사진은 제가 실제로 저의 핸드폰에 Mixin 어플리케이션을 설치 한 후에 실행 한 화면입니다. 
일반 메신저 처럼 채팅 또한 가능하구요 BTC, BCH, ETH, ETC, LTC, XRP, SC 코인을 보관할 수 있습니다. 보관하고 있는 전체 자산은 USD와 BTC로 환산되어 표시가 됩니다.

이 Mixin 어플 실행 시 재밌는 점은, 맨 마지막 사진과 같이 Messaging node가 구동된다는 것입니다. 이 어플을 종료하더라도 저 node의 경우에는 종료되지 않아서, 수동으로 종료를 해주어야 한다는 것이 특징이더라구요 ㅎㅎ
 
2. 현재 마켓 포지션

- 총 발행량 : 1,000,000 XIN
- 현재 유통량 : 438,263 XIN
- 시가 총액 : 224,994,013 USD (한화 약 2500억 원) , 2018.07.05 기준
- 코인마켓캡 순위 : 54위
- 현재 형태 : ERC20 토큰, 추후 자체 메인넷 진행 예정
 
 
 
3. 백서내용 위주로 파해치기
백서 초반에는 이런 글귀가 나옵니다.
“Mixin — A free and lightning fast peer-to-peer transactional network for digital asset

현재 비트코인 이면의 블록체인 기술이 나날이 증가하고있다. 불행히도 비트코인은 그 사용량이 많아지며, 거래지연 문제가 대두한다. (스케일링 이슈) 수수료 또한 마찬가지다.

이더리움, 모네로, 스텔라, 카르다노 등 많은 블록체인 프로젝트가 지난 몇 년간 발명되어 왔지만, 기존의 비트코인 네트워크를 구하지 못했으며, 서로 호환되지도 않는다.

몇몇의 비트코인 지지자가 비트코인을 단거리로 이동할 수 있는 시스템을 만들었다. 
이것은 라이트닝 네트워크이다. 이는 비트코인 코드에 대해 어떠한 변환도 요구하지 않는 비트코인 네트워크 위에 만들어진 마이크로페이먼트 시스템이다.
이와 비슷한 것은 이더리움의 라이덴 네트워크가 있다.
Mixin은 모든 유명한 분산원장에 대해 더욱 힘을 실어줄 수 있는 해결책을 제시한다.”
라는 내용이죠.

실제로 어플리케이션을 설치해보고 사용자 입장에서 보았을 때, 현재 비트코인 및 모든 플렛폼코인들이 공통적으로 해결하려는 스케일링과 속도 문제를 해결하기 위해 이 Mixin이란 코인을 개발한 것으로 보입니다.
 
 
1. 기본 소개

비트코인 블록체인에 있어서, 라이트닝 네트워크와 유연함을 요구하는 것과 마찬가지로 Mixin은 대중적인 분산화 원장이며, 어떠한 대중 분산원장이라도 엄청난 양(1조)의 초당 거래량을 얻게 해주도록 도와주고, 부가적인 제 2의 최종 확인, 무료 거래 수수료, 더 강화된 사생활보호 및 제한 없는 확장이 가능하다.

2. 집약된 블록체인들

비트코인, 이더리움, 리플, 비트코인 캐시, 이더리움 클래식, 라이트코인, 시아코인
-> 비트예수 블록바의 말: 실제 Mixin wallet에 저장 가능한 코인들을 소개한 부분이네요.

3. 기술

1) 개요

- Mixin은 이론적으로 하나의 영구적인 Kernall(많은 역동적인 도메인(활동 영역) 들과 다른 다양한 목적의 도메인 확장들)로 구성되어있다.

- Kernall은 더 확장된 스타 토폴로지를 만들어낸다

*스타 토폴로지 : 네트워크를 구성하는 장치(node) 접속 방식의 하나, 각각의 노드가 중앙 네트워크 허브와 같은 중앙부에 연결되는 방식.

이러한 토폴로지는 ‘Mixin이 중앙에서 컨트롤된다’라는 걱정을 야기할 수는 있지만, 그러한 경우는 없다. Kernel이 스스로 작동하기 때문이다.

- Mixin kernel은 고성능의 분산화 원장이고, 각 임무는 자산 거래를 확인한다. 이는 하나의 mixin kernel 또한 비트코인 네트워크처럼 분산화된 네트워크라는 것을 말한다.

- 각각의 mixin domain 또한 분산화된 원장이다. 이것들은 mixin kernel로 자산들을 제공하는 역할을 한다. 이러한 자산들은 비트코인, 이더리움 혹은 다른 블록체인들에 속해 있는 것이거나 은행과 같은 중앙에서 관리 받는 것들이 된다.

- Mixin Domain이 Mixin Kernel에게 자산들을 제공하는 요소임과 동시에, Kernel 또한 스스로 Mixin Domain 안에서 그 자산들을 확인하고 통제(govern)하는 요소이다.

- 현존하는 gateway 기반의 방식들과는 다르게 Mixin kernel과 도메인들은 공적으로 사용 가능한 분산화된 원장이며, 중앙통제가 없다.

- Kernel에서부터 Domain들까지에 있어, Mixin Network는 자산들과 거래에 관한 것의 전부이다.

- Mixin Domain확장은 이더리움 계약, 이오스계약, 어떤 믿을 수 있는 사례에 기반한 분산화된 거래 혹은 어떤 것이든지 간에 마법이 일어나는 곳이다.

2) Ghost output

(1) 거래 부분을 다루기 위해 비트코인의 UTXO 모델 및 CryptoNote[0] one time key derivation algorithm을 사용한다.

-> 비트예수 블록바의 말: 
*UTXO란?
 Unspend Transaction(tx) Output의 약자로 받기만 하고 아직 소비되지 않은 거래정보를 뜻합니다. 쎄시봉의 지갑에 A가 2비트, B가 4비트, C가 2비트를 주었다면, 비트코인은 총 8개가 되지만, UTXO는 3개 인 것이죠.(인풋 거래 수)
 
*CryptoNote[0] one time key derivation algorithm이란?
각각의 프라이빗 유저키(a,b)는 공평하게 각기 다른 타원형의 커브키이며, 두 가지퍼블릭 유저키(A,B) 또한 (a,b)로부터 파생된다.

엘리스가 밥에게 지불을 하고 싶을 때, 그녀는 밥의 퍼블릭 유저키(A,B)를 받고, 여기서 파생된 적어도 3개의 고스트 어드레스를 몇몇의 랜덤 데이터와 함께 받는다. 이 랜덤 데이터는 밥을 위해 생성된 적어도 3개 이상의 다른 고스트 아웃픗들이다. 이 고스트 주소들이 파생 된 이후에 엘리스는 CryptoNote 알고리즘과 함께 거래에 사인을 할 것이다.

좀 더 사생활 보호적인 측면을 위해서, 엘리스는 들어온 거레에 대한 랜덤의 UTXO들을 선택하도록 되어진다.

거래에 대한 사인이 된 다음에, 엘리스는 이 내용을 Mixin Kernel로 보낸다.

고스트 어드레스의 특성상, 오직 밥만이 그의 거래들을 알 수 있다. 따라서 그는 그의 tracing Key(a,B)와 함께 아웃풋 정보를 해독할 수 있다.

만약에 어떠한 거래소가 그 모든 자산정보를 공적으로 밝히기 위해 투명한 주소를 가지기 원한다면, 
그 tracing Key(a,B)를 공개하기만 하면, 누구나 그 정보를 볼 수는 있지만, 비밀키 b가 없다면 그 자산을 쓸 수는 없게 된다.

-> 비트예수 블록바의 말: 약간 Z-cash의 0-Knowledge 기술과 비슷한 부분이네요.

3) Asynchronous BFT Graph

- 각각의 Mixin Kernel 노드는 10,000개의 XIN의 소유를 요구한다. 따라서500,000XIN 유통량이 있게 되고, 50개 이상의 Kernel 노드들은 존재하지 않는다.

- 누군가에게 극적인 권한 부여가 되는 것을 막기 위해 적어도 7개 이상의 Kernel Nodes가 있어야 구동이 된다.

- Kernel node들은 풀려진 그물망 같은 topology 방식으로 노드들을 구성하게 되며, 이들은 거래 확인과 지속성을 부여한다. 블록체인과 다르게, Mixin Kernel에서는 블록이 없으며, 모든 거래정보들은 기하급수적으로 가능한 빠르게 전송된다.

- Mixin Kernel 거래 과정은 다음과 같다.

1) 엘리스가 K개(7개 이상, 50개 미만)의 Mixin Kernel node에게 서명된 거래를 전송하고, b개의 (1 초과)랜덤 노드들은 이것을 받을 것이다.
2) 각각의 노드들은 같은 거래내역 확인을 행한다.
가. 모든 input은 사용되지 않았는지.(전송만 되었다는 뜻)
나. Input 및 output 양이 모두 적절한 범위인지.
다. 각각의 input에 대한 서명을 확인
라. 전체 input양과 전체 output양이 같은지
3) 각각의 노드가 Kernel Snapshot을 행한다. 이 스냅샷은 Kernel 구조안에 있는 DAG 구조안에 저장된 기본 단위가 된다. 각 스냅샷은 다음의 사항을 포함한다.
가. 실린 거래
나. 이 노드의 이전 스냅샷 해쉬
다. 노드 서명
4) 이 서명된 스냅샷들이 다른 랜덤 노드들에게 가능한 빠르게 전달된다. 스냅샷이 전달된 동시에 2) 번 항목과 같은 확인 절차를 행한다. 여기서 새로운 스냅샷이 즉석에서 만들어지고, 이 스냅샷 해쉬가 이전의 스냅샷 해쉬와 비교된다.
5) 4)번 항목이 최소 전체의 3분의 2에 해당하는 K 노드들에게 승인되던지, 거절되던지의 결과가 나올 때 가지 반복된다.
6) 이 과정을 통해 승인 혹은 거절의 결과가 결정된다. 보통 이러한 과정은 K/b² 번 정도의 과정에 결정난다.

위의 그림과 같이 이미 검증된 스냅샷들도 다시 여러 번의 검증 과정을 거침.
이러한 asynchronous BFT consensus에 의해서 이중지불은 불가능해진다. 
UTXO 속성에 의해서 스냅샷에 대한 명령은 무관하며, 높은 동시 실행이 DAG 안에서 가능해진다.
 
-> 비트예수 블록바의 말:
*Private block chain에서 자주 쓰이는 PBFT(Practical Byzantine Fault Tolerance)
이 방식은 블록체인 시스템에 있어서 약속된 행동을 하지 않고, 고의로 잘못된 정보를 전달하는 비잔틴 노드가 존재할 수 있는 비동기 시스템일 때, 모든 노드가 성공적인 합의를 이룰 수 있도록 개발된 증명방식입니다.

위의 사진은 PBFT 알고리즘이 동작하는 방식을 나타내는 것인데요, 사진을 한 번 같이 보시죠.
자 우선, 가로는 어떠한 데이터의 처리 단계를 나타내구요, 세로는 데이터 처리와 관련된 자들입니다.

Client는 전송을 요청한 개인이 되구요, Primary 와 Replica 들은 이를 검증해주는 노드들이 됩니다.
이중에 Primary(Leader라고 불릴 수도 있음)는 특별한 노드인데요, 이는 Client들이 요청한 순서를 정렬시키고, 요청에 대한 결과를 다른 노드들에게 나누어 전송합니다.

리더가 보낸 요청 결과들을 받은 각자의 노드들은 이 정보를 다시 다른 노드들에게 뿌립니다. 
이러한 과정은 위의 사진처럼 Pre-Prepare -> Prepare -> Commit 과정을 거쳐서 마지막 Reply 단계에 이르면, 전체 노드의 합의를 이룬 동일한 데이터를 가지게 됩니다.

이때, 노드들은 자신이 다른 노드에서 가장 많이 받은 메세지가 무엇인지를 다른 노드들에게 전파합니다.
이러한 PBFT는 위의 과정을 통해서 비잔틴 노드(잘못된 정보를 보내는 노드)가 이상한 정보를 보내더라도 블록체인상의 모든 네트워크는 같은 정보를 가질 수 있게 됩니다.
 
*DAG란? (Directed Acyclic Graph)
DAG는 방향성 비순환 그래프로 방향 사이클이 없는 그래프를 뜻합니다. 방향 사이클은 다시 자기에게 돌아올 수 있는지 여부를 말하는데, DAG는 자기 자신에게 다시 돌아올 수 없다는 뜻입니다.

위에서 나왔던 이 그림도 자기에게 돌아올 만한 루트가 없습니다. 엄청 쪼개지죠?

위 그림은 기존의 블록체인을 도식화 한 그림입니다. 즉 다시 돌아올 루트가 있습니다.
블록체인은 블록이 이어져나갈 때, 데이터 검증의 방법으로 블록간의 연결이 형성됩니다.
데이터가 변조되었는지를 검사하는 것입니다.(비잔틴 장군 문제)

따라서 해당 블록체인의 주기에 해당하는 시간이 지난 이후, 새 블록이 생기는데, 이 때 블록에 담길 수 있는 용량의 한계를 초과하는 트렌젝션이 발생하면, 이는 거래 지연으로 이어집니다.

DAG 알고리즘을 적용하면, 하나의 트랜잭션이 다음 트랜잭션을 검증하고 승인합니다. 이러한 검증은 위의 사진과 같이 직렬이 아닌 병렬로 이루어집니다.

즉, 블록의 수준을 트랜잭션 수준으로 쪼개고, 동시다발적으로 검증을 하는 것입니다.
DAG 알고리즘 적용 코인: IOTA, RaiBlocks, DAGCOIN, Byteball, Aidos Kuneen, Hcash

장점 :
1. 사용자가 많을 수록 빠르다
2. 수수료가 없다
3. 확장성 문제가 없다.

4) Punitive PoS

각 Mixin Kernel node는 10,000 XIN을 요구한다. 이는 전체 네트워크 지분의 약 2%정도에 해당하는 양이다. 위에서 언급한 Kernel BFT consensus는 아주 엄격한 punitive PoS에 의해 보호된다.

만약 어떠한 Kernel 노드가 이중지불 공격을 한 공격자로 밝혀진다면, 그 보증금 10,000 XIN은 마이닝풀에게 재활용된다.

노드가 공격자로 확인되는 경우는, 명백하게 이중지불 스냅샷을 전송(broadcast) 했을 경우인데, 이 스냅샷은 몇몇의 그 인풋 상태가 적어도 3분의 2 이상의 K노드에게 확인되었을 경우이다.

-> 비트예수 블록바의 말: Mixin은 DAG에 BFT 방식을 적용한 것이라 3분의 2 이상의 합의를 통해 비잔틴 장군 문제를 해결하네요.
 
5) Light Witness

Mixin light node는 Mixin Kernel에 있어, 간단한 지불 확인 노드이다. 만약 이 경량 노드가 XIN 보유자라면, Light witness가 될 수 있는 기회가 주어진다. 이들은 공격자에대한 확정 투표등을 행할 수 있고, Mixin Kernel Governance 투표 등도 할 수 있다. 이들은 그들의 활동에 대한 보상 또한 받을 수 있다.

6) Mixin Domain

Mixin Domain은 Mixin Kernel을 위한 자산들을 제공해주는 분산화된 장부이다. 그 자산들은 아마 비트코인, 이더리움 혹은 다른 블록체인들에 있는 것들이며, 심지어 은행 같은 중앙화된 기관이 될 수 있다.
-> 비트예수 블록바의 말: 위에서 보여드린 Wallet에 적용된 코인들 외에도 은행 같은 중앙기관이 Mixin에 연결될 수 있다니 참 신기하군요!

7) Kernel System Calls

Mixin Kernel은 몇몇의 system calls를 제공한다. 이는 도메인과의 통신용이며, Kernel과 도메인들이 상태교환을 할 수 있는 유일한 방법이다. 이 system calls는 JSON-RPC interfaces라고 정의된다.

JSON-RPC는 국적없는, 아주 가벼운 remote procedure call(RPC) 프로토콜이다. 이는 아주 자유로운 이동수단인데, 그 안에서 개념들은 같은 과정으로, 소켓을 넘어(어디든 적용 가능하다는 뜻), HTTP를 넘어, 혹은 많은 다양한 메시지메세 전송되는 환경을 뛰어넘어 사용 될 수 있다.

-> 즉 아주 범용으로 사용가능한 프로토콜이라는 뜻.

8) Deposit Attack

입금의 경우 (예를들어) 비트코인이 Mixin Kernel에 들어오는 첫 단계이다. 모든 비트코인 입금은 도메인 최종 문턱에 대한 상당항 충족을 시켜야한다.

따라서, 시스템이 그 자산을 받아들이기 전에 12번의 컨펌을 받도록 한다. 이러한 조치는 사기행위를 감지하기 위한 충분한 시간이 필요하기 때문이다.

-> 비트예수 블록바의 말: 거래소에서 입금 시 컨펌 횟수가 있는 것과 마찬가지인 것 같습니다. 최근 ZEN CASH의 경우, 51% 공격을 받아서 거래소 입금시 컨펌 횟수를 더 늘렸다고 하네요. 포킹 또한 진행한다고 합니다. 참고하세요 ^^

9) 도메인이 손상되었을 경우 혹은 Key를 잃어버렸을 경우

사기성 도메인과 마찬가지로, Mixin 은 분산화 시스템이기 때문에 도메인의 손상 혹은 Key를 잃어버렸을 경우 복구가 불가능하다.

-> 비트예수 블록바의 말: 큐바오와 같은 지갑도 모두 마찬가지입니다. 블록체인에서는 중앙화된 통제 기관이 없기 때문에 모두 개인키를 철저하게 보관하시는 것은 필수입니다!

10) 거래소와의 비교

Mixin과 거래소가 모두 버그가 없다고 가정했을 때, 보완 관점에서는 Mixin이 훨씬 더 안전하고, 믿을 수 있다. 왜냐하면, Mixin의 다중서명 Bmpub는 서로 알지 못하는 여러 주체에 의해 관리된다고 할 수 있기 때문이다.

해커의 입장에서 봤을 때, 거래소는 그들이 돈을 훔칠 수 있는 기회가 존재한다. 그러나 Mixin 상에서 이러한 행위는 더 어렵거나 불가능하다.

더 나아가, 거래소의 경우 대부분 Closed source 시스템이며, 해킹이 일어났을 때 그들이 알지 못하는 버그가 있을 수도 있다.

반대로 Mixin은 open source system이기 때문에 개발자들이 리뷰와 성능 개선을 행할 수 있는 것이다. 리눅스가 윈도우보다 안전한 것과 같은 경우이다.

-> 비트예수 블록바의 말: 원초적인 비교부분이라고 할 수 있습니다. 블록체인은 말 그대로 open source이기에 개방되어있는 것이죠.

11) XIN 토큰

Xin 토큰은 Full node 구축 보증금, DApp 생성, 그리고 API calls 등을 포함한 Mixin 내의 많은 서비스를 사용하기 위해 필요하다.

1) Full node 구축 : 10,000 XIN 필요

2) DApp 생성시 : 처음 한 번 XIN 지불 필요. 필요 양은 DAPP이 소비하는 resource에 따라 다름

3) DApp에 의한 Mixin API calls : 그 call들의 종류와 양에 따라 소비되는 XIN양이 달라짐.

4) 분배 :
- 총량 : 1,000,000 XIN
- 400,000 XIN : 2017년 11월 25일 ~ 2017년 12월 25일 사이에 EOS 홀더들에게 20 EOS 당 1개로 지급 완료됨
- 50,000 XIN : 일찍이 Mixin Messener 사용했던 사람들에게 분배되었음
- 50,000 XIN : 개발자 물량
- 나머지 500,000 XIN : Mixin Full node와 Light nodes에 대한 보상으로 사용될 예정
 
 4. Team

1) CEO (Cedric Fung)

아시아 탑인 최근에 만들어진 BigONE의 블록체인 설계자
- https://big.one/ -> 거래량이 그리 많진 않고, big one 토큰도 있긴 함

Miaopai short video 앱, Xiaokaxiu dubsmasgh 앱, Yizhibo livestream 앱으로 중국의 비디오 에코시스템 선두주자인 Yixia.com의 Founder

- Yixia.com 홈페이지에 보면 cctvcom과 bgctv가 있음

2) COO (Danna LI)

블록체인을 빨리 접한 사람
이전 직업들
- 8BTC의 칼럼니스트
- 비트메인 투자 리드
- INBlockchain의 코어팀 맴버이며, BigONE 운용리드
*INBlockchain : http://inblockchain.com/,

-> 비트예수 블록바의 말: 홈페이지를 들어가보니 투자, 기술 제공, 컨설팅 업체군요.
- BigOne의 운용리드
 
3) CTO (Crossle Song)

이전 직업들
- Yixia 기술 리드

- Citamio SDK Architecture 리드 https://www.vitamio.org/en/
Vitamio SDK
Vitamio is an open multimedia framework for Android and iOS, with full and real hardware accelerated decoder and renderer. With its simple, clean and powerful API, Vitamio has attracted lots of developers’ attention in the world. Up to now, more than 10,000+ apps are using Vitamio, coving 500 million users.
-> 비트예수 블록바의 말: 홈페이지 내용입니다. 개발자들을 위한 SDK(Software Development Kit)를 제공하네요.
- 경험 많은 안드로이드와 iOS 개발자
 
4) Product Lead (Oven Tang)
중국의 3억만 유저가 있는 비디오 앱인 Miaopai의 개발자

5. 총평

Mixin의 경우 DAG 방식으로 거래 내역들이 전송되어 다른 플렛폼 코인들에 비해 빠른 전송 속도를 가져올 수 있습니다.

DAG는 블록체인 방식에서 노드가 하던 검증 과정을 각 블록이 한다고 이해하시면 편합니다. 자세한 내용은 위에서 언급했기에 넘어가도록 하겠습니다.

앞으로는 실 생활에서 암호화폐를 사용하려는 시도가 많아질 것인데요, 이렇게 높은 TPS(Transaction Per second, 초당 거래 횟수)를 확보하며 보안성 또한 우수한 프로젝트들이 자주 나올 것으로 보입니다.

Mixin의 경우 실제 Mixin Kernel을 구동하기 위해 스테이킹 해야 하는 토큰들이 필요합니다.

최소 7개 이상의 Mixin Kernel이 있어야 구동된다는 것은 BFT의 올바른 실현을 위해서겠죠.

BFT 방식의 경우에는 3분의 2 이상의 검증이 필요하게 되는데 Mixin kernel이 6개일 경우 3분의 2 이상에 해당하는 개수는 4가 되지만, Mixin kernel이 7개일 경우 3분의 2 이상에 해당하는 경우는 5개가 된다는 점도 참고하시면 좋겠네요 ^^ 아마 내용을 보셨을 때, 기술적으로 어려운 내용들이 많으셨을 것 같아요.

Mixin이 재밌는게, 실제 어플리케이션만 구동했을 때에는 엄청 심플한데 비해, 백서에서 이야기 하는 내용은 상당히 고급 내용들이라고 생각됩니다.

언젠가 우리가 사는 세상에서는 우리가 사용하고 있는 것에 블록체인 기술이 쓰이는지도 모를 정도로 상용화 된 기술들이 많을 것으로 보입니다.

Mixin도 그 중 하나일 것 같네요. 앞으로도 여러 프로젝트 분석하는 시간 갖도록 하겠습니다. 긴 글 읽어주셔서 감사합니다.

카카오 단톡방 : https://open.kakao.com/o/gtlP3PH 
 
블록패치 블로그 : https://blog.naver.com/minstarshop 
 
트위터 : https://twitter.com/DanieIKimcoin 
 
유투브 : https://www.youtube.com/channel/UCBmM7nVhbTysFB2i1pDreSA 
 
스팀잇 : https://steemit.com/@bitjesusblockba 
 
네이버 카페 : https://cafe.naver.com/copanam