Skip to main content

프라이빗 지갑과 사용자

사용자는 프라이빗 지갑에 암호화된 잔액을 보관하고 기존 Solana Ed25519 키로 비공개 트랜잭션에 서명합니다. 프라이빗 지갑을 통합하면 키 관리에 차폐 키 쌍이 추가됩니다. 직접 통합하거나 임베디드 프라이빗 지갑을 사용할 수 있습니다.

비공개 트랜잭션

비공개 전송은 일반적인 Solana 트랜잭션입니다. Solana 런타임은 서명을 검증하고 Solana 프라이버시 프로그램을 호출합니다. 이 프로그램은 암호화된 상태를 공개하지 않고 ZK 증명을 검증합니다. 일반적인 기밀 전송은 약 927바이트를 사용하므로 v1의 4,096바이트 제한에 충분히 들어갑니다.
사양의 입력 2개, 출력 3개 기밀 전송 예시를 기준으로 합니다. 소스 코드 보기: 사양 · xtask/src/main.rsSolana v1 트랜잭션 레이아웃을 참조하세요.

RPC

로 Solana RPC, 인덱서 및 원격 증명기를 사용할 수 있습니다.
  • Solana RPC – 공개 잔액을 반환하고 Solana 네트워크에 트랜잭션을 제출합니다.
  • 인덱서 – 인덱서는 지갑이 잔액을 읽고 비공개 트랜잭션을 생성하는 데 필요한 암호화된 상태를 제공합니다. 누구든지 대체 수단으로 자체 인덱서를 무허가 방식으로 실행할 수도 있습니다.
  • 증명기 – 트랜잭션과 하드웨어에 따라 영지식 증명을 로컬 또는 증명기 서버에서 수 밀리초 만에 생성할 수 있습니다. Helius는 GPU 증명을 사용합니다.
커스텀 링의 선택적 기능에는 공유 조회 키 또는 구성된 링 감사자 키를 사용하여 복호화된 잔액과 내역을 제공하는 선택적 링 RPC가 포함됩니다. 또한 익명 트랜잭션은 사용자가 트랜잭션 수수료 납부자로 표시되지 않도록 릴레이어를 사용합니다.

프라이버시와 Solana 프로그램

Solana 프라이버시 프로그램(SPP)은 모든 비공개 상태 전환을 검증하고 실행하는 핵심 프로그램입니다. 커스텀 링 프로그램과 ZK Solana 프로그램은 규정 준수 또는 애플리케이션 로직을 추가한 후 SPP를 호출하여 비공개 상태를 업데이트합니다. 다른 Solana 프로그램은 CPI 깊이 제한 5와 같은 Solana 트랜잭션 제한 내에서 동일한 트랜잭션의 CPI를 통해 이러한 프로그램과 상호 작용할 수 있습니다.

Solana 프라이버시 프로그램(SPP)

Solana 프라이버시 프로그램은 영지식 증명을 검증하고 비공개 상태를 업데이트합니다. 토큰을 예치하고, 비공개 잔액을 전송하고, 공개 계정으로 토큰을 출금할 때 사용하세요. 다른 프로그램은 CPI를 통해 SPP를 호출하여 비공개 상태 전환을 실행합니다.

커스텀 링 프로그램

커스텀 링 프로그램은 Token-2022와 유사하게 전송 권한과 추가 권한 주체를 정의합니다. 이 프로그램을 사용하여 감사자를 구성하거나, 공동 서명자를 요구하거나, 권한 주체가 잔액을 동결할 수 있도록 설정하세요. 이 프로그램은 커스텀 규정 준수 로직을 적용하기 위해 ZK 증명을 검증한 후 SPP를 호출하여 비공개 상태를 업데이트합니다.

ZK Solana 프로그램

영지식(ZK) Solana 프로그램을 사용하면 Solana 프로그램 내의 비공개 에스크로가 비공개 잔액에 애플리케이션 로직을 적용할 수 있습니다. ZK Solana 프로그램으로 비공개 스왑, 스테이킹, 대출 등을 구축할 수 있습니다. 예를 들어 기밀 스왑은 합의된 수량과 가격을 공개하지 않고도 이를 적용할 수 있습니다. 프로그램은 애플리케이션 로직의 ZK 증명을 검증한 후 직접 또는 커스텀 링 프로그램을 통해 SPP를 호출하여 비공개 상태를 업데이트합니다.

상태 머클 트리와 Forester

기본 링과 모든 커스텀 링은 Forester 노드가 유지 관리하는 상태 머클 트리 계정에 비공개 상태를 저장합니다. 트리 계정은 비공개 상태를 별도의 Solana 계정에 저장하지 않고 해당 상태를 커밋합니다. 따라서 getAccountInfo 같은 Solana 계정 메서드 대신 getShieldedTransactionsByTags 같은 전용 인덱서 RPC 메서드로 잔액과 트랜잭션 내역을 읽습니다. 비공개 잔액 읽기 및 비공개 트랜잭션 내역 읽기를 참조하세요.

처리량

트리는 쓰기 가능한 Solana 계정 하나에 저장됩니다. 이 계정에 쓰는 비공개 전송은 블록당 Solana의 계정별 1,200만 CU 쓰기 잠금 제한을 공유합니다. 서로 다른 UTXO는 독립적으로 사용할 수 있지만, 동일한 트리에 쓰는 트랜잭션은 여전히 Solana 계정 잠금과 컴퓨팅 제한을 공유합니다. 기밀 전송은 명령 벤치마크에서 약 140,000 CU를 사용합니다. 따라서 트리 하나는 블록당 약 86건의 비공개 전송을 지원하며, 현재 약 400밀리초인 Solana 블록 시간을 기준으로 초당 약 215건의 트랜잭션을 지원합니다. 프로토콜은 처리량을 늘리기 위해 더 많은 트리를 추가할 수 있습니다. 각 트리는 자체 계정별 컴퓨팅 예산이 있는 별도의 쓰기 가능 계정이므로 서로 다른 트리의 트랜잭션은 동일한 쓰기 잠금 예산을 두고 경쟁하지 않습니다.

SPL 인터페이스

SPL 인터페이스는 공개적으로 보유된 토큰과 비공개로 보유된 토큰 간의 상호 운용성을 지원합니다. 민트별 에스크로이며 무허가 방식으로 생성할 수 있지만 각 민트마다 한 번만 생성해야 합니다.
  • SOL 및 SPL 자산을 비공개 잔액에 예치하면 Solana 프라이버시 프로그램이 소유한 인터페이스 PDA가 토큰을 에스크로하고 사용자를 소유자로 하는 UTXO를 생성합니다.
  • 공개 잔액으로 출금하면 기존 UTXO가 사용된 것으로 표시되고 토큰이 Solana 토큰 계정으로 지급됩니다.
아직 인터페이스 PDA가 없는 민트의 경우 첫 예치 트랜잭션에 인터페이스 PDA를 생성하는 명령을 포함할 수 있습니다.

자세히 알아보기

Overview

링, 프라이버시 보장 및 트랜잭션 흐름입니다.

Private State and UTXOs

비공개 잔액이 저장되고 사용되는 방식입니다.

Encryption and Privacy Guarantees

자산이 암호화되는 방식과 차폐 키 쌍의 역할입니다.

Custom Enterprise Rings

커스텀 링을 구성하는 방법을 알아보세요.

원하는 정보를 찾지 못하셨나요?

문의하세요! Telegram | 이메일 | Typeform