Grant Proposal: Dark Forest on Aztec | TrionLabs

Dark Forest on Aztec Network w/ Private State | TrionLabs

Team: trionlabs.dev
Email: contact[at]trionlabs.dev
Signal: @yaman.08
Telegram: @yamanc

Summary

We propose to deliver the full requirements of the Dark Forest v0.6 RFGP on the Aztec Network, leveraging its native privacy features, by March 22, 2026. Since the announcement of the RFP, we have analyzed the codebase and completed the necessary preliminary research for the deliverables, as detailed below.

We are a team of ZK engineers, full-stack developers, and product designers dedicated to turning ZK and crypto technologies into real products. Our team has won multiple hackathons including Solana, Starknet, and EthGlobal.

With this project, we aim to contribute to Aztec by deploying Dark Forest for the alpha launch and delivering a well-structured and clearly documented codebase that lowers the barrier to entry for building Aztec smart contracts with private state, Noir circuits and supports the onboarding of new developers into the ecosystem.

By showcasing Aztec’s native privacy capabilities, our implementation will leverage Aztec’s private state model through Noir smart contracts / circuits to ensure gameplay secrecy.

Dark Forest is currently difficult to play and serves a niche audience due to ZK-related complexity and UI/UX barriers.We see this as a strong opportunity to showcase both Aztec’s advantages and our team’s strengths, while enabling a meaningful stress test of Aztec’s infrastructure through real user traffic and providing developers with a production-ready example of private state architecture.

Start and End Date

We plan to start and launch the project within the dates specified in the RFGP.
Start Date: January 16, 2026 (ASAP)
End Date: March 22, 2026 (hard deadline for launch) + 1 Month (Detailed in Proposal)

Our Team

We are a team of ZK engineers, full-stack developers, and product designers dedicated to turning zero-knowledge and crypto technologies into real-world products.

We have been finalists at ETHGlobal, Starknet, and Solana hackathons and have contributed to ecosystems including Mina Protocol and Starknet. We have previously received hackathon awards and grants for projects built on Dojo Engine on Starknet and designed the Mastermind game for Mina Protocol.

Having worked together for over three years as a cohesive, production-focused team, we recently founded TrionLabs (trionlabs.dev) to build user-friendly products on cutting-edge technologies. We are currently developing showcase projects with Aztec and are aiming to launch a flagship product within the Aztec ecosystem.

  • Deniz (Engineer):

    • Exploration Engineer @ o1Labs
    • Self Protocol ZK Residency Fellow 2025
    • LambdaClass Cryptography Bootcamp Fellow 2024
    • Built projects using zkJWT, ZKEmail and ZKPassport in Noir
    • Built Ethereum → Mina ZK light client bridge PoC (sp1-helios)
    • ETHGlobal Brussels 2024 finalist (FHE-based advertisement protocol)
    • Implemented cryptographic primitives in o1js: ChaCha20, HMAC-SHA256, Schnorr and ECDH over secp256k1
    • Open source contributor
  • Emir Soyturk (Engineer):

    • Software Engineer @ Ingonyama
    • Author of icicle-snark (fastest groth16 implementation with speed-ups up to 200x compared to snarkjs)
    • Author of icicle-halo2 (fastest halo2 implementation with speed-ups up to 20x compared to halo2)
    • Contributor to ICICLE (open-source zero-knowledge acceleration library)
    • ETHGlobal Brussels 2024 finalist: AdFHE
    • Successful Hackathon tracks like:
      • ETHGlobal Istanbul: zkMap (using Noir)
      • ETHGlobal Bangkok: FHEye (FHE-based security system)
    • Game & Simulation Development Experience
      • Worked on building ice navigation simulation for Navy students
      • Organized local GameJam
  • Yusuf Kaya (Engineer):

    • ZK & Architecture Expertise: 4+ years of engineering experience with a deep focus on ZK circuits and system architecture. Specialized in Cairo (Starknet)
    • Serial Hackathon Winner: Proven track record in global competitions. Multiple awards at Starknet Hackathons, On-chain games on Starknet and Solana (dojoduel.fun), ETHGlobal Bangkok Winner (Verifiable Prediction Market on Mina)
    • Provable Database Pioneer: Architected SphinxDB on Starknet; secured ecosystem grants for this verifiable DB solution.
  • Yaman Can (Product & Design & GTM) - Portfolio

    • ZK & Product Expertise: Specializes in UI/UX for Zero-Knowledge products; previously designed developer and ZK game onboarding flows for Mina Protocol and currently leads local marketing at BabylonLabs.
    • Growth Track Record: Managed $300K+ in budgets for high-profile TGE/GTM campaigns (Galxe, CyberConnect etc).
    • Proven User Acquisition: Awarded Sui Builder Hero (2023) for architecting an NFT campaign that onboarded 30,000 users to the Sui Network on Sui Testnet.
    • Technical Achievements: 2x Starknet Hackathon Finalist; Solana Hackathon Finalist (DojoDuel.fun game), Starknet Dojo MUD Engine Hackathon Track Winner
  • Diyez – (Web2 Game Designer)

    • Worked on hyper-casual and casual games at global game studios with 3+ billion total downloads (WonderBlast, FunRace 3D, RunRace, etc.).
    • Designed 800+ levels for top 3 game companies in TĂĽrkiye.
    • Designed onboarding flows and level features (obstacles, mechanics, boosters).
    • Contributed to the launch of casual games that were acquired by Moon Active.

