영지식 증명의 봄
블록체인 세계에서 영지식 증명은 핫한 토픽입니다. 너도나도 영지식 증명을 사용한다고 광고해왔죠. 그러나 영지식 증명을 이해하고 구현할 능력이 있는 프로젝트는 많지 않았습니다. 프로그래머가 내부가 어떻게 동작하는지 모른 체 블랙박스처럼 사용할 수 있는 도구가 부족했습니다.
우선 영지식 증명의 대가 Ben Sasson 교수가 갑작스럽게 실험적인 생물이 폭발적으로 등장한 캄브리아기에 빗대어 현재를 암호학 증명의 캄브리아기 폭발로 비유할 정도로 빠르게 발전하고 있습니다. 이들의 장단점을 따지고 적절히 사용하려면 복잡한 이론을 이해해야 하는데 암호학과 개발을 둘다 잘하는 전문가를 확보한 팀은 Zcash 등 손에 꼽힙니다. 이런 상황이 개선될 조짐을 보이고 있습니다.
Aleo (8월 19일)를 시작으로 Coda Pickles (8월 20일), Starkware Cairo (8월 31일), Zcash Halo 2 (9월 1일)가 최근 한 달도 안되는 기간에 발표되었습니다.
Aleo - 수면 아래 있다가 갑자기 등장한 프로젝트로, 당장 사용할 수 있는 프로그래밍 언어 Leo와 통합개발도구(IDE), 패키지 매니저를 제공합니다. 트랜잭션 검증과 PoW를 영지식 증명으로 통합한 방식이며 현재 Marlin 영지식 증명 기법을 적용하고 있습니다.
Coda Pickles - Coda판 영지식 증명 Dapp인 Snapps를 개발할 수 있습니다. 이번주에 Pickles 기능이 사용할 수 있는 테스트넷을 시작할 예정이고, 개발 도구도 곧 공개합니다. 최근 발전한 성과를 도입하여 trusted setup이 없는 recursive composition이 가능합니다.
Starkware Cairo (CPU Algebraic Intermediate Representation) - 프로그램마다 검증 프로그램이 다른 기존 영지식 증명 기법을 ASIC에 비유하고, Cairo는 CPU 처럼 하나의 검증 프로그램이 다양한 프로그램을 검증할 수 있습니다. (일종의 zk-rollup으로 30만개 트랜잭션을 증명 하나로 검증하는) Reddit 대회를 시작으로 DeversiFi, ImmutableX, dYdX 등 거래소에 적용중입니다. Cairo라는 동명의 저수준 언어와 Solidity 컴파일러 등을 공개할 예정입니다.
Zcash Halo 2 - 작년에 발표한 (trusted setup이 없고, 여러 증명을 모아서 하나의 증명처럼 검증 가능한) Halo을 (Sonic을 PLONK로 대체) 개선하여 오픈소스로 Halo 2를 공개했습니다. 이더리움 재단에서 12만 달러 지원금을 받았고, 내년까지 Zcash가 사용할 수 있을 수준으로 발전시킬 예정입니다. 최근 MetaMask가 매달 사용자가 만명 이상인 경우 정식 계약이 필요하도록 라이선스를 변경했습니다. 비슷한 취지에서 1년 후 오픈소스로 공개하는 TGPPL(Transitive Grace Period Public License)를 실험적으로 Halo 2에 적용했습니다.
연달아 새로운 기법이 발표되다보니 Pickles 소개 글의 비교표가 몇일만에 반박되었습다.
영지식 증명은 어떤 정보를 상대방에게 공개하지 않고, 해당 정보가 미리 정한 조건을 만족한다는 증거를 제시하여 상대방을 납득시킬 수 있다. 블록체인에 영지식 증명을 도입하면, 프라이버시와 확장성을 개선할 수 있습니다. trustless 인터체인에도 영지식 증명을 사용하려는 움직임이 있습니다.
프라이버시는 송금자와 송금액을 숨기면서 해당 송금 트랜잭션이 (토큰의 소유자가 자신의 잔액 중 일부를 송금한다는) 유효함을 증명합니다. DID 영역에서 나이를 숨기면서 성인임을 증명할 수도 있습니다.
확장성은 모든 노드가 모든 트랜잭션을 검증한다는 기존 블록체인의 가정을 깹니다. 모든 노드가 모든 트랜잭션을 검증하는 것은 블록체인 안정성을 보장하는 기초였고, 동시에 병목이였습니다. 만약 트랜잭션을 검증했다는 증명만 블록체인에 올린다면, 더 나아가 여러 트랜잭션을 검증했다는 하나의 증명만 블록체인에 올린다면, 그리고 모든 트랜잭션을 일일이 검증하는 것보다 증명 하나만 검증하는 시간이 짧으면, 블록체인은 더 많은 트랜잭션을 처리할 수 있습니다.
확장성 측면에서 영지식 증명과 함께 등장하는 주제가 stateless blockchain입니다. 현재 비트코인의 체인정보는 300 GB를 넘고, 이더리움은 거의 500 GB이 필요하며 아카이브 모드라면 5 TB 정도 SSD가 필요합니다. 블록체인 체인정보는 시간이 지날수록 계속 증가하여 노드 운영을 부담스럽게 만듭니다. 우리가 블록체인과 동의어로 여기는 머클 트리를 대체하여 작게 요약한 체인정보만으로 트랜잭션을 검증할 수 있는 기법이 연구되고 있습니다. (물론 이 경우에도 블록 익스플로러 등을 위해 모든 체인정보를 저장하는 노드가 필요합니다. 이런 역할을 하는 노드를 archiver 등으로 부릅니다. 다만 모든 노드가 모든 체인정보를 동일하게 저장할 필요는 없다는 말입니다.) 작은 연산량과 작은 저장공간만 필요하다면, 모바일 기기 등에서 노드를 운영할 수 있게 됩니다.
물론 앞으로 가는 길에 장애물이 없는 것은 아닙니다. 대표적인 문제 중 하나는 증명 생성 시간입니다. 검증은 시간이 짧게 걸리지만, 현재 증명을 만드는 작업은 몇분대로 시간이 걸리는 편입니다. 채굴자나 트랜잭션 중간 취합자(aggregator)들이 블록에 담길 트랜잭션을 검증했다는 증명을 만드는 시간이 블록타임 안에 안끝납니다. 이 문제를 해결하기위해 (zk-rollup) 파이프라인, (Flow) 합의와 실행을 분리, (이더리움) delayed execution 등 기법이 제안되었습니다.
이렇게 영지식 증명을 대중화하는 기반이 생각보다 빠르게 준비되고 있습니다.
