iuna

iuna

iuna - experimental mainnet-candidate protocol
git clone https://getiuna.org/git/iuna.git
Log | Files | Refs | README | LICENSE

commit 5edcc6c742c37f8c5b792d778886b0d385a84b0c
parent 22fa7311d98060b6116bf768ffc3054c21237d7c
Author: Joris Hartog <jorishartog@hotmail.com>
Date:   Tue, 25 Aug 2026 09:42:02 +0200

Simplify VDF benchmark documentation

Diffstat:
Mdocs/protocol.md | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/protocol.md b/docs/protocol.md @@ -94,7 +94,7 @@ The VDF is there to make block production sequential and time-based. It uses a C VDF solutions are encoded with the `classgroup-wesolowski-bqfc-v1` prefix followed by two 100-byte Chia BQFC forms in hexadecimal: the output `y` and the Wesolowski proof `pi`. The implementation is Rust-only and has no GMP, MPIR, or other native runtime dependency. Proof generation uses a Chia-compatible checkpoint-and-bucket time-memory tradeoff, with a bounded-memory constant-space fallback for parameter sets that exceed the local allocation limits. Both paths produce the same proof and do not change verification or the wire format. Older RSA-modulus and GMP class-group VDF outputs are not valid for this protocol version. -On the local Apple Silicon release benchmark for 100,000 rounds with seed `iuna-vdf-prover-benchmark`, the current Rust-only checkpoint prover completed in about `0.89s` to `0.92s`, and the constant-memory prover completed in about `1.78s`, after moving output squaring, proof composition, and proof squaring onto the local custom `Vec<u64>` limb backend with reusable division/GCD/reduction scratch buffers, Lehmer-style full and partial XGCD batching, x-only extended-GCD paths for call sites that do not need the second Bezout coefficient, positive-input left-GCD fast paths, mutable Lehmer linear-combination outputs for XGCD batch updates, `u64` Lehmer quotient windows, scratch-backed scalar combinations, one-limb scalar multiplication into scratch buffers, quotient/remainder-directed division outputs, exact power-of-two division fast paths, clone-free signed subtraction, scratch-backed reduction steps with small-quotient fast paths and quotient comparison that avoids temporary doubled limbs, tighter add/sub limb loops, one-limb multiplication, small-shift fast paths, sparse proof buckets that keep empty buckets implicit instead of cloning full identity forms or composing identity aggregates, a 100,000-round checkpoint parameter floor of `k = 10`, release thin-LTO/codegen-unit tuning, and per-pass incremental checkpoint bucket selection that replaces per-checkpoint modular exponentiation with one modular exponentiation plus fixed modular steps. A separate official Python/C++ `chiavdf.prove()` reference run completed the same workload in about `0.673s`. Phase profiling measured the checkpoint prover at about `0.78s` to `0.81s` for output squaring and about `0.11s` to `0.12s` for proof construction. The limb backend covers signed limb arithmetic, division, full and partial XGCD, production NUDUPL/NUCOMP, checkpoint bucket selection, and class-group exponentiation. Closing the remaining gap requires deeper in-place arithmetic for multiplication intermediates, stronger multiplication algorithms for larger operands, and Windows MSVC release benchmarking without introducing GMP or MPIR. +In a local Apple Silicon release benchmark, the Rust-only checkpoint prover completed 100,000 rounds in about `0.9s`. Its lower-memory fallback took about `1.8s`, while the official Python/C++ Chia reference took about `0.67s`. These measurements are only a performance snapshot on one machine; they do not affect consensus or the VDF wire format. The target block time is `10 minutes`. The protocol retargets VDF rounds from recent observed block times: