Einführung in Ringe
Jede Transaktion auf Solana ist öffentlich lesbar: Adressen, Salden und Übertragungshistorie sind für jeden sichtbar. Ringe verschlüsseln On-Chain-Salden und sind standardmäßig immer nicht-kustodial:- In vertraulichen Ringen sind das Asset und der Betrag privat, während Sender und Empfänger sichtbar bleiben.
- In anonymen Ringen sind das Asset, der Betrag, Sender und Empfänger privat.
- Der Standardring ist zulassungsfrei und vertraulich. Er verschlüsselt Asset und Betrag, kann von jedem verwendet werden und hat keine benutzerdefinierten Richtlinienkontrollen.
- Benutzerdefinierte Ringe sind Solana-Programme, die Privatsphäre auf Solana programmierbar machen, ähnlich wie Token-2022. Ein benutzerdefinierter Ring kann vertraulich oder anonym mit benutzerdefinierter Richtlinie, Berichterstattung und Sichtbarkeitsregeln sein.
Für die meisten Anwendungen empfehlen wir den zulassungsfreien, vertraulichen Standardring.
Für benutzerdefinierte Richtlinien- und Compliance-Kontrollen, kontaktieren Sie uns, um mit einem benutzerdefinierten Ring zu beginnen.
Benutzerdefinierte Ringe sind programmierbar
Benutzerdefinierte Ringe sind einfache Solana-Programme, die Privatsphäre programmierbar machen und Funktionen ähnlich wie Token-2022 bieten. Ein benutzerdefinierter Ring kann vollständig benutzerdefinierte Regeln für Übertragungen und Sichtbarkeit/Auditing definieren.Beispielrichtlinien für benutzerdefinierte Ringe
Beispielrichtlinien für benutzerdefinierte Ringe
Benutzerabläufe und Datenschutzgarantien
Transaktionen mit Helius Privacy werden nativ On-Chain ausgeführt und mit anderen Solana-Programmen in einer einzigen Transaktion kombiniert. Benutzer können in einen Ring eintreten, innerhalb eines Rings privat übertragen oder einen Ring verlassen: 1. Einzahlung oder On-Ramp. Benutzer senden Tokens von einem öffentlichen Solana-Saldo oder einem Fiat-Saldo direkt zu einem privaten Saldo. 2. Private Übertragung. Benutzer senden Tokens zwischen privaten Salden im gleichen Ring oder zu einem anderen. 3. Abheben oder Off-Ramp. Benutzer senden Tokens von einem privaten zu einem öffentlichen Solana-Saldo oder direkt zu einem Fiat-Saldo.Einzahlung in einen privaten Saldo: Was ist privat
Benutzer können auf zwei Arten in einen privaten Saldo einzahlen:- On-Ramp von einem Fiat-Saldo zu einem privaten Krypto-Saldo
- Einzahlung von einem öffentlichen zu einem privaten Krypto-Saldo
- On-ramp from fiat balance
- Deposit from public crypto balance
Private Übertragung: Was ist privat
Benutzer können auf zwei Arten eine private Übertragung senden:- Übertragung im gleichen Ring
- Übertragung zu einem anderen Ring
Für die meisten Anwendungen empfehlen wir den zulassungsfreien, vertraulichen Standardring.
Für benutzerdefinierte Richtlinien- und Compliance-Kontrollen, kontaktieren Sie uns, um mit einem benutzerdefinierten Ring zu beginnen.
- Permissionless Confidential Ring
- Custom Rings
Abheben von einem privaten Saldo: Was ist privat
Benutzer können auf zwei Arten von einem privaten Saldo abheben:- Off-Ramp von privatem Krypto zu einem Fiat-Saldo
- Abheben von privatem Krypto zu einem öffentlichen Krypto-Saldo
- Off-ramp to fiat balance
- Withdraw to public crypto balance
Transaktionsfluss auf hoher Ebene
Eine private Übertragung verhält sich ähnlich wie öffentliche Übertragungen und wird in einer einzigen Solana-Transaktion ausgeführt.- Private Übertragung
- Solana-Übertragung
- Der SOL- oder SPL-Saldo des Benutzers wird On-Chain verschlüsselt.
- Verschlüsselter Zustand abrufen und lokal entschlüsseln oder ein delegierter Anbieter entschlüsselt und stellt den entschlüsselten Zustand bereit.
- Das Wallet legt Betrag und Empfänger fest und fordert einen ZK-Nachweis an.
- Der RPC-Anbieter generiert standardmäßig den ZK-Nachweis und gibt ihn zurück. Ein benutzerdefinierter Ring erfordert auch einen Richtliniennachweis.
- Das Wallet erstellt die Solana-Transaktion. ZK-Nachweise werden verifiziert, ohne den verschlüsselten Zustand offenzulegen. Die aufgerufenen Programme und wer unterzeichnet und einreicht, hängen vom Ring ab:
- Die App verfolgt den Status über den Solana-Transaktions-Hash.
- Zulassungsfreier vertraulicher Ring
- Benutzerdefinierter vertraulicher Ring
- Benutzerdefinierter anonymer Ring
Private Wallet
Benutzer halten ihren verschlüsselten Saldo in einer Private Wallet. Die Private Wallet erhält Übertragungen an der öffentlichen Solana-Adresse des Benutzers, dient als dieinbox.
So gibt der Sender immer die Solana-Adresse des Empfängers ein, wie er es bei öffentlichen Übertragungen tut.
Erstellung einer Private Wallet
Bei der Erstellung einer Private Wallet wird die Solana-Adresse in einem On-Chain-Register registriert. Das Register ordnet eine Solana-Adresse einer zu. Übertragungen werden im Hintergrund an die geschützte Adresse verschlüsselt. Mehrere Solana-Adressen können keine gemeinsame geschützte Adresse teilen. Jeder Registereintrag ist ein PDA, der vom verwaltet wird, das jeder nachschlagen kann, um zu sehen, ob eine Solana-Adresse private Übertragungen empfangen kann.In Ihrer Wallet-App können Sie Ihren Benutzern erlauben, private Wallets nur für einen dedizierten “Private Wallet”-öffentlichen Schlüssel zu erstellen,
oder für jeden öffentlichen Schlüssel.
Übertragungen zu einer Private Wallet
Bei jeder Übertragung prüft die Privacy-API die Wallet-Adresse im On-Chain-Register, um zu überprüfen, ob der Empfänger über eine Private Wallet verfügt. Bei einem Treffer wird die geschützte Adresse im Hintergrund verwendet, um die Übertragung zu verschlüsseln.Wenn der Empfänger einer privaten Übertragung keine Private Wallet hat, löst die Privacy-API die Übertragung als privat-zu-öffentlich-Abhebung.Wir empfehlen, im UI eine separate Benutzerunterschrift anzufordern, um sicherzustellen, dass der Benutzer nicht versehentlich auf ein öffentliches Guthaben abhebt.
Schlüsselverwaltung
Eine Private Wallet fügt einer Solana-Wallet von Ihrem Solana-Schlüsselpaar ein geschütztes Schlüsselpaar hinzu.
Das geschützte Schlüsselpaar ist ein Bündel der Signatur-, Nullifikations- und Ansichtsschlüssel. Es ist kein Solana-Schlüsselpaar.
Die geschützte Adresse sind die öffentlichen Schlüssel des geschützten Schlüsselpaares. Übertragungen werden an diese verschlüsselt.
Erstellen eines geschützten Schlüsselpaares
Eine Wallet kann das geschützte Schlüsselpaar auf zwei Arten erstellen.-
Schlüssel aus der Seed-Phrase ableiten.
- Der empfohlene Ansatz für seed-basierte Wallets.
- Vertrauliche Ringe: der Signaturschlüssel ist derselbe Ed25519-Schlüssel, den eine Solana-Wallet aus diesem Seed ableitet. Die Nullifikations- und Ansichtsschlüssel sind zusätzliche Schlüssel, die aus demselben Seed abgeleitet werden.
- Benutzerdefinierte anonyme Ringe: der Signaturschlüssel ist ein zusätzlicher P-256-Schlüssel, der aus dem Wallet-Seed abgeleitet wird.
- Sie können das geschützte Schlüsselpaar immer auf dieselbe Weise wiederherstellen, wie Sie die Solana Wallet wiederherstellen.
-
Schlüssel aus einer fixen Nachricht mit dem vorhandenen Solana-Schlüssel ableiten.
- Solana-Signaturen sind deterministisch, daher produziert dasselbe Solana-Schlüsselpaar immer dasselbe geschützte Schlüsselpaar. Die App erhält nie den privaten Schlüssel.
- Der empfohlene Ansatz für Tests und Wallets, die keine Seed-Phrase verwenden. Das integrierende Wallet muss sicherstellen, dass die Signatur nicht an Dritte weitergegeben wird.
Integration eines geschützten Schlüsselpaares
Eine Wallet kann das geschützte Schlüsselpaar selbst über die native Wallet-Integration halten. Mit der Embedded Privacy Wallet hält ein Wallet-Anbieter das geschützte Schlüsselpaar und führt seine Schlüsseloperationen stattdessen durch.Entschlüsselungsmodi und Wallet-Synchronisation
Nur der Besitzer kann einen privaten Wallet-Saldo mit einem Ansichtsschlüssel entschlüsseln. Für selektive Offenlegung kann ein Besitzer einen Ansichtsschlüssel mit einem Auditor teilen, sodass der Auditor Aktivitäten lesen kann, ohne ausgeben zu können. In benutzerdefinierten Ringen kann die Richtlinie einen Auditor erklären, der alle Salden aus diesem benutzerdefinierten Ring entschlüsseln kann. Vertrauliche Ringe (der Standardring und vertrauliche benutzerdefinierte Ringe) unterstützen lokale und delegierte Entschlüsselung. Anonyme Ringe (nur benutzerdefinierte Ringe) unterstützen nur delegierte Entschlüsselung.Eine Wallet sollte Salden entschlüsseln und aktualisieren, wo immer sie Backfills ausführt: beim Entsperren der Wallet,
Öffnen der privaten Wallet, Fortsetzen der App, erneuter Netzwerkverbindung, Stream-Lücke oder Wiederherstellung der Wallet.
Lokale Entschlüsselung
Im lokalen Entschlüsselungsmodus entschlüsselt und synchronisiert die Wallet Salden und Verlauf lokal. Helius-Server erhalten nicht die mnemonische Phrase, den Seed, den privaten Signaturschlüssel, die privaten Ansichtsschlüssel oder das Nullifikator-Geheimnis.Delegierte Entschlüsselung
Im delegierten Entschlüsselungsmodus teilen die Wallet und der ausgewählte Anbieter einen Ansichtsschlüssel. Dies ermöglicht es dem Anbieter, Salden und Verlauf zu entschlüsseln, gewährt jedoch keine Ausgabeberechtigung. Eine Wallet kann auch vorherige Ansichtsschlüssel teilen, wenn sie den Anbieter autorisiert, historische Aktivitäten zu synchronisieren. Auditorenzugriff ist getrennt von delegierter Entschlüsselung. Ein Auditor erhält Richtlinien-definierte Ring-Sichtbarkeit, während ein delegierter Anbieter Wallet-bezogenen Synchronisationszugriff erhält.Indexer dient verschlüsseltem Zustand
So wie öffentliche Wallets auf einen Solana RPC angewiesen sind, verlassen sich Private Wallets auf einen Indexer. Der Indexer dient dem verschlüsselten Zustand, den eine Wallet benötigt, um Salden zu lesen und private Transaktionen zu erstellen. Standardmäßig ist der Indexer über die zugänglich; jeder kann auch einen eigenen Indexer zulassungsfrei als Fallback betreiben.Private Wallet-Saldo
Der Private Wallet-Saldo wird On-Chain in privaten Solana Token Accounts als UTXOs (unspent transaction outputs) gehalten, nicht in einem Solana Token Account. Der Standardring und alle benutzerdefinierten Ringe speichern private Salden in einem Merklebaum. Der Private Wallet-Saldo ist die Summe aller von einer Private Wallet gehaltenen UTXOs. Solana-Programme können UTXOs ähnlich wie reguläre Solana-Konten besitzen. Diese Dokumentation verwendet Private Solana Token Accounts und UTXOs austauschbar.Salden in UTXOs vs. Solana-Konten
Salden in UTXOs vs. Solana-Konten
Für das Benutzererlebnis macht es keinen Unterschied, ob das Guthaben in UTXOs oder Solana Token Accounts gehalten wird.Auf technischer Ebene reduziert das Ausgeben eines öffentlichen Saldos das 
amount-Feld in einem Solana Token Account.
Das Ausgeben eines privaten Saldos überschreibt nicht das amount-Feld eines UTXO.
Stattdessen nutzen private Transaktionen bestehende UTXOs als Eingaben (automatisch vom SDK ausgewählt),
verwenden die Eingaben und erstellen neue Ausgaben für den Empfänger und für den verbleibenden Saldo des Senders.Zum Beispiel hat Alice 50 USDC und sendet Bob 35.- In einem Solana Token Account geht ihr
amount-Feld von 50 auf 15, und Bobs steigt um 35. Die Zahl ändert sich im Feld. - Mit UTXOs hält Alice einen 50 USDC-Schein. Die Transaktion gibt ihn aus und erstellt zwei neue Scheine: einen 35 USDC-Schein für Bob und einen 15 USDC-Wechselschein für Alice. Ihr alter 50-Schein ist jetzt ausgegeben.
- Eine Eingabeschuld
- Mehrere Eingabeschulden
Bei einer Einzahlung in einen privaten Saldo von SOL- und SPL-Assets verwahrt ein Interface-PDA, der vom Solana Privacy Program verwaltet wird, Tokens und erstellt UTXOs mit dem Benutzer als Eigentümer.Bei einer Abhebung zu einem öffentlichen Saldo werden bestehende UTXOs als ausgegeben markiert und Tokens an die Solana Token Accounts freigegeben.
policy_program_id-Feld gespeichert ist.
Private Solana Token Accounts
Ein privater Solana Token Account ist ein UTXO, das sich ähnlich wie ein Solana Token Account verhält, mit zwei wesentlichen Unterschieden:- ein privater Solana Token Account erfordert bei der Erstellung keine Mietenfreistellung, und
- sein Saldo ist On-Chain verschlüsselt.
- Asset: die Prägewährung, die der UTXO Einheiten hält. SOL ist die Standard-Prägeadresse. Das Asset kann SOL oder ein beliebiges SPL- oder Token-2022-Asset sein.
- Menge: die Anzahl der Einheiten von
asset, die die Schuld hält, in der kleinsten Einheit des Assets. - Programm- und Richtliniendaten: optionale Daten für die konfigurierte Ringrichtlinie, um Token-2022-ähnliche Funktionen hinzuzufügen
- Diagramm
- Code
Solana Token Account ansehen
Solana Token Account ansehen
- Diagramm
- Code