> For the complete documentation index, see [llms.txt](https://stonkmarket.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stonkmarket.gitbook.io/docs/guides/trading.md).

# Trading

In v2 there is **no trading router**. Every token is a live **Uniswap v4** pool from launch, and trading is ordinary v4 swapping against that pool. The easiest path is [the website](/docs/guides/trading-ui.md); this page covers trading directly on-chain.

## Before You Trade

1. Confirm the market is open — a swap reverts outside NYSE hours (enforced by the [StonkHook](/docs/smart-contracts/stonk-hook.md)'s `beforeSwap`) and before the token's `launchTime`.
2. Set an appropriate minimum-out for slippage and a deadline.

There is no graduation and no separate curve contract to check — the pool is real from the first bell (see [No Graduation](/docs/concepts/graduation.md)).

## How Swaps Work

Each token's pool is a standard Uniswap v4 pool identified by its `PoolKey`:

* `currency0` / `currency1` — the token and its backing asset, ordered by address.
* `fee` — **0** (the native LP fee is zeroed; the hook charges the protocol fee instead).
* `tickSpacing` — **60**.
* `hooks` — the StonkHook for that chain.

A swap goes through that chain's Uniswap v4 **PoolManager**, typically via the **Universal Router**. The hook runs on every swap: it blocks the trade if the market is closed, and it withholds **1%** from the backing-asset leg (never from the token itself).

| Network                | StonkHook                                                                                                                                | PoolManager                                                                                                                              |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Base (8453)            | [`0x702b1FE403Ec993a102addE47f2ab52eb2eadAcc`](https://basescan.org/address/0x702b1FE403Ec993a102addE47f2ab52eb2eadAcc)                  | [`0x498581fF718922c3f8e6A244956aF099B2652b2b`](https://basescan.org/address/0x498581fF718922c3f8e6A244956aF099B2652b2b)                  |
| Robinhood Chain (4663) | [`0x3f7b2634AeE7173Ed0F5328CeB8a2134F8B95ACc`](https://robinhoodchain.blockscout.com/address/0x3f7b2634AeE7173Ed0F5328CeB8a2134F8B95ACc) | [`0x8366a39CC670B4001A1121B8F6A443A643e40951`](https://robinhoodchain.blockscout.com/address/0x8366a39CC670B4001A1121B8F6A443A643e40951) |

## On Robinhood Chain, the Universal Router Takes an Extra Field

Robinhood Chain runs a **feature-extended build** of the Universal Router — an official Uniswap deployment, but not the same binary as Base and most other chains. Its v4 swap params carry an extra per-hop price guard:

```solidity
struct ExactInputSingleParams {
    PoolKey  poolKey;
    bool     zeroForOne;
    uint128  amountIn;
    uint128  amountOutMinimum;
    uint256  minHopPriceX36;   // <-- not present in the stock router
    bytes    hookData;
}
```

If you encode the stock shape, the router misreads the `hookData` offset in assembly and reverts **with empty returndata** — no selector, no reason string. And because the chain's V4Quoter *is* stock, sharing one encoder between quoting and trading will quote correctly and then fail every swap.

Pass `minHopPriceX36 = 0` to get exactly stock behaviour; the guard is only applied when the field is non-zero. Detect the variant per chain rather than special-casing Robinhood — other chains ship their own router builds. See [Robinhood Chain](/docs/reference/robinhood-chain.md).

Nothing about the pool, the hook, or the trading rules differs — this is purely a calldata-encoding concern.

## The Fee

The 1% is taken from the backing-asset side of your swap by the hook — a buy costs 1% more asset, a sell returns 1% less asset. It accrues in the [StonkFeeLocker](/docs/smart-contracts/stonk-fee-locker.md), split creator / platform referrer / treasury. There is no fee denominated in the launched token.

## Third-Party Routing Caveat

Because the pool uses a **custom hook**, general-purpose front-ends and aggregators — the Uniswap interface, 0x, the Base app — will only route it once the hook has been **allowlisted** on their side. Those submissions are in progress.

Until then, a **direct Universal Router swap** built from the pool's `PoolKey` works today for anyone — it does not depend on any aggregator allowlist. The website already trades this way, so swapping through [stonk.market](https://www.stonk.market/) works regardless of aggregator status.

## Slippage and Deadline

Always pass a minimum-output amount so a swap reverts rather than filling at a bad price if the market moves, and a deadline so a stale transaction can't execute later at an unexpected price. Quote the expected output first (for example, via the v4 Quoter) and set your minimum a small percentage below it.

## Market Hours Always Apply

Swaps and plain transfers are both gated to NYSE hours — the hook gates swaps, the token gates transfers. Outside 9:30 AM – 4:00 PM ET on a trading day, nothing moves. See [Market Hours](/docs/concepts/market-hours.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://stonkmarket.gitbook.io/docs/guides/trading.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
