- 셀프 커스터디 비공개 지갑 생성
- Solana 주소로 비공개 전송 수신
- 비공개 잔액으로 토큰 입금
- Solana 주소로 비공개 전송
- 모든 Solana 주소로 출금
- 비공개 잔액과 거래 내역을 로컬에서 복호화
- 보호된 키쌍 – 암호화를 위한 키 관리에
- 프라이버시 인터페이스 및 SDK – 비공개 거래를 생성하기 위해
- 사용자 흐름 – 지갑에 통합하기 위해
AI를 위한 컨텍스트
기존 Solana 지갑에 개인 지갑 추가
1
보호된 키쌍 통합
비공개 지갑 통합은 키 관리에 보호된 키쌍을 추가합니다. 보호된 키쌍은 거래를 서명, 암호화, 복호화합니다.보호된 키쌍은 서명, 널리파이어, 뷰잉 키로 구성된 번들입니다.- 서명 키: 거래 서명을 위한 지갑의 Ed25519 Solana 키쌍.
- 뷰잉 키: 거래를 암호화하고 복호화하는 데 사용되는 P-256 키쌍.
- 널리파이어 키:
- 시드 기반 지갑에는 시드 문구에서 파생을 선택하세요.
- 비시드 기반 지갑에는 EdDSA 서명에서 파생을 선택하세요.
- 시드 문구에서 파생
- EdDSA 서명에서 파생
시드 기반 지갑은 하나의 BIP-39 니모닉과 계정 인덱스(
0, 1, …)에서 보호된 키쌍을 파생합니다.각 계정 인덱스는 하나의 Solana 키쌍을 하나의 보호된 키쌍에 매핑합니다.
Solana 키쌍을 복구하는 것과 동일한 방법으로 보호된 키쌍을 복구할 수 있습니다.예시:- 계정 0: Solana 키쌍 0 및 보호된 키쌍 0
- 계정 1: Solana 키쌍 1 및 보호된 키쌍 1
보호된 서명 키는 해당 계정의 Solana Ed25519 키입니다.
널리파이어 및 뷰잉 키는 동일한 시드에서 파생된 추가 키입니다.
구현 예시: TypeScript 예시 · Rust 예시
2
프라이버시 인터페이스 및 SDK 통합
프라이버시 인터페이스를 통해 키 자료에 직접 접근하지 않고도 프라이버시 SDK를 사용하여 비공개 거래를 생성할 수 있습니다. 귀하의 키 관리는 두 부분으로 프라이버시 인터페이스를 구현합니다.- 프라이버시 SDK와의 거래 생성을 위한 서명 인터페이스. 소스 보기: TypeScript/ Rust
- 암호화 및 복호화 인터페이스. 소스 보기: TypeScript/ Rust
프라이버시 인터페이스는 상태가 없으므로 잔액이나 거래 내역을 저장하지 않습니다.
성능을 위해 사용자 잔액과 거래 내역을 로컬에 캐시하는 것을 권장합니다.
증명 생성에 대하여
영지식 증명 생성은 완전한 사용자 거래 데이터 및 널리파이어 키에 대한 평문 입력이 필요합니다.현재 서버 증명 생성은 표준 Helius RPC URL을 통해 가능합니다.로컬 증명 생성은 곧 제공될 예정입니다. AWS Nitro에서 메인넷 출시 전에 끝에서 끝으로 암호화된 서버 증명 생성을 계획하고 있습니다.3
사용자 흐름 통합
비공개 지갑 생성
프라이빗 지갑은 두 단계로 생성합니다.- 보호된 키 쌍을 파생합니다
- 온체인 레지스트리에 Solana 주소를 등록합니다.
각 레지스트리 레코드는 이 소유한 PDA입니다. 누구나 이를 조회하여 Solana 주소가 프라이빗 전송을 받을 수 있는지 확인할 수 있습니다.
- TypeScript Client
- Rust Client
owner은 사용자의 Solana 주소이며, 레지스트리 PDA를 파생하는 데 사용됩니다.address은 사용자의 보호된 주소입니다.buildRegistrationTransaction은 컴파일된 등록 또는 키 업데이트 트랜잭션을 반환합니다. 지갑이 이미 등록되어 있으면undefined을 반환합니다.sendTransaction은 트랜잭션에 서명하고 전송합니다.isWalletRegistered은 레지스트리 PDA를 읽어 등록 여부를 확인합니다.
전체 등록 예시: TypeScript · Rust
프라이빗 잔액 및 트랜잭션 내역 동기화
잔액 동기화는 RPC에서 암호화된 상태를 가져와 지갑에서 복호화합니다.RPC는 복호화하지 않습니다. 소유자만 보기 키를 사용하여 프라이빗 잔액을 복호화할 수 있습니다.지갑은 프라이빗 트랜잭션 전에, 그리고 백필을 실행하는 모든 시점에 잔액을 복호화하고 업데이트해야 합니다. 여기에는 지갑 잠금 해제, 프라이빗 지갑 열기, 앱 재개, 네트워크 재연결, 스트림 누락 또는 지갑 복원이 포함됩니다.
Read a Private Balance
Read Private Transaction History
프라이빗 잔액에 입금
사용자는 다음 두 가지 방법으로 프라이빗 잔액에 입금할 수 있습니다.- 법정화폐 잔액에서 프라이빗 암호화폐 잔액으로 온램프합니다
- 공개 SPL 계정에서 프라이빗 잔액으로 입금합니다
On-/Off-Ramp
법정화폐를 프라이빗 잔액으로 직접 온램프하거나 프라이빗 잔액에서 직접 오프램프합니다.
Deposit
공개 암호화폐 잔액에서 입금합니다.
프라이빗 전송
사용자는 모든 Solana 지갑 주소로 프라이빗 전송을 보낼 수 있습니다.각 프라이빗 전송에서 Privacy SDK는 온체인 레지스트리의 지갑 주소를 조회하여 수신자에게 프라이빗 지갑이 있는지 확인합니다.수신자에게 프라이빗 지갑이 없으면 Privacy SDK는 프라이빗 전송을 프라이빗 잔액에서 공개 잔액으로의 출금으로 처리할 수 있습니다.사용자가 실수로 공개 잔액으로 출금하지 않도록 UI에서 해당 트랜잭션을 출금으로 표시하는 것이 좋습니다.
Private Transfer
프라이빗 잔액으로 비공개 전송합니다.
공개 잔액으로 출금
출금은 다음 두 가지 방식으로 사용할 수 있습니다.- 프라이빗 지갑이 없는 수신자에게 프라이빗 전송을 보낼 때 대체 수단으로 사용하거나
- 공개 SPL 토큰 계정으로 직접 출금합니다.
Withdraw
공개 암호화폐 잔액으로 출금합니다.