Learn-to-Earn으로 $4250 번 썰.one

Harmony Zero-Knowledge University 2nd cohort 수료 후기

Boom Labs는 Web 3 개발자들을 온보딩시키고, 생태계를 활성화시키기 위해 교육을 비롯한 여러 활동들을 하고 있습니다. 저희 비전에 공감하여 동참하고자 하는 분들은 Boom Labs의 문을 두드려주세요!

Disclaimer: 이 글은 정보 전달을 위한 목적으로 작성되었으며, 특정 프로젝트에 대한 투자 권고, 법률적 자문 등 목적으로 하지 않습니다. 모든 투자의 책임은 개인에게 있으며, 이로 발생된 결과에 대해 어떤 부분에서도 Boom Labs는 책임을 지지 않습니다. 본문이 포괄하는 내용들은 특정 자산에 대한 투자를 추천하는 것이 아니며, 언제나 본문의 내용만을 통한 의사결정은 지양하시길 바랍니다.

What is zku.one?

Harmony Protocol은 EVM-compatible한 Layer 1 블록체인이다. 2018년에 제네시스 블록이 마이닝 되었고, 확장성을 확보하기 위해 ETH2 에서 제시한 샤딩과 PoS 개념을 도입하였다. 최근에는 DeFi Kingdom으로 국내외에 이름을 알렸다. 재미난 점은, Harmony Protocol은 Web3 분야의 영역을 넓힌다는 미명 아래에 Harmony 위의 DAO 결성 및 펀딩 계획, zkSync 및 zkEVM 통합 계획, Social Token 활성화를 위한 펀딩 계획을 2026년까지의 로드맵으로 공개하고 진행 사항을 꾸준히 업데이트하고 있다는 것이다.

이 원대한 계획 중 하나로, 2026년까지 Harmony Protocol 위에서 영지식 증명 기술을 활용해 dApp을 빌딩하는 개발자 1만명을 육성하겠다는 포부가 있다. 이를 달성하기 위해 Harmony Protocol은 지난 ETH Lisbon 2021에서 Solidity 개발자들을 위한 영지식 증명 부트캠프 (zku.one)의 운영 계획을 밝히고, 올해 1월부터 1기 교육을 시작했다. 해당 부트캠프는 Semaphore, circom, Mina Protocol 등을 활용하여 작은 단위의 영지식 증명 dApp을 제작해보는 과정으로 이루어져 있다. 또한, Tornado Cash, Celo Protocol Plumo, Flyclient bridge, Celestia Data Client와 같이 영지식 증명을 활용한 프로젝트의 코드를 스스로 분석 및 리뷰하는 과정도 준비되어 있다.

잠깐! 영지식 증명이란?

영지식증명(ZK증명, Zero-Knowledge)은 증명자와 검증자 사이에서 발생하는 문제를 특정 정보가 없더라도 검증할 수 있는 방식이다. 지식이라는 것은 결국 어떠한 정보를 의미하며 개인정보와 밀접한 관계를 가질 수 있다.

하지만 앞에 zero, 즉 어떠한 정보도 들어내지 않는다는 영지식과 증명이 하나로 만난 용어이다. 결국 영지식 증명의 의미로는 “정보를 노출하지 않고 증명하는 것” 을 의미한다. 가장 핵심적이고 가장 궁금한 부분은 어떻게 정보를 노출하지 않고 증명하는가에 대해서이다.

참고로 어떤 정보가 사실이라는 것을 증명하려는 쪽을 증명자, 증명 과정에 참여해 증명자와 정보를 주고받는 쪽을 검증자라고 한다.

일반적으로 증명자는 검증자에게 정보를 제공해 이에 대한 검증 절차를 진행한다.

하지만 영지식증명은 증명자와 검증자 사이에 정보 자체가 전달되지 않은 상태에서도 검증이 가능하도록 한다. 이를 위해 완전성, 건전성, 영지식성이라는 3가지 요구 사항을 충족해야 한다.

