- Ein UTXO ist kein Solana-Konto und benötigt daher keine Befreiung von der Rent.
- Sein Guthaben wird onchain verschlüsselt.
- Eigentümer – Solana-Keypair, PDA oder P-256-Schlüssel.
- Asset – der Mint (SOL, SPL oder Token-2022).
- Betrag – die Anzahl der Einheiten von
assetin der kleinsten Einheit. - Daten – ein UTXO kann beliebige Daten speichern, zum Beispiel den Eigentümer treuhänderisch verwahrter Token.
- Programm- und Richtliniendaten – optional konfigurierte Ring-Compliance.
- Diagram
- Code
Quellcode ansehen: Spezifikation · sdk-libs/transaction/src/utxo/note.rs
View Solana token account
View Solana token account
- Diagram
- Code
Privates Guthaben
Das private Guthaben ist die Summe aller UTXOs eines Assets, die einem privaten Wallet gehören. Das Wallet zeigt ein einziges Guthaben an, unabhängig davon, ob das private Guthaben aus einem oder mehreren UTXOs besteht. Eine private Übertragung kann mehrere UTXOs gleichzeitig ausgeben.Private Übertragung
Private Übertragungen mit UTXOs funktionieren anders als öffentliche Übertragungen mit SPL-Token-Konten:- Eine Übertragung von einem SPL-Token-Konto aktualisiert
amount. - Eine private Übertragung mit UTXOs aktualisiert
amounteines UTXO nicht. Stattdessen geben private Übertragungen vorhandene UTXOs aus und erstellen neue UTXOs für den Empfänger sowie für das Restguthaben des Absenders.
- Bei SPL-Token-Konten sinkt Alices
amountvon 50 auf 15 und Bobs steigt um 35. - Bei UTXOs besitzt Alice ein UTXO über 50 USDC. Die Transaktion gibt das vorhandene UTXO aus und erstellt zwei neue UTXOs: eines über 35 USDC für Bob und eines über 15 USDC für Alice.
- Transfer with one UTXO
- Transfer with multiple UTXOs
UTXO-Auswahl
Für private Übertragungen wählt das SDK nicht ausgegebene UTXOs aus, die den zu übertragenden Betrag abdecken. Der UTXO-Auswahlalgorithmus gibt pro Übertragung so wenige UTXOs wie möglich aus:- Das SDK filtert deine UTXOs nach dem gesendeten Asset und sortiert sie nach Betrag.
- Das SDK wählt so viele UTXOs aus, wie zum Abdecken des Übertragungsbetrags erforderlich sind. Es wählt zuerst die größten UTXOs aus, bis der Übertragungsbetrag abgedeckt ist.
Transaktionsvarianten
Jede private Übertragung verwendet eine Transaktionsvariante: eine feste Anzahl von slots für auszugebende UTXOs und neu zu erstellende UTXOs. Die Varianten reichen von 1 bis 36 ausgegebenen UTXOs. Jede Variante hat ihren eigenen ZK-Schaltkreis. Der Schaltkreis beweist, dass die ausgegebenen UTXOs gültig sind und die neuen UTXOs denselben Gesamtbetrag enthalten. Wenn eine Übertragung mehr als 36 UTXOs benötigt, führe sie zuerst zusammen. Das SDK wählt eine zur Übertragung passende Variante aus und füllt ungenutzte slots mit Dummy-UTXOs. Dummy-UTXOs haben keinen Wert und sehen onchain wie echte UTXOs aus.- 1 spent, 2 new
- 2 spent, 2 new
- 3 spent, 3 new
- 4 spent, 3 new
Alice sendet Bob 30 USDC. Ihr größtes UTXO deckt die Übertragung ab.
Supported transaction variants
Supported transaction variants
Quellcode ansehen: Spezifikation · Unterstützte Varianten
UTXOs zusammenführen
Wenn du viele Übertragungen empfängst, ohne etwas auszugeben, kann sich das private Guthaben auf viele UTXOs verteilen. Wenn eine Übertragung mehr als 36 UTXOs benötigt, führe sie zuerst zusammen, damit der Benutzer das gesamte Guthaben in einer Übertragung ausgeben kann. Die meisten Benutzer werden selten auf ein fragmentiertes Guthaben stoßen, da eine Übertragung bis zu 36 UTXOs ausgeben kann.- Eine Zusammenführung kombiniert UTXOs desselben Eigentümers und Assets zu einem UTXO mit demselben Gesamtwert.
- Eine Zusammenführung kann keine Mittel ausgeben oder den Eigentümer ändern.
- Die Zusammenführung kann im Hintergrund erfolgen, ohne die UX für Endbenutzer zu beeinträchtigen.
Jede Zusammenführung ist eine Solana-Transaktion mit einem ZK-Beweis und wandelt bis zu 36 UTXOs in ein UTXO um.
Da das Ergebnis der Zusammenführung deterministisch ist, werden die Zusammenführungsbeweise und der Übertragungsbeweis parallel erzeugt.
Beispiel für die Verwendung einer Zusammenführungsanweisung
Deine Anwendung kann UTXOs zu zwei Zeitpunkten zusammenführen:- Beim Synchronisieren des privaten Guthabens: beim Entsperren des Wallets, Öffnen des privaten Wallets, Fortsetzen der App, Wiederherstellen der Netzwerkverbindung, bei einer Lücke im stream oder beim Wiederherstellen des Wallets.
- Vor einer Übertragung: wenn die Übertragung mehr als 36 UTXOs benötigt.
Zusammenführungen werden ohne Benutzersignatur ausgeführt. Benutzerdefinierte Rings legen ihre eigenen Berechtigungen für Zusammenführungen fest.
Wenn du das eingebettete private Wallet verwendest, erfolgt die Zusammenführung automatisch im Hintergrund.
Example for Merge
Example for Merge
Ein privates Wallet enthält beispielsweise 1.296 USDC in 1.296 UTXOs, nachdem es 1.296 private Übertragungen über jeweils 1 USDC empfangen hat.
Eine Übertragung gibt höchstens 36 UTXOs aus. Daher gibt das Wallet das Guthaben in zwei Schritten aus:
- 36 Zusammenführungstransaktionen werden parallel ausgeführt und erstellen 36 UTXOs über jeweils 36 USDC.
- Eine Übertragung mit 36 Eingaben gibt das gesamte Guthaben von 1.296 USDC aus.
UTXO-Parallelität
Benutzer können private Guthaben ausgeben, sobald die Transaktionen final sind. Ein privates Guthaben kann parallel ausgegeben werden, wenn es auf mehrere UTXOs aufgeteilt ist. Jedes UTXO kann gleichzeitig in einer separaten Transaktion ausgegeben werden. Ein Guthaben aus drei UTXOs über jeweils 100 USDC kann beispielsweise gleichzeitig drei Übertragungen von bis zu 100 USDC finanzieren. Das Wallet wählt aus, welche UTXOs ausgegeben werden.Mehr erfahren
Overview
Rings, Datenschutzgarantien und Transaktionsablauf.
Architecture
So interagieren Wallets, RPC-Dienste und Solana-Programme.
Encryption and Privacy Guarantees
So werden Assets verschlüsselt und diese Rolle spielt das abgeschirmte Keypair.
Custom Enterprise Rings
Erfahre, wie du einen benutzerdefinierten Ring konfigurierst.