Technical Approach

---
title: Dark Forest on Aztec
---
flowchart TB
    subgraph Infrastructure["Infrastructure Layer"]
        direction LR
        FE["FRONTEND<br/>+ PoW Miner"] <---> PXE["PXE"]
        PXE <---> AZTEC["AZTEC L2"]
    end

    Infrastructure --> Contract

    subgraph Contract["GAME CONTRACT (Noir)"]
        direction TB
        
        subgraph Functions["Function Layer"]
            direction LR
            
            subgraph Private["Private Functions"]
                direction TB
                P1["init_player()"]
                P2["prove_move()"]
                P3["reveal_planet()"]
                P4["discover_artifact()"]
                P5["send_to_rip()"]
                P6["mine_silver()"]
            end

            subgraph Public["Public Functions"]
                direction TB
                U1["register_player()"]
                U2["process_move()"]
                U3["publish_planet()"]
                U4["register_artifact()"]
                U5["process_rip()<br/>+ mint_nft()"]
                U6["update_silver()"]
                U7["upgrade_planet()"]
                U8["process_arrival()"]
            end

            P1 --> U1
            P2 --> U2
            P3 --> U3
            P4 --> U4
            P5 --> U5
            P6 --> U6
        end

        subgraph State["State Layer"]
            direction LR
            
            subgraph PubState["PUBLIC STATE"]
                S1["planets: Map&lt;Field, HashedPlanet&gt;"]
                S2["players: Map&lt;AztecAddress, PlayerStats&gt;"]
                S3["arrivals: Map&lt;Field, QueuedArrival&gt;"]
                S4["artifacts: Map&lt;Field, Artifact&gt;"]
                S5["spacetime_rips: Map&lt;Field, Rip&gt;"]
                S6["universe_seed: Field"]
                S7["world_radius: Field"]
            end

            subgraph PrivState["PRIVATE STATE"]
                S8["known_coords: Map&lt;Field, Coordinates&gt;"]
                S9["exploration_nullifiers: Set&lt;Field&gt;"]
            end
        end
    end

    Contract --> NFT["ARTIFACT NFT CONTRACT"]

    %% Styling
    style Infrastructure fill:#1a1a2e,stroke:#16213e,color:#eee
    style Contract fill:#0f3460,stroke:#16213e,color:#eee
    style Private fill:#533483,stroke:#16213e,color:#eee
    style Public fill:#2a6041,stroke:#16213e,color:#eee
    style PubState fill:#1e5128,stroke:#16213e,color:#eee
    style PrivState fill:#4a235a,stroke:#16213e,color:#eee
    style NFT fill:#b83b5e,stroke:#16213e,color:#eee

