Zum Hauptinhalt springen
Eine private Wallet besteht aus einem Solana-Schlüsselpaar zum Signieren, einem Nullifier-Schlüssel und einem Viewing-Schlüssel für die Verschlüsselung. Zusammen bilden diese Schlüssel das abgeschirmte Schlüsselpaar. Deine Schlüsselverwaltung verwaltet das abgeschirmte Schlüsselpaar. Der Wallet-Code verwendet das Privacy Interface und SDK, um private Transaktionen zu erstellen. Key management and the Privacy SDK connect through the Privacy Interface. The Privacy SDK calls the Privacy API. The Privacy API submits the transaction to Solana. Die Integration ermöglicht deinen Nutzern Folgendes:
  1. Eine selbstverwaltete private Wallet erstellen
  2. Private Übertragungen über eine Solana-Adresse empfangen
  3. Token in ein privates Guthaben einzahlen
  4. Privat an eine Solana-Adresse senden
  5. An eine beliebige Solana-Adresse auszahlen
  6. Private Guthaben und den Transaktionsverlauf lokal entschlüsseln
Die Integration umfasst:
  1. Abgeschirmtes Schlüsselpaar – in deiner Schlüsselverwaltung für die Verschlüsselung
  2. Privacy Interface und SDK – zum Erstellen privater Transaktionen
  3. Nutzerabläufe – zur Integration in deine Wallet

Kontext für deine KI

Add a Private Wallet to an existing Solana wallet

In Cursor öffnen
1

Abgeschirmtes Schlüsselpaar integrieren

Eine Integration für private Wallets fügt deiner Schlüsselverwaltung ein abgeschirmtes Schlüsselpaar hinzu. Ein abgeschirmtes Schlüsselpaar signiert, verschlüsselt und entschlüsselt Transaktionen.Das abgeschirmte Schlüsselpaar bündelt den Signatur-, Nullifier- und Viewing-Schlüssel.
  • Signaturschlüssel: Das Ed25519-Solana-Schlüsselpaar der Wallet zum Signieren von Transaktionen.
  • Viewing-Schlüssel: Ein X25519-Schlüsselpaar zum Ver- und Entschlüsseln von Transaktionen.
  • Nullifier-Schlüssel:
Eine Wallet kann das abgeschirmte Schlüsselpaar aus einer EdDSA-Signatur über eine festgelegte Nachricht ableiten.EdDSA-Signaturen sind deterministisch. Daher erzeugt die Signatur desselben Solana-Schlüsselpaars für dieselbe Nachricht immer dasselbe abgeschirmte Schlüsselpaar. Wir verwenden die Signatur als Seed, um ein abgeschirmtes Schlüsselpaar abzuleiten.Der festgelegte Nachrichten-payload lautet "TSPP/derive/v1" und ist als Solana-Off-Chain-Nachricht v0 codiert.Der abgeschirmte Signaturschlüssel ist der Solana-EdDSA-Schlüssel der Wallet. Der Nullifier- und der Viewing-Schlüssel sind zusätzliche Schlüssel, die aus der Signatur abgeleitet werden.
Die Signatur ist der Ableitungs-Seed. Wer sie besitzt, kann den Nullifier- und den Viewing-Schlüssel ableiten und Nutzertransaktionen entschlüsseln. Lehne jeden sign request eines Drittanbieters für die Nachricht "TSPP/derive/v1" ab.
Pseudocode zum Ableiten eines abgeschirmten Schlüsselpaars aus einer Solana-Signatur:
Beispielimplementierung: TypeScript · Rust
2

Privacy Interface und SDK integrieren

Mit dem Privacy Interface kann dein Code das Privacy SDK verwenden, um private Transaktionen zu erstellen, ohne direkt auf das Schlüsselmaterial zuzugreifen. Deine Schlüsselverwaltung implementiert das Privacy Interface in zwei Teilen.
  1. Signaturschnittstelle zum Erstellen von Transaktionen mit dem Privacy SDK. Quellcode ansehen: TypeScript/ Rust
  2. Schnittstelle für Ver- und Entschlüsselung. Quellcode ansehen: TypeScript/ Rust
Das Privacy Interface ist zustandslos und speichert daher weder Guthaben noch Transaktionsverläufe. Für eine bessere Performance empfehlen wir, Nutzerguthaben und Transaktionsverläufe lokal zwischenzuspeichern.

Zur Beweiserstellung

Zum Erstellen von Zero-Knowledge-Beweisen werden die vollständigen Nutzertransaktionsdaten und Nullifier-Schlüssel im Klartext benötigt.Derzeit ist die serverseitige Beweiserstellung über die standardmäßige Helius RPC URL verfügbar.Die lokale Beweiserstellung folgt in Kürze. Der Standard-Prover der SDKs ist eine attestierte AWS-Nitro-Enklave.
3

Nutzerabläufe integrieren

Private Wallet erstellen

