Skip to main content

Pengantar Ring

Setiap transaksi di Solana dapat dibaca secara publik: alamat, saldo, dan riwayat transfer dapat dilihat oleh siapa saja. Ring mengenkripsi saldo onchain dan secara default selalu bersifat nonkustodial:
  • Dalam Ring rahasia, aset dan jumlah bersifat privat, sedangkan pengirim dan penerima tetap terlihat.
  • Dalam Ring anonim, aset, jumlah, pengirim, dan penerima bersifat privat.
Two Solana transaction cards side by side. The confidential card shows the transaction hash, sender, and recipient while the asset and amount are blacked out. The anonymous card shows only the transaction hash; the sender, asset, amount, and recipient are all blacked out. The transaction hash stays public on both. Terdapat beberapa jenis Ring:
  1. Default Ring tidak memerlukan izin dan bersifat rahasia. Ring ini mengenkripsi aset dan jumlah, dapat digunakan oleh siapa saja, serta tidak memiliki kontrol kebijakan khusus.
  2. Custom Ring adalah program Solana yang membuat privasi di Solana dapat diprogram, serupa dengan Token-2022. Custom Ring dapat bersifat rahasia atau anonim dengan aturan kebijakan, pelaporan, dan visibilitas khusus.
Untuk sebagian besar aplikasi, kami menyarankan Default Ring yang tidak memerlukan izin dan bersifat rahasia. Untuk kebijakan khusus dan kontrol kepatuhan, hubungi kami guna mulai menggunakan Custom Ring.
Private Balances shown as a dashed onchain zone holding two rings. The Default Ring is confidential, self-custodial, and permissionless. The Custom Ring is confidential or anonymous, self-custodial, and adds custom policy and custom compliance. A private transfer connects the rings, and each deposits into and withdraws from a Solana Public Balances layer below.

Custom Ring Dapat Diprogram

Custom Ring adalah program Solana sederhana yang membuat privasi dapat diprogram, dengan fitur yang serupa dengan Token-2022. Custom Ring dapat menetapkan aturan yang sepenuhnya khusus untuk transfer dan visibilitas/audit.
Otoritas Ring ditetapkan saat Ring dibuat sehingga pengguna dapat memeriksa kebijakan sebelum memilih Ring. Default Ring tidak memerlukan izin dan tidak memiliki otoritas atau auditor khusus.
Jika Anda ingin menyiapkan Custom Ring sendiri, hubungi kami dan kami akan membantu Anda menyiapkannya. Anda dapat menyediakan sistem kepatuhan sendiri atau menggunakan solusi KYC dan penyaringan sanksi terkelola dari Helius.

Alur Pengguna dan Jaminan Privasi

Transaksi dengan Helius Privacy dijalankan secara native onchain dan dapat dikomposisikan dengan program Solana lainnya dalam satu transaksi. Pengguna dapat masuk, melakukan transfer privat di dalam, atau keluar dari Ring: 1. Deposit atau on-ramp. Pengguna mengirim token dari saldo publik Solana atau saldo fiat langsung ke saldo privat. 2. Transfer privat. Pengguna mengirim token antarsaldo privat dalam Ring yang sama atau ke Ring lain. 3. Penarikan atau off-ramp. Pengguna mengirim token dari saldo privat ke saldo publik Solana atau langsung ke saldo fiat. Diagram of the Ring lifecycle. A public balance of 100 USDC deposits into a Ring and a fiat balance of USD / EUR / ... on-ramps into the same Ring, funds move between two private balances via private transfer, then withdraw to a public balance or off-ramp to a fiat balance. Pengguna mengirim token ke alamat dompet Solana, seperti saat menggunakan saldo publik. Privacy API secara otomatis merutekan transfer ke Private Wallet jika penerima memilikinya. Jika tidak, transfer menjadi penarikan ke alamat publik penerima. Siapa pun dapat melakukan deposit ke Private Wallet mana pun hanya dengan mengetahui alamat dompet publik penerima. Jika aplikasi pengirim tidak mendukung privasi, penerima menerima dana secara publik dan dapat mengenkripsinya ke saldo privatnya sendiri pada langkah berikutnya.

Deposit ke Saldo Privat: Hal yang Bersifat Privat

Pengguna dapat melakukan deposit ke saldo privat dengan dua cara:
  1. On-ramp dari saldo fiat ke saldo kripto privat
  2. Deposit dari saldo kripto publik ke saldo kripto privat

