Skip to content

ckhbtc/easyperps

Repository files navigation

EasyPerps

A natural-language frontend for trading Injective perpetual futures from your MetaMask wallet.

Type what you want. Confirm. Sign. Done.

> long 10 INJ with 5x leverage
> close my BTC position
> bridge 100 USDC from base
> show positions

Live at easyperps.com.

What it does

  • MetaMask-native trading. Connect MetaMask, sign trades with EIP-712 — no separate wallet, no seed phrase to manage.
  • Natural-language intent. Type a trade in plain English; the parser extracts side, symbol, notional, and leverage. Always confirms before signing.
  • AuthZ auto-sign sessions. Generate an ephemeral key, grant it a scoped trading authorization on-chain, then trade for the rest of the session without per-trade MetaMask popups. Auto-revokes on expiry.
  • Native USDC bridging. Bridge USDC into native Injective USDC via Circle CCTP V2 from Arbitrum, Base, Optimism, Ethereum, Polygon, or Avalanche. The app burns on the source chain, waits for Circle attestation, then mints on Injective EVM from MetaMask.
  • Read-only by default. Markets, prices, balances, and positions all load without signing anything.

Stack

  • React 19 + TypeScript + Vite
  • @injectivelabs/sdk-ts for chain interaction (IndexerGrpc APIs, EIP-712, AuthZ)
  • ethers for MetaMask interop
  • Pure client-side — no backend, no analytics, no tracking

Develop

npm install
npm run dev      # http://localhost:5173
npm run build    # static bundle in dist/
npm run lint

Requires Node 20+ and a browser with MetaMask installed.

Deploy

The app is a fully static SPA. Build and serve dist/ from any static host (nginx, Vercel, Cloudflare Pages, S3+CloudFront). The production site at easyperps.com is just dist/ behind nginx.

Project layout

src/
├── App.tsx          # chat UI, theme, message rendering
├── nlp.ts           # natural-language → trade intent parser
├── wallet.ts        # MetaMask connect + Injective address derivation
├── injective.ts     # read-only chain queries (markets, prices, positions, balances)
├── tx.ts            # EIP-712 signing + Injective tx broadcast
├── autosign.ts      # AuthZ session-key flow (grant, broadcast, revoke)
└── bridge.ts        # Circle CCTP V2: source-chain USDC → native Injective USDC

Caveats

  • Mainnet only. There is no testnet toggle in the UI today.
  • Market orders only at the chat layer (limit orders are exposed at the SDK layer but not yet in the NLP parser).
  • Slippage is real. The order is built with conservative oracle-derived prices but you can still get filled at a worse rate in fast markets.
  • Liquidation prices shown in the position card are estimates — actual liquidation depends on mark price, oracle ticks, and funding.

License

MIT — see LICENSE.

This is unofficial software. Not affiliated with Injective Labs. Trade at your own risk.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages