# Grant Proposal: Dark Forest on Aztec | TrionLabs

**URL:** <https://forum.aztec.network/t/grant-proposal-dark-forest-on-aztec-trionlabs/8321>\
**Category:** Aztec\
**Tags:** noir, rfgp, apps\
**Created:** [January 14, 2026, 1:21am UTC](https://forum.aztec.network/t/grant-proposal-dark-forest-on-aztec-trionlabs/8321 "2026-01-14T01:21:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yaman](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/yaman/32/2199_2.png) [@yaman](https://forum.aztec.network/u/yaman)\
**Post date:** [January 14, 2026, 1:21am UTC](https://forum.aztec.network/t/grant-proposal-dark-forest-on-aztec-trionlabs/8321/1 "2026-01-14T01:21:50Z")

</div>

# 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](https://github.com/0x471) (Engineer):

- [Emir Soyturk](http://github.com/emirsoyturk/) (Engineer):

- [Yusuf Kaya](https://github.com/codekaya) (Engineer):

- [Yaman Can](https://x.com/yamancan) (Product & Design & GTM) - [Portfolio](https://yamancan.notion.site/design?source=copy_link)

- Diyez – (Web2 Game Designer)

# Technical Approach

```mermaid
---
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](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](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():
> 
> 3. Public function queue\_arrival():
> 
> 4. Later, anyone calls process\_arrivals(planet\_id):

### 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](https://github.com/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:**

2. **Co-Marketing & Launch Collaboration:**