Circuits & Smart Contracts

  • We’ll implement Circom circuits as private functions for Aztec smart contracts in Noir
  • We’ll implement Solidity contracts as public functions with public state as Aztec smart contracts in Noir
  • We’ll integrate Wonderland’s NFT contract standard for minting an Aztec native NFT for related assets in game. https://github.com/defi-wonderland/aztec-standards/blob/dev/src/nft_contract/README.md
  • To improve the performance and make sure we’re below the 60-second limit, we’re considering using Poseidon for operations like proof-of-work mining, but if preferred we can also use the MiMC hash function library provided in Noir so it’ll be the same as the original Dark Forest game. https://github.com/noir-lang/mimc

Circuit Migration Strategy

The original Dark Forest uses 5 Circom circuits. Here’s our migration approach:

1. Init Circuit → prove_init_location()

What it proves:

  • Hash(x, y) = location_id
  • Coordinates within spawn radius
  • Perlin value in valid spawn range

Our approach:
We’ll validate spawn location and compute the perlin value for space type classification.


2. Move Circuit → prove_move()

What it proves:

  • Both from/to hashes are correct
  • Distance is within range
  • Destination is within world bounds
  • Destination perlin is correctly calculated

Our approach:
We’ll validate both locations and check travel distance using the poseidon.


3. Perlin Noise → perlin module

What it computes:

  • Deterministic noise value for any coordinate
  • Multi-scale interpolation (3 octaves)
  • Space type and biome thresholds

Our approach:
We’ll rewrite the noise algorithm in noir using constraint friendly arithmetic.


4. Reveal Circuit → reveal_location()

What it proves:

  • Coordinate hash matches claimed location_id

Our approach:
Simple hash verification when a player reveals their planet coordinates publicly.


5. Biomebase Circuit → find_artifact()

What it proves:

  • Correct biome calculation from coordinates
  • Valid foundry planet for artifact discovery

Our approach:
We’ll reuse the Perlin module to calculate biome and validate artifact discovery.

Private State → Public State Flow

INIT FLOW:

  1. Client calls init(x, y) on contract
  2. PXE executes #[aztec(private)] prove_init():
    • Computes location_id = poseidon(x, y, key)
    • Computes perlin = multi_scale_perlin(x, y, …)
    • Validates spawn constraints
    • Calls public via context.call_public_function()
  3. Public function initialize_player(location_id, perlin):
    • Creates Player struct
    • Creates home Planet
    • Emits PlayerInitialized event

MOVE FLOW:

  1. Client calls move(from_x, from_y, to_x, to_y, energy, silver, artifact)

  2. PXE executes #[aztec(private)] prove_move():

    • Computes from_id, to_id
    • Validates distance <= planet.range * energy_factor
    • Computes to_perlin for planet initialization
    • Enqueues public call
  3. Public function queue_arrival():

    • Reads from_planet, validates ownership
    • Deducts energy/silver
    • Creates QueuedArrival with calculated arrival_time
    • Emits ArrivalQueued
  4. Later, anyone calls process_arrivals(planet_id):

    • Iterates pending arrivals where arrival_time <= now
    • Applies energy transfer / capture logic

Transaction Timing Strategy (Under 60 sec)

  • As we have circuit engineering experience with different zkDSLs and frameworks like Circom, Cairo, o1js, and Arkworks, we’ll be evaluating potential constraint improvements during the Circom to Noir migration to make the circuits more optimized and performant.
  • We are also considering using Poseidon instead of the MiMC sponge to evaluate whether it leads to any meaningful performance improvements. If Poseidon shows a clear advantage, we will adopt it, otherwise, we will continue using the existing MiMC library. GitHub - noir-lang/mimc

