# treasury

The basefun protocol treasury is funded by three streams, all transparent on-chain.

## Revenue streams

| Source                          | Amount                               | When                                                   |
| ------------------------------- | ------------------------------------ | ------------------------------------------------------ |
| Deploy fee                      | $1 USDC                              | At every `createToken`                                 |
| Swap fee (pre-bond)             | 0.5% × `usdcAmount`                  | Inline, every buy/sell on the curve                    |
| Swap fee (post-bond, V2 tokens) | 0.5% × USDC-equivalent of every swap | Sub-minute after each Uni V2 swap, after keeper sweeps |
| Graduation cut                  | $300 USDC                            | One-time, when a curve graduates                       |

## Where the wallet sits

A single EOA: the **treasury wallet**. Set as `protocolFeeRecipient` on FactoryV3 at deploy. Future factories can rotate it via `setProtocolFeeRecipient`, but existing per-token settings are immutable.

The treasury is operated by the founding team. Funds are not auto-deployed into yield strategies; they sit as USDC on Base waiting to be allocated.

## How the funds are used

Two explicit buckets:

### 1. Development

* Smart contract audits (next priority once treasury crosses a threshold).
* Avantis integration maintenance — keeping the keeper's perp logic aligned with Avantis upgrades.
* Oracle and RPC infrastructure (Pyth, QuickNode WS, DexScreener fallback).
* Keeper, API, and tgbot hosting on Railway.
* Frontend iteration — new charts, mobile-native flows, position UX.
* Security upgrades and incident response.
* Funding new product surfaces (analytics dashboards, alerts, cross-chain bridges, multichain expansion).

### 2. Marketing

* Brand campaigns.
* Creator partnerships and incentives (early-launch bounties, themed campaigns).
* Paid acquisition on X and Telegram.
* Community programs — leaderboards, referrals, hackathon sponsorships.
* Event presence (conferences, IRL meetups, AMAs).

The split between buckets isn't fixed; it shifts based on what's bottlenecking growth at any given moment.

## What the treasury does NOT do

* **Not airdropped, not bought back, not staked.** The protocol does not promise any direct return-of-treasury mechanism. All economic alignment to holders comes via the creator share (which they pick, including possibly the creator's own wallet → effectively a "creator stake") or via picking up tokens on the curve / Uni V2.
* **Not used as protocol-owned liquidity.** Post-grad LPs are burned at `0xdead`, owned by no one. Treasury does not seed or remove liquidity.

## On-chain verification

For any time window:

```
treasury_inflows = USDC.Transfer events filtered by `to = treasury` from
                   (factories, curves, keeper)
treasury_outflows = USDC.Transfer events with `from = treasury`
```

Both are visible on BaseScan. The basefun team will publish quarterly reports cross-referencing these.

## Future governance

V2 of the roadmap includes a governance token that allows the community to:

* Vote on treasury allocations between development and marketing.
* Approve or veto large outflows (over a configurable threshold).
* Sign off on factory upgrades (new fee splits, new graduation parameters).

Until that token ships, treasury decisions are made by the founding team, with rationale posted in the Telegram group when material amounts move.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://basefun.gitbook.io/basefun-docs/treasury.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
