미나 프로토콜 — 세상에서 가장 가벼운 블록체인

2020년 10월 코다(Coda) 프로토콜이 미나(Mina) 프로토콜로 리브랜딩되었습니다.

미나 프로토콜
미나 프로토콜 한국 블로그
10 min readFeb 19, 2021

--

미나 프로토콜은 ‘한 손에 들어오는 가벼운 블록체인’ 입니다. 특징은 다음과 같습니다:

  • 미나 프로토콜은 간결한 블록체인 구조(succinct blockchain)를 갖춘 최초의 암호화폐입니다.
  • 수백 GB에 달하던 기존의 블록체인 크기를 kB 수준까지 압축했습니다.
  • 확장 가능하고, 안전하며, 탈중앙화되었습니다.
  • 모바일 기기를 통해 블록체인 검증인으로 활동할 수 있습니다.

미나 블록체인은 트위터 몇 줄 수준의 작은 블록체인 크기(22kb)를 유지하기 때문에 네트워크의 수 많은 트랜잭션을 손쉽게 처리할 수 있습니다.

hack.summit(“blockchain”) 2018 — Izaak Meckler — co-founder and CTO, Mina Protocol

‘암호화폐 세상’ 사람들은 “신뢰가 아닌, 검증” 이라는 방식을 추구합니다. 하지만 늘어나는 수요에도 불구하고, 높은 진입장벽으로 인해 일반 블록체인 사용자가 풀노드를 운영할 가능성은 점점 낮아지고 있습니다.

