- Permissionless Confidential Ring
- Custom Confidential Ring
- Custom Anonymous Ring
Private Wallet und Benutzer
Benutzer verwahren ihr verschlüsseltes Guthaben in einer privaten Wallet und signieren private Transaktionen mit ihrem bestehenden Solana-Ed25519-Schlüssel. Eine Integration der privaten Wallet ergänzt deine Schlüsselverwaltung um ein abgeschirmtes Schlüsselpaar. Du kannst die Integration selbst vornehmen oder die eingebettete private Wallet verwenden.Private Transaktionen
Private Übertragungen sind normale Solana-Transaktionen. Die Solana-Laufzeitumgebung prüft die Signaturen und ruft das Solana Privacy Program auf. Dieses verifiziert den ZK-Beweis, ohne den verschlüsselten Zustand offenzulegen. Eine typische vertrauliche Übertragung benötigt etwa 927 Byte und liegt damit deutlich unter dem Limit von 4.096 Byte in v1.Example Confidential Transfer
Example Confidential Transfer
Für das Beispiel einer vertraulichen Übertragung mit 2 Eingaben und 3 Ausgaben aus der Spezifikation.
Quellcode ansehen: Spezifikation · xtask/src/main.rsSieh dir das Transaktionslayout von Solana v1 an.
RPC
Eine stellt Solana RPC, den Indexer und einen Remote-Prover bereit.- Solana RPC – Gibt das öffentliche Guthaben zurück und übermittelt Transaktionen an das Solana-Netzwerk.
- Indexer – Der Indexer stellt den verschlüsselten Zustand bereit, den eine Wallet zum Lesen von Guthaben und Erstellen privater Transaktionen benötigt. Als Fallback kann jeder ohne Genehmigung einen eigenen Indexer betreiben.
- Prover – Zero-Knowledge-Beweise können je nach Transaktion und Hardware innerhalb von Millisekunden lokal oder von einem Prover-Server erzeugt werden. Helius nutzt GPUs zur Beweiserzeugung.
Datenschutz und Solana-Programme
Das Solana Privacy Program (SPP) ist das Hauptprogramm, das alle privaten Zustandsübergänge verifiziert und ausführt. Programme für benutzerdefinierte Rings und ZK-Solana-Programme ergänzen Compliance- oder Anwendungslogik und rufen anschließend SPP auf, um den privaten Zustand zu aktualisieren. Andere Solana-Programme können innerhalb derselben Transaktion über CPI mit diesen Programmen interagieren. Dabei gelten die Transaktionslimits von Solana, etwa das CPI-Tiefenlimit von 5.ZK Program Transaction Flow
ZK Program Transaction Flow
- Permissionless Ring
- Custom Rings
- ZK Program alone
- ZK Program and additional Solana Program
Solana Privacy Program (SPP)
Das Solana Privacy Program verifiziert Zero-Knowledge-Beweise und aktualisiert den privaten Zustand. Verwende es, um Token einzuzahlen, private Guthaben zu übertragen und Token auf öffentliche Accounts auszuzahlen. Andere Programme rufen SPP über CPI auf, um private Zustandsübergänge auszuführen.Programm für benutzerdefinierte Rings
Ein Programm für einen benutzerdefinierten Ring definiert Übertragungsberechtigungen und zusätzliche Autoritäten, ähnlich wie Token-2022. Verwende es, um Prüfer zu konfigurieren, einen Mitunterzeichner zu verlangen oder einer Autorität das Einfrieren von Guthaben zu erlauben. Es verifiziert einen ZK-Beweis, um seine benutzerdefinierte Compliance-Logik durchzusetzen, und ruft anschließend SPP auf, um den privaten Zustand zu aktualisieren.ZK-Solana-Programm
Zero-Knowledge-Solana-Programme (ZK) ermöglichen private Treuhandkonten in Solana-Programmen, um Anwendungslogik auf private Guthaben anzuwenden. Mit ZK-Solana-Programmen kannst du private Swaps, Staking, Kreditvergabe und weitere Anwendungen entwickeln. Ein vertraulicher Swap kann beispielsweise die vereinbarten Beträge und den Preis durchsetzen, ohne sie öffentlich zu machen. Das Programm verifiziert einen ZK-Beweis seiner Anwendungslogik und ruft anschließend direkt oder über ein Programm für einen benutzerdefinierten Ring SPP auf, um den privaten Zustand zu aktualisieren.Zustands-Merkle-Baum und Forester
Der Standard-Ring und alle benutzerdefinierten Rings speichern den privaten Zustand in einem Account für einen Zustands-Merkle-Baum, der von einem Forester node verwaltet wird. Baum-Accounts binden den privaten Zustand, ohne ihn in separaten Solana-Accounts zu speichern. Lies Guthaben und den Transaktionsverlauf daher mit speziellen Indexer-RPC-Methoden wiegetShieldedTransactionsByTags statt mit Solana-Account-Methoden wie getAccountInfo. Sieh dir Privates Guthaben lesen und Privaten Transaktionsverlauf lesen an.
Durchsatz
Der Baum wird in einem beschreibbaren Solana-Account gespeichert. Private Übertragungen, die in diesen Account schreiben, teilen sich das Solana-Limit von 12 Millionen CU pro Block für den Write-Lock eines Accounts. Verschiedene UTXOs können unabhängig voneinander ausgegeben werden. Transaktionen, die in denselben Baum schreiben, teilen sich jedoch weiterhin die Account-Sperren und Compute-Limits von Solana. Eine vertrauliche Übertragung verbraucht im Anweisungs-Benchmark etwa 140.000 CU. Ein Baum unterstützt daher ungefähr 86 private Übertragungen pro Block oder bei den aktuellen Solana-Blockzeiten von etwa 400 Millisekunden ungefähr 215 Transaktionen pro Sekunde. Das Protokoll kann weitere Bäume hinzufügen, um den Durchsatz zu erhöhen. Jeder Baum ist ein separater beschreibbarer Account mit eigenem Compute-Budget pro Account. Deshalb konkurrieren Transaktionen auf verschiedenen Bäumen nicht um dasselbe Write-Lock-Budget.SPL-Schnittstelle
Die SPL-Schnittstelle ermöglicht die Interoperabilität zwischen öffentlich und privat gehaltenen Token. Sie ist ein Treuhandkonto pro Mint, das ohne Genehmigung erstellt werden kann, aber pro Mint nur einmal erstellt werden muss.- Bei der Einzahlung von SOL- und SPL-Assets in ein privates Guthaben verwahrt eine Schnittstellen-PDA, die dem Solana Privacy Program gehört, die Token treuhänderisch und erstellt UTXOs mit dem Benutzer als Eigentümer.
- Bei der Auszahlung auf ein öffentliches Guthaben werden vorhandene UTXOs als ausgegeben markiert und Token an die Solana-Token-Accounts freigegeben.
Mehr erfahren
Overview
Rings, Datenschutzgarantien und Transaktionsablauf.
Private State and UTXOs
So werden private Guthaben gespeichert und ausgegeben.
Encryption and Privacy Guarantees
So werden Assets verschlüsselt und diese Rolle übernimmt das abgeschirmte Schlüsselpaar.
Custom Enterprise Rings
Erfahre, wie du einen benutzerdefinierten Ring konfigurierst.