You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discussion / design tracking for a secure, low-latency random number provider (RNP) for Neo smart contracts, adapting the BFTRAND research to Neo N3 (dBFT + NeoVM).
Credits
Research foundation: @Jim8y — BFTRAND: Low-latency Random Number Provider for BFT Smart Contracts (DSN 2024)
dApps need unpredictable, unbiased, unique randomness (NFT rarity, games, lotteries, fair distribution). On a deterministic ledger, weak RNGs are unsafe.
Commit–execute RNPs (status quo for “secure” systems)
Typical flow (Chainlink VRF / DRAND-style):
T_commit — lock request
Wait for entropy
T_execute — consume revealed random
Costs: two consensus rounds, two fee-paying txs, extra on-chain data.
Today on Neo
System.Runtime.GetRandom (post-HF_Aspidochelone) uses tx-hash / Murmur128 iteration. It is useful but not a consensus DRB-backed RNP and does not address post-reveal undo attack classes.
Paper proposal (BFTRAND) in short
Integrate a Distributed Random Beacon (DRB) into BFT consensus:
This is a discussion / research-to-engineering issue. Adopting BFTRAND-style RNP is a consensus + VM change and must be HF-gated with Technical Committee review.
Summary
Discussion / design tracking for a secure, low-latency random number provider (RNP) for Neo smart contracts, adapting the BFTRAND research to Neo N3 (dBFT + NeoVM).
Credits
Problem
dApps need unpredictable, unbiased, unique randomness (NFT rarity, games, lotteries, fair distribution). On a deterministic ledger, weak RNGs are unsafe.
Commit–execute RNPs (status quo for “secure” systems)
Typical flow (Chainlink VRF / DRAND-style):
T_commit— lock requestT_execute— consume revealed randomCosts: two consensus rounds, two fee-paying txs, extra on-chain data.
Today on Neo
System.Runtime.GetRandom(post-HF_Aspidochelone) uses tx-hash / Murmur128 iteration. It is useful but not a consensus DRB-backed RNP and does not address post-reveal undo attack classes.Paper proposal (BFTRAND) in short
Integrate a Distributed Random Beacon (DRB) into BFT consensus:
σ(threshold BLS partials → combine).Reported evaluation (paper; Neo-oriented prototype)
Neo-specific design direction (see design plan)
Full write-up: https://github.com/cschuchardt88/neo/blob/docs/bftrand-rnp-reference/docs/design/bftrand-neo-rnp.md
rn = H(network ‖ height ‖ view)(view-change safe)System.Runtime.GetRandom; HF switches toPRF(beacon, txHash, counter)GetBlockBeacon/ native historical beaconPUA types (from paper → Neo)
GetRandomDiscussion questions for core / TC
GetRandomonly, or full runtime RNP with DRB?kpartials missing (hold block vs insecure fallback)?References
ApplicationEngine.GetRandominApplicationEngine.Runtime.csNote on scope
This is a discussion / research-to-engineering issue. Adopting BFTRAND-style RNP is a consensus + VM change and must be HF-gated with Technical Committee review.