[Blockchain — ZKP Series] 1. 블록체인의 영지식 증명 효용성 논의

Tariz
Decipher Media |디사이퍼 미디어
24 min readOct 16, 2020

Authors

김수민, 오아영, 정현 of Decipher ZKP Research Team 안녕지식
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed by:
오영택, 최지혁

[목차]

  1. 시리즈를 시작하며
  2. 블록체인의 익명성을 지키는 영지식 증명
  3. 블록체인이 활용하는 영지식 증명
  4. 영지식 증명을 활용한 블록체인
  5. 마치며

시리즈를 시작하며

블록체인에서 영지식을 사용하는 이유는 무엇일까?

최근 블록체인에서는 영지식 증명을 활발하게 도입하고 있습니다. 영지식 증명이란 상대방에게 어떤 정보가 진실이라는 것을 증명할 때, 그 정보가 진실인지 혹은 거짓인지 알려주는 결과를 제외하고 그 어떤 정보도 노출되지 않도록 하는 절차입니다. 간단하게 생각해보면, 정보의 익명성을 제공하는 암호학 기술이라고 생각할 수 있습니다.

블록체인이 만들어진 이후 다양한 기술의 접목과 암호학 기술의 도입이 있었지만, 새롭게 구축된 블록체인과 DApp들은 영지식 증명을 도입하며 이를 굉장한 차별점으로 제시하고 있습니다. 블록체인 기반 분산형 금융 네트워크를 구축한 Findora는 사용자 데이터의 기밀을 유지하기 위해 영지식 증명을 사용한다고 밝혔습니다. 네덜란드 메가 뱅크인 ING가 제공하는 블록체인 플랫폼 Corda는 블록체인 내의 프라이버시 문제를 해결하기 위한 솔루션 구축을 위해 영지식 증명을 사용한다고 밝혔습니다. 이밖에도 삼성 SDS의 NexLedger, JP Morgan의 Quorum까지 블록체인의 프라이버시 문제를 해결하기 위해 영지식 증명을 도입하고 있습니다.

이처럼 영지식 증명을 도입한 블록체인을 쉽게 찾아볼 수 있습니다. 그런데 블록체인과 영지식 증명을 함께 설명한 자료에는 ‘블록체인의 프라이버시 문제 해결을 위해 영지식 증명 사용’이라는 단편적인 정보만 제공하고 있었습니다. 우리는 영지식 증명이 왜, 지금 블록체인에서 주요한 기술로 대두되고 있는지 명확한 이유를 알고 싶었지만, ‘프라이버시 문제 해결’을 다소 추상적으로 느껴졌습니다. 이에 우리는 블록체인의 프라이버시 문제가 구체적으로 무엇을 의미하는지, 어떤 세부과정에서 활용되는지, 그리고 블록체인에 어떤 익명성을 제공하는지 알고 싶었습니다.

그래서 우리는 이에 대한 답을 내리기 위해, 영지식 증명 연구팀-안녕지식을 구성하여 ‘Blockchain-ZKP Series’를 기획했습니다. 우리가 답을 내리기 위해 다루는 주요한 질문들은 다음과 같이 정리됩니다.

1. 블록체인에서 영지식 증명이란 무엇이며, 우리는 이로부터 어떤 효용을 얻을 수 있을까?

  • 영지식 증명은 블록체인의 어떤 문제를 해결할까?
    영지식 증명은 블록체인에 새롭게 적용된 기술입니다. 일반적으로 새롭게 적용된 기술은 새롭게 직면한 한계를 해결하기 위해 도입됩니다. 이에 블록체인이 영지식 증명을 도입하여 해결하고자 했던 문제가 무엇인지 살펴보았습니다. 우리는 영지식 증명이 블록체인에 익명성을 제공하고, 효과적인 확장 솔루션 구축을 가능하게 하는 도구로서 활용될 수 있음을 제시합니다.
  • 블록체인에서 사용하는 영지식 증명은 무엇일까?
    영지식 증명은 1985년에 처음으로 소개되어, 현대 암호학에서 정보의 익명성을 제공하는 중요한 암호 프로토콜로 현재도 활발히 연구되고 있으며 그 종류도 다양합니다. 그중 블록체인에서 주로 사용되고 있는 영지식 증명은 세 가지로, zk-SNARKs, zk-STARKs, Bulletproofs가 이에 해당합니다. 우리는 이 세 가지 영지식 증명의 특징을 분석하여 영지식 증명 도입에서 블록체인이 고려할 수 있는 특성을 제시합니다.
  • 영지식 증명을 실제로 도입한 사례는 어떤 것이 있을까?
    우리는 영지식 증명을 사용한 대표적인 블록체인인 Zcash, Monero, zkRollup의 도입 사례를 소개하여, 영지식 증명의 활용 예시를 보여줍니다.

