Gunakan halaman ini untuk melihat siapa melakukan apa apabila sesuatu pemindahan bergerak melalui Rand. Pembuktian itu mahal dan pengesahan itu murah, jadi kerja dibahagikan mengikut garis itu. Pihak penghantar yang menghasilkan bukti. Validator hanya menyemaknya, menyusunnya mengikut turutan dan mengundi. Seorang aggregator, apabila diaktifkan, akan menggabungkan banyak bukti menjadi satu. Rajah ini mengikuti satu pemindahan dari dompet hingga ke blok akhir; bahagian selepasnya membincangkan setiap peranan secara bergilir.
Laluan satu pemindahan
- Dompet membina pemindahan itu. Dompet memilih note input, mengambil saksi Merkle bagi note tersebut, membina empat output dan mengelak setiap satu dalam sampul ML-KEM-768. Kemudian ia mengira pengikatan (binding) transaksi, iaitu cincangan ke atas segala-galanya kecuali bukti (Transactions).
- Dompet membuktikan kebenaran (authorisation) itu sendiri. Ini ialah bukti tier-10 ke atas kunci perbelanjaan dan salt yang baharu, dan hanya mengambil masa beberapa saat. Ia satu-satunya bukti yang menyentuh kunci perbelanjaan, dan sentiasa dihasilkan pada mesin dompet itu sendiri.
- Bukti bundle dihasilkan di tempat yang mempunyai memori yang mencukupi. Bukti tier-14 ini menunjukkan pemilikan, keahlian, nullifier dan baki, dan memuncak pada kira-kira 6 GB. Aplikasi desktop dan telefon dengan kira-kira 8 GB menghasilkannya sendiri. Peranti yang lebih kecil menyerahkan tugas itu kepada prover yang dipasangkan dengannya: satu yang anda jalankan sendiri, atau kumpulan prover validator di
prover.randprotocol.org. Kedua-duanya dihantar kunci pemantauan (viewing key) dan salt, tidak pernah kunci perbelanjaan (Proofs). - Nod RPC menyemaknya. Mana-mana nod yang dihantar oleh dompet akan mengira semula digest bundle, mengesahkan kedua-dua bukti terhadap pengikatan, menyemak yuran, dan barulah menyebarkan transaksi itu kepada rakan sebayanya (Proofs, Mempool).
- Validator menyusun dan memuktamadkannya. Pemimpin bagi view itu mengambil transaksi yang masih terpakai, dengan yuran terbaik bagi setiap KiB dahulu, dan mencadangkan satu blok. Setiap validator mengesahkan semula setiap bukti di dalamnya dan mengundi. Blok itu dikomit apabila tiga sijil kuorum berantai padanya dalam view yang berturutan, yang memerlukan 18 daripada 26 validator chain 20 berada dalam talian (Consensus).
- Blok itu muktamad, dan sesiapa sahaja boleh menyemaknya. Sesuatu transaksi muktamad apabila
rand_getTransactionmengembalikan satu blok. Nod yang menyegerak kemudian mengesahkan semula setiap sijil dan setiap bukti dan bukannya mempercayai tandatangan.
Peranan
| peranan | apa yang dilakukan | membuktikan? | apa yang dilihat | menjalankan |
|---|---|---|---|---|
| dompet | membina, membenarkan dan menghantar pemindahan dan panggilan; mengimbas rantaian dengan kunci miliknya sendiri | bukti kebenaran sentiasa; bukti bundle apabila peranti mempunyai memori | segala-galanya tentang note miliknya sendiri | aplikasi pada halaman Clients, atau rand; pada chain 20, Rand Wallet atau rand v0.6.8 atau lebih baharu |
| prover yang diwakilkan | menghasilkan bukti bundle bagi dompet yang dipasangkan dengannya; setiap balasan disemak oleh dompet sebelum apa-apa dihantar | bukti bundle sahaja | kunci pemantauan dompet yang dipasangkan: keseluruhan sejarahnya, yang lalu dan akan datang; ia tidak boleh membelanjakan | rand-prover run, atau rand-node run --prover |
| kumpulan prover validator | prover yang diwakilkan yang dijalankan oleh empat hos, dua validator dan dua mesin yang hanya membuktikan, di bawah satu nama dan satu kunci, untuk dompet yang tidak mempunyai prover sendiri; tanpa yuran | bukti bundle sahaja | sama seperti mana-mana prover yang diwakilkan, bagi setiap dompet yang dipasangkan dengannya | prover.randprotocol.org, cap jari RGTF-7HKJ-XZFV-GQ1J |
| nod RPC (pemerhati) | menyegerak, mengesahkan semula setiap bukti, menyediakan JSON-RPC, menyebarkan transaksi yang telah disahkan; tidak mengundi | tidak | medan awam sahaja: komitmen, nullifier, sampul tertutup, bukti | rand-node run |
| validator | segala yang dilakukan oleh pemerhati, serta mencadangkan dalam view miliknya dan mengundi dalam HotStuff | tidak | medan awam sahaja | rand-node run --validator |
| aggregator | menghasilkan satu bukti rekursif ke atas tetingkap bukti bundle yang telah dimuktamadkan dan menghantarnya untuk blok pengesahan | ya, bukti terbesar pada rangkaian | medan awam dan bukti sahaja | rand-node aggregate --watch, pada chain yang mempunyai bahagian aggregation |
Pembuktian dan pengesahan ialah dua tugas yang berasingan, dan validator tidak memerlukan perkakasan prover. Dua daripada empat ahli kumpulan itu ialah validator yang turut menjalankan prover sebagai satu perkhidmatan; dua lagi ialah mesin prover khusus yang tidak memegang kunci validator. Menjalankan kumpulan itu bukan sebahagian daripada tugas validator. Saiz bagi setiap peranan, dan memori pembuktian yang diukur bagi setiap tier, terdapat pada Validator and aggregator hardware.
Apa yang boleh dipelajari oleh setiap peranan
Privasi sesuatu pemindahan bergantung pada siapa yang memegang kunci yang mana, bukan pada kepercayaan terhadap rangkaian:
- Validator, nod RPC dan peneroka melihat apa yang dilihat oleh setiap nod: komitmen, nullifier, sampul tertutup, yuran dan bukti. Bukan jumlah, aset, penghantar atau penerima.
- Prover yang diwakilkan, termasuk kumpulan itu, dihantar kunci pemantauan. Dengannya, ia boleh membaca keseluruhan sejarah dompet yang dipasangkan. Ia tidak pernah dapat membelanjakan, kerana bukti kebenaran ke atas kunci perbelanjaan dihasilkan pada mesin dompet. Memasangkan kumpulan itu bermakna memilih untuk menunjukkan sejarah tersebut kepada operatornya. Jika anda mahu ia kekal peribadi, buktikan pada peranti anda sendiri atau jalankan prover anda sendiri.
- Prover yang diwakilkan tidak boleh menipu dompet. Dompet membaca digest daripada setiap bukti yang diberikan, menyemak saiz dan mengesahkannya secara setempat, jadi bukti yang salah tidak pernah sampai ke nod.
Pengagregatan: dibina, belum diaktifkan
Hari ini setiap blok membawa setiap bukti mentah, kira-kira 2.85 MB bagi satu pemindahan, jadi blok 20 MiB memuatkan kira-kira tujuh pemindahan. Pengagregatan blok ialah jawapan fullnode. Seorang aggregator mengambil bukti bundle bagi satu tetingkap blok yang telah dimuktamadkan (rand_getUnsealed), menghasilkan satu bukti rekursif yang mengesahkan kesemuanya, lalu menghantarnya. Blok yang memasukkannya akan mengesahkan tetingkap itu. Validator kemudian mengesahkan satu agregat sebagai ganti N bukti, dan nod boleh membuang bukti mentah yang diliputi. Aggregator diikat dengan bon dan tanpa kebenaran, berjalan pada mesin berkelas GPU, dan dibayar bahagian pembuktian bagi bundle yang diliputi serta subsidi blok dalam RAND baharu.
Ia telah dibina dan digabungkan, tetapi tidak aktif. Ia memerlukan bahagian aggregation dalam genesis, dan chain 20 tidak mempunyainya, jadi rand_status melaporkan setiap kaunter pengagregatan sebagai sifar. Sebelum ia boleh diaktifkan, bentuk bundle-nya mesti diukur semula di bawah set kekangan semasa, dan satu latihan agregat palsu mesti dijalankan terhadap pengesah rekursi. Pada chain dengan kebenaran terpisah, ia juga hanya akan mengesahkan bukti bundle, bukan bukti kebenaran (Proofs).