Rand Protocol
Sertai

Jalankan nod Rand

Nod penuh rujukan dan dompetnya ditulis dalam Rust dan dibina daripada sumber. Dua binari dihasilkan: rand-node, iaitu nod dan alat operator, dan rand, sebuah dompet yang memegang kunci perbelanjaan terlindung, berhubung dengan mana-mana nod melalui JSON-RPC dan menjalankan prover zkVM secara setempat bagi setiap pemindahan dan setiap panggilan sulit. Sebuah testnet eksperimen, rantaian 21, sedang beroperasi dengan 26 validator pada droplet DigitalOcean. Ia belum diaudit dan tidak mempunyai nilai sebenar. Binari Linux x86_64 bagi kedua-duanya dilampirkan pada keluaran v0.8.0, iaitu binaan yang digunakan untuk mengemas kini seluruh armada.

Bina dan jalankan secara setempat
bash
# 1. Rust (rustup mengambil rantai alat 1.98.1 yang dipin) dan kebergantungan binaan RocksDB
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt install build-essential clang cmake pkg-config libssl-dev   # Linux

# 2. Klon dan bina (10–20 minit pada kali pertama)
git clone https://github.com/randprotocol/fullnode.git
cd fullnode
cargo build --release        # target/release/rand-node, target/release/rand

# 3. Rantaian dua validator pada mesin ini (RPC pada 8545 dan 8546)
scripts/local-testnet.sh
target/release/rand --rpc http://127.0.0.1:8545 status

# 4. Ujian; mod release kerana pembuktian STARK perlahan dalam mod debug (678 ujian, kira-kira 43 minit seperti yang diukur pada 2026-09-14)
cargo test --workspace --release
Sertai testnet awam sebagai pemerhati
rantaian 21
# Keluaran v0.8.0 (c0878c3f) menjalankan chain 21, dan tiada keluaran terdahulu yang menjalankannya: chain 21 menjalankan constraint set 9, yang kunci verifier dan pengekodan buktinya tidak dibawa oleh mana-mana versi lebih lama. Bina daripada tag, atau pada Linux x86_64
# gunakan binari keluaran dan semaknya dengan SHA256SUMS yang diterbitkan bersamanya
git checkout v0.8.0 && cargo build --release
curl -LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/rand-node -LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/rand \
     -LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/msauth-vk-production.bin# kunci verifier multisig yang disematkan: rand-node memuatkannya dari sebelah binarinya dan enggan bermula tanpanya
sha256sum rand-node rand msauth-vk-production.bin   # mesti mencetak nilai keluaran tersebut (SHA256SUMS, ditandatangani sebagai SHA256SUMS.sig):
# 324a4ab1029d39e67fc2de36b036341b0f88f13089997d7fe24c596363a58278  rand-node
# e3a38e74ee28743a960fc1c3eb1ac6c538e18dc259411e10afff7f54e268bbf4  rand
# 68facb06c7f321aaf1d4d541acf6b5c0e9d7f17788ed1c9add6c5a8a8f7acd30  msauth-vk-production.bin

# Identiti nod anda: kunci pengesah Dilithium2 dan peer id p2p dalam satu fail. Jana kunci anda sendiri
# dan simpan di luar checkout; repositori tidak lagi menjejaki sebarang kunci
rand-node keygen --out node.key.json

# Genesis disertakan dalam repositori; setiap nod mesti memegang fail yang sama.
# init mencetak hashnya, yang mesti sepadan dengan hash di bawah
rand-node init --datadir ./data --genesis deploy/genesis-chain21.json

# Hubungi validator awam (chain 21 mengekalkan kunci chain 14, maka peer id dan IP-nya).
# Abaikan --validator: kunci anda tiada dalam set validator. Validator juga memerlukan NTP
rand-node run --datadir ./data --key node.key.json \
    --listen /ip4/0.0.0.0/tcp/30303 --rpc 127.0.0.1:8545 --no-mdns \
    --bootstrap /ip4/164.90.239.200/tcp/30303/p2p/12D3KooWEQEbUwZRgqhDPXhW7vNBmcRcnhUDGUADe81VFdv3ALYe \
    --bootstrap /ip4/165.245.173.74/tcp/30303/p2p/12D3KooWJyc5oDHggAr89e9QrRFBy9Tg8TxXh18yzrb1SM6KKLYw \
    --bootstrap /ip4/188.166.235.187/tcp/30303/p2p/12D3KooWSyX84P1DAbWByLHpRBMLRWD53r3Jj4aqVt6tHoF8B2ZQ

