Skip to main content
비공개 지갑은 서명을 위한 Solana 키쌍, 널리파이어 키, 암호화를 위한 뷰잉 키로 구성됩니다. 이들 키는 함께 보호된 키쌍을 형성합니다. 귀하의 키 관리는 보호된 키쌍을 보유합니다. 지갑 코드는 프라이버시 인터페이스 및 SDK를 사용하여 비공개 거래를 생성합니다. 키 관리와 프라이버시 SDK는 프라이버시 인터페이스를 통해 연결됩니다. 프라이버시 SDK는 프라이버시 API를 호출합니다. 프라이버시 API는 거래를 Solana에 제출합니다. 통합을 통해 사용자는 다음을 수행할 수 있습니다:
  1. 셀프 커스터디 비공개 지갑 생성
  2. Solana 주소로 비공개 전송 수신
  3. 비공개 잔액으로 토큰 입금
  4. Solana 주소로 비공개 전송
  5. 모든 Solana 주소로 출금
  6. 비공개 잔액과 거래 내역을 로컬에서 복호화
통합에는 다음이 포함됩니다:
  1. 보호된 키쌍 – 암호화를 위한 키 관리에
  2. 프라이버시 인터페이스 및 SDK – 비공개 거래를 생성하기 위해
  3. 사용자 흐름 – 지갑에 통합하기 위해

AI를 위한 컨텍스트

기존 Solana 지갑에 개인 지갑 추가

Cursor에서 열기
1

보호된 키쌍 통합

비공개 지갑 통합은 키 관리에 보호된 키쌍을 추가합니다. 보호된 키쌍은 거래를 서명, 암호화, 복호화합니다.보호된 키쌍은 서명, 널리파이어, 뷰잉 키로 구성된 번들입니다.
  • 서명 키: 거래 서명을 위한 지갑의 Ed25519 Solana 키쌍.
  • 뷰잉 키: 거래를 암호화하고 복호화하는 데 사용되는 P-256 키쌍.
  • 널리파이어 키:
지갑은 두 가지 방법으로 보호된 키쌍을 생성할 수 있습니다:
  1. 시드 기반 지갑에는 시드 문구에서 파생을 선택하세요.
  2. 비시드 기반 지갑에는 EdDSA 서명에서 파생을 선택하세요.
시드 기반 지갑은 하나의 BIP-39 니모닉과 계정 인덱스(0, 1, …)에서 보호된 키쌍을 파생합니다.각 계정 인덱스는 하나의 Solana 키쌍을 하나의 보호된 키쌍에 매핑합니다. Solana 키쌍을 복구하는 것과 동일한 방법으로 보호된 키쌍을 복구할 수 있습니다.예시:
  • 계정 0: Solana 키쌍 0 및 보호된 키쌍 0
  • 계정 1: Solana 키쌍 1 및 보호된 키쌍 1
보호된 서명 키는 해당 계정의 Solana Ed25519 키입니다. 널리파이어 및 뷰잉 키는 동일한 시드에서 파생된 추가 키입니다.
구현 예시: TypeScript 예시 · Rust 예시
2

프라이버시 인터페이스 및 SDK 통합

프라이버시 인터페이스를 통해 키 자료에 직접 접근하지 않고도 프라이버시 SDK를 사용하여 비공개 거래를 생성할 수 있습니다. 귀하의 키 관리는 두 부분으로 프라이버시 인터페이스를 구현합니다.
  1. 프라이버시 SDK와의 거래 생성을 위한 서명 인터페이스. 소스 보기: TypeScript/ Rust
  2. 암호화 및 복호화 인터페이스. 소스 보기: TypeScript/ Rust
프라이버시 인터페이스는 상태가 없으므로 잔액이나 거래 내역을 저장하지 않습니다. 성능을 위해 사용자 잔액과 거래 내역을 로컬에 캐시하는 것을 권장합니다.

증명 생성에 대하여

영지식 증명 생성은 완전한 사용자 거래 데이터 및 널리파이어 키에 대한 평문 입력이 필요합니다.현재 서버 증명 생성은 표준 Helius RPC URL을 통해 가능합니다.로컬 증명 생성은 곧 제공될 예정입니다. AWS Nitro에서 메인넷 출시 전에 끝에서 끝으로 암호화된 서버 증명 생성을 계획하고 있습니다.
3

