> ## Documentation Index
> Fetch the complete documentation index at: https://docs.darkmatter.rdytobash.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Founder Pass

> Founder Pass — Dark Matter Protocol on Robinhood Chain.

# Founder Pass Fee Share

`FounderPass` is the protocol's crown-jewel NFT: **215 passes, 0.25 ETH each, capped
forever** — and every pass streams a share of all protocol fee events.

## Mint economics

| Parameter | Value |
| - | - |
| Supply | **215** (`MAX_SUPPLY`), immutable |
| Price | **0.25 ETH** (`mintPrice`, immutable at deploy) |
| Gross raise if sold out | 53.75 ETH |
| Revenue destination | Auto-forwards 100% to the DarkMatterTreasury on mint |

```solidity theme={null}
function mint() external payable {
    if (_nextId > MAX_SUPPLY) revert SoldOut();
    if (msg.value != mintPrice) revert WrongPrice();
    // ... mint, then fail-closed forward:
    (bool ok, ) = tr.call{ value: msg.value }("");
    if (!ok) revert EthTransferFailed();   // treasury rejects → mint never happened
}
```

Mint revenue is **treasury fuel, not dead contract balance** — if the treasury cannot
receive, the entire mint reverts. No stuck funds.

## The fee share — how passes earn

The pass pool receives **10% of the reactor's 10% fee bucket** (= 1% of every gross
deposit) plus the same cut of every compounding fee and lootbox-spend routing. Fees
arrive via `receive()` and are accounted with a **cumulative per-token tracker**:

```solidity theme={null}
receive() external payable {
    uint256 minted = _nextId - 1;
    if (minted > 0 && msg.value > 0) {
        accumPerToken += (msg.value * 1e18) / minted;   // scaled 1e18 for precision
    }
    emit FeeReceived(msg.value, minted, accumPerToken);
}
```

**Key properties:**

* A pass earns from every fee event that happens **after its mint** — the tracker
  snapshots `accumPerToken` at mint time, so new passes never claim old fees.
* Later mints slightly dilute the per-event share of earlier passes (the fee is divided
  by *current* supply), which is the standard trade for a growing cap-fixed series.
* Precision is 1e18-scaled; flooring happens **once at claim**, not per event —
  `unclaimedFees()` sums scaled debt and floors at the end, so rounding can never
  underpay holders in aggregate.

## Claiming

```solidity theme={null}
function claim(uint256 tokenId) external nonReentrant;   // one pass
function claimAll() external nonReentrant;               // every pass you own
claimableFor(tokenId) / claimableOf(owner)               // views
```

Claims pay ETH directly to the pass owner. Both claim paths are `nonReentrant`, and
`claimedPerToken[tokenId]` is checkpointed **before** the ETH leaves.

## Holder perks (beyond the fee share)

| Perk | Mechanic |
| - | - |
| **Permanent VIP** | `EventHorizonPool.weightOfLive()` returns a flat 100-mass seat for any pass holder — mass gates never apply |
| **Weekly eligibility bypass** | Founders skip both the 0.05 ETH activity floor and the 3-day streak gate — their 0.25 ETH mint *is* the standing contribution |
| **Wheel pricing** | Free daily spin plus paid spins at 50 DUST instead of 100 (StardustWheel founder perk) |

## The legacy sweep — provably safe

For any stray ETH that landed on the pass contract outside `receive()`:

```solidity theme={null}
function sweepToTreasury() external;   // permissionless once admin-armed
```

The sweep can **never touch unclaimed holder fees** — it only forwards the surplus
above `unclaimedFees()`:

```solidity theme={null}
uint256 pool = unclaimedFees();
uint256 amount = address(this).balance - pool;
if (pool >= address(this).balance || amount == 0) revert NothingToSweep();
```

Since `unclaimedFees()` floors *after* summing (≥ the sum of per-pass floors), the
reserved amount is always ≥ what claims can possibly pay. Holder dividends are
mathematically untouchable.

## Worked example

Week with 50 ETH of reactor deposits → 0.50 ETH of VIP/founder pool cuts (1% each) →
FounderPass `receive()` fires on each fee event. With **100 passes minted**:

| Metric | Value |
| - | - |
| Fees received that week | 0.50 ETH |
| Per-pass accrual | 0.50 / 100 = **0.005 ETH per pass** |
| Holder with 3 passes | claims **0.015 ETH** via `claimAll()` |
| Same week, 200 passes minted | 0.0025 ETH per pass — dilution is real, cap-fixed supply bounds it at 215 |

Next: [Event Horizon VIP Pool](pools/event-horizon.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.