Robinhood Chain bump-campaign service for scheduled token relaunches with on-chain payment verification and public execution receipts.
- Domain:
https://bumpy.my - Legacy domain:
https://tryloopy.fun - Chain ID:
4663 - RPC:
https://rpc.mainnet.chain.robinhood.com - Explorer:
https://robinhoodchain.blockscout.com - Brand:
Bumpy
- React/Vite frontend served by the Node API container.
- Express API for quotes, orders, payment verification, launches, and created coins.
- PostgreSQL stores immutable order totals, operations, receipts, and created-token ledger rows.
- Worker signs scheduled launches server-side after exact native payment is verified on-chain.
- Caddy terminates HTTPS and reverse-proxies to the internal API container.
PAYMENT_ADDRESSmust match the backend signer derived fromSERVICE_PRIVATE_KEY.- One shared signer is protected by a PostgreSQL advisory lock so multiple worker instances cannot spend concurrently.
- Each order stores a per-launch gas reserve at creation time.
- Before sending a launch transaction, the worker checks signer balance and rejects gas prices above that saved gas budget.
- If gas is too expensive or the signer is underfunded, the operation is retried later instead of spending into a loss.
- Public APIs expose final customer totals and public receipts only; internal pricing parameters stay server-side.
npm ci
cp .env.example .env
npm run devRun API and worker locally with PostgreSQL configured in .env:
npm run dev:server
npm run workernpm run typecheck
npm test
npm run buildCreate /opt/pamly/.env.production from .env.production.example, then run:
docker compose build api worker
docker compose up -dDo not commit or overwrite .env.production, .data, PostgreSQL volumes, Caddy volumes, or wallet vault files.
See DEPLOYMENT.md for the restore checklist.