Transfer Privat: Hal yang Bersifat Privat

Pengguna dapat mengirim transfer privat dengan dua cara:
  1. Transfer dalam Ring yang sama
  2. Transfer ke Ring lain
Untuk sebagian besar aplikasi, kami menyarankan Default Ring yang tidak memerlukan izin dan bersifat rahasia. Untuk kebijakan khusus dan kontrol kepatuhan, hubungi kami guna mulai menggunakan Custom Ring.

Penarikan dari Saldo Privat: Hal yang Bersifat Privat

Pengguna dapat menarik dana dari saldo privat dengan dua cara:
  1. Off-ramp dari kripto privat ke saldo fiat
  2. Penarikan dari kripto privat ke saldo kripto publik

Alur Transaksi Tingkat Tinggi

Transfer privat berperilaku serupa dengan transfer publik dan dijalankan dalam satu transaksi Solana.
  1. Saldo SOL atau SPL pengguna dienkripsi onchain.
  2. Ambil status terenkripsi dan dekripsi secara lokal, atau penyedia yang diberi delegasi mendekripsi dan menyajikan status yang telah didekripsi.
  3. Dompet menetapkan jumlah dan penerima, lalu meminta bukti ZK.
  4. Secara default, penyedia RPC menghasilkan bukti ZK dan mengembalikannya. Custom Ring juga memerlukan bukti kebijakan.
  5. Dompet menyusun transaksi Solana. Bukti ZK diverifikasi tanpa mengungkapkan status terenkripsi. Program yang dipanggil serta pihak yang menandatangani dan mengirimkannya bergantung pada Ring:
  1. Aplikasi melacak status melalui hash transaksi Solana.

Private Wallet

Pengguna menyimpan saldo terenkripsi mereka dalam Private Wallet. Private Wallet menerima transfer di alamat Solana publik pengguna dan berfungsi sebagai inbox. Dengan demikian, pengirim selalu memasukkan alamat Solana penerima seperti saat melakukan transfer publik.

Pembuatan Private Wallet

Saat Private Wallet dibuat, alamat Solana didaftarkan dalam registri onchain. Registri memetakan satu alamat Solana ke satu . Transfer dienkripsi secara internal ke Shielded Address. Beberapa alamat Solana tidak dapat menggunakan satu Shielded Address yang sama. Setiap catatan registri merupakan PDA yang dimiliki oleh , yang dapat dicari oleh siapa saja untuk mengetahui apakah alamat Solana dapat menerima transfer privat. User wallet showing two public Solana wallets and a private wallet. An inbox arrow connects Public Wallet A's public key to the private wallet's Shielded Address.
Dalam aplikasi dompet Anda, Anda dapat mengizinkan pengguna membuat dompet privat hanya untuk kunci publik “Private Wallet” khusus, atau untuk kunci publik apa pun.

Transfer ke Private Wallet

Pada setiap transfer, Privacy API mencari alamat dompet di registri onchain untuk memeriksa apakah penerima memiliki dompet privat. Jika ditemukan, API menggunakan Shielded Address secara internal untuk mengenkripsi transfer.
Jika penerima transfer privat tidak memiliki Private Wallet, Privacy API mengubah transfer menjadi penarikan dari privat ke publik.Kami menyarankan agar Anda meminta tanda tangan pengguna yang terpisah di UI guna memastikan pengguna tidak menarik dana ke saldo publik secara tidak sengaja.

Pengelolaan Kunci

Private Wallet menambahkan pasangan kunci terlindung ke dompet Solana dari pasangan kunci Solana Anda. Pasangan kunci terlindung adalah bundel kunci penandatanganan, nullifier, dan penampil. Pasangan ini bukan pasangan kunci Solana. Shielded Address merupakan kunci publik dari pasangan kunci terlindung. Transfer dienkripsi ke alamat ini.

Membuat Pasangan Kunci Terlindung

