Grant Proposal: Dark Forest on Aztec, Nyx team

Dark Forest v0.6 on Aztec - Nagu Proposal

Title / Team

Team: Nyx

Leads: Nagu Thogiti & Karl Yu (co-leads)

Contact: [0xnagu@gmail.com] - Telegram

GitHub/Portfolio: https://thogiti.github.io/, https://X.com/0xnagu, 0xKarl98 (Karl Yu) · GitHub

Start and End Date

Start: ASAP

Functional MVP on Aztec: Mar 22, 2026 (aligned with alpha launch)

Summary

We will ship Dark Forest v0.6 on the Aztec Network, bringing hidden-information play to mainnet with Aztec’s private/public model. The original v0.6 split trustless validation (Circom proofs + Solidity) from rendering. On Aztec, we refactor that complexity into Noir private execution plus minimal public commitments, avoiding per-turn application-level EVM verifier patterns while keeping player maps and route intel private by default. Goal: a Dark Forest that runs on mainnet with lower operational cost and faster iteration.

We start with a spec-first rewrite of all v0.6 circuits (init, move, reveal, biomebase, whitelist) into Noir, preserving mechanics: planet discovery/ownership, energy/silver economy, ship movement/capture, artifact minting via foundries, and spacetime rips for Aztec-native NFTs. We implement DF-parity primitives in Noir (hashing, fixed-point math, deterministic seeding, and deterministic world-claim verification aligned with v0.6 semantics) with explicit boundaries on what is constrained versus unconstrained, validated by golden vectors and scenario tests. Exploration remains client-side; on-chain checks validate claims/transitions. Public functions store only hashed world state and move commitments; private functions validate full moves, keeping exploration and route intel off-chain.

On the frontend, we reuse the proven DF client/renderer and swap in an Aztec adapter built on aztec.js + PXE. The adapter handles session keys (AuthWit), tx lifecycle, indexer sync, and an optional non-custodial lightweight relay for constrained devices; players can always submit directly. We ship comprehensive tests (unit + scenario + property) and devnet rehearsals with load/latency instrumentation. Stretch: plugin-ready API and an “Aztec Hidden-Info Game” template for future builders.

About the Team

  • Nagu Thogiti - Independent Researcher (ex-Ethereum Foundation PSE)
    Strengths:

    • security engineering,
    • protocol design,
    • mechanism design,
    • adversarial thinking,
    • rigorous specs/implementations.

    Role: overall architecture, correctness/invariants, threat modeling, end-to-end integration quality, and project execution.

    Links: https://thogiti.github.io/https://x.com/0xnaguTelegram: Contact @OxNagu2

  • Karl Yu - Engineer & Security Researcher (Reth contributor; Noir/Aztec ecosystem; ex-yAudit)
    Strengths:

    • Noir contract engineering,
    • ZK circuit translation,
    • performance profiling,
    • proving-pipeline debugging.

    Role: Noir implementation of contracts + private logic, circuit parity work, proving/performance engineering, and tooling.

    Profile :

    • Rust-focused crypto/ZK engineer building performance-first systems across execution and proving.
    • Recent work spans EVM tooling around reth/revm, server-aided SNARK/Nova outsourced MSM (Iris), and a draft Honk verifier for Stellar Soroban (BN254/no_std).
    • In the Aztec ecosystem, I write reusable Noir circuits/libraries (e.g., Lib_LinkList) and explore circuit performance & verification .

    Links: https://github.com/0xKarl98

Why this team is sufficient:
This grant is two hard problems:

  • (1) circuit/contract parity under hidden information
  • (2) a production-grade client + indexing + performance harness.
    Karl leads Noir/circuit parity and the proving pipeline; Nagu leads architecture, invariants, adversarial review, and frontend integration quality. We will ship a measured MVP by Mar 22.

Technical Approach

  • Smart contracts & circuits: Rewrite v0.6 Circom circuits into Noir private functions; expose minimal public functions for hashed planet state, move commitments, world params. Preserve mechanics: energy transfer, silver mining/upgrades, ship movement/capture zones, artifact minting, spacetime rip exits → Aztec-native NFTs.
  • Privacy model: Private functions validate un-hashed claims; public state stores commitments. Maintain client-side private maps; add replay protection and deterministic seeds for reproducibility.
  • Core primitives: Noir implementations for DF hashing (Poseidon/Blake2s as needed), fixed-point math, deterministic seeding, and deterministic world-claim verification aligned with v0.6 semantics, plus radius/capture math, cooldowns, artifact entropy. Benchmark with Noir stdlib + ACVM optimizations.
  • Performance (<60s/turn): Multithreaded client proving via workers; profiling-driven constraint reduction and proof-size tuning; transaction construction optimized with aztec.js and AuthWit session keys to reduce UX friction and overhead.
  • Frontend integration: Adapter layer for aztec.js/PXE replacing Solidity RPCs; event indexing + optimistic UI sync; maintain DF renderer and plugin hooks. Add UX for artifact NFT mint/withdrawals and resource dashboards.
  • Testing & verification: Unit tests for every mechanic; property tests for invariants (energy/silver conservation, capture rules); golden-vector parity vs v0.6 circuits; scenario tests for discovery/move/reveal/artifact flows; load tests for mempool/turn latency.
  • Documentation: Dev setup, deploy/runbook, contract/API docs, and a migration guide “from Circom/Solidity to Noir/Aztec” as ecosystem reference.
  • Repo layout (at a glance):
