> For the complete documentation index, see [llms.txt](https://docs.brila.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.brila.finance/brila-dat/how-to/provide-and-stake-lp.md).

# Provide liquidity and stake LP

Goal: create DAT/WHYPE LP tokens and stake them in `BrilaDATIncentivizer` to earn DAT rewards. Addresses are listed in [Networks & addresses](/brila-dat/reference/addresses.md).

## 1. Create DAT/WHYPE LP tokens

### App: zap one asset into LP

In the [DAT app](https://dat.brila.finance):

1. Connect on HyperEVM and open **Farms**.
2. In **Zap into LP**, choose HYPE, WHYPE, or DAT and enter an amount.
3. Review estimated LP output and the slippage floor.
4. Approve the input token when requested, then confirm the zap.

The ownerless `BrilaDATZap` swaps part of the input, adds liquidity directly to the DAT/WHYPE pair, sends LP tokens to your wallet, and returns token dust.

### DEX: provide both assets

Alternatively, acquire DAT and WHYPE in the pool's current value ratio, then add both to the existing DAT/WHYPE pool on Project X. Use the canonical pair—not only the factory address. You receive the pair's LP token.

## 2. Stake the LP token

In the app's **Farms** page, enter the LP amount and select **Stake**. The first transaction approves the incentivizer; the next stakes.

For direct contract interaction, amounts use 18 decimals:

```bash
LP_TOKEN=0x3E0B18bD621304Df40485428eCd20765cF692432
INCENTIVIZER=0x3e9E18f5944B2d95571d68b9e74627aa9dAb2cc0

# approve the incentivizer to pull your LP token
cast send $LP_TOKEN "approve(address,uint256)" $INCENTIVIZER <amount> \
  --rpc-url https://rpc.hyperliquid.xyz/evm --private-key $PK

# stake it
cast send $INCENTIVIZER "stake(uint256)" <amount> \
  --rpc-url https://rpc.hyperliquid.xyz/evm --private-key $PK
```

Never expose a production private key in shell history or shared logs; use a secure signer where possible.

## 3. Read and claim rewards

```bash
cast call $INCENTIVIZER "earned(address)(uint256)" $YOU --rpc-url https://rpc.hyperliquid.xyz/evm
cast send $INCENTIVIZER "getReward()" --rpc-url https://rpc.hyperliquid.xyz/evm --private-key $PK
```

`earned()` returns pre-scaling reward units. `getReward()` transfers:

```
earned(you) × current brilaDatScalingFactor / 1e18
```

The app applies this scaling when displaying earned DAT.

To withdraw your entire nonzero stake and claim in one transaction:

```bash
cast send $INCENTIVIZER "exit()" --rpc-url https://rpc.hyperliquid.xyz/evm --private-key $PK
```

## Things to know

* After a reward period ends, the next `stake` or `getReward` triggers the halving rollover. It is not automatic at the period-end timestamp.
* The incentivizer must retain the token's minting role for rollover to succeed.
* You are a liquidity provider: you carry **impermanent-loss** exposure on the DAT/WHYPE pair in addition to the DAT rewards.
* This is the only deployed farm; see [Liquidity strategy](/brila-dat/explanation/liquidity-strategy.md) for why.
