CRS 행사 폐막과 함께 zkLogin 출시 킥스타트

100명 이상의 참가자가 성공적인 기념식에 기여했습니다.

CRS 행사 폐막과 함께 zkLogin 출시 킥스타트

지난주, Sui 재단은 메인넷에 Sui의 새로운 인증 프리미티브 출시에 중요한 단계인 zkLogin 행사를 성공적으로 개최했습니다. zkLogin을 통해 사용자는 OAuth를 사용하여 구글이나 트위치와 같은 웹2.0 자격 증명으로 지갑 주소를 생성할 수 있습니다. OAuth 아티팩트의 프라이버시를 보호하기 위해 영지식 소유 증명이 제공되어 아티팩트 자체를 공개하지 않고도 사용자가 실제로 권한을 부여받았는지 확인할 수 있습니다.

zkLogin은 영지식 증명을 인스턴스화하기 위해 Groth16 zkSNARK 구조를 사용하며, 더 높은 효율성을 달성하기 위해 Groth16은 신뢰할 수 있는 당사자가 계산별 CRS(공통 참조 문자열)를 설정해야 합니다. zkLogin은 고액 거래의 안전한 보관과 중요한 스마트 컨트랙트의 무결성을 보장해야 하므로, 시스템의 보안은 단일 주체의 정직성에만 의존할 수 없습니다. 대신, zkLogin 회로를 위한 CRS를 생성하기 위해 Sui 은 다수의 당사자 중 일부의 정직성을 가정한 보안을 기반으로 하는 프로토콜을 실행해야 합니다. zkLogin 의식은 이러한 당사자들이 필요한 CRS를 생성하는 과정입니다.

기념식은 어떤 행사였나요?

Sui zkLogin 행사는 본질적으로 다양한 참여자 그룹에 의해 수행된 암호화 다자간 연산(MPC)을 통해 이 CRS를 생성했으며, 보우, 가비존, 미어스가 설명한 MPC 프로토콜 MMORPG를 따릅니다. 프로토콜은 대략 2단계로 진행됩니다. 첫 번째 단계에서는 타원 곡선 요소 g의 지수에서 비밀 수량 τ의 일련의 거듭제곱, 즉 g, , gτ2,...,gτn 형식의 결과를 얻습니다. 이 단계는 회로에 구애받지 않기 때문에 기존 커뮤니티에서 기여한 영구적인 타우의 거듭제곱의 결과를 채택했습니다. 저희의 기념식은 두 번째 단계로, zkLogin 회로에 특화되어 있습니다.

MMORPG 프로토콜은 사전 동기화나 순서 없이도 무한한 수의 파티가 순차적으로 참여할 수 있도록 합니다. 각 파티는 이전 파티의 결과물을 다운로드하고, 자체적으로 무작위성을 생성한 다음, 수신된 결과물 위에 레이어링하여 자신의 기여도를 생성하고, 이를 다음 파티에 전달해야 합니다. 프로토콜은 참가자 중 적어도 한 명이 프로토콜을 충실히 따르고 강력한 무작위성을 생성한 후 이를 안정적으로 폐기하는 경우 보안을 보장합니다.

기념식은 어떻게 진행되었나요?

다양한 배경과 소속을 가진 100명 이상의 사람들에게 초대장을 보냈습니다: Sui 검증자, 암호학자, 웹3.0 전문가, 세계적으로 유명한 학자, 비즈니스 리더. 행사는 9월 12~15일(이후 9월 18일로 연장)로 예정되어 있었습니다. 참가자들은 정해진 시간이나 약속 없이 원하는 시간에 참여할 수 있었습니다.

MPC는 순차적으로 진행되기 때문에 각 기여자는 이전 기여자가 완료할 때까지 기다려야만 이전 기여를 받고, MPC 단계를 따라 자신의 기여를 생성할 수 있었습니다. 이러한 구조로 인해 참가자들은 자신보다 먼저 참여한 사람들이 완료하는 동안 대기열에 서서 기다렸습니다. 참가자를 인증하기 위해 각 참가자는 고유한 활성화 코드를 받았습니다. 활성화 코드는 서명 키 쌍의 비밀 키로, 조정 서버가 참가자의 이메일을 기여와 연결하고 해당 공개 키로 기여를 검증하는 두 가지 용도로 사용되었습니다.

