Docs
ArvexChain documentation
Execution infrastructure across EVM networks: RPC access, inspection, simulation, policy and intent validation, transaction preparation and wallet execution.
Positioning
What ArvexChain is
ArvexChain turns raw blockchain activity into structured, verifiable actions. It is not a Layer 1 and runs no consensus network of its own; it reads from and prepares transactions for existing EVM networks. Robinhood Chain (chain id 4663, native ETH) is the primary network.
Supported networks: Robinhood Chain, Ethereum, Base, Arbitrum One, OP Mainnet, Polygon. Adding a network is a single entry in src/lib/chains.ts plus an RPC environment variable. Robinhood Chain is read through the /api/rpc/4663 relay so browsers on networks that block robinhood.com still reach the chain; the relay only forwards read methods.
Non-custodial
Security model
- · Never asks for seed phrases or private keys, and never stores them.
- · Every signature is produced inside the connected wallet (injected / EIP-6963 / WalletConnect).
- · No automatic signing, approvals or broadcasts. The wallet prompt is only reachable after READ, SIMULATE and POLICY succeed.
- · Server API keys (Tenderly, Etherscan) stay in server routes; only booleans reach the browser.
- · All addresses are validated with viem and checksummed before use.
How it works
Simulation
/api/simulate runs eth_call for the outcome and eth_estimateGas for gas, both against the latest block. Revert data is decoded as Error(string), Panic(uint256) or a custom error when an ABI is supplied.
Warnings are generated only from real checks: revert, gas above 3,000,000, zero-address recipient, calldata sent to an address without bytecode, sender balance below value, undecodable selector, and missing sender.
When TENDERLY_* variables are set the route uses the Tenderly Simulation API and falls back to RPC if Tenderly fails.
Deterministic
Policy engine
Every enabled policy is evaluated against the prepared transaction. Any violation returns BLOCKED with the rule, the requested value and the allowed value. Expired policies fail closed.
Recipient rules apply to the transaction target for native transfers and to the beneficiary of ERC-20 transfers and approvals. Contract rules apply when the target holds bytecode. Daily limits use a rolling 24-hour window computed from the local activity log.
Storage is a localStorage repository behind a small Repository interface so PostgreSQL can replace it without touching the engine.
Routes
Modules
- Console /console
Build a transaction, run READ → SIMULATE → POLICY, then approve in the wallet. Broadcast is gated on every prior stage succeeding.
- Explorer /explorer
Universal search over addresses, transaction hashes and block numbers. Reads come from RPC; recent transactions and verified status from the explorer API.
- Contract inspector /contracts
Bytecode, balance, nonce, verified ABI. Read functions execute via eth_call; write functions run the full verification pipeline before the wallet prompt.
- Simulator /simulate
eth_call + eth_estimateGas against the chain head (Tenderly when configured). Decodes Error(string), Panic and custom errors from a supplied ABI.
- Token inspector /tokens
name / symbol / decimals / totalSupply from the ERC-20 contract, optional balanceOf, and DexScreener market data only when indexed.
- Pool analyzer /pools
DexScreener pairs for a token or pair address on the selected network. No placeholder financial data.
- Wallet activity /wallet
Balance and nonce from RPC; recent transactions classified as incoming, outgoing, contract interaction, token transfer or failed.
- Policy engine /policies
Deterministic rules: value caps, allowed/blocked contracts and recipients, allowed tokens, gas limits, rolling 24h count/value limits, expiration.
- Agent intents /agents
Structured JSON intents are validated with zod, resolved against chain state, encoded, simulated and policy-checked. Signing stays with the user.
- Activity /activity
Local log of reads, simulations, policy checks and transaction lifecycle events. Stored in localStorage only.
- Status /status
Real eth_blockNumber probes from the browser to each RPC endpoint with measured latency, plus server integration configuration.
Environment
Configuration
# RPC overrides (public endpoints are used when empty) NEXT_PUBLIC_ROBINHOOD_RPC_URL= NEXT_PUBLIC_ETHEREUM_RPC_URL= NEXT_PUBLIC_BASE_RPC_URL= NEXT_PUBLIC_ARBITRUM_RPC_URL= NEXT_PUBLIC_OPTIMISM_RPC_URL= NEXT_PUBLIC_POLYGON_RPC_URL= # Wallet NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID= # Server-side integrations (optional) TENDERLY_ACCESS_KEY= TENDERLY_ACCOUNT= TENDERLY_PROJECT= ETHERSCAN_API_KEY= # Etherscan V2 key (Ethereum, Base, Arbitrum, Optimism, Polygon) BASESCAN_API_KEY= ARBISCAN_API_KEY= OPTIMISTIC_ETHERSCAN_API_KEY= POLYGONSCAN_API_KEY= DEXSCREENER_API_URL=https://api.dexscreener.com
Without explorer keys, public Blockscout instances and Sourcify are used for recent transactions and verified ABIs. Without any of the optional keys the app still runs; each integration reports its configuration state honestly.