Eine private Wallet wird in zwei Schritten erstellt:
  1. Leite das abgeschirmte Schlüsselpaar ab
  2. Registriere die Solana-Adresse in einer On-Chain-Registry.
Zum Erstellen einer privaten Wallet ist keine Einzahlung in das private Guthaben erforderlich.
In deiner Wallet-App kannst du deinen Nutzern erlauben, private Wallets nur für einen dedizierten öffentlichen Schlüssel der „Private Wallet“ oder für einen beliebigen öffentlichen Schlüssel zu erstellen.
Die Registry verknüpft den öffentlichen Signaturschlüssel mit den öffentlichen Nullifier- und Viewing-Schlüsseln. Zusammen bilden diese öffentlichen Schlüssel die abgeschirmte Adresse.
Jeder Registry-Eintrag ist eine PDA im Besitz des . Jeder kann dort prüfen, ob eine Solana-Adresse private Übertragungen empfangen kann.
  • owner ist der Solana-Signierer des Nutzers und wird zum Ableiten der Registry-PDA verwendet.
  • address ist die abgeschirmte Adresse des Nutzers.
  • getRegisterInstructionAsync registriert die Schlüssel der abgeschirmten Adresse.
  • getSetMergeEncryptionInstructionAsync aktiviert das Zusammenführen der UTXOs des Nutzers. Eine Übertragung kann höchstens 40 UTXOs ausgeben. Durch das Zusammenführen können Nutzer ihr gesamtes Guthaben immer in einer einzigen Übertragung ausgeben. Erfahre mehr über das Zusammenführen von UTXOs.
  • sendTransaction signiert und sendet die Transaktion.
  • isWalletRegistered liest die Registry-PDA, um die Registrierung zu prüfen.
Vollständige Registrierungsbeispiele: TypeScript · Rust

Privates Guthaben und Transaktionsverlauf synchronisieren

Bei der Guthabensynchronisierung wird der verschlüsselte Zustand vom RPC abgerufen und in der Wallet entschlüsselt.Der RPC entschlüsselt nichts. Nur der Eigentümer kann ein privates Guthaben mit einem Viewing-Schlüssel entschlüsseln.
Eine Wallet sollte Guthaben vor privaten Transaktionen sowie bei jedem backfill entschlüsseln und aktualisieren: beim Entsperren der Wallet, beim Öffnen der privaten Wallet, beim Fortsetzen der App, beim erneuten Herstellen der Netzwerkverbindung, bei einer Lücke im stream oder beim Wiederherstellen der Wallet.

Read a Private Balance

Read Private Transaction History

In ein privates Guthaben einzahlen

Nutzer können auf zwei Arten in ein privates Guthaben einzahlen:
  1. On-Ramp von einem Fiat-Guthaben zu einem privaten Kryptoguthaben
  2. Einzahlung von einem öffentlichen SPL-Konto in ein privates Guthaben
On-Ramp und Einzahlung bieten unterschiedliche Datenschutzgarantien. Für besseren Datenschutz empfehlen wir eine On-Ramp statt einer Einzahlung.

On-/Off-Ramp

Führe Fiat direkt in ein privates Guthaben oder aus diesem heraus.

Deposit

Zahle von einem öffentlichen Kryptoguthaben ein.

Private Übertragungen

Nutzer können private Übertragungen an jede Solana-Wallet-Adresse senden.Bei jeder privaten Übertragung sucht das Privacy SDK die Wallet-Adresse in der On-Chain-Registry, um zu prüfen, ob der Empfänger eine private Wallet besitzt.Das Privacy SDK kann eine private Übertragung als Auszahlung von privat zu öffentlich ausführen, wenn der Empfänger keine Private Wallet besitzt.
Wir empfehlen, die Transaktion in der Benutzeroberfläche als Auszahlung zu kennzeichnen. So verhinderst du, dass der Nutzer versehentlich auf ein öffentliches Guthaben auszahlt.Wir empfehlen, in der Benutzeroberfläche eine separate Nutzersignatur anzufordern. So verhinderst du, dass der Nutzer versehentlich auf ein öffentliches Guthaben auszahlt.

Private Transfer

Übertrage privat auf ein privates Guthaben.

Auf ein öffentliches Guthaben auszahlen

Auszahlungen können auf zwei Arten verwendet werden:
  1. Als Fallback für private Übertragungen an Empfänger ohne private Wallet oder
  2. als direkte Auszahlung auf ein öffentliches SPL-Token-Konto.
Bei Auszahlungen empfehlen wir, deutlich darauf hinzuweisen, dass der Nutzer das private Guthaben verlässt, ähnlich wie beim Export einer Seed-Phrase oder eines privaten Schlüssels.

Withdraw

Zahle auf ein öffentliches Kryptoguthaben aus.

Nicht gefunden, wonach du gesucht hast?

Melde dich! Telegram | E-Mail | Kontakt