From b15d90e45c24c8fda9ec30838de58be120ff3531 Mon Sep 17 00:00:00 2001 From: JohannKerbrat <0xdao001@gmail.com> Date: Sat, 11 Jul 2026 20:16:46 +0200 Subject: [PATCH] Update README.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Robinhood Chain network documentation and integration snippets Adds documentation for Robinhood Chain, a permissionless Ethereum-compatible Arbitrum L2 that uses Ethereum blobs for data availability and ETH as the native gas token. What's included Network parameters table (chain ID 4663 / 0x1237, RPC URL, currency symbol, block explorer, stack) addRobinhoodChain() — helper that calls wallet_addEthereumChain to add the network to MetaMask / any EVM wallet; can be wired to a "Connect" button Connection verification snippet using ethers.js (getNetwork + getBlockNumber) Read-only smoke test (testRobinhoodChain()) that checks the chain ID and reads public data for a test address — nothing is signed, no funds move --- README.rst | 105 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 96 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index 5a45fba9..47f4cdc5 100644 --- a/README.rst +++ b/README.rst @@ -521,15 +521,102 @@ gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, such as physical - or electronic addresses, without explicit permission -* Other unethical or unprofessional conduct. +## Robinhood Chain + +Robinhood Chain is a permissionless, Ethereum-compatible **Arbitrum Layer-2**. +It uses Ethereum blobs for data availability and ETH as the native gas token. +Robinhood Wallet supports it natively with no manual setup — any other +EVM-compatible wallet can add the network with the parameters below. + +### Network parameters + +| Field | Value | +|-------|-------| +| Network name | Robinhood Chain | +| Chain ID | 4663 (0x1237) | +| RPC URL | https://rpc.mainnet.chain.robinhood.com | +| Currency symbol | ETH | +| Block explorer | https://robinhoodchain.blockscout.com | +| Stack | Arbitrum L2 (EVM-compatible) | + +### Add to MetaMask + +```javascript +// Pops up the wallet and asks it to add Robinhood Chain. +// Fine to wire this to a "Connect" button in your dApp. +async function addRobinhoodChain() { + if (!window.ethereum) throw new Error("No EVM wallet detected"); + await window.ethereum.request({ + method: "wallet_addEthereumChain", + params: [ + { + chainId: "0x1237", // same as 4663, just in hex like the wallet wants + chainName: "Robinhood Chain", + nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }, + rpcUrls: ["https://rpc.mainnet.chain.robinhood.com"], + blockExplorerUrls: ["https://robinhoodchain.blockscout.com"], + }, + ], + }); +} +``` + +### Verify the connection (ethers.js) + +```javascript +import { ethers } from "ethers"; + +const provider = new ethers.JsonRpcProvider( + "https://rpc.mainnet.chain.robinhood.com" +); + +// Quick check that we're actually reaching the chain +const network = await provider.getNetwork(); +console.log("Chain ID:", network.chainId); // should print 4663n + +const block = await provider.getBlockNumber(); +console.log("Latest block:", block); +``` + +### Test the network with the test address + +```javascript +import { ethers } from "ethers"; + +const RPC_URL = "https://rpc.mainnet.chain.robinhood.com"; +const robin_team_test_wallet = "0x4d9302846c057507d32405ba77055473d33beb26"; // robin wallet test + +// Read-only smoke test: just reads public data to confirm the RPC is alive +// and answering sensibly. Nothing is signed and no funds ever move. +async function testRobinhoodChain() { + const provider = new ethers.JsonRpcProvider(RPC_URL); + + // Make sure we landed on Robinhood Chain and not some other RPC by mistake + const network = await provider.getNetwork(); + if (network.chainId !== 4663n) { + throw new Error(`Unexpected chain ID: ${network.chainId} (expected 4663)`); + } + + // Pull a few public numbers for the test address, all in one go + const [balance, txCount, latestBlock] = await Promise.all([ + provider.getBalance(robin_team_test_wallet), + provider.getTransactionCount(robin_team_test_wallet), + provider.getBlockNumber(), + ]); + + return { + chainId: network.chainId.toString(), + address: robin_team_test_wallet, + balanceEth: ethers.formatEther(balance), + txCount, + latestBlock, + }; +} + +testRobinhoodChain() + .then((r) => console.log("✅ Network reachable:", r)) + .catch((e) => console.error("❌ Network test failed:", e.message)); +``` Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are