완전성은 신뢰할 수 있는 증명자가 높은 수준의 정확도로 관련 정보를 알고 있다는 사실을 신뢰할 수 있는 검증자에게 입증하는 것을 말한다.

건전성은 어떤 정보가 거짓이면, 신뢰할 수 없는 증명자가 어떤 거짓말을 해도 검증자에게 그 정보가 사실이라고 절대 납득시킬 수 없는 특성이다.

영지식성은 어떤 정보가 사실이면 검증자는 사실이 맞다는 정보 이외에는 아무 것도 알 수 없는 특징을 의미한다. — 코인데스크 코리아주니어 개발자로 살아남기 블로그

Hashed CTO 이신 Dr. Keccak님이 발표한 영지식 증명에 대한 기초적 소개 영상

zku.one은 Learn-to-Earn 이라는 슬로건을 제시하고 있다. 8주 간의 과제를 제출하여, 일정 수준 이상의 성적을 거두고 최종 프로젝트까지 성공적으로 런칭한 학생을 대상으로 총 $3750 어치의 USDC를 지급하고, zku.one의 DAO 멤버에 합류할 수 있는 기회를 제공하고 있다. zku.one의 DAO 멤버로 합류하면, Harmony Protocol을 포함한 유수영지식 증명 프로젝트에 참여할 수 있는 커리어 기회를 제공한다. 본인만의 영지식 증명 관련 프로젝트가 있다면, Harmony Protocol에서 Grant를 받아 1년 동안 $10,000 어치의 USDC를 지원받을 기회도 주어진다.

UCLA의 교수로 재직하고 있는 Hakwan Lau씨는 Harmony Protocol에서 zkDAO의 governor로 활동하고 있다

어떻게 참여하게 되었나?

나는 NFT 멤버십을 보유하고 있는 Developer DAO에서 zkDAO의 2기 모집 홍보 게시글을 보게 되었다. 일단 수료하면 $3750 상당의 USDC를 지급한다는 내용에 혹했다. Learn-to-Earn 이라는 것 아닌가? 8주 과정의 과제 중, 최우수 과제로 선정되면 과제 제출내용을 오픈소스로 공개한다는 조건 하에 $500 달러를 추가로 지급받을 수 있다. 대학의 암호학 연구자가 아닌, 고수준 언어를 사용한 경험만 보유한 일반 개발자가 영지식 증명을 실무적인 수준에서 공부할 수 있는 기회는 부족하다. 그런데 실제로영지식 증명을 활용한 dApp을 개발하는 방법도 알려주는데, 수료하면 돈까지 준다고 하니 혹해버렸다. 그렇게 2월 말부터 5월 말까지 약 3달 동안 진행하는 2기 과정을 신청하게 되었다.

zkDAO에 지원하려면 사전 과제 (Pre-assignment) 를 제출해야 한다. 해당 사전과제는 지원자의 Solidity 언어 구사능력을 테스트하는 과제이다. 사전 과제는 공개되어 있는데, 아래 링크를 확인하면 그 과제의 내용에 대해 알아볼 수 있다. 간단하게 Ballot 컨트랙트를 살펴보고, 이 컨트랙트에 대한 코드를 리뷰하도록 안내되어 있는 자료이다.

과정 전반에 대한 리뷰

1주차에서는 circom에 대해서 학습하는 시간을 가진다. circom은 zk-SNARKs라는 프레임워크를 구현할 수 있는 언어인데, 이를 연습할 수 있는 자료로 이루어져 있다. 예를 들어 다음의 문제가 주어진다.

💡 1. Construct a circuit using circom that takes a list of numbers input as leaves of a Merkle tree (Note that the numbers will be public inputs) and outputs the Merkle root. For the Merkle hash function, you may use the MiMCsponge hash function from circomlib. For simplicity, you may assume that the number of leaves will be a power of 2 (say 4) and the input will look like this {“leaves”:[1,2,3,4]}