2. 블록체인에서 영지식 증명은 어떻게 구현될까?

사실 블록체인에서 영지식 증명을 사용하는 이유는 무엇일까?라는 질문에 대한 답은 1번 질문에 대한 답으로 충분해 보입니다. 하지만 우리는 영지식 증명이 ‘왜’ 사용되는지 뿐만 아니라 블록체인에서 ‘어떻게’ 사용할 수 있는지 분석해야 한다고 생각했습니다. 그 이유는 누군가 새로운 블록체인을 만들어 영지식 증명을 도입하고자 할 때, 직면하는 블록체인의 무수한 이슈 중에서 영지식 증명으로 해결할 수 있는 있는 것해결 방법을 알고 있어야만, 이를 원하는 목적에 알맞게 사용할 수 있을 것이기 때문입니다.

우리는 이 질문에 대한 답을 제시하기 위해 영지식 증명을 블록체인에 도입한 기술인 Zether의 영지식 증명 활용 방법에 초점을 맞추어 설명하며, 부가적인 블록체인 기술을 설명하지 않습니다.

  • 어떤 정보를 숨길까?
    블록체인에서 영지식 증명을 통해 숨기고자 하는 정보가 무엇인지 분석합니다.
  • 증거를 어떻게 만들까?
    영지식 증명을 활용하면 정보의 유효성을 증명하기 위한 증거를 만듭니다. 이 경우 어떤 영지식 증명을 사용하여 증거를 만들고, 증거를 만들 때 어떤 정보를 입력하는지 분석합니다.
  • 검증 결과가 진실(True)이라면 무엇이 증명되는가?
    (부제: 다른 사람들은 그 결과로 무엇을 납득할 수 있을까?)
    영지식 증명은 검증 결과만으로 정보의 유효성을 판단할 수 있게 합니다. 각 블록체인에서 참가자가 블록체인에 기록된 검증 결과를 통해 납득할 수 있는 것이 무엇인지 분석합니다.

Blockchain-ZKP Series의 첫 번째 게시글인 ‘1. 블록체인의 영지식 증명 효용성 논의’는 첫 번째 질문인 ‘블록체인에서 영지식 증명이란 무엇이며, 우리는 이로부터 어떤 효용을 얻을 수 있을까?’에 대한 답을 제시하고, 앞으로 소개할 ‘블록체인에서 영지식 증명은 어떻게 구현될까?’에 대한 배경지식을 제공합니다.

들어가기 전에… 안녕지식팀이 작성한 ‘1. 블록체인의 영지식 증명 효용성 논의’는 블록체인과 영지식 증명에 대한 기초적인 개념만으로 쉽게 이해할 수 있도록 어려운 개념은 최대한 배제하고 작성하였습니다. 보다 자세하고 정확한 정보는 해당 자료에 포함된 링크에 들어가면 확인할 수 있습니다. 미디움으로 링크된 자료는 디사이퍼-안녕지식팀의 팀장 정현이 시리즈와 별개로 작성한 내용입니다.

블록체인의 익명성을 지키는 영지식 증명

블록체인의 문제는 무엇일까?

블록체인을 블록체인답게 만드는 가장 큰 특징 중 하나는 투명성입니다. 그러나 블록체인의 ‘완전히 투명한 성질’은 블록체인의 상용화를 가로막는 원인이기도 합니다. 지금 우리 모두는 숨기고 싶은 정보가 있기 마련이고, 기술을 사용하여 많은 정보를 숨기며 살아가고 있습니다. 그런데 블록체인은 우리가 숨기고 싶어 하는 정보를 모두 공개하고 있습니다. 간단한 상황으로 예를 들어보겠습니다.

