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:
- 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<Field, HashedPlanet>"]
S2["players: Map<AztecAddress, PlayerStats>"]
S3["arrivals: Map<Field, QueuedArrival>"]
S4["artifacts: Map<Field, Artifact>"]
S5["spacetime_rips: Map<Field, Rip>"]
S6["universe_seed: Field"]
S7["world_radius: Field"]
end
subgraph PrivState["PRIVATE STATE"]
S8["known_coords: Map<Field, Coordinates>"]
S9["exploration_nullifiers: Set<Field>"]
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 →
perlinmoduleWhat 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:
- Client calls init(x, y) on contract
- 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()
- Public function initialize_player(location_id, perlin):
- Creates Player struct
- Creates home Planet
- Emits PlayerInitialized event
MOVE FLOW:
Client calls move(from_x, from_y, to_x, to_y, energy, silver, artifact)
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
Public function queue_arrival():
- Reads from_planet, validates ownership
- Deducts energy/silver
- Creates QueuedArrival with calculated arrival_time
- Emits ArrivalQueued
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 testandnargo 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
-
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.
-
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?
-