Frontend Integration

  • We’ll update wallet connection w/ Azguard and/or Obsidion. If possible, we would also like to integrate the new wallet SDK that the Aztec team is working on, as we believe it would serve as a strong example.
  • We’ll update the frontend to use AztecJS and PXE for Aztec smart contract interactions.
  • We’ll be keeping it the same as much as we can including game assets and more.

Quality Standards

  • We’ll provide a well structured, clearly documented and open-source codebase that lowers the entry barrier for building Aztec smart contracts with private state and supporting onboarding more developers to the ecosystem.
  • We’ll write unit tests for all pure functions, edge cases for math operations; integration tests for full init → move → capture flow, artifact discovery → nft mint flow; performance tests for proof generation timing per function, transaction throughput and more.
  • Our codebase will be open-sourced under MIT (and LGPL for the frontend or other parts we’ll use from the original DarkForest game as mentioned in the RFGP).

Additional Features and Enhancements

  • Enhanced UI/UX for Mainstream Adoption: Our team includes a professional web2 game designer with experience at top-3 mobile game studios in Turkey (3B+ total downloads). We will redesign the complex HUD into a streamlined interface and implement an onboarding flow tailored for both Web2 and Web3 audiences.
  • GTM: With Aztec’s support and alignment, we will execute targeted launch campaigns, including ecosystem co-marketing, exclusive early access codes (15-day priority for ecosystem partners), and content bounties to drive adoption and engagement.
  • Community Growth: We will provide 2 months of dedicated social media management and community moderation for boosting engagement by redistributing platform revenues through monthly mini-tournaments.
  • Technical Content: We will release a detailed blog post and Twitter/X threads showcasing how to build private-state games on Aztec, serving as a resource for future developers.

Future Opportunities

  • Community Plugin Ecosystem: As the game gains traction, we can develop a plugin architecture that allows community members and developers to extend and customize the game experience.
  • Privacy-First Accounts & Onboarding: We can implement browser-generated keypairs stored locally. By funding these accounts through Aztec’s private transfers, players can manage multiple accounts simultaneously while maintaining full privacy.
  • Recurring Monthly Campaigns to Sustain Engagement: To maintain daily active transactions and long-term player retention, we can have monthly leaderboards with recurring reward pools, incentivizing continued participation.

Grant Milestones & Roadmap

Overview

Period Duration Focus Key Deliverables
January (W1-2) 2 weeks Core Infrastructure Noir types, Perlin, Basic contract
February (W3-6) 4 weeks Game Logic, Frontend & UI/UX Movement, Artifacts, NFTs, HUD redesign
March (W7-10) 4 weeks Frontend, Pre-Launch & Launch Integration, Landing page, Co-marketing, Launch
April+ Ongoing Growth Leaderboards, Community, Co-marketing bounties

Milestone 1: Core Infrastructure (January - Week 1-2)

Technical Milestones (M1)

  • Noir types: Planet, Player, Arrival, Artifact
  • Perlin noise implementatio
  • Basic contract structure compiles

Design Milestones (M1)

  • Branding: Development of the logo and a cohesive visual identity

Milestone 2: Core Game Logic & UI/UX (February - Week 3-6)

Technical Milestones (M2)

Core Game Logic:

  • init_player private function (coordinate validation, spawn constraints)
  • move_fleet private function (distance validation, travel time)
  • reveal_location private function
  • Planet refresh and arrival processing
  • Unit tests passing

Artifacts & NFTs:

  • find_artifact private function (biome validation)
  • Aztec-native NFT contract (Wonderland standard)
  • Spacetime rip mechanics (artifact → NFT minting)
  • Artifact deposit/withdraw/activate

Design Milestones (M2)

  • Gameplay UX: Redesigning the complex HUD into a simplified, intuitive, and mainstream-friendly interface
  • Game Assets: Planet visuals, ship designs, UI components
  • Landing Page: A landing page with narrative, optimized for easy onboarding