친구와 밥을 먹은 후 친구가 한 번에 밥값을 결제하여 A가 절반을 보내주어야 합니다. 이때 A가 보낸 돈의 액수, 통장의 잔액, 이때까지 거래한 거래 내역이 모두 친구에게 공개된다면 어떨까요? 심지어 그 은행을 이용하고 있는 사람들에게 모두 공개된다면? 보낸 돈이 소액이고 중요한 거래가 아니기 때문에 공개되어도 괜찮다고 하더라도, 통장의 잔액과 거래 내역이 모든 사람에게 공개되는 것을 반길 사람은 없을 것입니다(잠깐 상상만 했는데도 너무 싫네요…) 이러한 상황은 친구에게 밥값을 송금하는 것 같은 간단한 거래에서도 충분히 민감한데, 기업 간의 거래와 같은 중대한 상황에 놓였을 때는 더욱더 심각해집니다.

지금 블록체인으로 비트코인을 송금하면, 보낸 액수, 잔액, 거래 내역이 모든 사람에게 공개됩니다. 이러한 정보는 전통적인 금융 시스템에서 굉장히 민감한 정보로 다루어지고 있습니다. 하지만 블록체인의 ‘완전한 투명성’은 우리의 전통적인 상황을 반영하고 있지 않아 블록체인의 상용화를 가로막는 원인이 되었습니다.

비트코인은 정말 아무런 익명성을 제공하지 못할까?

우리는 비트코인(암호화폐)을 악용한 많은 범죄 사례를 접하며 ‘비트코인 사용자는 추적하기 어렵다’라는 것을 익히 들었습니다. 이는 비트코인 네트워크를 사용할 때 사용자가 자신의 개인정보를 입력하지 않기 때문인데요, 이는 비트코인이 이미 충분한 익명성을 제공하는 것처럼 보이게 합니다. 그런데 왜 블록체인에 익명성을 제공하기 위해 영지식 증명을 사용한다고 이야기하는 것일까요?

이를 이해하기 위해서는 비트코인 거래가 어떻게 일어나는지 이해할 필요가 있습니다.

비트코인 블록체인에서 A가 B에게 10 비트코인을 송금하기 위한 거래내역(Transaction)을 만들어 보낸다고 가정해봅시다. 이 거래내역에 필수적으로 들어가야 하는 정보는 세 가지가 있습니다(포함해야 하는 정보는 더 많지만, 이해를 돕기 위해 세 가지만 설명하겠습니다). 그리고 거래가 완료되면 거래내역의 정보는 블록체인에 기록되어 모든 사람들이 확인할 수 있습니다.

거래내역에 들어가는 세 가지 필수 정보

  • 누가 보내나요?: A의 서명
  • 얼마를 보내나요?: 10 비트코인
  • 누구에게 보내나요?: B의 주소

여기서 주목해야 할 것은 A의 서명입니다. A의 서명은 실제로 암호화되어 있어, A의 서명으로는 A의 실제 신원을 알 수 없습니다. 마찬가지로 B의 주소만으로 B의 신원을 알 수 없습니다. 하지만 여기서 A의 서명을 공개하는 것은 A의 모든 거래를 추적할 수 있는 정보를 제공하는 것과 같습니다. 이를 통해 모든 사람은 아래와 같은 정보를 알 수 있습니다.

A가 실제 세상에서 누구인지는 모르겠지만, A 서명을 가진 사람이 B 주소로 10 비트코인을 보냈으며, A의 잔액은 x 비트코인입니다.

이러한 정보는 A가 전송하거나 받은 모든 거래내역에 대해 확인할 수 있도록 공개되어 있습니다. 즉, 비트코인 블록체인에서 A의 신원은 알 수 없지만, A의 서명을 가진 사람이 어떤 경로로 얼만큼의 돈을 받아 누구에게 얼마를 송금했고 현재 얼마를 가지고 있는지 모두 공개됩니다. 이러한 비트코인의 특징을 유사익명성(Pesudo-Anonymity)라고 합니다. 이와 같은 유사익명성은 우리가 앞에서 언급했던 민감한 정보 공개를 야기하게 되어 블록체인의 상용화를 가로막는 원인이 되었습니다.

영지식 증명은 무엇을 해결할까?

우리는 비트코인이 유사익명성으로 야기된 문제를 영지식 증명이 어떻게 해결할 수 있는지 알아보겠습니다.