Dompet dapat membuat pasangan kunci terlindung dengan dua cara.
  1. Turunkan kunci dari frasa seed.
    • Pendekatan yang disarankan untuk dompet berbasis seed.
    • Ring Rahasia: kunci penandatanganan adalah kunci Ed25519 yang sama dengan yang diturunkan dompet Solana dari seed tersebut. Kunci nullifier dan penampil adalah kunci tambahan yang diturunkan dari seed yang sama.
    • Custom Ring Anonim: kunci penandatanganan adalah kunci P-256 tambahan yang diturunkan dari seed dompet.
    • Anda selalu dapat membuat ulang pasangan kunci terlindung dengan cara yang sama seperti saat membuat ulang dompet Solana.
  2. Turunkan kunci dari pesan tetap dengan kunci Solana yang ada.
    • Tanda tangan Solana bersifat deterministik sehingga pasangan kunci Solana yang sama selalu menghasilkan pasangan kunci terlindung yang sama. Aplikasi tidak pernah menerima kunci privat.
    • Pendekatan yang disarankan untuk pengujian dan dompet yang tidak menggunakan frasa seed. Dompet yang diintegrasikan harus memastikan bahwa tanda tangan tidak terekspos kepada pihak ketiga.

Mengintegrasikan Pasangan Kunci Terlindung

Dompet dapat menyimpan sendiri pasangan kunci terlindung melalui Integrasi Dompet native. Dengan Embedded Privacy Wallet, Wallet Provider menyimpan pasangan kunci terlindung dan menjalankan operasi kuncinya.

Mode Dekripsi dan Sinkronisasi Dompet

Hanya pemilik yang dapat mendekripsi Saldo Private Wallet dengan Kunci Penampil. Untuk pengungkapan selektif, pemilik dapat membagikan kunci penampil kepada auditor agar auditor dapat membaca aktivitas tanpa dapat membelanjakan dana. Dalam Custom Ring, kebijakan dapat menetapkan auditor yang dapat mendekripsi semua saldo dari Custom Ring tersebut. Ring rahasia (Default Ring dan Custom Ring rahasia) mendukung dekripsi lokal dan terdelegasi. Ring anonim (hanya Custom Ring) hanya mendukung dekripsi terdelegasi.
Dompet harus mendekripsi dan memperbarui saldo di mana pun backfill dijalankan: saat dompet dibuka kuncinya, Private Wallet dibuka, aplikasi dilanjutkan, jaringan terhubung kembali, terdapat celah stream, atau dompet dipulihkan.

Dekripsi Lokal

Dalam mode dekripsi lokal, dompet mendekripsi dan menyinkronkan saldo serta riwayat secara lokal. Server Helius tidak menerima mnemonik, seed, kunci privat penandatanganan, kunci privat penampil, atau rahasia nullifier.

Dekripsi Terdelegasi

Dalam mode dekripsi terdelegasi, dompet dan penyedia yang dipilih berbagi kunci penampil. Hal ini memungkinkan penyedia mendekripsi saldo dan riwayat, tetapi tidak memberikan wewenang untuk membelanjakan dana. Dompet juga dapat membagikan kunci penampil sebelumnya saat mengizinkan penyedia menyinkronkan aktivitas historis. Akses auditor terpisah dari dekripsi terdelegasi. Auditor menerima visibilitas Ring yang ditentukan oleh kebijakan, sedangkan penyedia terdelegasi menerima akses sinkronisasi dalam cakupan dompet.

Pengindeks Menyajikan Status Terenkripsi

Sama seperti dompet publik mengandalkan RPC Solana, Private Wallet mengandalkan pengindeks. Pengindeks menyajikan status terenkripsi yang dibutuhkan dompet untuk membaca saldo dan menyusun transaksi privat. Secara default, pengindeks dapat diakses melalui ; siapa pun juga dapat menjalankan pengindeksnya sendiri tanpa izin sebagai cadangan.

Saldo Private Wallet

Saldo Private Wallet disimpan onchain dalam Akun Token Privat Solana sebagai UTXO (output transaksi yang belum dibelanjakan), bukan dalam akun token Solana. Default Ring dan semua Custom Ring menyimpan saldo privat dalam satu pohon Merkle status. Saldo Private Wallet adalah jumlah semua UTXO yang dimiliki oleh Private Wallet. Program Solana dapat memiliki UTXO seperti akun Solana biasa. Dokumentasi ini menggunakan istilah Akun Token Privat Solana dan UTXO secara bergantian. A Private Wallet connected by dashed lines to several UTXO notes, each holding one amount of one asset. The wallet balance is the sum of the notes.
Untuk pengalaman pengguna, tidak ada perbedaan antara saldo yang disimpan dalam UTXO dan akun token Solana.Pada tingkat teknis, membelanjakan saldo publik mengurangi amount dalam akun token Solana. Membelanjakan Saldo Privat tidak menimpa kolom amount milik UTXO. Sebagai gantinya, transaksi privat mengambil UTXO yang ada sebagai input (dipilih secara otomatis oleh SDK), menggunakan input tersebut, dan membuat output baru untuk penerima serta sisa saldo pengirim.Misalnya, Alice memiliki 50 USDC dan mengirim 35 kepada Bob.
  • Dalam akun token Solana, kolom amount miliknya berubah dari 50 menjadi 15, sedangkan milik Bob bertambah 35. Angka tersebut berubah langsung pada tempatnya.
  • Dengan UTXO, Alice memiliki satu nota 50 USDC. Transaksi membelanjakannya dan membuat dua nota baru: nota 35 USDC untuk Bob dan nota kembalian 15 USDC untuk Alice. Nota lama Alice senilai 50 kini telah dibelanjakan.
