이더넷의 공동 창립자인 비탈릭 부테린은 홍콩에서 열린 Web3 카니발 2024에서 DRK Lab이 주최한 Web3 Scholars Summit 2024에서 "프로토콜 설계의 한계에 도달하기"라는 주제로 기조연설을 했습니다.
다음은 DeThings에서 약간 편집한 중국어 대본입니다:
프로토콜을 구축하는 데 사용하는 기술의 종류는 지난 10년 동안 많은 변화를 겪었습니다. 2009년 비트코인이 탄생했을 때만 해도 비트코인은 매우 단순한 암호화였고, 비트코인 프로토콜에서 볼 수 있는 암호화 유형은 해시 및 타원 곡선 ECDSA 서명과 작업 증명(Pow) 뿐이었습니다.
작업 증명은 해시를 사용하는 또 다른 방법일 뿐입니다. 2020년대에 프로토콜을 구축하는 데 사용될 기술 유형을 살펴보면, 지난 10년 동안만 존재했던 훨씬 더 정교한 기술들이 등장하기 시작할 것입니다.
이러한 기술들은 실제로 오랫동안 사용되어 왔기 때문에 기술적으로는 수십 년 동안 PCP 정리가 존재해 왔습니다. 2009년 크레이그 젠트리가 완전히 동형화된 암호화를 발견한 이래로 완전히 동형화된 암호화를 사용해 왔습니다. 수십 년 동안 우리는 양면 연산 형식인 가블링 회로를 사용해 왔습니다. 하지만 이러한 기술을 이론적으로만 사용하는 것과 실제로 사용하는 것에는 차이가 있습니다.
실제로는 블록체인 분야 자체가 많은 일을 해왔고, 실제로 이러한 기술을 일반 애플리케이션에서 사용할 수 있는 수준까지 끌어올리기 위해 많은 자원을 투입했다고 생각합니다.
2020년대에 블록체인이 구축되었을 때는 해시와 서명이 전부라고 생각했습니다. 2020년대에 구축된 옵저버 프로토콜은 처음부터 이 모든 것을 핵심 구성 요소로 간주합니다.
ZK-SNARKs의 주요 개선 사항
여기서 가장 먼저 중요한 것은 ZK-SNARKs입니다. ZK-SNARKs는 사용자가 계산을 수행했고 그 계산에서 어떤 결과를 얻었다는 것을 증명하는 기술입니다. 직접 계산을 실행했을 때보다 훨씬 빠르게 검증할 수 있는 방식으로 증명할 수 있습니다. 또한 원본 입력 정보를 공개하지 않고도 증명을 검증할 수 있습니다.
이론적 단계에 있던 2010년의 zK-SNARK와 그해 12월에 도입된 지캐시 프로토콜에서 처음 사용된 2016년의 zK-SNARK는 오늘날의 zK-SNARK와 비교하면 그 차이가 너무 크지 않나요?
따라서 이러한 많은 새로운 형태의 암호화폐는 사실상 알려지지 않은 틈새 관심사에서 주류로, 이제는 거의 기본 설정으로 자리 잡았습니다. 이러한 것들은 지난 10년 동안 극적으로 변화하고 개선되었습니다.
그 결과, Z-SNARK는 프라이버시 측면에서 매우 유용하고 확장성 측면에서도 매우 유용합니다. 블록체인은 어떤 기능을 하나요? 블록체인은 개방성, 권한 없는 액세스, 글로벌 검증 가능성 등 많은 이점을 제공합니다. 하지만 이 모든 것에는 두 가지 큰 희생이 따릅니다.
개인 정보 보호 및 확장성 희생
하나는 프라이버시이고 다른 하나는 확장성입니다. zk-snark는 프라이버시와 확장성을 모두 제공합니다.
2016년에 저희는 지캐시 프로토콜을 보았습니다. 그 후 이더리움 생태계에서 점점 더 많은 것을 보기 시작했습니다. 오늘날 거의 모든 곳에서 zkSNARK, 멀티파티 컴퓨팅, 완전한 동형 암호화를 사용하고 있습니다.
오늘날 사람들은 이러한 기능에 대해 잘 알지 못하지만, ZK-SNARK로 할 수 없는 특정 유형의 작업이 있습니다. 예를 들어, 사람들의 개인 데이터로 실행되는 프라이빗 컴퓨팅이 있습니다.
투표는 실제로 큰 사용 사례이며, zk-SNARK를 사용하면 일정 수준의 프라이버시를 확보할 수 있습니다. 하지만 정말 최고의 속성을 원한다면 MPC(다자간 계산)와 FHE(완전 동형 암호화)를 사용해야 합니다. 많은 암호화 AI 애플리케이션은 지난 10년 동안 효율성이 크게 개선된 기본 요소인 MPC와 FHE를 사용합니다.
BLS(보네-린-샤참)는 기본적으로 다수의 다른 참여자, 잠재적으로 수만 명의 참여자로부터 대규모 서명 집합을 받은 다음 단일 서명을 확인하는 것처럼 빠르게 해당 서명 집합을 확인할 수 있는 흥미로운 기술로 매우 강력합니다.
이는 매우 강력한 기능이며, BLS 집적은 실제로 이더리움의 최신 지분 증명 합의의 핵심 기술입니다. BLS 집계 이전에 구축된 지분 증명 합의를 살펴보면, 알고리즘은 검증자가 수백 명으로 제한되는 경우가 많았습니다. 이더리움에서는 현재 약 30,000명의 검증자가 12초마다 서명을 제출하고 있습니다. 이는 새로운 형태의 암호화가 지난 5~10년 동안에야 실제로 사용할 수 있을 정도로 최적화되었기 때문에 가능한 일이며, 이러한 새로운 기술이 많은 것을 가능하게 하고 있습니다."라고 말합니다.
이러한 기술은 빠르게 더 강력해지고 있습니다. 오늘날의 프로토콜은 이러한 기술을 모두 활용하고 있습니다. 새로운 프로토콜을 구축하기 위해 암호학의 작동 방식을 이해해야 했던 특수 암호학에서 특수 애플리케이션을 위한 특수 알고리즘을 구축해야 하는 일반화된 암호학으로 큰 변화를 겪었습니다. 예전에는 특수 목적 애플리케이션을 위해 특수 목적 알고리즘을 구축해야 했지만, 이제는 암호학자가 아니어도 지난 5분 동안 제가 말씀드린 내용을 사용하는 애플리케이션을 구축할 수 있습니다.
코드를 작성하고 Circom에서 코드를 작성하기만 하면 Circom에서 검증기와 검사기로 컴파일하여 zk-SNARK 애플리케이션을 만들 수 있습니다. 여기서 문제는 무엇일까요? 본질적으로 문제는 지난 10년 동안 우리가 먼 길을 왔다는 것입니다. 무엇이 남았나요? 현재 우리가 가진 것과 이론적 이상 사이의 격차는 무엇일까요? 저는 이 부분이 연구자와 학자들이 많은 일을 할 수 있는 핵심 분야라고 생각합니다.
현재 가장 큰 두 가지 이슈는 기본적으로 효율성과 안전성이라고 생각합니다. 이제 확장된 기능이라고 할 수 있는 세 번째 이슈가 있습니다.
예를 들어, 아직 완전히 마스터하지 못한 기술 중 하나는 비차별적 난독화입니다. 실행 가능한 알고리즘을 개발할 수 있다면 훨씬 더 놀라운 일이 될 것입니다. 하지만 현재로서는 효율성을 개선하고 보안을 강화하는 것이 더 중요하다고 생각합니다."
효율성에 대해 이야기해 보겠습니다. 이더 블록체인을 구체적인 예로 들어보겠습니다. 이더의 슬롯 시간은 12초입니다. 한 블록과 다음 블록 사이의 평균 시간은 12초입니다. 일반적인 블록 검증 시간, 즉 이더리움 노드가 블록을 검증하는 데 걸리는 시간은 약 400밀리초입니다.
이제 zk-SNARK는 일반적인 이더넷 블록을 검증하는 데 약 20분이 걸립니다. 1~2년 전만 해도 5시간이 걸렸던 시간이 빠르게 개선되었습니다. 이제 평균 20분이면 충분하죠? 여전히 최악의 시나리오는 존재합니다. 예를 들어 이더리움 블록이 있는데 전체 이더리움 블록이 zk-SNARK 계산을 하고 있다면 증명하는 데 20분 이상 걸릴 수 있습니다.
그래도 2년 전과 비교하면 많은 발전을 이루었습니다. 이제 목표는 무엇인가요? 목표는 즉각적인 증명입니다. 블록이 생성되면 다음 블록이 생성되기 전에 해당 블록의 증명을 얻는 것이 목표입니다.
즉각적인 증명은 무엇을 의미하나요? 기본적으로 전 세계의 모든 이더 사용자는 쉽게 이더 프로토콜의 완전한 인증 사용자가 될 수 있지만, 이더 노드를 보유한 사람은 극소수입니다. 실제로 노드를 아카이브하는 데 2TB가 필요하지만, 이는 매우 비효율적입니다. 브라우저 지갑, 모바일 지갑, 다른 체인의 스마트 컨트랙트가 있는 경량 지갑을 포함한 모든 이더리움 지갑이 실제로 이더리움 합의 규칙에 따라 완전히 인증되도록 만들 수 있다면 어떨까요?
어떤 사람들은 실제로 인퓨라를 신뢰하지 않습니다. 그들은 이더 지분 증명 검증자를 신뢰하지 않고 대신 규칙을 직접 검증하여 이더 블록이 올바른지 직접 확인합니다. ZK-SNARK로 이를 어떻게 할 수 있을까요? 이를 실제로 수행하려면 zK-SNARK 증명이 즉각적으로 이루어져야 하지만, 5초 이내에 모든 이더 블록을 증명할 수 있는 방법이 있어야 합니다.
문제는 우리가 거기에 도달할 수 있느냐는 것입니다. MPC와 FHE도 비슷한 문제를 안고 있습니다. 앞서 말씀드렸듯이 MPC와 FHE의 일반적인 사용 사례는 투표이며, 실제로 사용되고 있습니다. 약 3주 전에 베트남에서 이더리움 이벤트가 열렸습니다. 이 행사에서는 프로젝트와 해커톤에서 투표할 때 암호화된 보안 투표 시스템 중 하나인 MPC를 실제로 사용했습니다.
현재 MPC의 문제점은 일부 보안 속성을 중앙 서버에 의존하고 있다는 점입니다. 이러한 신뢰 가정을 탈중앙화할 수 있을까요? 네, 하지만 그러기 위해서는 MPC와 FHE가 모두 필요합니다. 문제는 이러한 프로토콜의 효율성을 보장하기 위한 오버헤드가 높다는 것인데, ZK-SNARK의 FHE를 사용하면 일반인이 기본적으로 사용하는 프로토콜이 되려면 각 투표를 증명하는 데 5달러의 계산 노력이 들지 않나요? 실시간으로 많은 수의 투표에 대해서도 신속하게 처리할 수 있어야 합니다.
zk-SNARK를 어떻게 하면 더 효율적으로 만들 수 있을까요?
그렇다면 ZK-SNARK의 목표를 어떻게 달성할 수 있을까요? 효율성 개선에는 크게 세 가지 범주가 있다고 생각합니다. 그 중 하나는 병렬화와 집계입니다. 이더리움 블록을 검증하는 데 최대 천만 개의 계산 단계가 필요하다고 상상해 보세요. 이러한 계산 단계를 각각 수행하고 각 단계에 대한 증명을 생성합니다. 그런 다음 증명 집계를 수행합니다.
처음 두 개의 증명을 취해 이를 증명합니다. 다음 두 개의 증명을 받아 이를 증명합니다. 다음 두 증명을 취하고 증명합니다. 처음 두 증명을 취하고 증명하면 트리가 생깁니다. 이 트리에서 약 20개의 단계를 거치면 전체 블록의 정확성을 나타내는 큰 증명을 얻을 수 있습니다.
이것은 오늘날의 기술로도 가능합니다. 이론적으로 5초 안에 블록의 정확성을 증명할 수 있습니다. 무엇이 문제일까요? 기본적으로 많은 병렬 연산이 필요하죠? 천만 번의 증명이 필요합니다. 그렇다면 이를 최적화할 수 있을까요? 병렬화를 최적화할 수 있을까요? 총 증명을 최적화할 수 있을까요? 대답은 '그렇다'입니다.
이를 수행하는 방법에 대한 이론적인 아이디어는 많이 있습니다. 하지만 이를 실용적인 것으로 바꿔야 합니다. 알고리즘 개선, 로우레벨 개선, 하드웨어 설계 개선, 효율성 개선이 결합된 것이므로 ASIC도 매우 중요합니다. 우리 모두 채굴에 ASIC이 얼마나 중요한지 보셨죠? 2013년에 ASIC이 처음 온라인에 등장했을 때 비트코인 파워가 얼마나 빠르게 성장했는지 기억합니다.
ASIC은 매우 강력하죠? ASIC은 기본적으로 동일한 하드웨어 비용과 전력으로 GPU의 100배에 달하는 해시를 처리할 수 있습니다. 문제는 SNARK 인증서에도 동일한 이점을 제공할 수 있을까요? 저는 대답은 '그렇다'라고 생각합니다. 그 결과, 점점 더 많은 회사에서 zK-SNARK를 증명하기 위한 ASIC을 만들고 있는데, 이는 zkEVM일 수도 있지만 실제로는 매우 일반적이어야 합니다. 모든 유형의 연산을 증명하기 위해 SNARK ASIC을 구축할 수 있어야 합니다. 이렇게 하면 시간을 20분에서 5초로 줄일 수 있을까요?
마지막으로 효율성이죠? 그러기 위해서는 더 나은 zK-SNARK 알고리즘이 필요합니다. Groth16도 있고, 룩업 테이블도 있고, 64비트 SNARK도 있고, STARK도 있고, 32비트 STARK도 있고, 다양한 아이디어가 있습니다. SNARK 알고리즘의 효율성을 더 향상시킬 수 있을까요? 더 SNARK 친화적인 해시 함수를 만들 수 있을까요, 더 SNARK 친화적인 서명 알고리즘을 만들 수 있을까요? 여기에는 많은 아이디어가 있으며, 여러분의 적극적인 참여를 권장합니다.
주요 보안 문제는 버그죠? 버그는 사람들이 많이 이야기하지 않는 가장 큰 문제 중 하나이지만 매우 중요한 문제라고 생각합니다. 기본적으로 우리는 모든 놀라운 암호화 기술을 가지고 있지만, 사람들이 회로에 어떤 종류의 결함이 있다고 걱정한다면 사람들은 그것을 신뢰하지 않을 것입니다. zK-SNARK든 zkEVM이든 모두 7000개의 스트로크 코드가 있습니다.
그리고 이는 매우 높은 효율을 자랑합니다. 평균적으로 코드 1000줄당 15~50개의 취약점이 존재합니다. 이더리움에서는 매우 열심히 일하고 있지만 코드 1000줄당 버그가 15개 미만이 아니라 0개 이상입니다. 수십억 달러의 자산을 보유하고 있는 시스템 중 하나에 취약점이 발생하면 암호화폐가 아무리 발전해도 그 돈은 손실됩니다.
문제는 기존의 암호화 기술을 제대로 활용하고 실수를 최소화하기 위해 무엇을 할 수 있을까요? 현재 사용되고 있는 기본 기술은 보안 위원회인데, 기본적으로 이더리움에 여러 사람이 모이고 그 중 75% 이상이 취약점이 있다고 생각하면 증명 시스템이 말하는 것을 무효화할 수 있습니다.
따라서 상당히 중앙화된 시스템이지만 현재로서는 최고의 시스템입니다. 가까운 시일 내에 다중 증명 시스템을 추가할 예정입니다. 다음은 이더 기반 롤업 중 하나인 스타크넷의 다이어그램입니다. 여러 개의 증명 시스템이 있다면 이론적으로 이중화를 통해 어느 한 곳에서 버그가 발생할 위험을 줄일 수 있고, 세 개의 증명 시스템이 있다면 그 중 하나에 버그가 발생하더라도 나머지 두 개는 정확히 같은 위치에 버그가 발생하지 않기를 바랍니다.
마지막으로, 앞으로 살펴봐야 할 또 다른 흥미로운 점은 인공지능 도구를 사용하는 것인데, 공식적인 검증을 위해 새로운 도구를 사용할 수 있겠죠? ZKEVM과 같은 것에 결함이 없다는 것을 수학적으로 증명하는 것과 같죠? 예를 들어 zkEVM이 이더리움에서 구현된 EVM 코드에서 검증되는 것과 똑같은 기능을 구현한다는 것을 실제로 증명할 수 있나요? 예를 들어, 가능한 모든 입력에 대해 하나의 출력만 있다는 것을 증명할 수 있나요? 이런 것들을 실제로 증명할 수 있다면 언젠가 버그가 없는 zkEVM 세상을 만들 수 있을지도 모릅니다.
말도 안 되죠? 지금까지 이 정도로 복잡한 버그 없는 프로그램을 만든 사람은 아무도 없었으니까요. 하지만 2019년에는 인공지능이 정말 예쁜 그림을 만들 수 있을 거라고 생각하는 사람은 아무도 없겠죠? 그래서 오늘 우리는 얼마나 많은 진전을 이루었는지 보았습니다. 우리는 인공지능이 어떤 일을 할 수 있는지 보았습니다. 이제 문제는 수천, 수만 줄의 코드에 걸쳐 프로그래밍된 복잡한 문장의 수학적 증명을 자동으로 생성하는 것과 같은 실제 작업에 유사한 도구를 적용할 수 있는가 하는 것입니다. 이는 주목할 만한 흥미로운 공개 과제라고 생각합니다.
서명을 집계하는 효율성과 관련하여, 요즘 이더리움의 검증자가 3만 명에 달하는 상황에서 노드를 운영하기에는 많은 양이 필요하지 않나요? 제 노트북에 이더리움 노드가 있고 실행은 되지만 저렴한 노트북이 아니기 때문에 하드 드라이브를 직접 업그레이드해야 하고, 이더리움의 이상적인 목표는 가능한 한 많은 검증자를 지원하는 것입니다.
저희는 사람들이 모든 규모의 검증에 직접 참여할 수 있도록 권리 증명을 최대한 민주화하고자 합니다. 이더리움 노드를 실행하기 위한 요구사항은 매우 낮고 사용하기 매우 쉬워야 합니다. 저희는 이론과 프로토콜이 가능한 한 단순하기를 바랍니다. 이론적 한계는 무엇인가요? 모든 데이터는 세션당 참가자당 1비트여야 합니다. 누가 서명했는지, 누가 서명하지 않았는지 브로드캐스트해야 하기 때문입니다.
이것이 기본 제한이며, 이 제한을 넘어서면 다른 제한은 없으며 계산에 하한이 없으며 집계 증명을 할 수 있고 재귀 증명 트리를 할 수 있습니다. 서명을 할 수 있고, 모든 종류의 집계된 서명을 할 수 있습니다. STARK를 사용할 수도 있고, 그리드 기반 암호화를 사용할 수도 있고, 32비트 STARK를 사용할 수도 있고, 모든 종류의 다른 기술을 사용할 수 있습니다.
문제는 서명 집계를 어느 정도까지 최적화할 수 있는가 하는 것입니다. 이는 피어 투 피어 보안에 관한 문제인데, 사람들은 피어 투 피어 네트워크에 대해 충분히 생각하지 않습니다. 특히 이 점을 강조하고 싶은데, 암호화폐 업계에서는 P2P 네트워크 위에 화려한 구조를 구축하고 P2P 네트워크가 작동할 것이라고 생각하는 경향이 있다고 생각합니다.
여기에는 숨겨진 위험이 많이 있죠? 이러한 위험은 점점 더 복잡해져서 2010년대에는 모든 노드가 모든 것을 볼 수 있게 될 것입니다. 이클립스 공격, 서비스 거부 공격 등 모든 종류의 공격이 분명히 있을 수 있습니다.
하지만 모든 사람이 모든 것을 볼 수 있도록 하는 것이 유일한 임무인 매우 단순한 네트워크의 경우 문제는 매우 간단합니다. 문제는 이더넷의 규모가 커짐에 따라 P2P 네트워크가 점점 더 복잡해졌다는 것입니다. 오늘날의 이더넷 P2P 네트워크는 64개의 슬라이스로 구성되어 있죠?
지금처럼 세션당 30,000개의 서명을 처리하기 위한 서명 통합을 위해 말이죠. P2P 네트워크는 64개의 서로 다른 하위 네트워크로 나뉘며, 각 노드는 하나 이상의 네트워크에 속해 있습니다. 데이터 가용성 샘플링은 이더넷이 확장성을 달성하기 위해 블록에 데이터 공간을 제공하기 위해 사용하는 기술입니다.
또한 더 복잡한 피어 투 피어 아키텍처에 의존합니다. 여기에 보이는 것은 피어 투 피어 노드 맵으로, 각 노드는 이 설정에서 전체 데이터의 1/8만 다운로드할 수 있으므로 문제는 이 네트워크가 정말 안전한가 하는 것입니다. 보안을 보장할 수 있나요? 보장 비율을 최대한 높일 수 있을까요? 이더넷이 의존하는 피어 투 피어 네트워크의 보안을 어떻게 보호하고 개선할 수 있을까요?
기본적으로 이 시점에서 우리가 염려해야 할 것은 암호화폐의 한계에 도달하는 프로토콜이 필요하다는 것이고, 우리는 10년 전보다 훨씬 더 강력한 암호화폐를 가지고 있지만 훨씬 더 강력해질 수 있으며, 이 시점에서 우리는 상한선이 무엇인지, 실제로 어떻게 상한선에 도달할 수 있는지 살펴볼 필요가 있다고 생각합니다.
여기에는 똑같이 중요한 두 가지 영역이 있습니다. 그 중 하나는 효율성을 지속적으로 개선하는 것이며, 이 모든 것을 실시간으로 증명하고 싶습니다. 블로그에서 전달되는 모든 정보에 기본적으로 zk-SNARK가 첨부되어 해당 정보와 그 정보가 의존하는 모든 것이 프로토콜의 규칙을 따르고 있음을 증명하는 탈중앙화 프로토콜이 널리 퍼지는 세상을 보고 싶습니다.
두 번째 영역은 보안을 강화하는 것입니다. 근본적으로 이는 오류의 가능성을 줄이는 것을 의미합니다. 이러한 프로토콜이 의존하는 실제 기술이 매우 강력하고 신뢰할 수 있으며 사람들이 최대한 신뢰할 수 있는 세상을 만들어야 합니다.
그러나 우리가 여러 번 보았듯이 다중 서명도 해킹될 수 있으며, 프로젝트의 통화 중 하나 또는 두 개가 실제로 다중 서명에 의해 제어되고 9개의 서명 중 5개가 동시에 해킹되어 많은 돈을 잃는 소위 레이어2 프로젝트의 많은 예가 있으며, 우리가 그 이상으로 나아가려면 사람들이 신뢰할 수 있는 기술을 신뢰할 수 있어야 합니다. 세계보다 앞서 나가려면 소수의 사람들이 규칙을 준수할 것이라고 믿기보다는 실제로 작동하는 것을 믿고 암호화를 통해 규칙을 실제로 시행해야 합니다.
하지만 그러기 위해서는 코드가 신뢰할 수 있어야 합니다. 문제는 코드를 신뢰할 수 있게 만들 수 있을까요?
인터넷을 신뢰할 수 있게 만들 수 있을까요? 이러한 제품과 프로토콜의 경제성을 신뢰할 수 있게 만들 수 있을까요? 저는 이것이 핵심 과제라고 생각하며, 계속해서 함께 노력하여 개선해 나갈 수 있기를 바랍니다.