참가자들은 브라우저 또는 도커를 통해 두 가지 방법으로 참여할 수 있었습니다. 브라우저 옵션은 프로세스의 모든 부분이 브라우저에서 이루어지므로 더 사용자 친화적이었습니다. 도커 옵션은 도커 설정이 필요했지만 도커파일과 기여자 소스 코드가 오픈 소스이며 전체 프로세스를 검증할 수 있다는 점에서 더 투명했습니다. 브라우저 옵션은 snarkjs를 활용했고, Docker 옵션은 Kobi의 구현을 활용했습니다. 이를 통해 소프트웨어의 다양성을 제공하여 기여자가 가장 신뢰하는 방법을 선택할 수 있도록 했습니다. 또한 참가자는 임의의 텍스트를 입력하거나 임의의 커서 움직임을 통해 엔트로피를 생성할 수 있었습니다.

zkLogin 회로와 행사 클라이언트 코드는 오픈 소스로 공개되었으며, 참가자들이 원할 경우 행사 전에 검토할 수 있도록 링크가 제공되었습니다. 또한 개발자 문서와 zkSecurity의 회로에 대한 감사 보고서가 게시되어 검토할 수 있도록 했습니다. 챌린지 #0081은 80개의 커뮤니티 기여를 통해 채택되었으며, 이는 회로에 구애받지 않는 1단계의 영구적인 타우의 힘에서 비롯되었습니다. 편향성을 제거하기 위해 에포크 #3298000에서 드랜드 랜덤 비콘의 출력이 적용되었습니다. 2단계에서는 브라우저에서 82개, 도커에서 29개 등 총 111개의 기여가 있었습니다. 마지막으로, 에포크 #3320606의 드랜드 랜덤 비콘의 출력을 적용하여 기여의 편향을 제거했습니다. 모든 중간 파일은 1단계의 경우 여기, 2단계의 경우 여기 지침에 따라 재현할 수 있습니다.

다음 단계는 무엇인가요?

모든 참여자의 기여 기록과 함께 최종 CRS는 공개 리포지토리에서 확인할 수 있습니다. 기여자는 작업 중이던 이전 기여의 해시 및 기여 후 결과 해시를 모두 화면에 표시하고 이메일을 통해 전송받습니다. 기여자는 이 해시를 행사 사이트에서 공개적으로 제공되는 트랜스크립션과 비교할 수 있습니다. 또한 누구나 해시가 올바르게 계산되었는지, 각 기여가 최종 매개변수에 제대로 반영되었는지 확인할 수 있습니다.

참가자는 자신의 이름과 소속을 공개할지 여부를 선택하도록 요청받았습니다. 익명의 참가자의 경우, Sui 재단은 참가자의 이메일을 알 수 있지만 공개되지 않습니다. 이름 공개에 동의한 참가자는 Github에 공개됩니다.

개발자는 Sui의 문서를 사용하여 세레모니 CRS가 탑재된 zkLogin을 테스트해 볼 수 있습니다.

감사합니다!

이 행사는 zkLogin 출시의 상서로운 시작이었습니다. 초반에 많은 인파가 몰려 대기 시간이 길어지는 등 우여곡절이 없었던 것은 아니지만, 이번 행사를 통해 얻은 교훈은 향후 행사에 큰 도움이 될 것입니다.

Sui 커뮤니티는 몇 시간을 기다리며 여러 번 시도하고 귀중한 시간을 내어 신청서에 자신의 흔적을 남기신 분들께 말로 표현할 수 없을 만큼 감사한 마음을 전합니다. 특히 많은 참가자들이 블로그와 트위터를 통해 자신의 경험을 공유하는 것을 보고 매우 기뻤습니다!

이번 행사를 성공적으로 개최할 수 있도록 도와주신 모든 분들께 감사드립니다. 이제 빌드를 시작합시다!