미나 프로토콜, 왜 '세상에서 가장 가벼운 블럭체인'일까?

in SCT.암호화폐.Crypto3 months ago (edited)

안녕하세요? 멜로디카입니다.

디온님께서 얼마 전 코인리스트 ICO가 예정되어 있는 미나 프로토콜에 대해 글을 올리셨습니다. 그래서 미나 프로토콜에 대한 공부해 보았습니다.(이해하기 너무 어려웠습니다.) 공부한 내용을 최대한 쉽고 핵심내용 위주로 공유해보겠습니다.

1*Hb2ETOyPqOvtLiEUsgzx_g.png
✭ 주의 : 어떤 부분에서는 오류가 있을 수 있습니다. 비판적으로 읽어주시기 바랍니다.

영지식(Zero-Knowledge)증명이란?

먼저 미나 프로토콜이 작동하는 방식을 이해하려면 영지식 증명에 대해서 이해해야 합니다.

영지식 증명이란, 증명자(Prover)가 '알고 있는 지식'을 검증자(Verifier)에게 증명하고자 할 때, '알고 있는 지식'을 검증자에게 노출 시키지 않고 증명하는 것을 말합니다. 여기서 영지식(Zero-Knowledge)는 검증자가 알게되는 지식은 없다(Zero)라는 의미로 쓰인 것입니다. 어떤 것인지 선뜻 이해가 되지 않는데요. 유명한 '알리바바 동굴'을 예로 설명해보겠습니다.

알리바바의 동굴
111.png

동굴 안에는 암호(열려라 참깨!)로 열수 있는 문이 있습니다. 여기서 증명자(A)는 검증자(B)에게 알리바바의 동굴 암호를 알고 있다는 것을 증명하고 싶습니다. 이것을 영지식 증명으로 하면 이렇게 됩니다.

  • A는 먼저 동굴 밖에 있고, B는 오른쪽 또는 왼쪽으로 선택해서 동굴로 들어간다.
    (여기서는 오른쪽을 선택해서 들어갔다고 생각합시다.)
  • A는 동굴 입구로 와서 B에게 왼쪽길으로 나오라고 이야기합니다.
  • B가 동굴 암호를 알고 있다면 오른쪽으로 들어가서 왼쪽으로 나올 수 있으니 암호를 알 수 있다는 것을 증명할 수 있다.

여기서 문제점이 하나 있습니다. 위의 가정에서 B가 처음에 왼쪽 동굴로 들어간 경우가 되겠죠. 이런 경우 왼쪽길로 나오라고 했을 때, 동굴암호를 알지 못해도 아는 것처럼 속일 수 있습니다. 이것을 보완하기 위해서 신뢰할 수 있을 때까지 검증을 반복합니다. 검증을 반복했을때 B가 연속적으로 증명을 해낸다면, 확률적으로 '암호를 알고 있다'고 볼 수 있습니다.

이렇게 하면, 암호를 노출하지 않고 암호를 알고 있다는 것을 증명할 수 있게 됩니다. 영지식 증명의 조건을 요약하면 다음과 같습니다.

영지식 증명의 조건

  • 완전성(Completeness) : 증명자(B)가 실제로 암호를 알고 있는 경우, 검증자(A)에게 그것을 증명할 수 있어야 합니다.
  • 건전성(Soundness) : 증명자(B)가 암호를 모를 경우, 검증자(A)를 속이려 해도 속일 수 없어야 합니다.
  • 영지식성(Zero-Knowledge) : 검증자(A)는 증명자(B)가 '암호를 알고 있다는 사실' 외 어떤 정보도 알 수 없어야 합니다. 즉 검증과정에서 동굴암호를 알게 되면 안됩니다.

영지식 증명의 발전, 스나크 방식(zk-SNARKs)

위에서 설명한 영지식 증명은 검증자와 증명자가 신뢰할 수 있는 수준의 반복된 대화를 통해서 검증합니다. 이는 서로 통신이 가능해야 하고, 검증을 반복할 수록 데이터 양과 시간이 길어져 효율성이 떨어지는 문제점이 있습니다. 이를 보완한 방식이 바로 스나크 방식입니다.

스나크 방식은 검증자, 증명자가 신뢰할 수 있는 초기 설정을 추가로 도입합니다. 증명자는 초기 설정에 의하여 증거를 만들고, 검증자에게 단 한번만 전송합니다. 검증자도 역시 전송받은 증거를 가지고 초기 설정에 따라 검증을 합니다. 단 한번만 증거를 전송하기 때문에 데이터 양도 많이 필요하지 않고 전송속도가 빨라지며, 결과의 신뢰성이 확률에 의존하지 않는다는 점이 특징입니다.

그러나 이 방식 또한 문제점이 있습니다. 초기 설정의 신뢰 문제입니다. 누군가 의도적으로 초기 설정을 바꿔 버릴 수 있다면 오류가 발생할 수 있습니다. 여기서는 초기 설정에 대한 신뢰 문제는 건너 뛰겠습니다.

