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/0xnagu • Telegram: 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:
- Constraint minimization by architecture: keep private functions scoped to security-critical invariants; push large, non-critical computation into bounded unconstrained regions with explicit checks.
- Parallel proving pipeline: multithreaded witness/proof generation via workers with safe caching/reuse across turns.
- 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
- Weeks 1–2 (starting week of Jan 19): Parity spec vs v0.6; world-state schema; primitives + tests; benchmark harness established.
- Weeks 3–4: Noir init/move/reveal/biomebase/whitelist; public state transitions; unit + property tests.
- Weeks 5–6: Energy/silver economy, movement/capture zones, foundry artifact minting, spacetime rip NFT flow; scenario suite.
- Weeks 7–8: Aztec adapter in DF client; tx lifecycle + indexer sync; session-key UX; per-turn latency instrumentation; devnet playable build.
- 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)?