Milestone 3: Frontend & Pre-Launch (March - Week 7-10)

Technical Milestones (M3)

  • Aztec.js integration
  • Wallet connection (Azguard/Obsidion)
  • Integrate the new wallet SDK from the Aztec team (if available) as a reference implementation
  • E2E/integration tests passing
  • Documentation (setup guide, architecture etc.)
  • Blogpost & Twitter/X thread about building games on Aztec with private state

Design & Marketing Milestones (M3)

Pre-Launch Warm-up (15 days prior - Aztec Alignment & Support Needed):

  • Onboarding Flow: An interactive mini-guide system to teach core game mechanics effortlessly
  • Lead Generation: Integrated waitlist and countdown timer to drive FOMO and capture early interest
  • Co-Marketing with Ecosystem Partners: Early invite codes for partner Aztec communities (15-day priority)
  • Social Assets: Social media asset designs for X (Twitter)
  • Launch Campaign: Marketing materials and promotional content to maximize Day-1 reach

LAUNCH: March 22, 2026

  • Production deployment verified
  • Launch announcement published
  • Co-marketing posts live
  • Weekly Leaderboard Rewards x3
  • Documentation

Post-Launch: Growth & Maintenance (April+)

Marketing & Community

  • Strategic Ecosystem Momentum: Collaborative marketing with other Aztec projects
  • Ecosystem Partnerships: Mini branded in-game assets (skins/emblems) and exclusive early access codes for partner projects
  • Co-Marketing Bounties: Strategic alignment with partners for collaborative bounty campaigns

Ongoing

  • Weekly leaderboard rewards
  • Bug fixes & maintenance & community feedback
  • Social media management & moderation

Team Responsibilities

Member Role Focus Areas
d0x471b & Emir Soyturk ZK & Circuit Engineering Circom → Noir migration, all 5 private functions (init, move, reveal, find_artifact, biome), Perlin noise implementation, cryptographic primitives (Poseidon/MiMC evaluation), constraint optimization, proof generation profiling (<60s target), unit tests & integration tests
Yusuf Kaya Smart Contracts & Frontend Solidity → Noir migration (20+ public functions), public state management, Aztec.js frontend integration, wallet connection (Azguard/Obsidion), WebGL world rendering, NFT contract implementation (Wonderland standard), artifact minting & spacetime rip mechanics
Yaman Can Product & GTM UI/UX improvements, landing page, marketing campaigns, waitlist & invite code system, ecosystem partner coordination, community management, launch execution
Diyez Game Design Onboarding flow & tutorials, HUD simplification, Web2-friendly UX patterns, player journey optimization, retention mechanics

Deliverables

Our focus is on providing high-quality, production-ready code that serves as a reference implementation for the Aztec developer community.

1. Smart Contracts & Circuits (Noir)

Deliverable Description
df-noir-core A repository containing the core game logic implemented in Noir. Includes optimized implementations for coordinate validation, movement constraints, and combat mechanics.
Noir Perlin Module A standalone, ZK-optimized Noir module for multi-scale Perlin noise generation. This will be a reusable primitive for other procedural generation projects on Aztec.
Artifact NFTs (Wonderland) Implementation of the artifact system using the Wonderland NFT standard, integrated with Spacetime Rip mechanics.
Circuit Optimization Report Documentation detailing the constraint counts for each circuit and benchmarking results for proof generation timing (<60s target).

2. Frontend & Integration (Aztec.js)

Deliverable Description
df-aztec-client A high-performance WebGL-based frontend integrated with @aztec/aztec.js. Features local PXE management and non-blocking background proving.
Modernized HUD A redesigned, user-friendly interface that simplifies the complex original Dark Forest HUD for a broader audience without losing strategic depth.
Wallet Reference Implementation A working integration of Aztec’s newest Wallet SDK or Azguard/Obsidion, demonstrating asset management and account abstraction.
Mining & Exploration Engine A browser-based WebWorker system for coordinate discovery that runs efficiently in parallel with the main UI thread.

