TypeScript toolkit to create, deploy, and manage ERC-20 tokens on Robinhood Chain — Robinhood's permissionless, EVM-compatible Layer 2 built on Arbitrum Orbit (mainnet launched July 1, 2026).
Gas is paid in ETH. There is no native chain token; you deploy standard ERC-20 contracts the same way you would on Ethereum, Base, or Arbitrum.
- ERC-20 smart contract (
RobinhoodToken) with configurable name, symbol, decimals, and initial supply - Owner minting — deployer can mint additional tokens after launch
- Hardhat scripts — compile, deploy, mint, and verify on Blockscout
- TypeScript CLI — deploy and inspect tokens with
ethersv6 - Mainnet + testnet — preconfigured for Robinhood Chain (4663) and testnet (46630)
| Property | Mainnet | Testnet |
|---|---|---|
| Network | Robinhood Chain | Robinhood Chain Testnet |
| Chain ID | 4663 |
46630 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
https://rpc.testnet.chain.robinhood.com |
| Explorer | robinhoodchain.blockscout.com | explorer.testnet.chain.robinhood.com |
| Gas token | ETH | ETH |
For production, use a dedicated RPC provider (Alchemy, QuickNode, etc.). The public RPC is rate-limited.
cd robinhood-token-launch
npm installcp .env.example .envEdit .env:
PRIVATE_KEY— deployer wallet (must hold ETH on the target network)NETWORK—robinhoodTestnet(recommended first) orrobinhoodTOKEN_NAME,TOKEN_SYMBOL,TOKEN_DECIMALS,TOKEN_INITIAL_SUPPLY
npm run compilenpm run deploy:testnetOr deploy to mainnet:
npm run deploy:mainnetAfter deployment, set TOKEN_ADDRESS and TOKEN_OWNER (your deployer address) in .env, then:
npm run verify -- --network robinhoodTestnetDeploy without Hardhat runtime (uses compiled artifact + ethers):
npm run create-token -- \
--network robinhoodTestnet \
--name "My Token" \
--symbol MTK \
--decimals 18 \
--supply 1000000Inspect an on-chain token:
npm run token:info -- 0xYourTokenAddressList tokens saved in local Redis after deployment:
npm run tokens:listRedis is enabled by default and connects to 127.0.0.1:6379.
Start Redis locally (Docker example):
docker run -d --name redis -p 6379:6379 redis:7-alpine| Variable | Default | Description |
|---|---|---|
REDIS_ENABLED |
true |
Set false to skip Redis entirely |
REDIS_HOST |
127.0.0.1 |
Redis host |
REDIS_PORT |
6379 |
Redis port |
REDIS_PASSWORD |
(none) | Redis password, if required |
REDIS_DB |
0 |
Redis database index |
REDIS_KEY_PREFIX |
robinhood-token: |
Key namespace prefix |
REDIS_TOKEN_INFO_TTL |
60 |
Seconds to cache on-chain token metadata |
If Redis is unavailable, deploy still succeeds but the registry write is skipped. token:info falls back to direct RPC reads.
Only the contract owner can mint. Set in .env:
TOKEN_ADDRESS=0x...
MINT_TO_ADDRESS=0x...
MINT_AMOUNT=5000
Then:
npm run mint -- --network robinhoodTestnet| Path | Role |
|---|---|
contracts/RobinhoodToken.sol |
OpenZeppelin-based ERC-20 with owner mint |
scripts/deploy-token.ts |
Hardhat deployment script |
scripts/mint-token.ts |
Mint tokens to an address |
scripts/verify-token.ts |
Verify source on Blockscout |
src/cli/create-token.ts |
Standalone TypeScript deploy CLI |
src/cli/token-info.ts |
Read token metadata from chain (Redis-cached) |
src/cli/list-tokens.ts |
List deployments stored in Redis |
src/services/token-registry.service.ts |
Persist and list deployed tokens |
src/config/networks.ts |
Robinhood Chain network constants |
src/services/token.service.ts |
Deploy, mint, and query helpers |
Manual MetaMask / EVM wallet settings:
- Network name: Robinhood Chain
- Chain ID: 4663
- RPC URL:
https://rpc.mainnet.chain.robinhood.com - Currency: ETH
- Explorer:
https://robinhoodchain.blockscout.com
See Robinhood Chain docs for one-click wallet setup.
- Never commit a real
PRIVATE_KEY. Use a throwaway deployer for testnet. - Deployments are permanent — double-check name, symbol, supply, and decimals before broadcasting.
- The public RPC is fine for testing; use a paid endpoint for production apps.
mint()is restricted to the owner — transfer ownership carefully if you use a multisig later.