- UTXO bukan akun Solana sehingga tidak memerlukan pembebasan biaya sewa.
- Saldonya dienkripsi secara onchain.
- Pemilik – keypair Solana, PDA, atau kunci P-256.
- Aset – mint (SOL, SPL, atau Token-2022).
- Jumlah – jumlah unit
asset, dalam unit terkecilnya. - Data – UTXO dapat menyimpan data arbitrer, misalnya pemilik token yang ditempatkan dalam escrow.
- Data program dan kebijakan – kepatuhan Ring terkonfigurasi yang bersifat opsional.
- Diagram
- Code
Lihat kode sumber: Spesifikasi · sdk-libs/transaction/src/utxo/note.rs
View Solana token account
View Solana token account
- Diagram
- Code
Saldo Privat
Saldo privat adalah jumlah seluruh UTXO dari satu aset yang dimiliki oleh dompet privat. Dompet menampilkan satu saldo, terlepas dari apakah saldo privat terdiri dari satu atau beberapa UTXO. Transfer privat dapat membelanjakan beberapa UTXO sekaligus.Transfer Privat
Transfer privat dengan UTXO bekerja secara berbeda dari transfer publik dengan akun token SPL:- Transfer dari akun token SPL memperbarui
amount. - Transfer privat dengan UTXO tidak memperbarui
amountmilik UTXO. Sebagai gantinya, transfer privat membelanjakan UTXO yang ada dan membuat UTXO baru untuk penerima serta sisa saldo pengirim.
- Dengan akun token SPL,
amountmilik Alice berkurang dari 50 menjadi 15, sedangkan milik Bob bertambah 35. - Dengan UTXO, Alice memiliki satu UTXO senilai 50 USDC. Transaksi membelanjakan UTXO yang ada dan membuat dua UTXO baru: satu senilai 35 USDC untuk Bob dan satu senilai 15 USDC untuk Alice.
- Transfer with one UTXO
- Transfer with multiple UTXOs
Pemilihan UTXO
Untuk transfer privat, SDK memilih UTXO yang belum dibelanjakan dan mencukupi jumlah yang ingin Anda transfer. Algoritma pemilihan UTXO membelanjakan sesedikit mungkin UTXO per transfer:- SDK memfilter UTXO Anda berdasarkan aset yang dikirim dan mengurutkannya berdasarkan jumlah.
- SDK memilih UTXO sebanyak yang diperlukan untuk mencukupi jumlah transfer. SDK memilih UTXO terbesar terlebih dahulu hingga jumlah transfer tercukupi.
Varian Transaksi
Setiap transfer privat menggunakan varian transaksi: jumlah slot tetap untuk UTXO yang akan dibelanjakan dan UTXO baru yang akan dibuat. Varian berkisar dari 1 hingga 36 UTXO yang dibelanjakan, dan setiap varian memiliki sirkuit ZK tersendiri. Sirkuit tersebut membuktikan bahwa UTXO yang dibelanjakan valid dan UTXO baru menyimpan jumlah total yang sama. Jika transfer memerlukan lebih dari 36 UTXO, gabungkan terlebih dahulu. SDK memilih varian yang sesuai dengan transfer dan mengisi slot yang tidak digunakan dengan UTXO dummy. UTXO dummy tidak menyimpan nilai dan terlihat seperti UTXO asli secara onchain.- 1 spent, 2 new
- 2 spent, 2 new
- 3 spent, 3 new
- 4 spent, 3 new
Alice mengirimkan 30 USDC kepada Bob. UTXO terbesarnya mencukupi transfer tersebut.
Supported transaction variants
Supported transaction variants
Lihat kode sumber: Spesifikasi · Varian yang didukung
Menggabungkan UTXO
Menerima banyak transfer tanpa melakukan pembelanjaan dapat memecah saldo privat ke banyak UTXO. Jika transfer memerlukan lebih dari 36 UTXO, gabungkan terlebih dahulu agar pengguna dapat membelanjakan seluruh saldo dalam satu transfer. Sebagian besar pengguna jarang menemui saldo yang terfragmentasi karena satu transfer dapat membelanjakan hingga 36 UTXO.- Penggabungan menyatukan UTXO dengan pemilik dan aset yang sama menjadi satu UTXO dengan nilai total yang sama.
- Penggabungan tidak dapat membelanjakan dana atau mengubah pemilik.
- Penggabungan dapat dilakukan secara internal tanpa memengaruhi UX pengguna akhir.
Setiap penggabungan merupakan satu transaksi Solana dengan bukti ZK dan mengubah hingga 36 UTXO menjadi satu.
Karena hasil penggabungan bersifat deterministik, bukti penggabungan dan bukti transfer dibuat secara paralel.
Contoh Penggunaan Instruksi Penggabungan
Aplikasi Anda dapat melakukan penggabungan pada dua tahap:- Saat menyinkronkan saldo privat: ketika dompet dibuka kuncinya, dompet privat dibuka, aplikasi dilanjutkan, jaringan tersambung kembali, terjadi celah stream, atau dompet dipulihkan.
- Sebelum transfer: ketika transfer memerlukan lebih dari 36 UTXO.
Penggabungan berjalan tanpa tanda tangan pengguna. Ring kustom menetapkan izin penggabungannya sendiri.
Saat menggunakan dompet privat tersemat, penggabungan dilakukan untuk Anda secara internal.
Example for Merge
Example for Merge
Sebagai contoh, dompet privat menyimpan 1.296 USDC dalam 1.296 UTXO setelah menerima 1.296 transfer privat yang masing-masing bernilai 1 USDC.
Satu transfer dapat membelanjakan maksimal 36 UTXO, sehingga dompet membelanjakan saldo dalam dua tahap:
- Sebanyak 36 transaksi penggabungan berjalan secara paralel dan membuat 36 UTXO yang masing-masing bernilai 36 USDC.
- Satu transfer dengan 36 input membelanjakan seluruh saldo 1.296 USDC.
Konkurensi UTXO
Pengguna dapat membelanjakan saldo privat segera setelah transaksi berstatus final. Saldo privat dapat dibelanjakan secara bersamaan ketika terbagi di beberapa UTXO. Setiap UTXO dapat dibelanjakan dalam transaksi terpisah pada saat yang sama. Sebagai contoh, saldo yang terdiri dari tiga UTXO senilai 100 USDC dapat mendanai tiga transfer hingga 100 USDC sekaligus. Dompet memilih UTXO yang akan dibelanjakan.Pelajari Lebih Lanjut
Overview
Ring, jaminan privasi, dan alur transaksi.
Architecture
Cara dompet, layanan RPC, dan program Solana berinteraksi.
Encryption and Privacy Guarantees
Cara aset dienkripsi dan peran keypair terlindung.
Custom Enterprise Rings
Pelajari cara mengonfigurasi Ring kustom.