영지식 증명을 사용하면 위 그림과 같이 거래내역에서 ‘보내는 사람’, ‘송금 액’, ‘받는 사람’을 숨길 수 있습니다. 한편 블록체인의 투명성이 중요한 이유는 모든 사람이 블록체인으로 공유된 거래내역의 정보를 직접 확인하여 ‘유효한’ 거래인지 알 수 있기 때문입니다. 그리고 모든 사람(실제로 ‘모든’ 사람은 아니며, 단지 이해를 돕기 위한 표현입니다)이 이를 ‘유효한’ 거래로 인정해야만 블록체인에 기록되어 시스템을 유지할 수 있습니다. 그런데 영지식 증명을 사용하면 ‘유효한’ 거래인지 알 수 있는 방법이 사라져 버리기 때문에 문제가 생깁니다.

그렇다면 송금에서 유효한 거래라는 것은 무엇일까요? 우리가 은행을 통해 돈을 송금하는 경우를 생각해봅시다. 이때 간혹 송금 실패 안내가 뜰 때가 있는데, 이러한 경우는 대개 두 가지 경우 때문에 발생합니다.

  • 내 통장 잔액이 내가 송금하려는 금액보다 적을 때
  • 통장에 대한 송금 권한이 없는 사람이 송금을 시도할 때

즉, 단순하게 생각해보면 유효한 거래라는 것은 “송금할 만큼 충분한 돈이 있는 통장에서 송금 권한이 있는 사람이 돈을 보냈다”라는 것과 다르지 않습니다. 그리고 송금이 성공했다면, 은행을 이용하는 사용자들은 거래하는 사람의 개인정보(보내는 사람, 송금액, 받는 사람)를 알 필요가 없습니다.

이제 우리는 블록체인에서 일어나는 송금에 대한 익명성을 유지하기 위한 아이디어를 다음과 같이 정리할 수 있습니다.

  • 다음 두 가지가 성립되면, 그 거래는 유효한 거래입니다.
    1. 통장에 대한 송금 권한이 있는 사람이 돈을 보냈다.
    2. 그 통장에 돈이 충분히 있다(잔액 > 송금액)
  • 유효한 거래라는 것이 검증되면 사용자들은 A의 거래 정보를 알 필요가 없습니다.

이처럼 간단한 아이디어를 영지식 증명으로 구축할 수 있습니다. 영지식 증명은 1번과 2번을 증명할 수 있는 증거(Proof)를 만들 수 있고, 블록체인은 이 증거를 담은 거래내역을 전송할 수 있습니다. 이 증거는 영지식 증명을 통해 진실(True)인지 거짓(False)인지 검증받게 됩니다. 만약 영지식 증명이 증거를 진실로 계산했다면, 이는 다음과 같은 내용을 검증한 것입니다:

이 거래내역이 누가 누구에게 얼마를 보내는 건지 모르겠지만, 보내는 사람이 거래내역을 만들어 전송했고, 보내는 사람의 잔액이 송금하려는 금액보다 큽니다.

영지식 증명을 통해 B를 포함한 모든 사람들은 증거가 진실임을 확인하면, 이 거래는 유효한 거래라고 납득할 수 있으며, 블록체인에 이를 기록할 수 있습니다. 즉, 영지식 증명은 민감한 거래 정보를 공개하지 않고 단지 거래내역이 유효하다는 사실만 검증하여, 블록체인 시스템을 유지할 수 있게 합니다. 이와 같은 특징은 영지식 증명이 블록체인의 프라이버시 이슈를 해결할 수 있는 매력적인 선택지로 자리 잡게 하였습니다.

영지식 증명에 대한 자세한 내용은 링크된 자료를 참고하여 주시길 바랍니다.

블록체인이 활용하는 영지식 증명

영지식 증명은 1985년에 처음 소개된 이래로 지금까지 활발히 연구되어 왔으며, 그중 몇 가지 영지식 증명이 블록체인에서 활용되고 있습니다. 아래 그림은 대표적으로 영지식 증명을 도입한 블록체인이 사용하는 영지식 증명을 정리한 그림입니다.

그림에서 알 수 있듯이, 블록체인에서 사용하고 있는 영지식 증명은 zk-SNARKs, zk-STARKs, Bulletproofs로 나뉘며, 이들은 비대화형 영지식 증명 시스템(Non-Interactive Zero Konwledge Proof System)으로 분류됩니다. 이번 장에서는 대표적인 세 가지 영지식 증명 시스템의 특징을 비교하고, 블록체인이 영지식 증명을 선택함에 있어서 고려할 수 있는 특성을 제시합니다.