머클 트리의 입력값으로 leaves를 받고, 이 leaves에 대한 숫자가 2의 제곱이라는 사실을 증명할 수 있는 영지식 회로를 작성하라는 형태의 문제가 주어진다. 이러한 형태의 문제가 약 4문제, 많으면 7문제까지 주어진다. 따라서 이러한 문제를 잘 해결하는 것이 중요한 요소가 된다. 문제 해결의 등급은 훌륭 — 보통 — 미흡으로 나뉘어지며, 미흡 시에는 해당 과제가 졸업 시에 필요한 과제 통과 갯수에 카운팅되지 않는다.

2주차에서는 zkVM에 대해 학습하는 시간을 가진다. 현존하는 모든 영지식 기반의 가상머신 모델을 모두 비교해야 하는 과제가 주어진다. 이 때 Semaphore라는 자바스크립트 기반의 영지식 증명 라이브러리를 사용하는 시간을 가진다. Semaphore를 사용하여 Elefria 프레임워크를 사용하는 방법에 대해 학습할 수 있다. 마지막으로 이 시간에는 Tornado Cash라는 mixer에 대해 학습할 수 있는 시간도 가진다. 예를 들어, 아래와 같은 질문이 주어진다.

Take a look at the circuits/TreeUpdateArgsHasher.circom and contracts/TornadoTrees.sol. Explain the process to update the withdrawal tree (including public, private inputs to the circuit, arguments sent to the contract call, and the on-chain verification process).

Why do you think we use the SHA256 hash here instead of the Poseidon hash used elsewhere?

Run the tests and add a screenshot of all the tests passing.

직접 코드를 까서 라인-바이-라인으로 리뷰하라는 의미이다. 테스트도 실행해보고, 한번 내용도 바꾸어보고, 가스비가 더 들어가는 경우에는 어떻게 내용이 바뀔지도 한번 생각해보고 하라는 뜻이다. 이 내용을 영어로 500자 이상 매 질문마다 작성해야 한다. 상당히 챌린징할 수 밖에 없다. 모르는 내용이 있으면 물어봐야 한다. 학습 자료가 주어지고, 가끔 강의 영상이 올라오기는 하지만 생각보다는 불친절하다. 모든 내용을 커버하기에는 방대하기 때문이다. 따라서 디스코드 채널을 이용하여 수강생 및 멘토진 간의 디스커션 과정이 필요하다. 멘토진의 경우 이전 기수를 졸업한 사람들이거나 영지식 증명 관련 랩실에서 연구를 하고 있는 사람들이 질문을 받아준다. 참고로 아래에 있는 Cathie 라는 사람은 홍콩 대학에서 현재 암호학 박사과정을 거치고 있는 인물이다.

매주 일요일 UTC 기준으로 0시에 과제가 올라오고, 매주 화요일 및 목요일 한국기준 새벽 시간에 AMA 시간이 있어서 모르는 것을 물어보거나 추가 강의를 요청할 수 있다. 그리고 차주 월요일에 과제 제출이 마감된다. 과제 제출이 마감되면, 이번 과제에 가장 도움이 되었던 학생을 추천하라는 내용을 받는다. 한 2–3일 정도 받고, 과제 채점 결과가 개인 DM으로 통보된다. 만약 우수 과제로 선정되거나 동기 또래들에게 도움을 준 우수 학생으로 선발된다면, KYC 과정을 거쳐 상금을 얻을 수 있다. 나는 4주차 과제에서 우수 과제로 선정되어 장학금을 받았다.

우수 과제로 선정되었던, Mina Protocol로 만드는 영지식 행맨 게임 zk-Hangman 프로젝트

3주차에는 MACI 라고 하는, Verifiable Delay Functions (VDF) 에 대해 학습한다. 4주차 과정에서는 Mina Protocol이라는 타입스크립트 기반의 영지식 증명을 활용한 디앱을 제작할 수 있는 실습 시간을 가진다. 또한, zkSync, zkPorter와 같은 Layer 2에서의 영지식 증명 기반의 롤업이 어떻게 동작하는지 코드 레벨에서 비교하도록 하는 리뷰 과제가 기다리고 있다. 5주차 과정에서는 Aztec Protocol 및 ZCash에서 zk-SNARKs가 별도의 ceremony 과정을 거쳐야 하는 이유에 대해 탐구하는 과제가 주어진다.