dark-forest-aztec/
├── src/                     # Noir smart contracts
│   └── game_logic/
│       ├── move.nr          # private logic (energy/range checks)
│       ├── capture.nr       # public state transitions
│       └── perlin.nr        # procedural helper
├── client/                  # modified frontend
│   └── src/api/
│       ├── AztecAdapter.ts  # PXE / AuthWit manager
│       └── MinerWorker.ts   # background thread map miner
└── tests/                   # integration/perf
    └── perlin_bench.test.nr # constraint/bench harness

Deliverables (Non-negotiable)

  • Deployed Aztec contracts implementing a faithful Dark Forest v0.6 port (core mechanics + NFT mint from spacetime rips).
  • A playable web client that syncs state from Aztec and submits player turns as Aztec transactions.
  • Open-source repo with reproducible setup, unit + scenario tests, and developer documentation.
  • v0.6 parity checklist (function-by-function invariants and edge cases) with golden test vectors comparing Noir outputs to original v0.6 circuits/contracts for key actions.
  • Reusable Noir procedural claim-verification helpers (hashing/fixed-point/procedural modules) documented for ecosystem reuse.

Open Source & Licensing

  • Final codebase will be released under MIT (or similarly permissive).
  • We may reuse components from the original Dark Forest repository where helpful; any LGPL-licensed reuse will remain LGPL with clear attribution and separation.

Turn-Time Performance and Proof Strategy (<60s to mempool dispatch)

We design around the RFP KPI that a player turn must be generated and dispatched to the Aztec mempool in <60 seconds. This is dominated by client-side witness/proof generation and tx assembly. Our plan is benchmark-driven: we ship an automated “turn-time harness” early (CI + reproducible hardware profile) and iterate on three levers:

  1. Constraint minimization by architecture: keep private functions scoped to security-critical invariants; push large, non-critical computation into bounded unconstrained regions with explicit checks.
  2. Parallel proving pipeline: multithreaded witness/proof generation via workers with safe caching/reuse across turns.
  3. Proof composition where it helps: use Aztec’s native proof composition/recursion patterns to keep per-turn overhead predictable.

Turn-time harness metrics: witness generation time, proving time, tx assembly time, and dispatch-to-mempool time; reported at milestones (p50/p90).
Baseline profile: M2 MacBook Air (or similar) / 16GB RAM; turn time measured from user action to valid dispatch to Aztec mempool.

Our bottleneck is client proving + tx assembly; we optimize it directly via constraint budgeting, parallel proving, and benchmark-driven iteration. We will report turn-time measurements at each milestone and open-source the final implementation per grant requirements. We will not share constraint-level optimizations or pipeline micro-architecture pre-award; those land with the open-source delivery.

Grant Milestones & Roadmap

  1. Weeks 1–2 (starting week of Jan 19): Parity spec vs v0.6; world-state schema; primitives + tests; benchmark harness established.
  2. Weeks 3–4: Noir init/move/reveal/biomebase/whitelist; public state transitions; unit + property tests.
  3. Weeks 5–6: Energy/silver economy, movement/capture zones, foundry artifact minting, spacetime rip NFT flow; scenario suite.
  4. Weeks 7–8: Aztec adapter in DF client; tx lifecycle + indexer sync; session-key UX; per-turn latency instrumentation; devnet playable build.
  5. Weeks 9–10: Load/latency tests (<60s/turn target); security review; docs/runbooks; open-source release; mainnet deployment window for Mar 22.
    KPI Gate: By Weeks 8–9, representative turns (move/capture, upgrade, artifact craft, rip→NFT) meet <60s mempool dispatch on a documented baseline machine (e.g., M2 MacBook Air/16GB RAM or equivalent) with p50 target and p90 tracked.

Stretch Goals

  • Plugin-ready API and sample plugins (planet overview, leaderboard, artifact marketplace stubs).
  • Renderer/UX polish (mobile-friendly controls, better resource HUD, tutorial/onboarding).
  • “Aztec Hidden-Information Game” template repo derived from DF codebase.

Risks & Mitigations

  • Proving latency variance (low-end devices): workers + caching + optional non-custodial relay; track p90 turn times and profile hotspots.
  • Indexer/sync complexity: build indexer early (Weeks 3–4); replay/scenario tests to catch desyncs; keep public state minimal.
  • Noir/toolchain stability: pin toolchain versions; CI that fails on version drift.

Grant Amount Requested

$75,000

Grant Budget Rationale

  • Noir/Aztec contract engineering + proving performance: $32k (Karl + Nagu, full-time ~8 weeks)
  • Frontend + aztec.js/PXE integration + indexing/sync: $18k (Nagu lead, Karl support, full-time ~6 weeks)
  • QA, testing infra, load/prover profiling: $12k
  • Docs, deployment, community handoff: $6k
  • Contingency (infra, audits, NFT mint pipeline): $7k

Questions for the Foundation

  • Confirm preferred Aztec test environment (devnet vs local sandbox) for milestone demos.
  • Any constraints on NFT standard for Aztec-native artifacts?
  • Preferred telemetry hooks for alpha showcase (e.g., anonymized usage/latency reporting)?