비대화형 영지식 증명 시스템

영지식 증명의 특징을 비교하기 전에, 이를 아우르는 비대화형 영지식 증명에 대해 간단히 알아보겠습니다. 영지식 증명은 증거를 검증하는 방식을 기준으로 두 가지로 분류됩니다. 최종 증거를 여러 번 교환하여 증거의 유효성을 확률적으로 검증하는 시스템을 ‘대화형 영지식 증명 시스템(Interactive Zero Knowledge Proof System)’, 최종 증거를 한 번만 전달하여 증거의 유효성을 검증하는 시스템을 ‘비대화형 영지식 증명 시스템’이라 합니다. 일반적으로 대화형 영지식 증명 시스템보다 비대화형 영지식 증명 시스템이 좀 더 효율적이라 알려져 있으며, 블록체인에서는 비대화형 영지식 증명 시스템을 주로 사용하고 있습니다.

대화형 영지식 증명 시스템과 비대화형 영지식 증명 시스템의 자세한 내용은 링크된 자료를 참고하여 주시길 바랍니다.

비대화형 영지식 증명의 동작을 아래 그림으로 간단히 살펴보겠습니다.

영지식 증명에는 정보가 진실임을 증명하고 싶은 증명자(Prover)와 정보가 진실인지 확인하는 검증자(Verifier)가 있습니다. 이해를 돕기 위해 간단한 상황을 지정해 보겠습니다.

  • 검증자는 증명자가 성인인지 알고 싶습니다.
  • 증명자는 자신의 나이를 공개하지 않고 성인임을 증명하고 싶습니다.

즉, 검증자가 증명자의 실제 나이를 모른 채로 성인인지 검증해야 한다는 것입니다. 이는 비대화형 영지식 증명을 통해 가능합니다. 증명자는 자신의 나이를 비대화형 영지식 증명 시스템에 입력합니다. 시스템은 입력한 내용을 알 수 없도록 암호문으로 증거를 만들고, 이를 검증자에게 전송합니다. 검증자는 해당 시스템에서 증명자가 성인인지 검증하는 프로그램을 실행하여 결괏값을 제공합니다. 만약 결과가 진실이라면, 검증자는 증명자의 나이를 알지 못해도 증명자가 성인임을 납득할 수 있습니다. 또한 결과가 거짓이라면, 증명자는 성인이 아닌 미성년자임을 알 수 있습니다.

물론, 이처럼 단순히 시스템의 결과가 진실이라는 이유만으로 증명자가 성인임을 납득하기 위해서는 굉장히 복잡한 수학적 로직과 검증이 필요합니다. 이 게시글에서는 복잡한 로직이나 수학적 검증을 다루지 않습니다.

대표적인 비대화형 영지식 증명 시스템인 zk-SNARKs에 대한 자세한 수학적 로직은 링크된 자료를 참고하여 주시길 바랍니다.

블록체인의 영지식 증명 3 대장: zk-SNARKs, zk-STARKs, Bulletproofs

블록체인에서 사용되는 대표적인 (비대화형) 영지식 증명은 zk-SNARKs, zk-STARKs, Bulletproofs입니다. 아래 표는 세 가지 영지식 증명의 특징을 비교한 자료입니다.

블록체인에서 고려하는 영지식 증명의 특징은 크게 네 가지가 있습니다. 우리는 이 기준에 대해 먼저 설명한 후, 세 가지 영지식 증명을 비교합니다.

  • 증거 생성 시간(Prover Time): 증명자가 영지식 증명을 통해 증거를 만드는데 걸리는 시간
  • 검증 시간(Verification Time): 검증자가 영지식 증명을 통해 증거를 검증하는데 걸리는 시간
  • 증거 크기(Proof Size): 증명자가 만든 증거의 크기

여기서 시간(Time)은 시스템이 수학 연산을 수행할 때 소요되는 시간을 의미하고, 크기(Size)는 그 연산 결괏값의 크기를 의미합니다. 블록체인을 비롯한 대부분의 시스템이 그러하듯이 연산에 걸리는 시간이 짧고, 연산 값의 크기가 작을수록 효율적인 도구로 활용합니다. 특히, 블록체인의 경우 거래내역 크기와 온체인(on-chain)의 연산 시간이 수수료와 밀접한 관계가 있기 때문에, 이 두 개의 값이 작을수록 블록체인에 도입할 수 있는 효율적인 기술로 평가됩니다.