미나 프로토콜

미나 프로토콜은 바로 영지식 증명 중 위에서 설명한 스나크 방식(zk-SNARKs)을 사용합니다.

스나크 방식을 통한 블럭생성 방식
기존 블럭체인 검증 방식은 모든 거래내역이 블럭체인 상에 기록되어 있고, 이를 검증하기 위해서는 전체 거래내역을 가지고 있어야 합니다. 암호화폐 산업 초기에는 전체 블럭체인 크기가 크지 않았기 때문에 전체 거래내역(풀노드)를 가지고 있는 일이 어렵지 않았습니다. 하지만 거래가 빠르게 증가하고 현재 블럭체인 크기는 수백 기가바이트에 달하기 때문에, 풀 노드 운영을 위해 별도 제작된 시스템이 필요합니다.
0*wonhZIUtEmdkGsxP.jpeg
[체인이 길어질수록 데이터의 크기가 커짐]

스나크 방식을 이용한다면, 블럭을 생성할 때 '증거'만 필요하고 전체 거래내역은 가지고 있을 필요가 없습니다. 하지만 이것도 기존 블럭체인 대비 크기가 훨씬 줄지만 시간이 갈수록 '증거'가 누적되어 크기가 늘어나는 단점이 있습니다.
0*wyJwOE_TEjORt8ir.png
[각각 거래에 대한 증거가 필요함 - 체인이 길어질수록 증거의 수도 늘어나서 크기가 커짐]

그래서 미나 프로토콜에서는 스나크 방식을 이중으로 한번 더 사용합니다. 거래에 필요한 '증거'를 스나크 방식으로 만들고, 그 거래를 포함한 전체 거래내역이 유효한지에 대한 '증거'를 스나크 방식으로 한번 더 만들게 됩니다. 따라서 다음 거래에서는 이전 거래내역이 유효하다는 것에 대한 증거만 가지고 다음 거래를 진행할 수 있습니다. 한마디로 전체 거래내역 각각에 대한 증거가 아니라, 전체 거래내역을 묶어 이전 거래내역 모두 유효한지에 대한 증거만 전송하는 방식입니다. 이렇게 되면 기존 거래내역이 유효한지에 대한 증거는 시간과 무관하게 일정한 크기로 유지할 수 있습니다..
0*Ol2NWueEje7-Zqxp.png
[이전 거래 내역을 묶어서 하나의 증거를 추가로 만들어냄 - 거래가 많아져도 1개의 증거만 필요]

미나 프로토콜의 특징 요약
검증에 필요한 '증거'를 일정한 크기로 유지하여 일반 사용자들이 스스로 트랜잭션을 검증하는데 필요한 진입장벽을 낮췄습니다.

  • 다른 블록체인처럼 풀 노드를 운영하기 위한 조건을 충족하지 못해 신뢰를 위임하지 않아도 됩니다.
  • 기기에 무관하게 블록체인 전체 & 최종 머클경로를 검증하는 단일 스나크를 다운로드하고 풀노드 수준의 보안을 확보할 수 있습니다.(스마트폰에서도 검증 가능)
  • 이중(재귀) 스나크 구조를 통해 블록체인 크기가 ~20kB 수준으로 유지됩니다.
  • 다양한 일반 사용자들이 네트워크 검증에 참여해, 검증 노드수가 증가할수록 탈중앙화가 강화됩니다.

개인적인 의견

비트코인의 경우, 채굴은 몇몇 풀에서 독점적으로 운영되고 전송속도 또한 실생활에서 사용하기 힘든 수준입니다. 이에 EOS에서는 dpos 시스템을 도입하기도 했는데요. 이를 통해 속도를 해결하는 대신 탈중앙화에서 비판에서 자유롭지 못하게 되었습니다.(EOS팀은 그렇게 생각하지 않긴 합니다.)그래서 속도와 탈중앙화는 양립하기 어렵겠구나 하는 생각을 했었는데요. 미나 프로토콜이 제대로 정착된다면, 탈중앙화와 속도를 모두 해결할 수 있을 것 같다는 생각이 듭니다.

제가 내용을 정확하게 파악한건지 모르겠습니다. 그래서 비판적으로 봐주셔야 할 것 같고, 혹시라도 잘못된 사항은 지적해주시면 감사하겠습니다.

Sort:  

미나 프로토콜 궁금했는데 잘 읽었습니다.

어차피 1000불까지밖에 안 되니까 토큰 세일 참여해보려고 합니다.
근데 지금 코인리스트 입금이 안되더라고요. ㅎㅎㅎ

그 전에 풀리겠죠?

저도 참여하려고 하는데요. 지금 코인리스트 입금이 안되는군요 ㅎ
아직 시간이 좀 있지만 저도 슬슬 입금을 해하는데요.
KYC 인증은 일단 해놨습니다 ㅋ

정성글이네요 👍