이 외에도 NEAR 프로토콜의 Rainbow Bridge 등의 브릿지 디자인에 대해 학습할 수 있는 자료가 주어진다. 6, 7주차 과정에서는 최종 프로젝트를 진행할 주제에 대한 제안서를 제출해야 하며, 블록체인의 탈중앙성을 더욱 확보하기 위해 Light Client를 zk 기반으로 구현하는 Celo의 Plumo, Horizon 등에 대해 학습할 수 있는 시간이 주어진다.

Plumo를 학습하며 그렸던 장표

자세한 강좌 실라버스는 다음 링크에서 확인할 수 있다.

나는 최종 프로젝트를 선정할 때 다음의 유튜브를 집중해서 보았다. zkPhoto라는 프로젝트가 인상적이었는데, 만약 우리가 알프스 산맥을 찍은 4K 해상도 사진을 NFT로 팔고 싶다고 생각해보자. 내가 진짜 4K 사진을 가지고 있는지 증명하려면 나는 4K 사진 크기의 해상도 사진을 찍어서 올려야 한다. 그런데 누군가 그 사진을 다른 이름으로 저장해버리면 NFT는 무용지물이 될 것이다. 그래서 판매자는 4K 사진을 저화질 사진으로 변환한 다음, NFT 소개 사이트에 올린다. 그리고, 내가 직접 4K 사진을 진짜 들고 있고 그걸 가지고 변환한 저화질 사진이라는 사실을 증명하는 proving key를 업로드 한다. 이 프로젝트를 보고 영지식 증명이 블록체인의 쓰임새를 확장할 수 있는 기술이라는 생각을 가지게 되었다.

내가 직접 과제 제출을 위해 그려본 zk-SNARKs의 동작방식을 간략하게 나타낸 그림

내가 진행한 프로젝트는 Dark Forest 라는 이더리움 기반 게임의 상위 라운드 진출자임을 증명할 수 있는 NFT를 발급해주는 웹 사이트다. 특징은 나의 순위가 상위 몇 %에 들었다는 사실을 증명할 수 있는 NFT이나, NFT를 발급할 때는 내가 몇 등인지 자체는 숨길 수 있다는 것이다. 무슨 말이냐? 내가 이번 라운드에서 플레이했을 때 3등이라고 해보자. 그런데 게임의 설계 상 다음 라운드에서는 이전 라운드의 구체적인 순위를 숨기는 것이 게임의 재미 포인트를 올리는 요소가 된다. 따라서 라운드 별로 플레이하는 이더리움 주소를 서로 다르게 한다. 그리고, 내가 현재 이더리움 지갑 주소에서 플레이한 라운드의 순위를 인증한 다음, 상위 진출자라는 사실을 증명할 수 있는 NFT를 “발급할 수 있는” nullifier 라는 암호문을 발급받는다. 나는 새로 이더리움 지갑을 만든 다음, 이 지갑을 이용하여 웹 사이트에 접속한다. 그리고 이전 주소에서 발급받은 nullifier를 입력한다. 그러면 나는 실제 플레이했던 지갑 주소를 숨기고, 새로운 라운드에서 정보를 숨긴 채 게임을 플레이할 수 있게 된다. 정치질이 가능한 시스템을 블록체인으로 만드는 것이다.

https://github.com/sigridjineth/zkIdentity

과정을 추천하는가?

매우 추천한다. 영지식 증명에 대해 학습하고 싶었지만 제대로 학습할 수 있는 링크가 정리되어 있는 강좌는 처음 보았다. 그리고 영지식 증명에 대해 관심이 있는 연구자들이 한 곳에 모여있는 채널을 발견하기도 쉽지 않은데, 이곳에서 찐하게 질문을 주고받을 수 있어 행복했다. 실제로 나와 같이 디스커션을 열심히 했던 인도 친구가 있었는데, 실제로 인스타그램 맞팔도 하고 한국에 한번 놀러오겠다 이런 이야기도 하면서 친해졌다. 방구석에 갇혀서 글로벌한 친구도 사귀고 아주 재미있는 경험이었다.