Alice sends Bob 35 of her 50 USDC. On a Solana token account the amount field changes in place from 50 to 15. With UTXOs, Alice's single 50 USDC note is spent and two new notes are created: a 35 USDC note for Bob and a 15 USDC change note for Alice.
Saat melakukan deposit aset SOL dan SPL ke saldo privat, PDA antarmuka yang dimiliki oleh Solana Privacy Program menyimpan token dalam eskro dan membuat UTXO dengan pengguna sebagai pemilik.Saat menarik dana ke saldo publik, UTXO yang ada ditandai sebagai telah dibelanjakan dan token dilepaskan ke akun token Solana.
Satu Private Wallet dapat menyimpan saldo dalam beberapa Ring secara bersamaan tanpa batasan jumlah Ring. Ring tempat suatu saldo berada bukanlah properti dompet. Ring tersebut merupakan properti setiap UTXO yang disimpan dalam kolom policy_program_id.

Akun Token Privat Solana

Akun Token Privat Solana adalah UTXO yang berperilaku serupa dengan akun token Solana, dengan dua perbedaan utama:
  • Akun Token Privat Solana tidak memerlukan pengecualian biaya sewa saat dibuat, dan
  • saldonya dienkripsi onchain.
Meskipun demikian, Akun Token Privat Solana menyimpan data yang sama, seperti:
  • Aset: mint yang unitnya disimpan oleh UTXO. SOL adalah alamat mint default. Aset dapat berupa SOL atau aset SPL maupun Token-2022 apa pun.
  • Jumlah: jumlah unit asset yang disimpan nota, dalam unit terkecil aset.
  • Data program dan kebijakan: data opsional agar kebijakan Ring yang dikonfigurasi dapat menambahkan fungsi seperti Token-2022
A Private Solana Token Account. The Solana Privacy Program owns a Private Token Account, which expands into its PrivateAccount fields: owner, asset, amount, policy data, and policy program id.
A Solana Token Account. The Token Program owns a Token Account, expanded into its AccountInfo fields (Data, Executable, Lamports, Owner) and the Data field expanded into Account Data (Mint, Owner, Amount).

Tentang Konkurensi

Pengguna dapat membelanjakan saldo privat segera setelah transaksi berstatus final. Secara khusus, saldo suatu pasangan kunci dapat digunakan secara bersamaan ketika saldo tersebut dibagi ke beberapa UTXO. Dompet memilih UTXO yang akan dibelanjakan. Satu pohon Merkle menyimpan status privat untuk Default Ring tanpa izin dan semua Custom Ring. Pohon tersebut disimpan dalam satu akun Solana yang dapat ditulis. Transfer privat yang menulis ke akun ini berbagi batas penguncian tulis per akun Solana sebesar 12 juta CU per blok. Transfer privat menggunakan sekitar 220.000 CU. Karena itu, satu pohon mendukung sekitar 54 transfer privat per blok atau sekitar 130 transaksi per detik dengan waktu blok Solana saat ini sekitar 400 milidetik. Protokol dapat menambahkan lebih banyak pohon untuk meningkatkan throughput. Setiap pohon merupakan akun terpisah yang dapat ditulis dan memiliki anggaran komputasi per akun sendiri, sehingga transaksi pada pohon yang berbeda tidak bersaing untuk anggaran penguncian tulis yang sama.

Tentang Waktu Pembuatan Bukti

Bukti zero-knowledge saat ini dibuat oleh server prover; transfer rahasia biasa dibuktikan dalam puluhan milidetik; pembuktian lokal untuk Ring rahasia direncanakan. Waktu pembuktian terus dioptimalkan untuk memastikan pengalaman pengguna yang lancar.

Istilah

Tidak menemukan yang Anda cari?

Hubungi kami! Telegram | Email | Kontak