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 or Pons coins.
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. OAuth 2.0 with PKCE through the X app is also implemented, and opens only on a deployment that carries the X app keys; the sign-in sheet offers whichever routes
/api/x-auth/sessionreports, and Settings names them. 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 coin launched on Pons, the launchpad on Robinhood Chain. 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 still quotes from its pool; it is listed and marked, and it carries no dollar reference. 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. Nothing is taken on the way in.
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 | 0xdd7e36cffe7e9b6641e173eb864cd41500b23729 | Token contract on Robinhood Chain, launched on Pons |
| Official account | @GetPostx | The only account that publishes the contract address |
If it is never claimed
Value sent to a handle sits in the Post wallet, recorded against that handle in the ledger, until the owner signs in and claims it. There is no expiry, no sweep and no deadline, so an unclaimed amount waits indefinitely. It stays visible the whole time: every transfer into the Post wallet is on Blockscout, and the Recently sent table on Send to a handle lists it with its hash.
A send is final. Once the transfer is mined there is no reverse, no refund and no way to move it to a different handle. A handle typed wrong becomes value waiting for whoever proves they own that handle, so read the handle and the calldata in the review sheet before signing.
A claim settles whole, in one transaction, and the per-transaction cap applies to the whole claim, so a single send worth more than the cap cannot be paid out through this site and the owner is refused with tx-cap when they try. The cap is $500 on this deployment and /api/status publishes it live. Send more than that as several smaller transfers to the same handle, each its own claim.
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.