Make your position capital efficient. Laxu tokenizes your perp positions on Robinhood Chain so you can borrow USDG against it and earn creator fees when others buy in.




# Laxu: Make Your Position Capital Efficient
**Borrow against it. Earn from it.**
Laxu turns an open perpetual-futures trade into collateral. Every trade a user opens on **Arcus** through Laxu becomes its own ERC-20 token on **Robinhood Chain** (Arbitrum Orbit, testnet chain ID 46630). The user can borrow **USDG** against that token while the trade keeps running, and other users can buy into the trade, paying the creator a **2% fee** on every buy-in.
Live on Robinhood Chain testnet, with real orders placed on Arcus.
---
## The Problem
A trader has a winning 5x ETH long and needs cash. Today every option is bad:
| Option | What it costs them |
|---|---|
| **Close the trade** | They lose the position. If the move continues, that upside is gone. |
| **Borrow elsewhere** | Lenders accept tokens and deposits, not open trades. A live perp position can't back a loan anywhere. |
| **Leave it** | Margin and unrealized profit sit locked until the trade is closed. |
Open perp positions are some of the most valuable assets in crypto, and among the least usable. And if someone else believes in that one trade, there's no way to back it, only to follow a whole trader.
---
## The Solution
**Keep the trade. Take the cash.**
1. **Open:** the user pays USDG. Laxu places a real order on Arcus and mints a **PositionToken** for that trade, 100% owned by the user.
2. **Borrow:** the user deposits the token into its own isolated lending pool and borrows USDG. The trade stays open.
3. **Earn:** others can buy into the trade at its current value. Every buy-in pays the creator **2%**.
4. **Repay and redeem:** repay the loan any time, withdraw the collateral, and redeem the token for its share of the trade.
---
## How It Works
**One token per trade.** Each trade is an EIP-1167 clone of `PositionToken` (ERC-20, with ERC-7540 async requests). It isn't a pooled fund. Each token represents exactly one position.
**Value is computed on-chain.**
`NAV = capital + size × (mark − entry) ± (funding − fundingSettled)`
The backend reports mark price and funding. It reports when the price moves 1% or on a 5-minute heartbeat. The contract computes the token's value from those reports.
**Buy-ins keep leverage constant.** A buy-in of amount *a* grows the position proportionally (`ΔSize = a · Size / NAV`), and redeems shrink it by the redeemed fraction. Every holder keeps the same leverage and the same exposure per token.
**Isolated lending, one pool per position.** A shared ERC-4626 `LendingVault` holds lender USDG. Each position gets its own `LendingPool` with its own debt ceiling, so one bad trade can't drain the others.
**Risk scales with leverage.**
| Trade leverage | Max LTV | Liquidation threshold |
|---|---|---|
| 1–5x | 50% | 60% |
| 6–10x | 40% | 50% |
| 11–20x | 25% | 35% |
**Permissionless liquidation.** Anyone can liquidate an unhealthy loan. The close factor is 50%, rising to 100% when the health factor drops below 0.95 or the collateral falls under dust.
**Stale-price safety.** Borrowing and withdrawing collateral are blocked if the last price report is more than 7 minutes old. Liquidation is deliberately **not** blocked, so bad debt can always be cleared.
**Safe order lifecycle.** The open flow is a resumable state machine (`awaiting_payment → payment_received → deposited → order_filled → minted`). Any failure before the fill triggers an automatic refund, and the flow resumes correctly after a backend restart.
---
## Fees (simple and on-chain)
- **Buy-in fee:** 2%, paid directly to the position's creator
- **Borrow interest:** 10% APR, simple interest, paid to vault lenders
- **No fee** to open, borrow or repay beyond interest
---
## Key Features
- 🪙 **Tokenized positions:** every trade is its own ERC-20, transferable and composable with any protocol on the chain.
- 💵 **Borrow against open trades:** USDG loans against a live perp position, without closing it.
- 🤝 **Back a trade, not a trader:** buy into one specific trade, and the creator earns 2%.
- 🏦 **Isolated lending pools:** per-position debt ceilings and leverage-tiered LTVs.
- ⚡ **Permissionless liquidation:** anyone can liquidate unhealthy loans; no special access needed.
- 🛡️ **Guardrails on the backend:** the backend reports prices, but it can't set share prices, force exits or redirect payouts.
- 🔁 **Automatic refunds:** a failed order is refunded, not stuck.
---
## Smart Contract Architecture
| Contract | Role |
|---|---|
| `PositionToken` | One ERC-20 / ERC-7540 token per trade: NAV, buy-ins, redeems, creator fee |
| `PositionFactory` | Deploys a PositionToken clone for each new trade |
| `LendingVault` | ERC-4626 vault holding lender USDG, with per-pool debt ceilings |
| `LendingPool` | Isolated pool per position: collateral, borrow, repay, liquidate |
| `LendingPoolFactory` | Deploys a LendingPool clone for each position |
**Testing:** 114 tests (76 for PositionToken, 38 for lending), covering NAV and funding math, proportional buy-ins and redeems, request cancellation timeouts, LTV tiers, interest accrual, close-factor liquidation, dust handling and stale-oracle behaviour.
---
## Full-Stack Architecture
- **Frontend:** Next.js, TypeScript, viem, Privy wallet sign-in
- **Backend:** Express + TypeScript, Prisma on PostgreSQL (Neon), viem. It runs the open-order state machine, the price reporter, the event indexer and the reconciler.
- **Venue:** Arcus perps on Robinhood Chain, with each trade placed through a dedicated Arcus subaccount
---
## Trust Model (stated honestly)
- **Lending is fully on-chain.** Collateral, loans, LTVs and liquidation are enforced by contracts, and anyone can liquidate.
- **The Arcus leg is custodial for now.** Trades sit in operator-controlled Arcus subaccounts, and the backend reports their prices. We removed trust first where other people's money sits (the lending layer). Independent price checks and less custody are next.
---
## Why Robinhood Chain + Arcus
- **Stock perps:** a leveraged TSLA or NVDA trade can become collateral, which only works here.
- **Arcus liquidity:** we build on the venue instead of competing with it.
- **Low gas** on Arbitrum Orbit makes frequent price reports affordable.
- **ERC-20 native:** any protocol on the chain can plug into position tokens.
---
## Deployed Contracts (Robinhood Chain Testnet, 46630)
| Contract | Address |
|---|---|
| PositionToken (implementation) | `0x60101F14631bAAff60f09D5BA0aDF3F940d15e2a` |
| PositionFactory | `0x15F8DFF61656e17a5C5AE7e03571f9833bBEb84c` |
| LendingVault | `0x6Defff9515D183AB7bBd3BBcE822C54D852D4bEf` |
| LendingPool (implementation) | `0x8b8d3EeE0BF4f42417C2b4d14491D343F162Bd1C` |
| LendingPoolFactory | `0x6DDb43385fbB07a5c9ee2b84343940eE84f138ab` |
| USDG | `0x293b337712d4312776a3a2d292f44410e7873bad` |
---
## Links
- 🌐 **Live app:** <ADD LINK>
- 🎥 **Demo video:** <ADD LINK>
- 🎤 **Pitch video:** <ADD LINK>
- 📊 **Pitch deck:** <ADD LINK>
- 💻 **GitHub:** https://github.com/NatX223/Laxu
- 📄 **Litepaper:** https://github.com/NatX223/Laxu/blob/main/LITEPAPER.md
---
## Roadmap
- Independent price checks against Chainlink feeds at mainnet
- Less custody: per-user or contract-owned Arcus accounts, keeper incentives and an insurance fund
- Lending pools for Arcus pTokens
- Secondary market and social layer: sell your trade, trending trades, leaderboards
- More venues and chains: Hyperliquid and Monad
---
*Testnet only. Laxu is an independent project built on Arcus and is not affiliated with Arcus.*
We started with the idea of tokenizing individual perp trades on Robinhood Chain and built it end to end: smart contracts, a backend that places real orders on Arcus, and a web app.
Contracts. We built PositionToken, one ERC-20 / ERC-7540 token per trade, deployed as cheap clones. Its value is computed on-chain from the reported mark price and funding, and proportional buy-ins and redeems keep every holder's leverage the same. We started from OpenZeppelin's community ERC-7540 contracts and changed them for our case. We then built an isolated lending layer on top: an ERC-4626 USDG vault, one lending pool per position, leverage-tiered LTVs, interest, and permissionless liquidation with a close factor. 114 tests cover the risky paths. Everything is deployed on Robinhood Chain testnet, and the vault is seeded with 50,000 USDG.
Backend. We integrated with Arcus through dedicated subaccounts, one per trade, and handled both of Arcus's signing schemes. We built a resumable order state machine: payment, deposit, order fill, mint, with automatic refunds on failure. We also built a price reporter (1% moves or a 5-minute heartbeat), an event indexer and a reconciler.
Pivot after feedback. During the judges' feedback session, the project read as "trade tokenization / copy trading". We refocused on what users actually need: borrowing against an open trade without closing it. Tokenization became the mechanism, and buy-ins (with a 2% creator fee) became a bonus. We renamed the project from Shapeshift to Laxu, with the tagline "Make your position capital efficient."
Problems we hit and fixed:
A dropped database connection after an on-chain deposit caused a second deposit on resume. We fixed it by rebuilding state from on-chain logs, retrying database writes and tuning the connection timeouts.
Our stale-price guard originally blocked liquidations. We changed it so stale prices block borrowing and withdrawals, but never liquidation.
WebSocket vs HTTPS RPC issues broke contract writes. We fixed them by splitting the transports.
401s from Arcus signing on leverage changes, plus price slippage on a thin testnet order book.
Result. Real trades executed on Arcus, minted as tokens, deposited as collateral and borrowed against on Robinhood Chain testnet. We also wrote a README, a litepaper with the trust model and invariants, an architecture diagram, a demo video and a pitch deck.
Not raised yet. Laxu is self-funded and built by a solo developer. We're open to grants and ecosystem support from Arbitrum and Robinhood Chain to fund a security audit and the move to mainnet. We'd consider a pre-seed round once testnet usage validates demand.