💡간단 용어 정리
온체인(on-chain) 연산: 메인 블록체인 네트워크에서 시행되는 연산을 의미합니다. 일반적으로 연산 속도가 느리고 비용이 많이 들며, 오프체인보다 연산의 신뢰성이 높습니다.
오프체인(off-chain) 연산: 메인 블록체인 네트워크가 아닌 곳에서 시행되는 연산을 의미합니다. 일반적으로 온체인보다 연산 속도가 빠르고 비용이 적게 듭니다.

  • Trusted Party

Trusted Party는 쉽게 말해 영지식 증명을 도와주는 신뢰 기관입니다. 이 신뢰 기관의 역할은 증명자가 증거를 생성하기 전에, 증거 생성과 검증에 필요한 재료를 증명자와 검증자에게 전달해주는 것입니다. zk-SNARKs는 Trusted Party를 활용하여 필요한 재료를 이들에게 전달해 주는데, 이 덕분에 증명자는 검증자에게 증거를 담은 메시지는 ‘한 번’만 전송하여 시스템의 효율성을 증가시킵니다.

zk-SNARKs의 증거 생성 및 검증 방법에 대한 자세한 내용은 링크된 자료를 참고하여 주시길 바랍니다.

하지만, Trusted Party는 증명자나 검증자가 아닌 제 3자입니다. 이 때문에 증명자와 검증자는 Trusted Party가 정확한 재료를 제공할 것이라고 믿어야 합니다. 한편, 블록체인의 가치는 신뢰해야 하는 특정 기관이 없는 탈중앙화를 기반으로 합니다. 이로 인해 Trusted Party가 있는 영지식 증명의 도입은 블록체인의 탈중앙화 가치 감소를 야기하게 됩니다.

그렇다면 Trusted Party가 없는 영지식 증명은 어떻게 동작할까요? 우리는 이를 Bulletproofs를 통해 살펴보았습니다.

Bulletporrfs는 증거 생성과 검증에 필요한 재료를 전달해주는 신뢰 기관이 없기 때문에, 이 재료를 증명자와 검증자가 메시지 교환을 통해 만들어야 합니다. 이러한 증명자와 검증자의 반복적인 메시지 교환은 시스템의 효율성을 감소시킵니다. 하지만 zk-STARKs와 Bulletproofs 같이 Trusted Party가 없는 영지식 증명은 제 3자의 개입 없이 증명자와 검증자 간의 메시지 교환만으로 정보의 유효성을 검증하기 때문에, 블록체인의 탈중앙화 가치가 유지된다는 장점이 있습니다.

Bulletproofs에 대한 자세한 내용은 시리즈 후반에 작성될 예정입니다.

이를 통해 세 가지 영지식 증명은 시스템 효율성과 탈중앙화 가치 유지라는 두 가지 기준으로 특성이 나뉨을 알 수 있습니다. zk-SNARKs는 세 가지 영지식 증명 중 증거 생성 시간, 증거 크기, 검증 시간 관점에서 가장 효율적인 시스템으로 분석됩니다. zk-SNARKs는 검증 시간과 검증 크기가 가장 작으며, 증거 생성 시간은 가장 작은 zk-STARKs와 근소한 차이를 갖기 때문입니다. 실제로 zk-SNARKs는 블록체인에서 가장 많이 활용되고 있는 영지식 증명이며, 대표적인 익명 암호화폐인 Zcash가 zk-SNARKs를 도입하여 구축되었습니다.

이에 반해, zk-STARKs와 Bulletproofs는 블록체인에 도입되기에는 효율적이지 않은 단점을 가지고 있는 것처럼 보입니다. zk-STARKs의 경우 증거 크기가 다른 영지식 증명에 비해 압도적으로 크고, Bulletproofs의 경우 검증 시간이 다른 영지식 증명에 비해 압도적으로 오래 걸리기 때문입니다. 하지만, 이 두 가지 영지식 증명은 Tursted Party가 없기 때문에 블록체인의 탈중앙화를 유지할 수 있다는 장점이 있습니다.