# Dompet ialah kunci tersendiri yang terlindung. Alamat rand1… miliknya berukuran kira-kira 1.6 KB teks
rand keygen && rand address

# Mint faucet ditandatangani oleh validator, jadi ia memerlukan RPC validator: ia berfungsi pada
# chain dua validator setempat seadanya; nod pemerhati menjawab "ask a validator node". Pada chain 21
# faucet hanya mint kepada 16 dompet yang disenaraikan dalam genesisnya, dan hanya daripada validator yang dinamakannya
rand faucet                                  # 100 RAND ke dalam satu nota yang hanya anda boleh buka
rand balance                                 # mengimbas pokok menggunakan kunci anda; tiada orang lain boleh
rand send <rand1 address> 1.5              # meminta pengesahan, menjana bukti (~2 min), menunggu commit
Validator
26
Kuorum
18 of 26
Genesis
ca76c2766ed6090ac6ba5dad86b724dd5d2b80c0edfaed287cd8b129e663ca9a
Buat panggilan sulit
rand
# Himpunkan guest terbina dalam: bayar lebihan melebihi 1000 jika empat baki persendirian mencukupinya
rand program build --guest private_payment --arg 1000 --out pp.json
rand program deploy pp.json                  # mencetak id program (cincang kandungannya)

# Buktikan secara setempat; hanya bukti, lapan perkataan output dan transkrip input termeterai dihantar ke rantaian
rand call <program id> --input 400 --input 250 --input 300 --input 75
rand receipt <tx>                            # output [1, 0, 25, 0, ...]: lebihan, diterbitkan sebagai data

# Kemudian, buka transkrip dan semaknya dengan H_IN yang diterbitkan oleh bukti
rand open-call <tx>                          # inputs: [400, 250, 300, 75] — verdict: faithful
Rantaian melihat id program, tier gas dan lapan perkataan output. Ia tidak pernah melihat baki, dan kerana yuran dibayar melalui bundle terlindung, ia juga tidak mengetahui siapa pemanggilnya; output ialah data, dan sebarang pembayaran ialah bundle yang dibuat oleh pemanggil. Diukur pada Apple Silicon: pembuktian kira-kira 7 s pada tier 10, bukti berukuran kira-kira 1.2 MB pada profil FRI 80 pertanyaan, dan pengesahan dalam kira-kira 16 ms dengan kunci pengesah yang telah dipanaskan, yang dikira sekali oleh nod bagi setiap tier dan digunakan semula merentas program.

Keperluan

OS
Linux x86_64 atau macOS arm64
Rust
1.98.1, dipin oleh rust-toolchain.toml; rustup memasangnya
Kebergantungan binaan
Pengkompil C++, cmake, pkg-config, header OpenSSL (RocksDB)
Binaan pertama
10 hingga 20 minit: RocksDB dan Plonky3 daripada sumber
Port
TCP 30303 masuk pada nod awam; RPC pada 127.0.0.1:8545
Pelayan
Satu instans awan 1 hingga 2 vCPU boleh menjalankan validator testnet
Jam
NTP (chrony) pada validator: ia menahan undinya daripada blok yang mendahului jamnya sendiri lebih daripada 15 s, jadi jam yang perlahan menghentikan pengundian secara senyap
Pembuktian
CPU sahaja buat masa ini: satu pemindahan terlindung mengambil masa kira-kira dua minit pada komputer riba (bukti kebenaran 7 s dan bukti bundle kira-kira 110 s) dan kira-kira 6 GB memori; satu panggilan kecil menambah kira-kira 30 s

