# What is LeverUp

LeverUp is a decentralized perpetuals protocol on Monad. Traders open leveraged long or short
positions against a protocol liquidity pool, using crypto, forex, equity, index, and commodity
markets — all settled onchain, all non-custodial.

For an integrator, LeverUp exposes three surfaces:

| Surface | What it is | Gas | Key custody |
| :--- | :--- | :--- | :--- |
| **Onchain** | A single Diamond (EIP-2535) proxy contract you call directly | You pay | You hold the trading key |
| **Gasless (1CT)** | Sign trade intents offchain, protocol relays and executes them | Protocol pays | Signing key can only trade, never transfer |
| **REST API** | HTTP endpoints for prices, pairs, positions, history, analytics | n/a | Read-only |

## How a trade works

LeverUp is oracle-settled, not order-book matched. A trade goes through two phases:

1. **Request.** You submit the trade. The protocol locks your collateral and requests a price.
2. **Fill.** A keeper delivers the oracle price and the position opens at that price, adjusted for
   the pair's slippage model.

This means an open is not instant within a single transaction — your transaction creates a *pending*
trade, and a follow-up keeper transaction turns it into an open position. The same applies to
closes. Integrations that need certainty should watch [events](/onchain/events) or poll
[positions](/onchain/reading-data), not assume the receipt of their own transaction is the final state.

## Positions are merged per market

LeverUp does not create one position object per trade. A position is a **slot**, keyed
deterministically by:

```
keccak256(abi.encode(user, pairBase, isLong, lvToken, "position.v1"))
```

Open BTC long twice with the same collateral and you end up with **one** position at a blended entry
price, not two. This is why partial closes and TP/SL orders exist as first-class operations — see
[Managing a Position](/onchain/manage-position) and [TP/SL Orders](/onchain/tpsl-orders).

You can compute this hash offchain, or read it from
[`getPositionHash`](/onchain/reading-data#getpositionhash).

## What you need

- A Monad mainnet RPC endpoint.
- An EVM account with `MON` for gas (not required if you only use [1CT](/gasless/overview)) and a
  supported collateral token.
- For price-sensitive calls, access to the LeverUp oracle endpoint —
  see [Oracle & Prices](/api/oracle).

Next: [Quickstart](/introduction/quickstart).