zk-SNARKs와 zk-STARKs에 대한 자세한 내용은 링크된 자료를 참고하여 주시길 바랍니다.

현재 Zcash팀에서는 블록체인의 탈중앙화 유지를 위해 Trusted Party가 없는 zk-SNARKs인 Halo2를 구축하고 있습니다. Zcash의 Halo2 설계가 성공적으로 이뤄진다면, 강력한 시스템 효율성과 탈중앙화를 가진 영지식 증명을 기대해볼 수 있습니다.

영지식 증명을 활용한 블록체인

이 장에서는 우리가 앞서 비교한 세 가지 영지식 증명 중에서 zk-SNARKs와 Bulletproofs를 활용하여 암호화폐에 익명성을 제공한 블록체인을 분석하여 영지식 증명의 도입 효과를 분석합니다.

분석을 위해 선정한 블록체인은 zk-SNARKs를 사용한 Zcash와 Bulletproofs를 사용한 Monero입니다. 특히 우리는 Monero의 Bulletproofs 도입 사례를 통해 영지식 증명이 블록체인의 거래내역 크기와 수수료 감소에 효과가 있다는 것을 제시하고, zkRollup의 추가적인 분석을 통해 영지식 증명이 블록체인에 익명성 유지뿐만 아니라 효과적인 확장 솔루션 구축을 위한 도구로 작용됨을 제시합니다.

Zcash

Zcash는 zk-SNARKs을 통해 사용자의 거래내역에서 코인 ZEC의 양과 사용자의 주소를 숨깁니다. Zcash는 사용자에게 공개 주소 t-address와 z-address를 제공하는데, 사용자는 이 중 z-address를 선택하여 자신의 거래 정보를 숨길 수 있습니다.

위 사진은 Zcash 블록체인에 기록된 거래내역으로, 사용자가 t-address에서 z-address로 돈을 송금한 정보를 보여줍니다. Output을 통해 송금 정보에 대한 어떤 정보도 확인할 수 없음을 알 수 있습니다(빨간색 박스 참고). 이처럼 모든 사용자에게 거래 정보가 전혀 보이지 않지만, zk-SNARKs의 검증 과정을 통해 유효한 거래내역임을 인정받고 블록체인에 기록됩니다.

Monero

Monero의 경우 Bulletproofs를 사용하여 전송한 코인 양을 숨깁니다. Zcash와 다르게 Monero를 사용하면 익명성을 선택하지 않고 모든 정보를 필수로 숨기게 됩니다. 아래 그림을 통해 Monero 블록체인에 기록된 거래내역을 살펴보면 전송된 코인의 양이 모두 0으로 처리되는 것을 알 수 있습니다.

특별한 점은 Monero의 경우 개발 초기부터 Bulletproofs를 도입하지는 않았다는 점입니다. 2014년에 출시된 Monero는 2018년 10월에 하드포크로 Bullletproofs를 도입하였습니다. 이로 인해 18.5KB였던 거래내역 크기가 3.7KB로 감소하여, 거래내역 크기가 약 80% 축소되었습니다. 거래내역 크기 축소에 따라 거래 수수료도 함께 감소했는데, 기존 $0.6였던 거래 수수료가 Bulletproofs 도입 이후 $0.02로 감소되었음을 확인했습니다.

아래 표는 Zcash와 Monero의 거래내역 크기와 수수료를 비교한 자료입니다. Zcash는 zk-SNARKs를 사용하기 때문에 Trusted Party가 존재하며, 한 개의 거래내역 크기는 2KB 정도이며 거래 수수료는 $0.025입니다. Monero는 Bulletproofs를 사용하여 Trusted Party가 없으며, 거래내역 크기가 3.7KB이고 수수료는 $0.02입니다.

*주의: Zcash의 경우 거래내역 종류가 네 가지로, 크기와 수수료에 대한 추정치는 네 가지 거래내역의 평균값이며, z-address에 대한 정확한 거래내역 크기와 수수료가 아닙니다.

영지식 증명의 또 다른 효과: 블록체인의 효과적인 확장 솔루션 구축을 도와주는 도구