현재 나는 위의 zkIdentity 프로젝트를 확장하여, NFT 발급자가 사전에 NFT를 발급할 수 있는 nullifier 발행 가능 주소를 컨트랙트에 업로드할 수 있는 기능을 제공할 것이다. 이를 통해 굳이 Dark Forest 라는 특정한 게임을 타겟팅하는 것이 아니라, 경우에 따라 계속해서 NFT 민팅 발급 가능한 주소를 업데이트하거나 삭제할 수 있는 기능을 추가하려고 한다. 이를 통해 Harmony Protocol에서 Grant를 받아 사이드 프로젝트로 발전시키려고 한다.

Only the pre-arranged, registered address sets can mint an NFT, which is designated by the manager when deploying the contract. The pre-registered address can mint an NFT to prove the identity. We provide the features for both sides, the manager to deploy the contract with a set of pre-registered addresses. Managers can also register/unregister users by manipulating the contract’s Merkle tree. The user who has a pre-registered address, to mint an NFT to another account using a private key. — Grant Program to Harmony Protocol

그리고 가장 중요한 것. 실제로 돈을 넣어주었다. 2기 기수에 첫 시작했을 때에는 참여자가 100명 안팎이었는데, 최종 졸업자는 약 20명 남짓이었다. 다른 학생들이 진행한 프로젝트는 다음 링크에서 확인할 수 있다.

나의 소중한 지갑 주소는 가렸다.

가장 어려운 점은 모든 과정이 영어로 진행된다는 점이다. 영어로 7문제에 대한 에세이를 작성해야 하고, 때로는 멘토와 함께 줌 챗을 통해 대화를 해야 하는 경우도 있다. 나는 TA 면접을 보고 낙방하긴 했지만, Plumo에 대해 설명해보라는 말을 듣고 안되는 영어를 가지고 땀을 뻘뻘 흘리며 소개했던 기억이 난다. Solidity와 같이 블록체인과 관련된 지식은 그렇게까지 장벽이 아니다. 문제는 내가 봐야하는 모든 자료가 영어이고, 내가 작성해야 하는 모든 과제가 다 영어로 작성해야 한다는 것이다. 따라서 영어로 뭔가 글로벌한 경험을 하고 싶다는 분에게도 도움이 될 수 있겠다.

이런 식으로 컨퍼런스에서 같이 만나서 대화하기도 하고..

마지막으로 내가 작업한 모든 과제는 오픈소스로 공개했다. 다음 저장소에 가면 나의 과제 작업물을 볼 수 있다. 사전과제 작업물은 다음 저장소에 있다.

앞으로의 다짐

zku.one 프로그램의 관리 및 운영 주체인 zkDAO에서 활동하면 앞으로 해당 부트캠프의 자금 트레져리를 같이 관리하거나, 교육 프로그램 제작에 참여할 수 있다고 한다. 참고로 zkDAO는 graduate을 위해 NFT가 발급되고, 해당 NFT를 인증하면 다오 거버넌스에 참여할 수 있는 디스코드 채팅방으로 안내된다.

최근에는 영지식 증명 프로젝트를 진행하는 몇 곳에서 인재를 채용하기도 했고, 개인적으로 링크드인 메시지를 받기도 했다. 만약 영지식 증명 관련하여 공부를 더 하고 싶거나 커리어를 쌓아가고 싶다면 확실히 네트워킹에 유리한 것 같다. 나도 계속해서 영지식 증명을 학생의 입장에서 공부해보려고 한다. (주: 개인적으로 학교를 복학해야 겠다고 생각한 지점도, 이론적 베이스가 전무하다는 한계를 느꼈기 때문이다.)

현재 4기 여름기수를 모집 중에 있으며, 사전 과제는 6월 말까지 받는 것으로 알고 있다. 관심이 있으신 분은 아래 링크에 접속해서 알아보시면 좋겠다.

--

--