
ZK Compression 기조연설: Breakpoint 2024
다음은 Light Protocol 공동 창립자 Swen Schaeferjohann과 Helius 공동 창립자 Nicolas Pennie가 Breakpoint 2024 컨퍼런스에서 진행한 ZK Compression 기조연설 및 Q&A 세션의 개요와 핵심 내용입니다. 이 발표에서는 ZK Compression이 무엇인지, 어떻게 작동하는지, 그리고 무엇보다 Solana의 미래에 왜 중요한지 살펴봅니다.
ZK Compression: 0으로 보내기
Solana로 개발할 때 금방 알게 되는 사실이 있습니다. 컴퓨팅 비용은 비교적 저렴하지만 데이터 저장 비용은 높다는 점입니다. 예를 들어 SOL 가격이 $150일 때 토큰 계정 1,000개를 만드는 데 약 $300가 들고, 100만 개를 만들면 $300,000가 필요합니다. SOL 가격이 오르면 비용도 증가하므로 대규모 사용자 기반으로 애플리케이션을 확장하기가 경제적으로 어렵습니다. 또한 상태 증가는 모든 상태 저장형 블록체인이 직면한 과제입니다. 새 계정을 만들면 유지에 필요한 rent 수수료를 지불해야 하며, 이 비용도 상당합니다. 현재 Solana에는 5억 개 이상의 계정이 있고, 매일 약 100만 개가 새로 추가됩니다.
ZK Compression은 다음과 같은 방식으로 이러한 문제를 해결합니다.
- 1,000배 저렴한 계정
- 상태 증가 문제 해결
- Solana에서 ZK 컴퓨팅을 위한 기반
상태 압축 + ZK
ZK Compression을 이해하려면 먼저 다섯 가지 핵심 단계로 구성된 상태 압축을 살펴봐야 합니다.
- 수백만 개의 계정 → “지문”
- 지문을 온체인에 저장
- Solana 원장에 계정 기록 저장
- 인덱서로 최신 계정 상태 캐시
- 온체인 “지문”을 통해 압축 계정 상태 검증
먼저 수백만 개의 Solana 계정을 압축하고 해싱해 작은 "지문"으로 만듭니다. 이 지문은 온체인 계정에 저장되고, 전체 원본 계정 데이터는 Solana 원장에서 계속 접근할 수 있습니다. 이러한 오프체인 계정의 유효성을 보장하기 위해 온체인 지문으로 무결성을 검증하는 증명자 메커니즘을 사용합니다. 이 과정의 마지막 단계에서는 계정 무결성을 검증하는 증명 시스템을 구동하는 영지식 SNARK를 사용합니다.
왜 ZK Compression인가요?
ZK Compression에는 상태 압축에 적합한 몇 가지 핵심 기능이 있습니다. 예를 들어 압축 계정은 표준 Solana 계정과 비슷하게 작동합니다. 개발자는 기존 기술과 개발 방식을 그대로 활용할 수 있어 학습 부담이 적습니다. 진입 장벽이 낮아지고 개발자가 ZK Compression을 쉽게 도입할 수 있습니다.
인덱서가 제공하는 API는 기존 RPC 호출과 매우 유사합니다. 예를 들어 getAccountInfo 메서드는 getCompressedAccount에 직접 대응하며, 이러한 일대일 매핑은 전체 RPC API에 적용됩니다. 이런 일관성 덕분에 기존 Solana 도구 및 워크플로에 ZK Compression을 간편하게 통합할 수 있습니다.
압축 PDA
이 시스템의 핵심 기능 중 하나는 압축된 프로그램 파생 주소(PDA)를 지원한다는 점입니다. PDA는 특정 프로그램 주소와 시드로 일관되게 도출할 수 있는 결정론적 계정 주소입니다. 압축 PDA는 경쟁 상태, 주소 충돌, 같은 프로그램 주소와 시드 조합에 여러 계정을 실수로 생성하는 문제를 방지합니다. 이는 기존 SPL 계정 압축 시스템에서 ZK Compression으로 전환하는 주요 이유입니다.
ZK Compression을 완전히 지원하면 Solana에 미치는 영향은 상당합니다. PDA와 프로그램 조합 기능을 활용하면 여러 프로그램과 다양한 PDA가 포함된 복잡한 아키텍처를 구축할 수 있습니다. 기존 애플리케이션을 만들 때 익숙했던 개발 경험과 유사합니다. 이를 훨씬 적은 비용으로 구현할 수 있으며, 계정 비용을 최대 1,000배 줄일 수 있습니다. 이런 획기적인 비용 절감으로 높은 비용 때문에 불가능했던 새로운 사용 사례가 열립니다.
조합성 개선
모든 작업은 Solana에서 직접 실행됩니다. L2도 validium도 아닙니다. 데이터 가용성은 Solana 원장에서 자동으로 제공되므로 실행을 검증할 수 있고 완전한 조합성이 보장됩니다.
영지식 증명은 증명 크기를 고정된 128바이트로 줄입니다. 각 트랜잭션에서 다른 작업에 사용할 공간이 늘어나 조합이 쉬워지고 추가 작업의 유연성도 높아집니다. 단일 트랜잭션에서 업데이트하거나 읽고 쓰는 계정 수, 또는 증명해야 하는 포함이나 제외 항목 수와 관계없이 증명 크기는 일정합니다. Solana의 트랜잭션 크기는 원래 작기 때문에(1.2킬로바이트) 이는 매우 중요합니다. 빠른 증명 시간을 달성하려면 상태 Merkle 트리에 다른 해시 함수가 필요했습니다. 이 때문에 기존 SPL 계정 압축 프로그램을 사용할 수 없었습니다.
압축 해제
또 다른 핵심 기능은 압축 해제입니다. 종속을 방지하고 “일반” 계정과 압축 계정 사이의 원활한 상호운용성을 제공합니다. 모든 Solana 계정을 압축해 rent 비용을 회수할 수 있습니다. 압축 계정은 언제든 압축을 해제할 수 있어 두 형태 사이를 쉽게 전환할 수 있습니다. 예를 들어 스왑해야 하는 압축 토큰이 있다면 압축을 해제한 뒤 Jupiter에서 스왑할 수 있습니다.
압축 해제를 사용하면 핫 상태와 콜드 상태 사이를 원활하게 전환할 수 있습니다. 예를 들어 여러 압축 카드와 아이템이 있는 게임을 개발한다면, 전투 중에는 압축을 해제해 상태를 빠르게 변경하고 이후 다시 압축해 체력 변화 같은 최종 결과를 저장할 수 있습니다. 슬롯 내 단일 트리의 동시성에는 몇 가지 제한이 있습니다. 블록 하나에서 같은 계정을 여러 번 업데이트해야 한다면 압축을 피해야 합니다. 이런 경우 해당 계정의 압축을 영구적으로 해제해 일반 온체인 계정으로 사용하는 편이 좋습니다. 예를 들어 AMM 풀 계정은 상태를 자주 업데이트해야 하므로 일반 계정이 더 적합합니다. 이 시스템은 단일 트랜잭션 내에서 압축 계정과 압축 해제 계정을 함께 처리할 만큼 유연합니다.
이 완전히 범용적인 솔루션은 특정 프로그램, 비즈니스 로직 또는 애플리케이션에 국한되지 않습니다. Solana 계정을 저렴하게 압축할 수 있으며 인덱싱 지원도 기본으로 제공됩니다. 완전한 오픈 소스이며, 프로덕션에 사용할 수 있고 다양한 사용 사례에 맞게 조정할 수 있습니다.
압축 토큰
압축 토큰은 별도로 지원되지 않는 한 거래소 및 DeFi 플랫폼과 직접 호환되지 않습니다. 하지만 압축 토큰을 표준 SPL 토큰으로 압축 해제하면 쉽게 해결됩니다. 이후 일반 토큰처럼 DeFi와 거래소에서 사용할 수 있습니다. 이러한 유연성 덕분에 종속되지 않으며, 사용자는 필요에 따라 압축 토큰과 일반 토큰 사이를 전환할 수 있습니다. 압축 토큰은 상호작용 빈도가 낮은 콜드 애플리케이션에 적합하고, 일반 토큰 계정은 핫 상태나 자주 사용하는 자산에 더 적합합니다. 이 시스템의 주요 이점 중 하나는 콜드 상태 데이터를 압축 스토리지로 옮겨 상태 증가 문제를 해결하는 것입니다. 모든 이점을 유지하면서 상태를 더 효율적으로 관리할 수 있습니다.
첫 릴리스에서는 압축을 지원하는 모든 애플리케이션과 같은 도구로 만든 압축 토큰을 선보였습니다. 압축 토큰 프로그램은 Solana 토큰 프로그램과 동일하며, 같은 사용자 경험을 제공하면서 비용을 1,000배 절감합니다. 토큰 확장 기능은 2025년 초에 출시될 예정입니다.
압축 해제 같은 기능을 활용하면 대량의 토큰을 에어드롭하고 DeFi 활동에 필요할 때 빠르게 압축을 해제할 수 있습니다. 영지식(ZK) 증명은 흔히 비용이 많이 드는 컴퓨팅의 궁극적인 해법으로 여겨집니다. 저희는 전송 과정이 표준 SPL 토큰 전송과 비슷하도록 최적화해 증명 시간을 밀리초 단위로 줄였습니다. 프로덕션급 소비자용 ZK를 본격적으로 제공하고 토큰 계정 관리 비용을 크게 낮춥니다.
ZK Compression은 어떻게 작동하나요?
전체 시스템은 다섯 가지 주요 구성 요소로 이루어집니다.
- 상태 트리 포리스트
- Light System Program
- Compressed Token Program
- Forester 노드
- 인덱서(Photon)
상태 트리 포리스트
먼저 “상태 Merkle 트리 포리스트”라고 부르는 상태 Merkle 트리가 있습니다. 이 구조는 계정 집합의 고유한 암호학적 지문을 만들어 온체인에 저장합니다. 예를 들어 계정이 4개라면 이를 재귀적으로 해싱해 Merkle 트리 구조로 만들 수 있습니다.
맨 위에 있는 최종 32바이트 해시는 모든 계정의 기반 데이터 무결성을 암호학적으로 보장합니다. 따라서 모든 계정의 상태를 상태 루트와 비교해 Merkle 트리의 일부인지 쉽게 검증할 수 있습니다. 여기서 "포리스트"라는 용어를 쓰는 이유는 각각 고유한 루트를 가진 여러 Merkle 트리가 있기 때문입니다.
기존 SPL 계정 압축과 비교
기존 SPL 계정 압축 프로그램과 비교했을 때 ZK Compression의 주요 개선점 중 하나는 특정 상태가 주어진 Merkle 트리에 포함된다는 사실을 증명할 수 있다는 것입니다. Solana의 트랜잭션 크기 제한 내에서 효율적으로 증명을 생성할 수 있습니다. 또한 상태 Merkle 트리와 유사한 주소 트리를 관리해 특정 주소의 고유성을 증명할 수 있습니다. 여기에 한 가지 기능이 더해집니다. 리프에 포함됐다는 사실을 증명하면 특정 숫자 범위에서 제외됐다는 사실도 증명됩니다. 따라서 훨씬 작은 Merkle 트리로 248비트 주소 공간을 처리하면서 주소의 고유성을 보장할 수 있습니다.
N개 트리에서 M개 계정을 증명해도 증명 크기는 128바이트로 일정하게 유지되므로 Solana의 1.2kb 트랜잭션 크기 제한에 적합합니다. 오프체인에서 수행되는 증명 생성은 기존 SPL 계정 압축 프로그램보다 비용이 많이 듭니다. 그러나 온체인에서 수행되는 증명 검증 비용은 일정하며, 대부분의 경우 기존 압축 프로그램보다 저렴합니다.
Light System 및 Compressed Token 프로그램
프로토콜에는 두 가지 핵심 프로그램이 있습니다. Light System Program은 Solana System Program을 재현한 온체인 컨트랙트입니다. Merkle 트리와 상호작용하고 표준 Solana 계정 모델을 적용하며 PDA의 고유성을 검증합니다. Compressed Token Program은 SPL 토큰 프로그램을 재현하고 압축 계정 모델 내에서 SPL 데이터 레이아웃을 적용합니다.
Forester 노드
Forester 노드는 이 라이트 포리스트를 관리합니다. 압축 계정을 업데이트하면 새 계정 상태가 트리에 추가되고 기존 상태는 0으로 설정되거나 무효화됩니다.
이 방식에는 두 가지 핵심 영향이 있습니다. 첫째, 변경 사항이 역방향 Merkle 트리를 따라 맨 위까지 전파되므로 상태를 업데이트할 때마다 루트가 바뀝니다. 둘째, 트리는 점차 채워져 결국 용량 한계에 도달합니다. 이때 라이트 트리 포리스트가 활용됩니다.
Forester 노드는 상태 루트를 유지합니다. 상태 루트를 비동기식으로 업데이트하고 가득 찬 상태 트리의 롤오버를 처리합니다. 자체 상태 트리를 위한 Forester 노드 운영에는 권한이 필요하지 않으며 RPC를 실행하는 것과 비슷합니다. 누구나 자신의 상태 업데이트를 관리할 수 있습니다. 앱 개발자는 압축 상태를 직접 유지해야 할 이해관계가 있으므로 상태 트리를 올바르게 관리할 자연스러운 동기가 생깁니다. 자체 호스팅을 위해 노드를 직접 실행하거나 공급자에게 비용을 지불하고 관리를 맡길 수 있습니다.
Photon
Photon 인덱서는 블록체인에서 압축 계정과 관련된 업데이트, 생성, 변경 및 기타 이벤트를 추적하고 관리하도록 설계된 오픈 소스 솔루션입니다. 온체인 활동을 수신하고 이러한 계정의 현재 상태를 캐시합니다. 검증 또는 데이터 변경에 사용할 수 있는 암호학적 증명도 생성합니다.
프로덕션 환경에서 사용할 수 있는 Photon 인덱서에는 이전 버전의 압축 기술에서 얻은 인사이트를 바탕으로 상당한 개선 사항이 반영되었습니다. 개인 개발자, 기업, RPC 공급자 누구나 쉽게 사용하고 접근할 수 있도록 설계됐습니다.
로컬 개발도 훨씬 간단해졌습니다. 로컬 설정에 원활하게 통합되는 원클릭 CLI 도구를 제공합니다. 개발자 중심 익스플로러도 제공되며, 시각적 인터페이스에서 압축 계정을 확인하고 변경 사항을 추적하며 트랜잭션 기록을 살펴볼 수 있습니다.
Photon은 매일 스냅샷을 생성해 개발과 배포 속도를 높입니다. 개발자는 제네시스부터 다시 인덱싱하는 대신 스냅샷에서 시작할 수 있어 부팅 및 시작 시간을 15분 이내로 줄일 수 있습니다. 스냅샷은 복제도 개선합니다. RPC 공급자가 압축 지원을 중단하더라도 스냅샷을 쉽게 받아 인덱서를 독립적으로 실행할 수 있습니다. 스냅샷을 사용하면 데이터 손실 위험이 최소화되며, FileCoin 같은 탈중앙화 솔루션에 저장할 수도 있습니다.
Photon을 사용하면 데이터 일부만 선택해 인덱싱할 수 있습니다. 하드웨어 요구 사항과 데이터베이스 크기가 크게 줄어듭니다. CLI 명령 하나로 SQLite를 사용해 처리할 수 있습니다. RPC 공급자라면 전체 데이터 세트를 인덱싱할 수도 있습니다. Photon은 모든 Helius 플랜에서 제공되며, 직접 실행하거나 다른 공급자에게 제공을 요청할 수도 있습니다.
개발자가 개발자를 위해
저희는 개발자에게 온전히 집중합니다. 개발자 경험을 개선하도록 특별히 설계한 세 가지 주요 개선 사항을 적극적으로 개발하고 있습니다.
압축용 Web3.js
SDK는 Solana web3.js와 비슷하게 작동하면서 압축을 완전히 지원하도록 설계됐습니다. 압축 토큰 전송을 시작하려면 먼저 압축 토큰 계정을 가져옵니다. 그런 다음 해당 계정으로 RPC 또는 전용 증명자 노드에서 유효성 증명을 받습니다. 이후 SPL 토큰 프로그램을 사용할 때처럼 전송할 항목, 수량, 민트, 수신자를 지정해 명령을 구성하고 일반 Solana 트랜잭션을 생성합니다.
완전한 로컬 개발 환경
필수 프로그램, Photon 인덱서, 로컬 증명자 노드 등 로컬 개발에 필요한 모든 요소를 미리 구성한 테스트 검증인을 제공합니다. 개발자는 간소화된 설정 과정을 이용할 수 있습니다.
Anchor 매크로
Anchor를 사용한 Solana 프로그램 개발에 익숙하다면 압축 계정을 일반 계정처럼 원활하게 다룰 수 있도록 하는 것이 저희의 목표입니다. Anchor 프로그램을 작성해 본 적이 있다면 익숙한 개발 경험을 바로 확인할 수 있습니다. Anchor 매크로는 현재 개발 중입니다.
Airship
Airship을 사용하면 개발자는 쉽고 경제적인 대량 토큰 에어드롭 도구로 지금 바로 ZK Compression을 활용할 수 있습니다. 사용자 인터페이스와 CLI를 모두 제공하며, 완전한 오픈 소스이므로 개발자가 필요에 맞게 포크하고 수정할 수 있습니다. 더 많은 개발자가 압축 토큰을 에어드롭하면 생태계의 다양한 애플리케이션에서 이를 도입하기 시작할 것입니다. 즉시 변환하고 싶다면 토큰의 압축을 바로 해제할 수 있습니다. 따라서 Airship은 지금 바로 일반 토큰에 사용할 수 있는 에어드롭 도구입니다.
이 도구는 Solana 모바일 보유자, 특정 토큰 보유자 또는 NFT 컬렉션 보유자를 대상으로 하는 에어드롭을 자동으로 지원합니다. 미리 생성한 수신자 목록이 있다면 CSV 파일을 가져와 에어드롭할 토큰과 수량을 지정할 수도 있습니다. CLI와 UI 모두 인터넷 연결 끊김 같은 문제가 발생했을 때 마지막으로 저장된 상태부터 에어드롭을 재개할 수 있습니다. 많은 주소에 토큰을 배포해 30~45분이 걸릴 수 있는 대규모 에어드롭에 특히 유용합니다.
앱을 위한 새로운 설계 공간
ZK Compression은 활성 검증인의 메모리에 모든 계정의 최종 루트 해시만 저장해 상태 증가 문제를 해결합니다. 이 방식은 상태 증가 문제를 효과적으로 완화합니다. 또한 ZK Compression은 애플리케이션에 새로운 설계 가능성을 열어 줍니다. 다음은 몇 가지 잠재적 사용 사례입니다.
- SPL 토큰 압축기
- 밈 코인 10억 개
- Twitter 게시물 예측 시장
- DePin 네트워크 노드용 식별자 PDA
- 검증 가능한 보상 계산 및 배포
- 신뢰 최소화 브리지
- ZK 신원 프로토콜
문서에서 더 많은 아이디어를 확인할 수 있습니다.
ZK Compression은 현재 메인넷과 devnet에서 운영 중입니다! 문서를 읽고 예제를 따라 하며 시작해 보세요. 최대 $45,000의 상금이 걸린 해커톤도 진행하고 있습니다.
ZK를 더 자세히 알아보고 싶다면 이전 Helius 블로그 게시물에서 영지식 증명의 기초와 Solana에서의 활용을 자세히 살펴보세요.
관련 아티클
Helius 구독하기
최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요


