> ## Documentation Index
> Fetch the complete documentation index at: https://docs.purps.lol/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch on Robinhood Chain

> A coin on Pons, Robinhood Chain's launchpad, paired with ETH or a listed token.

Robinhood Chain is an EVM chain, so there is no relay: you send the transactions from your own wallet and tell us the hash.

<Steps>
  <Step title="Read the options">
    `GET /launch-options` and look under `venues.robinhood`: who may launch, the creator tax range, and the payout assets holders can be paid in. Pairs are under `robinhood` in `GET /pairs`. A token not in the list can be checked with `GET /robinhood/assets/{address}`.
  </Step>

  <Step title="Prepare">
    `POST /robinhood/launches/prepare` with `name`, `symbol`, `creatorWallet` and optionally `pairToken` (an `address` from `robinhood` in `/pairs`; the zero address or omitted means ETH). Sign `message` with `personal_sign`.
  </Step>

  <Step title="Submit">
    `POST /robinhood/launches/submit` with the same terms, the logo, socials, optionally `devBuy` (ETH, decimal string) and `creatorTaxBps`, plus `ts` and `signature`. Keep `walletKey` from the response.
  </Step>

  <Step title="Send the steps">
    Send each of `steps` from the creator wallet, in order, waiting for each receipt: an optional swap and approval when there is a dev buy in a token pair, then the launch. `requiredWei` tells you what the wallet needs; `shortByWei` is `0` when it has enough. The hash of the last step is the launch transaction.
  </Step>

  <Step title="Find the launch">
    Once the launch transaction has succeeded, `GET /robinhood/launches/{txHash}` returns the token address, and the `walletKey` again if you lost it.
  </Step>

  <Step title="Register the strategy">
    `POST /robinhood/register/prepare` with `creatorWallet` and `txHash`; sign. Then `POST /robinhood/register/submit` with `walletKey`, `name`, `symbol`, `imageUrl`, your strategy `config`, `ts` and `signature`. If `registered` is false with a reason, the launch is not indexed yet: wait a few seconds and retry.
  </Step>
</Steps>

## Sending a step

Each step is `{ label, tx: { to, data, value, chainId } }`. With viem:

```js theme={"system"}
import { createWalletClient, http, publicActions } from "viem";
import { privateKeyToAccount } from "viem/accounts";

const chain = {
  id: steps[0].tx.chainId,
  name: "Robinhood Chain",
  nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
  rpcUrls: { default: { http: ["https://rpc.mainnet.chain.robinhood.com"] } },
};
const client = createWalletClient({ account: privateKeyToAccount(process.env.CREATOR_KEY), chain, transport: http() }).extend(publicActions);

let txHash;
for (const step of steps) {
  txHash = await client.sendTransaction({ to: step.tx.to, data: step.tx.data, value: BigInt(step.tx.value) });
  const receipt = await client.waitForTransactionReceipt({ hash: txHash });
  if (receipt.status !== "success") throw new Error(`${step.label} reverted`);
}
```