사용자 흐름 통합

비공개 지갑 생성

프라이빗 지갑은 두 단계로 생성합니다.
  1. 보호된 키 쌍을 파생합니다
  2. 온체인 레지스트리에 Solana 주소를 등록합니다.
프라이빗 지갑을 생성할 때 프라이빗 잔액에 입금할 필요는 없습니다.레지스트리는 서명 공개 키를 무효화 공개 키 및 보기 공개 키와 연결합니다. 이 공개 키들이 모여 보호된 주소를 구성합니다.
각 레지스트리 레코드는 이 소유한 PDA입니다. 누구나 이를 조회하여 Solana 주소가 프라이빗 전송을 받을 수 있는지 확인할 수 있습니다.
  • owner은 사용자의 Solana 주소이며, 레지스트리 PDA를 파생하는 데 사용됩니다.
  • address은 사용자의 보호된 주소입니다.
  • buildRegistrationTransaction은 컴파일된 등록 또는 키 업데이트 트랜잭션을 반환합니다. 지갑이 이미 등록되어 있으면 undefined을 반환합니다.
  • sendTransaction은 트랜잭션에 서명하고 전송합니다.
  • isWalletRegistered은 레지스트리 PDA를 읽어 등록 여부를 확인합니다.
전체 등록 예시: TypeScript · Rust

프라이빗 잔액 및 트랜잭션 내역 동기화

잔액 동기화는 RPC에서 암호화된 상태를 가져와 지갑에서 복호화합니다.RPC는 복호화하지 않습니다. 소유자만 보기 키를 사용하여 프라이빗 잔액을 복호화할 수 있습니다.
지갑은 프라이빗 트랜잭션 전에, 그리고 백필을 실행하는 모든 시점에 잔액을 복호화하고 업데이트해야 합니다. 여기에는 지갑 잠금 해제, 프라이빗 지갑 열기, 앱 재개, 네트워크 재연결, 스트림 누락 또는 지갑 복원이 포함됩니다.

Read a Private Balance

Read Private Transaction History

프라이빗 잔액에 입금

사용자는 다음 두 가지 방법으로 프라이빗 잔액에 입금할 수 있습니다.
  1. 법정화폐 잔액에서 프라이빗 암호화폐 잔액으로 온램프합니다
  2. 공개 SPL 계정에서 프라이빗 잔액으로 입금합니다
온램프와 입금은 개인정보 보호 수준이 다릅니다. 더 강력한 개인정보 보호를 위해 입금보다 온램프 사용을 권장합니다.

On-/Off-Ramp

법정화폐를 프라이빗 잔액으로 직접 온램프하거나 프라이빗 잔액에서 직접 오프램프합니다.

Deposit

공개 암호화폐 잔액에서 입금합니다.

프라이빗 전송

사용자는 모든 Solana 지갑 주소로 프라이빗 전송을 보낼 수 있습니다.각 프라이빗 전송에서 Privacy SDK는 온체인 레지스트리의 지갑 주소를 조회하여 수신자에게 프라이빗 지갑이 있는지 확인합니다.수신자에게 프라이빗 지갑이 없으면 Privacy SDK는 프라이빗 전송을 프라이빗 잔액에서 공개 잔액으로의 출금으로 처리할 수 있습니다.
사용자가 실수로 공개 잔액으로 출금하지 않도록 UI에서 해당 트랜잭션을 출금으로 표시하는 것이 좋습니다.

Private Transfer

프라이빗 잔액으로 비공개 전송합니다.

공개 잔액으로 출금

출금은 다음 두 가지 방식으로 사용할 수 있습니다.
  1. 프라이빗 지갑이 없는 수신자에게 프라이빗 전송을 보낼 때 대체 수단으로 사용하거나
  2. 공개 SPL 토큰 계정으로 직접 출금합니다.
출금 시에는 시드 문구나 개인 키를 내보낼 때와 마찬가지로 사용자가 프라이빗 잔액을 벗어난다는 점을 명확하게 표시하는 것이 좋습니다.

Withdraw

공개 암호화폐 잔액으로 출금합니다.

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

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