3. Launch & Growth Assets

Deliverable Description
Narrative Landing Page A landing page featuring a waitlist system, integrated countdown timer, and narrative-driven onboarding to build early community hype.
Interactive Tutorial An in-game mini-guide system designed by our game design lead (Diyez) to teach core mechanics (mining, moving, artifacts) to new players.
Marketing Media Kit A comprehensive set of social media assets, logos, and branding guidelines for the Aztec community to share the launch announcement.
Launch-Day Dashboard Leaderboard tracking for the initial 3-week reward season.

4. Documentation & Developer Resources

Deliverable Description
Developer Setup Guide A step-by-step technical guide for developers wanting to run the game locally.
Technical Architecture Post A detailed blog post/thread explaining the migration from Circom/Solidity to Noir, specifically focusing on handling private state in games on Aztec Network.
Reference Implementation Docs In-code documentation and a high-level overview of the contract architecture to serve as a guide for onboarding new devs into the Aztec ecosystem.

5. Acceptance Criteria

To ensure the quality of the deliverables, each milestone will be validated against:

  • Functional Completeness: All core Dark Forest v0.6 mechanics are playable on Aztec Devnet/Testnet.
  • Performance: End-to-end transaction flow takes less than 60 seconds.
  • Code Quality: All Noir contracts pass nargo test and nargo check; frontend code is linted and documented.
  • UX Excellence: The onboarding flow correctly captures waitlist data and guides a new user to their first “Move” without external help.

Grant Amount Requested

We are requesting a total of $66,500 to support five core team members working over 3 months (January 16, 2026 - March 22 [Launch] and April 22, 2026), covering development, design, marketing, launch and operational costs.

Grant Budget Rationale

With high-quality engineering and product work, we will deliver all requested features by the specified deadline. Afterward, we will focus on maintenance and incremental improvements, while prioritizing community engagement, marketing, and growth during the subsequent period.

For the possible continuation of the project, we have allocated resources to handle future upgrades and maintenance, subject to mutual agreement with the Aztec team.
Budget Breakdown:

Category Amount Duration
Engineering (3 Engineers) $45,000 3 months
Product / Design / Launch (2 Leads) $10,000 3 months
Tools & Infrastructure $1,500 See below
Miscellaneous & Contingency (~10%) $5,000 See below
Subtotal (Core Delivery) $61,500 –

Tools & Infrastructure Breakdown ($1,500):

  • Development Period (3 months): Figma ($20), Notion 5-seat ($150), Claude Pro 5-seat ($300), Midjourney ($90) = $560
  • 10-Month Period: Discord Bots ($100), Cloudflare Pro ($200) = $300
  • Annual Costs (12 months): Hosting ($360), Domain ($10), X Pro ($240) = $610
    Total: $1,470 | Buffer: $30

Miscellaneous & Contingency ($5,000):
Reserved for unforeseen technical challenges, additional resources, third-party services, and operational expenses that may arise during development and launch.

Optional: Post-Launch Retainer

Category Amount Duration
Community Management & Marketing Budget $5,000 3-6 months
Launch Marketing Budget (Extra) $5,000 TBD with Aztec Team

We will manage the grant budget through a multi-sig wallet and all expenses will be transparently shared.

Questions for the Aztec Team

  1. Proof Recursion for Batch Operations:

    Does the PXE currently support recursive private function proofs? We are considering proof recursion as a potential optimization for batch move operations, which could significantly improve the player experience and reduce transaction overhead.

  2. Co-Marketing & Launch Collaboration:

    We would be very interested in collaborating with the Aztec team on a coordinated marketing campaign for the Dark Forest launch. This could include:

    • Announcements and content distribution

    • Early access codes for Aztec ecosystem partners (15-day priority window)

    • Co-branded launch events or AMAs

    • Developer-focused content showcasing private state implementation

    Would the Aztec team be open to supporting such an initiative?

2 Likes