Pilih peranan

  • Pemerhati terbuka kepada semua

    Binari yang sama tanpa --validator. Menyegerak rantaian, mengesahkan setiap sijil serta setiap bukti bundle dan panggilan, melaksana semula setiap blok, membandingkan resit, dan menyediakan JSON-RPC. Inilah yang dijalankan oleh kunci baharu pada testnet awam.

  • Validator berbon

    Mengundi dan mencadangkan di bawah HotStuff berantai. Pada chain 21, seperti pada chain 20, validator baharu diterima melalui undian terlebih dahulu: validator yang memegang lebih daripada dua pertiga stake menandatangani tindakan AdmitValidator untuk kuncinya. Kemudian ia mendaftarkan kunci nod (rand-node register --v2), mengikat sekurang-kurangnya 1,000 RAND daripada sebuah dompet, dan memasuki set pada sempadan epoch 1,000 blok yang ketiga selepas pengikatan (kelewatan pengikatan dua epoch pada chain 18). Chain 18 bermula dengan 26 validator pada 1,000 RAND setiap satu; lebih daripada dua pertiga stake, iaitu 18 daripada 26, mesti dalam talian dan mengundi untuk melakukan commit. Jana kunci anda sendiri: tiada kunci validator disimpan dalam repositori lagi, dan fail kunci yang di-commit untuk chain terdahulu ialah seed yang diterbitkan.

  • Dompet dan prover setempat

    Klien rand memegang kunci perbelanjaan 256-bit dan tidak menandatangani apa-apa: dua bukti menjadi kebenaran, satu bukti kecil yang dibuat dengan kunci perbelanjaan dan bukti bundle 4-masuk-4-keluar. Ia mengimbas pokok untuk nota miliknya sendiri, membuktikan kedua-duanya pada mesin anda, dalam bentuk yang sama untuk RAND dan untuk mana-mana token RPL, dan bagi panggilan sulit turut membuktikan programnya. Hanya bukti, komitmen, nullifier dan sampul termeterai sampai ke rantaian.

Tidak menjalankan nod? Dompet yang sama tersedia sebagai aplikasi untuk iOS, Android, Chrome dan Firefox: Dompet.

Sumber
randprotocol/fullnode
GPL-3.0-only · testnet menjalankan v0.8.0, keluaran terkini
Sahkan

Setiap nod menyemak segala-galanya

Nod yang menyegerak mengesahkan semula setiap sijil, melaksana semula setiap blok termasuk buktinya, dan membandingkan resit sebelum menerima. Semasa permulaan, ia menyemak pangkalan datanya sendiri, memangkas apa-apa yang tidak konsisten sambil mengekalkan keadaan keselamatan undiannya, dan mengambil semula bahagian yang hilang daripada peer.

# Nod dihentikan: cincang, QC, tandatangan, bukti, main semula
rand-node verify --datadir ./data --mode full
rand-node verify --datadir ./data --repair

Ujian kerosakan dijalankan pada testnet langsung

  • ›Hentikan satu daripada empat validator: rantaian terus melakukan commit dan nod mengejar semula dalam beberapa saat apabila ia kembali.
  • ›Hentikan dua daripada empat: rantaian berhenti tanpa kuorum dan disambung semula tanpa fork apabila kedua-duanya kembali.
  • ›Rosakkan pangkalan data sesebuah nod: dikesan semasa permulaan, dipangkas, disegerak semula daripada peer, dan serupa bait demi bait selepas itu.
  • ›Pemindahan melalui nod yang berbeza: semuanya di-commit, baki sama di mana-mana, bekalan tidak berubah.
  • ›Pautan peer yang terputus dipulihkan oleh logik dail semula dalam kira-kira 30 saat.

Belum dilaksanakan

Disenaraikan supaya jurang antara kertas kerja dan nod dapat dibaca dengan jelas, bukan disimpulkan.

  • ›Keadaan program berterusan dan panggilan merentas program
  • ›Pengkompil dalam dompet itu sendiri: sesuatu program ialah guest terhimpun terbina dalam atau imej yang dibina dengan rantaian alat rand-guest yang berasingan
  • ›Slashing dan jailing, ganjaran blok, pasaran yuran, beacon pemimpin hash-sortition
  • ›Pengumpul nullifier, pemangkasan bukti selepas kemuktamadan, pengelompokan bukti
  • ›Bukti tier-20 bagi pemindahan SPL Token, dan pasaran prover GPU dalam kertas kerja itu