우리는 Monero의 사례를 통해 영지식 증명이 블록체인의 거래내역 크기를 효과적으로 감소시키고, 이에 따른 수수료 절감 효과를 제공한다는 것을 확인했습니다. 이에 영지식 증명 활용에 대한 조사를 진행했는데, 결과적으로 영지식 증명이 블록체인의 용량 문제를 해결하여 효과적인 확장 솔루션을 구축할 수 있는 도구로 활용될 수 있음을 확인했습니다.

이에 대한 구체적인 방법을 zkRollup을 통해 알아보겠습니다. zkRollup은 자금을 온체인의 스마트 컨트랙트(smart contract)에서 관리하고, 필요한 계산과 데이터 저장은 모두 오프체인에서 수행하는 Layer2 확장 솔루션입니다. zkRollup에 대한 자세한 설명은 링크된 내용을 참고해주시길 바라며, 이 게시글에서는 아래 네 가지 설명만 이해하면 됩니다.

  • zkRollup은 대량의 전송(transfer)을 하나의 거래내역으로 묶어서 처리하며, 이를 롤업(Rollup)이라 합니다.
  • zkRollup은 롤업할 때 zk-SNARKs를 사용하여 하나의 거래내역으로 전체 전송의 유효성을 검증합니다.
  • 이 증거는 온체인의 스마트 컨트렉트에서 투명하게 검증한 후, 검증 내용을 블록체인에 기록합니다.
  • 영지식 증명은 어떤 데이터의 유효성을 검증하기 위해 참여자에게 모든 정보를 공개하지 않아도 되며, 참여자는 데이터를 직접 확인하지 않고, 검증된 증거만으로 전송들의 유효성을 납득할 수 있습니다.

zkRollup은 롤업 방식을 통해 대량의 전송을 하나의 거래내역으로 묶어서 처리해 컴퓨터 파워와 저장 리소스를 줄여 블록체인 확장성을 향상합니다. 이러한 롤업 방식을 통한 확장성 향상이 가능한 이유는 영지식 증명이 롤업된 전송들의 정보를 공개하지 않고 유효성 검증을 가능하게 하기 때문입니다.

이처럼 영지식 증명은 롤업 방식 등 블록체인의 효과적인 확장 솔루션 실현을 가능하게 하는 도구로 활용될 수 있습니다. 또한 영지식 증명을 통해 축소된 거래내역의 개수와 크기는 결과적으로 블록체인 거래 수수료 감소로 이어지게 됩니다.

마치며

‘[Blockchain-ZKP Series] 1. 블록체인의 영지식 증명 효용성 논의’는 블록체인에서 영지식 증명이 갖는 효용성을 확인하기 위해 작성하였습니다. 우리는 이번 분석을 통해 영지식 증명이 블록체인의 프라이버시 유지와 효과적인 확장 솔루션 구축을 가능하게 하는 도구로서 활용될 수 있음을 확인했습니다.

영지식 증명을 도입한 블록체인인 Zcash와 Monero의 거래내역을 통해 프라이버시 유지 관점에서 효과적으로 거래 정보를 노출하지 않음을 확인했습니다. 또한 확장성 관점에서 Monero의 Bulletproofs 도입을 통해 거래내역 크기를 약 80% 축소시키고, 이에 따른 수수료 절감 효과도 확인했습니다. 추가적으로 zkRollup의 롤업 방식과 zk-SNARKs의 적용 방식을 통해 영지식 증명이 블록체인의 효과적인 확장 솔루션을 실현할 수 있게 하는 도구로 활용될 수 있음을 제시했습니다.

블록체인의 사용성을 증가시키기 위해서는 분산화를 유지한 채 사용자 요구를 만족시킬 수 있는 능력이 필요합니다. 이를 위한 전제조건으로는 빠른 속도, 저렴한 비용, 프라이버시 유지 등이 있습니다. 과거 블록체인 확장 솔루션은 이러한 요구사항 중 하나 이상을 포기해야 했지만, 최근 영지식 증명의 발전으로 이러한 조건들이 함께 해결될 수 있는 새로운 가능성이 열렸으며, 이번 게시글을 통해 우리는 이를 확인했습니다.

다음으로 연재되는 내용은 우리의 두 번째 질문인 ‘블록체인에서 영지식 증명은 어떻게 구현될까?’에 대한 답으로 이루어지며, Zether의 영지식 증명 활용에 대한 구체적인 정보를 제공합니다.

디사이퍼 — 안녕지식팀 소개

정현, 김수민, 박성완, 오아영

--

--