Skip to content

Build on stock Rust 1.75 (no rustup) + island_search analysis tool models the superseded dialog circuit #6

Description

@Ashioya-ui

Build on stock Rust 1.75 (no rustup) + heads-up: island_search analysis tool models the superseded dialog circuit

Two small contributions for other contestants, both reproducible against the current main (the trailmix_ludicrous jump-2 default circuit). Neither touches the scored harness or correctness; part 1 is a downstream build recipe, part 2 is an observation about the in-repo analysis tooling.


Part 1 — Building on stock Rust 1.75 (no rustup)

The repo pins rust-toolchain = "1.93.0" and ships a v4 Cargo.lock, so a clone needs rustup to fetch that toolchain. In environments with only a stock rustc 1.75.0, the following minimal, value-preserving changes let both build_circuit and eval_circuit build and run (and eval_circuit still validates 9024/9024 on the deployed circuit):

  1. Drop the toolchain pin + relock. Remove rust-toolchain and the v4 Cargo.lock, then cargo generate-lockfile (produces a v3 lock that 1.75's cargo accepts).
  2. Repoint alloy-primitivesruint. alloy-primitives is used only for U256, which is ruint::aliases::U256. Replace the use alloy_primitives::U256; lines (8 files) with use ruint::aliases::U256; and drop the dependency. In Cargo.toml:
    ruint = { version = "=1.15.0", default-features = false, features = ["alloc"] }
    sha3  = "=0.10.8"
    (The default ruint features pull an edition-2024 indexmap that won't build on 1.75; default-features = false + alloc avoids it.)
  3. Pin zeroize. cargo update -p zeroize --precise 1.7.0 (1.9.0 requires a newer edition).
  4. One 1.82+ API. The two Option::is_none_or(|x| …) calls in src/point_add/rounds/dialog/compressed.rs.map_or(true, |x| …).

Builds in ~1 min, 37-crate tree. This is purely a packaging accommodation for older toolchains — the emitted op-stream is unchanged.


Part 2 — src/point_add/island_search.rs screens against the superseded dialog circuit

island_search.rs (explicitly "analysis tooling, not part of the scored circuit") screens Fiat-Shamir nonces using the dialog-Kaliski predicate: check_point_add_apply_hazardsbuild_gcd_transcript, sized by DialogGcdFilterConfig::active_iterations. The deployed default circuit is now trailmix_ludicrous, whose inversion is a jump-2 divstep with a different transcript structure.

The module is currently orphaned (no mod island_search; in point_add/mod.rs). I wired it in behind a thin bin and ran its own base-nonce sanity check against the deployed circuit:

  • It reports [base] … hard=9024 (expect hard=0) on the deployed circuit's own baked nonce (DIALOG_TAIL_NONCE), at every budget I tried: DIALOG_GCD_ACTIVE_ITERATIONS ∈ {258, 360, 402, 520}.
  • The point derivation is correctisland_search::absorb_op matches eval_circuit::fiat_shamir_seed byte-for-byte (same quantum_ecc-fiat-shamir-v2 domain, 1-byte kind + six 8-byte fields). So the nonces produce exactly the points eval tests.
  • The mismatch is the predicate: it models the old dialog GCD transcript, not the jump-2 one, so it marks every shot "hard" regardless of budget.

Consequence: a contestant who tries to use the in-repo screener to hunt nonces for the current circuit will be misled — it can't distinguish a good trailmix island from a bad one. The trailmix island nonces actually in mod.rs (e.g. the one a comment attributes to a "GPU strong-prefilter hunt") are evidently produced by an out-of-repo, jump-2-aware screener.

Low-effort fixes that would help: either a note in island_search.rs that it targets the legacy dialog route, or a trailmix-aware predicate (a jump-2 convergence + apply model) so the public tool matches the deployed circuit.


Filed by an independent contestant building on the challenge. Happy to PR the 1.75 build changes behind a feature/CI note if useful, and to share the exact repro for the island_search base-nonce check.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions