Docs
What Post does, how something sent to a handle becomes an asset, and every address to check yourself.
What it is
Post lets anyone send ETH to an X handle, whether or not its owner has a wallet yet. The transfer becomes a claim in the ledger. The owner signs in with one post, which ties the handle to an account id, and claims it as any supported asset on Robinhood Chain: Stock Tokens, commodities, treasury ETFs, ETH, USDG, Pons coins or $Post.
Robinhood Chain is an Arbitrum L2 settling to Ethereum. Chain id 4663, ETH is the gas token, Chainlink feeds publish prices on chain, and Stock Tokens are ERC-20 contracts with 18 decimals issued by Robinhood Assets (Jersey) Limited with a uiMultiplier for corporate actions.
How it works
Four steps, and each one leaves something you can check.
- Send. On Send to a handle your own wallet signs a plain ETH transfer to the Post wallet with the UTF-8 bytes of
post:@handleas the calldata. No account needed on the other side. A partner with the Post API key can also callPOST /api/v1/claimsdirectly. - Check. The page posts only the transaction hash to
POST /api/v1/deposits. The server reads the transaction and its receipt from chain 4663, checks the recipient is the Post wallet, checks the receipt succeeded, decodes the calldata into a handle against/^[a-z0-9_]{1,15}$/, and prices the ETH at the Chainlink ETH/USD round for that block. Nothing in the request body is trusted except the hash, and the same hash posted twice returns the first claim. - Sign in. One post from the handle proves it is yours, or OAuth 2.0 with PKCE through the X app. Only the account id, handle, name and avatar are kept, in a signed httpOnly cookie. The Claims page reads the ledger under both the account id and the handle, so anything sent before sign-in is still there.
- Claim. You pick an asset and a wallet, see the quote, and confirm. The Post wallet signs the settlement, waits for one confirmation and writes the transaction hash back onto the claim. Per-transaction and per-day caps are enforced inside the send path, not in the browser, and both are published by
/api/status.
How it fills
Two venues fill a route on chain 4663.
- Uniswap v3 for Stock Tokens, commodity and RWA funds, WETH and USDG. QuoterV2 is asked across the 0.01, 0.05, 0.3 and 1 percent tiers and the tier with the most output wins. SwapRouter02 fills it with
exactInputSingle, and ETH is paid as value so the router wraps it. - The Pons V2 curve for a Pons coin. The buy is simulated with eth_call first, then signed against the curve with the recipient set to your wallet.
Every minimum received is floored at 98 percent of the quote. An asset with no Chainlink feed is listed and marked, never given a number. A pair with no pool says so and the review button stays off.
Fees
The Post fee is 0.5% of claimed value, taken once when Post pays out value it holds for a handle. It is a single constant, RELAY_FEE_BPS = 50, in api/_route.js.
A wallet-mode swap never touches the Post wallet, so it pays no Post fee. It pays the pool fee of the tier it fills on and the gas of chain 4663, both shown in the quote before anything is signed.
Sending to a handle costs nothing on the way in. The fee is taken once, at claim, on the value going out. The fee share stays in the Post wallet and is recorded per settlement as fee_eth. RELAY_FEE_SPLIT is the setting that routes that share into $Post; while it is unset the share stays in the Post wallet.
Verify on chain
| Contract | Address | Role |
|---|---|---|
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 | Wrapped ETH, the pool currency |
| USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | Dollar referenced token, 6 decimals |
| Pons V2 factory | 0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e | Emits every launch and its curve |
| Uniswap v3 factory | 0x1f7d7550b1b028f7571e69a784071f0205fd2efa | Resolves a pool for a pair and tier |
| QuoterV2 | 0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7 | Quotes exact input single hops |
| SwapRouter02 | 0xcaf681a66d020601342297493863e78c959e5cb2 | Fills the swap to your wallet |
| UniswapInterfaceMulticall | 0x282a3c4d320cc7f0d5eaf56b8029e4b88338f0a3 | Batches the balance and feed reads |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 | Approval transfer helper |
| UniversalRouter | 0x8876789976decbfcbbbe364623c63652db8c0904 | Router for combined actions |
| Post wallet | reading /api/status | Receives what is sent and signs what is claimed |
| $Post | issuance pending | Token contract on Robinhood Chain, launched on Pons |
| Official account | @xRelayProtocol | The only account that publishes the contract address |
Risk
- Stock Tokens are tokenized debt securities issued by Robinhood Assets (Jersey) Limited. They track an underlying, they are not the underlying share.
- A claim is a ledger entry until it settles on chain. Until a transaction hash exists, nothing has moved.
- Prices come from Chainlink feeds with a heartbeat. A feed that has not updated recently carries its own timestamp, shown next to the price.
- A Pons curve price moves with its reserves. A small curve moves a lot on a small buy.
- Not available to US persons.