Introduction
h0p is a settlement layer for moving value between chains. Send on one chain, receive the native asset on another, usually in a few seconds.
Quickstart
The SDK below is a preview of the planned interface and isn't published yet. Today you can use the HTTP API directly.
npm install @h0p/sdk
pnpm add @h0p/sdk
yarn add @h0p/sdk
import { Hop } from "@h0p/sdk"; const hop = new Hop({ network: "testnet" }); const quote = await hop.quote({ from: { chain: "base", token: "USDC" }, to: { chain: "arbitrum", token: "USDC" }, amount: "250.00", }); const route = await hop.send(quote); // route.state → "settled" in ~2.4s
Why h0p
Moving value between chains today means using a bridge. Most bridges lock your asset, mint a wrapped copy and make you wait for confirmations on both sides.
- Slow: transfers take minutes, longer at peak load.
- Costly: you pay gas twice plus a bridge fee.
- Risky: wrapped assets depend on the bridge staying solvent.
h0p replaces that with a single quote, one signature and native settlement.
Route lifecycle
- Quote. The router picks the cheapest path and fixes the fee before you sign.
- Lock and attest. Your asset locks on the source chain and a validator quorum signs.
- Release. Native liquidity is released to you on the destination chain.
If a route doesn't settle inside the timeout window, the lock is released and your asset is refunded on the source chain.
Fees & $H0P
Every route pays a flat 0.02% fee, in USDC. Senders never need to hold $H0P. The fee is split every epoch:
| Recipient | What they do | Share |
|---|---|---|
| Route nodes | Sign and relay routes. Paid in USDC | 70% |
| Route nodes that stake $H0P | Same work, bigger share (comes out of the protocol's cut) | 80% |
| Buyback & burn | USDC buys $H0P on the market, then it is burned | 15% |
| $H0P stakers | Paid in USDC, pro rata to stake | 15% |
So $H0P is not a fee token. It's the value-accrual and security token: usage buys and burns it, staking it earns USDC, and staking nodes earn a larger share.
Run a node
Anyone can run a route node: a home PC, your own server or a cloud VM. A node watches the source chains, signs attestations for routes it can verify, and relays them. Nodes are paid in USDC for every route they help settle.
- Reward: 70% of route fees, split across the signing nodes. 80% if the node stakes $H0P.
- Honesty: nodes that sign invalid routes lose stake and are removed.
- Status: the first node cohort isn't open yet. Reserve a slot to be invited.
Flight stages
The flight plan on the home page maps the project's life as a route. The solid line is the product. The dashed line is the token and treasury, which return to the pad to fund the next flight.
| Stage | Meaning | Path |
|---|
API reference
The site runs on a live backend. Quotes and routes are real records stored in Postgres; settlement timing is simulated on the server until the on-chain contracts exist. Base URL: https://function-bun-production-520f.up.railway.app/api
| Method | Path | What it does |
|---|---|---|
| GET | /api/health | Service status and storage type |
| GET | /api/chains | Supported chains, tokens and USD prices |
| GET | /api/stats | Block, epoch, routes and volume in the last 24h, p50 settle time |
| POST | /api/quote | Price a transfer. Quotes are valid for 30 seconds |
| POST | /api/routes | Start a route from a quote id |
| GET | /api/routes/:id | Live status, step timings and signature count |
| GET | /api/routes?scope=all | Recent routes (all, user or network) |
| POST | /api/waitlist | Join the sender waitlist or reserve a node slot |
# 1. get a quote curl -X POST https://function-bun-production-520f.up.railway.app/api/quote \ -H "content-type: application/json" \ -d '{"from":"BASE","to":"ARB","token":"USDC","amount":250}' # 2. start the route with the quote id curl -X POST https://function-bun-production-520f.up.railway.app/api/routes \ -H "content-type: application/json" \ -d '{"quote_id":"Q-XXXXXXXX"}' # 3. poll the route curl https://function-bun-production-520f.up.railway.app/api/routes/RT-XXXXXXXX
Errors return JSON like {"error":"Quote expired. Request a new quote."} with a 4xx status. Requests are rate limited per IP.
FAQ
Do I need $H0P to use h0p?
No. Fees are paid in USDC. $H0P is for staking and is bought back and burned with protocol revenue.
Do I get a wrapped token?
No. You receive the native asset on the destination chain.
What happens if a route fails?
Your asset stays locked on the source chain and is refunded after the timeout window.
Where are updates posted?
Follow the project on X.