Gunakan halaman ini untuk melihat siapa mengerjakan apa ketika sebuah transfer bergerak melalui Rand. Pembuktian itu mahal dan verifikasi itu murah, sehingga pekerjaan dibagi menurut garis tersebut. Sisi pengirim membuat bukti. Validator hanya memeriksa, mengurutkan, dan memberikan suara atas bukti tersebut. Agregator, setelah diaktifkan, akan melipat banyak bukti menjadi satu. Gambar berikut mengikuti satu transfer dari dompet hingga menjadi blok final; bagian-bagian setelahnya membahas setiap peran satu per satu.
Jalur satu transfer
- Dompet menyusun transfer. Dompet memilih catatan masukannya, mengambil saksi Merkle dari catatan tersebut, menyusun empat keluaran, dan menyegel masing-masing dalam amplop ML-KEM-768. Kemudian dompet menghitung binding transaksi, yaitu hash atas seluruh isi transaksi kecuali bukti (Transactions).
- Dompet membuktikan otorisasi sendiri. Ini adalah bukti tier-10 atas kunci pembelanjaan dan salt baru, yang memakan waktu beberapa detik. Ini satu-satunya bukti yang menyentuh kunci pembelanjaan, dan selalu dibuat di mesin milik dompet itu sendiri.
- Bukti bundle dibuat di tempat yang memiliki memori untuk itu. Bukti tier-14 ini menunjukkan kepemilikan, keanggotaan, nullifier, dan keseimbangan, dengan puncak pemakaian memori sekitar 6 GB. Aplikasi desktop dan ponsel dengan sekitar 8 GB membuatnya sendiri. Perangkat yang lebih kecil menyerahkan pekerjaan ini kepada prover yang dipasangkan dengannya: prover yang Anda jalankan sendiri, atau kolam prover milik validator di
prover.randprotocol.org. Keduanya hanya dikirimi kunci penglihatan (viewing key) dan salt, tidak pernah kunci pembelanjaan (Proofs). - Sebuah node RPC memeriksanya. Node mana pun yang menerima kiriman dari dompet akan menghitung ulang digest bundle, memverifikasi kedua bukti terhadap binding, memeriksa biaya, dan baru kemudian menyebarkan transaksi ke para peer-nya (Proofs, Mempool).
- Validator mengurutkan dan memfinalkannya. Pemimpin dari view tersebut mengambil transaksi yang masih berlaku, dengan biaya terbaik per KiB lebih dulu, lalu mengusulkan sebuah blok. Setiap validator memverifikasi ulang setiap bukti di dalamnya dan memberikan suara. Blok di-commit setelah tiga quorum certificate berantai di atasnya pada view yang berurutan, yang membutuhkan 18 dari 26 validator chain 20 dalam keadaan daring (Consensus).
- Blok sudah final, dan siapa pun dapat memeriksanya. Sebuah transaksi final ketika
rand_getTransactionmengembalikan sebuah blok. Node yang melakukan sinkronisasi di kemudian hari memverifikasi ulang setiap sertifikat dan setiap bukti, alih-alih memercayai tanda tangan begitu saja.
Peran-peran
| peran | apa yang dikerjakan | membuktikan? | apa yang dilihat | menjalankan |
|---|---|---|---|---|
| dompet | menyusun, mengotorisasi, dan mengirimkan transfer serta panggilan; memindai chain dengan kunci miliknya sendiri | selalu bukti otorisasi; bukti bundle bila perangkat memiliki memori yang cukup | segalanya tentang catatan miliknya sendiri | aplikasi pada halaman Clients, atau rand; pada chain 20, Rand Wallet atau rand v0.6.8 atau yang lebih baru |
| prover terdelegasi | membuat bukti bundle untuk dompet yang dipasangkan dengannya; setiap balasan diperiksa oleh dompet sebelum apa pun dikirimkan | hanya bukti bundle | kunci penglihatan dompet yang dipasangkan: seluruh riwayatnya, masa lalu dan masa depan; tidak dapat membelanjakan | rand-prover run, atau rand-node run --prover |
| kolam prover validator | prover terdelegasi yang dijalankan oleh empat host, dua validator dan dua mesin yang hanya membuktikan, di bawah satu nama dan satu kunci, untuk dompet yang tidak memiliki prover sendiri; tanpa biaya | hanya bukti bundle | sama seperti prover terdelegasi mana pun, untuk setiap dompet yang dipasangkan dengannya | prover.randprotocol.org, sidik jari RGTF-7HKJ-XZFV-GQ1J |
| node RPC (pengamat) | melakukan sinkronisasi, memverifikasi ulang setiap bukti, melayani JSON-RPC, menyebarkan transaksi yang telah diverifikasi; tanpa hak suara | tidak | hanya bidang publik: komitmen, nullifier, amplop tersegel, bukti | rand-node run |
| validator | semua yang dilakukan pengamat, ditambah mengusulkan blok pada view gilirannya dan memberikan suara dalam HotStuff | tidak | hanya bidang publik | rand-node run --validator |
| agregator | membuktikan satu bukti rekursif atas sejumlah bukti bundle final dalam satu jendela dan mengirimkannya untuk blok penyegel | ya, bukti terbesar di jaringan | hanya bidang publik dan bukti | rand-node aggregate --watch, pada chain yang memiliki bagian aggregation |
Membuktikan dan memvalidasi adalah dua pekerjaan terpisah, dan validator tidak memerlukan perangkat keras prover. Dua dari empat anggota kolam adalah validator yang juga menjalankan prover sebagai layanan; dua lainnya adalah mesin prover khusus yang tidak memegang kunci validator. Menjalankan kolam bukan bagian dari tugas validasi. Ukuran perangkat keras untuk setiap peran, beserta memori pembuktian yang terukur per tier, tersedia di Validator and aggregator hardware.
Apa yang dapat diketahui setiap peran
Privasi sebuah transfer bergantung pada siapa yang memegang kunci yang mana, bukan pada kepercayaan terhadap jaringan:
- Validator, node RPC, dan explorer melihat apa yang dilihat setiap node: komitmen, nullifier, amplop tersegel, biaya, dan bukti. Bukan jumlah, aset, pengirim, ataupun penerima.
- Prover terdelegasi, termasuk kolam, dikirimi kunci penglihatan. Dengan kunci itu, ia dapat membaca seluruh riwayat dompet yang dipasangkan dengannya. Ia tidak pernah dapat membelanjakan, karena bukti otorisasi atas kunci pembelanjaan dibuat di mesin milik dompet. Memasangkan dompet dengan kolam berarti memilih untuk memperlihatkan riwayat tersebut kepada para operatornya. Jika Anda ingin riwayat itu tetap privat, buktikan di perangkat Anda sendiri atau jalankan prover Anda sendiri.
- Prover terdelegasi tidak dapat mencurangi dompet. Dompet membaca digest dari setiap bukti yang diberikan, memeriksa ukurannya, dan memverifikasinya secara lokal, sehingga bukti yang salah tidak pernah sampai ke node.
Agregasi: sudah dibangun, belum aktif
Saat ini setiap blok membawa setiap bukti mentah, sekitar 2,85 MB untuk satu transfer, sehingga blok 20 MiB memuat sekitar tujuh transfer. Agregasi blok adalah jawaban fullnode atas hal ini. Agregator mengambil bukti bundle dari sebuah jendela blok final (rand_getUnsealed), membuktikan satu bukti rekursif yang memverifikasi semuanya, lalu mengirimkannya. Blok yang memuatnya menyegel jendela tersebut. Validator kemudian memverifikasi satu agregat sebagai ganti N bukti, dan node dapat membuang bukti mentah yang tercakup. Agregator bersifat terikat jaminan (bonded) dan tanpa izin, berjalan pada mesin kelas GPU, dan dibayar sebesar bagian pembuktian dari bundle yang tercakup ditambah subsidi blok berupa RAND baru.
Fitur ini sudah dibangun dan digabungkan, tetapi belum aktif. Fitur ini memerlukan bagian aggregation dalam genesis, dan chain 20 tidak memilikinya, sehingga rand_status melaporkan setiap penghitung agregasi bernilai nol. Sebelum dapat diaktifkan, bentuk bundle-nya harus diukur ulang di bawah set batasan (constraint set) saat ini, dan latihan pemalsuan agregat harus dijalankan terhadap verifier rekursi. Pada chain dengan otorisasi terpisah, fitur ini juga hanya akan menyegel bukti bundle, bukan bukti otorisasi (Proofs).