The growth rate of the Bitcoin blockchain in megabytes from ‘09–’18. (https://www.blockchain.com/en/charts/blocks-size?timespan=all)

들어가기에 앞서

왜 모두가 풀노드를 운영할 수 없을까요? 본격적으로 알아보기 전, 암호화폐 프로토콜에 대해 기본적인 설명을 해드리겠습니다 — 프로토콜에선 (PoW, PoS에 따라) 채굴자 혹은 스테이커라고 불리는 프로세서(Processor)가 트랜잭션을 데이터베이스에 기록합니다. 풀노드는 이러한 트랜잭션을 감시해 올바르게 작동하는지 확인합니다. 하지만 일반 사용자들은 스스로 검증하는 대신, 자신의 토큰과 신뢰를 네트워크 참여자에게 위임합니다. 왜 이런 일이 발생할까요?

  • 풀 노드를 운영하려면 컴퓨팅 자원과 복잡한 절차가 필요합니다. 따라서 일반 사용자에겐 진입장벽이 높습니다.
  • 풀노드는 컴퓨터 노드에 집중되어 있으며, 모바일 기기로 운영이 불가능합니다.
  • 검증을 서드파티에게 위임하는 게 훨씬 간단합니다.

블록체인 크기가 수 메가바이트(mb)에 불과했던 초기 암호화폐 산업에선 풀노드를 운영하는 일이 그리 어렵지 않았습니다. 그러나 트랜잭션이 빠르게 증가했고, 현재 블록체인 크기는 수백 기가바이트에 달합니다. 이제 노드 운영을 위해 제작된 컴퓨터가 아닌 이상, 개인이 풀노드를 운영하는 일은 현실적으로 어렵습니다. 스마트폰에선 더더욱 불가능합니다.

지난 모든 블록체인 기록을 확인하지 않으면서 블록을 검증하는 방법은 없을까요?

미나를 소개합니다

“[미나]는 누구나 [모든 기기에서] 풀노드 수준 보안을 유지하면서 네트워크와 동기화 할 수 있는 새로운 암호화폐 프로토콜입니다. 수 백 기가바이트를 다운받고 연산해야 하는 기존 암호화폐 프로토콜과 다르게, 미나는 1/1000 초 만에 몇 킬로바이트만 다운로드하고 네트워크와 동기화할 수 있습니다.”

#243 Izaak Meckler & Evan Shapiro: Coda — A Succinct Blockchain — Epicenter

오원랩스(O(1) Labs)는 세상에서 가장 가벼운 블록체인 — 미나 프로토콜을 개발했습니다. 이제 트위터 몇 줄 크기의 가벼운 블록체인을 통해 일반 사용자들도 트랜잭션 검증에 쉽게 참여할 수 있습니다.

어떻게 가능한가요?

  • 영지식 스나크(zk-SNARK)를 통해 블록을 단일 증명(검증)으로 압축합니다.
  • 사용자들은 모든 블록 내역을 확인하는 대신 단일 증명을 검증합니다.
  • 스나크(SNARKs)/증명의 재귀적 구조를 통해 일정한 블록체인 사이즈를 유지합니다.

영지식 증명은 연산을 증명할 때 검증자에게 아무런 정보가 전달되지 않는 암호 체계입니다. 영지식 스나크(zk-SNARKs)에선 이러한 영지식 증명을 반복합니다.

미나의 작동 원리

미나와 영지식 스나크(zk-SNARKs)

미나 프로토콜이 사용하는 영지식 스나크(zk-SNARKs)모든 연산을 검증할 수 있습니다.

영지식 스나크는 전체 연산을 검증하지 않고도 지금까지의 연산이 올바르게 수행되었음을 입증하는 위조 불가능한 증명입니다. 앞서 언급했듯이, 블록 내 트랜잭션을 검증을 포함한 모든 종류의 연산에서 스나크를 만들 수 있습니다. 이 스나크가 지난 모든 트랜잭션 기록을 보여주지 않으면서도, 블록 트랜잭션이 정확함을 입증합니다. 이를 통해 블록체인 크기는 단일 스나크 수준(~1kB)으로 대폭 줄어듭니다.

스나크는 합의를 위해 아래 조건을 검증합니다:

  • 트랜잭션이 서명되었는지.
  • 유효한 트랜잭션인지.
  • 합의 규칙 (PoW — 총 해시파워 + 체인 길이 / PoS — 이산확률변수 등 규칙)

만약 스나크가 정상적으로 생성되지 않는다면, 해당 블록은 유효하지 않습니다. 네트워크 참여자 누구나 스마트폰이나 노트북 같은 ‘가벼운’ 기기로 이를 확인할 수 있습니다.

블록에서 트랜잭션을 검증할 때 필요한 리소스를 낮게 유지함으로써, 미나는 지속 가능하고 확장성 높은 솔루션을 만들기 위한 첫걸음을 내딛습니다.

미나 프로세서와 일반 사용자 간 아주 현실적인 대화:

“안녕! 검증인(일반 사용자)아. 내가 블록 트랜잭션 내역을 간단하게 검증할 수 있는 증명을 만들었어. 스나크를 생성하는 과정은 많은 컴퓨팅파워가 필요하니까 내가 보상을 가져갈게. 네가 스나크를 확인해서 증명이 정확한지 검증해줘. 검증은 몇 킬로바이트와 1/1000 초 정도면 충분해. 다른 블록체인처럼 수백 기가바이트를 다운받지 않아도 검증 할 수 있어! — 스나크 프로세서

“고마워 프로세서야. 내가 증명을 검증할게! 블록체인 사이즈가 정말 작아서 다른 누군가를 신뢰하지 않아도 스마트폰에 나만의 검증 노드/지갑을 운영할 수 있네. 정말 멋진 블록체인이야!” — 일반 사용자.

모든 블록을 스나크로 대체하는 건 해결책이 아닙니다.

처음에 미나 팀은 매 블록마다 스나크(SNARK)를 생성해 블록을 킬로바이트 단위로 압축하는 게 해결책이라고 생각했습니다. 하지만 이 방법 또한 (현존하는 블록체인보다 훨씬 덜하지만) 스나크가 누적됨에 따라 블록체인 크기가 커지게 됩니다.

어떻게 해결할 수 있을까요?

이제 우리는 스나크(SNARK)가 컴퓨팅 연산을 검증하기 위해 사용된다는 사실을 알았습니다. 스나크를 생성하는 것 또한 하나의 연산입니다 — 그렇다면 만약 다양한 스나크의 스나크를 생성한다면 어떻게 될까요?

미나의 재귀적 스나크 구조

미나 프로토콜에선 앞서 언급한 스나크를 재귀적인 구성으로 연결합니다. 따라서 블록체인이 ~20kB 라는 일정한 크기를 유지합니다. (스나크 + 최종 머클 경로)

새로운 블록이 생성될 때마다 새로운 스나크/증명도 생성됩니다. 하지만 이전 증명들을 묶은 단일 스나크, 일명 “메가” 스나크가 생성하면 작은 블록체인 크기를 유지하면서 블록체인 전체 트랜잭션 기록을 제네시스 블록에서 현재 상태까지 한번에 검증할 수 있습니다.

간단히 표현하자면 이렇습니다:

  • 하나의 스나크가 블록 0 부터 블록 2까지 담당합니다.
  • 다음 스나크가 블록 2 부터 블록 4 까지 담당합니다.

이러한 스나크들을 묶어 블록 0 부터 블록 4 까지 담당하는 하나의 단일 스나크로 결합합니다.

새로운 스나크/증명의 크기는 ~1kB 수준입니다. 장기적인 관점에서, 최신 스나크에 다수의 증명이 ‘꽉’ 차더라도 블록체인 전체 트랜잭션 기록을 위한 증명은 일정한 사이즈는 유지하게 됩니다.

미나 노드 검증은 어떻게 구성되나요:

재귀적으로 구성된 영지식 스나크 (1kB)는 블록체인 전체 트랜잭션 기록과 머클루트 경로의 현재 상태(20kB)를 검증합니다. 사용자 잔액의 유효성을 검증하는 이러한 동기화 과정엔 1/1000초 밖에 걸리지 않습니다.

애플리케이션, 탈중앙화, 확장성

애플리케이션

미나 프로토콜을 사용하면 수백 기가바이트를 다운로드하거나 신뢰를 위임하지 않고도, 브라우저애플리케이션을 통해 일반 사용자들이 블록체인에 쉽게 액세스할 수 있습니다.

개발자가 검증을 올바르게 진행하는지 신뢰하지 않아도 되는 아주 가벼운 지갑 애플리케이션을 상상해 보세요. 일반 사용자들이 이 지갑의 검증 프로세스를 진행하며, 이때 특정 하드웨어가 필요하지 않습니다.

디바이스에 무관하게 미나 프로토콜 검증 노드를 운영할 수 있습니다. 스마트폰, 브라우저, 피처폰까지 전부 가능합니다.

탈중앙화

앞서 언급했듯이, 오늘날 현존하는 암호화폐 프로토콜 사용자들은 결국 온라인 지갑이나 (채굴의 경우) 라이트 클라이언트에 자신의 신뢰를 위임해야 합니다. 이는 트랜잭션 검증 의무가 몇몇 서비스 제공자에게 집중되기 때문에 ‘51% 공격’ 같은 상황을 초래할 수 있습니다.

미나 프로토콜은 일반 네트워크 참여자에게 검증인 노드를 운영할 수 있는 간단한 방법을 제공함으로써, 트랜잭션이 더욱 다양한 네트워크 참여자에 의해 검증됩니다. 따라서 탈중앙화가 강화됩니다.

확장성

확장성 측면에서 기존 프로토콜이 수천 TPS를 소화하려면 검증에 필요한 데이터 크기 또한 함께 증가해야 합니다. 따라서 검증해야 하는 데이터보다 블록체인이 더 빠르게 커져야 합니다.

그러나 미나는 블록체인을 일정한 사이즈로 유지하기 때문에 트랜잭션을 확인하는데 필요한 데이터를 줄일 수 있고, 검증 데이터의 자릿수를 압축하여 높은 성능을 보여줍니다.

요약

미나는 블록체인 크기를 일정한 수준으로 유지함으로써 일반 사용자들이 스스로 트랜잭션을 검증하는데 필요한 진입장벽을 낮췄습니다.

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

부록

미나 블록체인은 포켓볼로 비유할 수 있습니다. 피카츄 대신 블록체인을 스나크로 압축한다는 점이 다르지만요.

From ZCon0 Presentation — Izaak Meckler — https://www.youtube.com/watch?v=qCVACpgQSjo

세상에서 가장 가벼운 블록체인 — 미나 프로토콜 소셜 링크

ENG: 홈페이지 | 트위터 | 텔레그램 | 디스코드 | 포럼 | 깃허브
KOR: 텔레그램 | 공지채널 | 네이버 | 미디엄

--

--