MetaMuse rh777 · Robinhood Chain · eip155:4663 · USDG 01 / 04 Get paid Explorer Read the skill

One signature. Paid on Robinhood Chain.

A payment rail for muses and the servers they buy from. The price is in USDG, you sign once, there is no gas, and the receipt comes back in the same round trip.

Three stamps, one round trip

The server names a price. You sign a transfer for exactly that amount to exactly that address. The server settles it on chain and then answers. Nothing else happens in between.

rh777                     Robinhood Chain
network        eip155:4663
asset          USDG
amount         0.010000
payer          0x80A576aE…33815172
merchant       0x7B81c68f…8EA3B8B5
transaction    0xd99e0dc2f54c89cd90b64a8825c571068efce5094ae51cd932ef401632148f25
settled        2026-09-18 21:09:54 UTC
gas paid by    the rail, not you
attestation    signed by rh777, verifiable offline
nonce          single use, consumed
--------------------------------------
thank you. keep this.

The receipt prints itself

Settled in 1,251 ms on the demo loop, from request to response. The transaction is public, the attestation is ours, and anyone can check it without asking us.

    Your human holds the ceiling

  1. The signature names the merchant.The proxy contract on chain refuses to send anywhere else, including to rh777.
  2. The signature names the exact amount.Not up to that amount, exactly that amount. If the price changes, the signature stops working.
  3. Every nonce is single use.Send the same signature twice and nothing settles. You get the original receipt back instead.
  4. Every signature expires.A deadline and a valid-after window keep it to minutes.
  5. The Permit2 allowance is the ceiling.Set once by your human, in USDG. No server can ask for more than what remains.

For builders

Two sides, one protocol. A merchant mounts the paywall and a payer wraps fetch. Both take a few lines: paywall.ts for the merchant, client.ts for the payer. Keys come from the merchant page.

Get paid

// Hono. Price in USDG; the handler runs only after the payment verified.
app.get('/quote', paywall({ price: '0.01', payTo: '0xYourAddress' }), (c) => c.json(quote()))

Pay

// viem wallet + account. Refuses anything priced above the cap.
const pay = payingFetch(wallet, account, { maxUsdg: '0.05' })
const res = await pay('https://api.metamuse.lol/rh777/demo/quote')
const receipt = decode(res.headers.get('PAYMENT-RESPONSE'))

Prove a receipt later

// The attestation is an rh777 signature over the receipt hash.
await verifyMessage({ address: rail.signer, message: { raw: receiptHash(receipt) }, signature: receipt.attestation })
  • GET /rh777/supportedwhat the rail settles, and the signer address behind attestations
  • POST /rh777/verifyread only: would this payment settle right now, and why not
  • POST /rh777/settlesettles, once per payer nonce; needs a merchant key for the payTo
  • GET /rh777/receipt/:payer/:noncethe stored receipt and its hash
  • GET /rh777/healthrelayer gas, chain height, settlements so far
  • GET /rh777/demo/quote0.01 USDG for a live META quote; try the whole loop in a minute

How it works, plainly

The price is a header. A server that wants USDG answers a normal request with status 402 and a base64 JSON challenge in PAYMENT-REQUIRED. It lists the network (eip155:4663), the asset (USDG), the amount in base units, the merchant address, and how long the offer stands.

The payment is a signature, not a transaction. The payer signs a Permit2 transfer for exactly that amount, with the merchant written into the message as a witness. The spender in that message is a small proxy contract whose only job is to hand the funds to that address. Nobody can redirect it, not even the rail.

The rail pays the gas. rh777 checks the signature, the allowance, the balance, the nonce, the deadline, and simulates the settlement before spending anything. Then it sends one transaction on Robinhood Chain and waits for the receipt. On the demo loop that took 1,251 ms from the first request to the paid answer.

The receipt is proof. It carries the transaction hash, payer, merchant, amount, nonce and time, plus an attestation: rh777 signs the receipt hash with the same key it settles from. A merchant can prove a payment happened to a third party with a single signature check and no API call.

Retries are safe. A payment settles once per payer nonce. Send the same signed request twice and you get the same receipt back, not a second charge.

The ceiling is yours. The only thing a payer ever approves on chain is a USDG allowance to Permit2. That number is the most any sequence of signatures can move. Set it to what you mean to spend.

rh777

Approve once, then just sign. USDG on Robinhood Chain, settled in about a second, with a receipt you can prove.

© 2026 MetaMuseRobinhood Chain · eip155:4663