- Eine selbstverwaltete private Wallet erstellen
- Private Übertragungen über eine Solana-Adresse empfangen
- Token in ein privates Guthaben einzahlen
- Privat an eine Solana-Adresse senden
- An eine beliebige Solana-Adresse auszahlen
- Private Guthaben und den Transaktionsverlauf lokal entschlüsseln
- Abgeschirmtes Schlüsselpaar – in deiner Schlüsselverwaltung für die Verschlüsselung
- Privacy Interface und SDK – zum Erstellen privater Transaktionen
- Nutzerabläufe – zur Integration in deine Wallet
Kontext für deine KI
Add a Private Wallet to an existing Solana wallet
View prompt
View prompt
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:
"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.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.- Signaturschnittstelle zum Erstellen von Transaktionen mit dem Privacy SDK. Quellcode ansehen: TypeScript/ Rust
- 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:- Leite das abgeschirmte Schlüsselpaar ab
- Registriere die Solana-Adresse in einer On-Chain-Registry.
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.
Jeder Registry-Eintrag ist eine PDA im Besitz des . Jeder kann dort prüfen, ob eine Solana-Adresse private Übertragungen empfangen kann.
- TypeScript Client
- Rust Client
ownerist der Solana-Signierer des Nutzers und wird zum Ableiten der Registry-PDA verwendet.addressist die abgeschirmte Adresse des Nutzers.getRegisterInstructionAsyncregistriert die Schlüssel der abgeschirmten Adresse.getSetMergeEncryptionInstructionAsyncaktiviert 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.sendTransactionsigniert und sendet die Transaktion.isWalletRegisteredliest 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:- On-Ramp von einem Fiat-Guthaben zu einem privaten Kryptoguthaben
- Einzahlung von einem öffentlichen SPL-Konto in ein privates Guthaben
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:- Als Fallback für private Übertragungen an Empfänger ohne private Wallet oder
- als direkte Auszahlung auf ein öffentliches SPL-Token-Konto.
Withdraw
Zahle auf ein öffentliches Kryptoguthaben aus.