Method and limits
Every check reads Robinhood Chain directly through public RPC endpoints. This page says how, and where each method stops.
Transaction Preview
The call data is decoded only against signatures Onvex knows: ERC-20 transfer, approve, transferFrom, increaseAllowance, permit; collection setApprovalForAll and safe transfers; WETH wrap and unwrap; Permit2 approve and lockdown; Uniswap v2 router swaps and liquidity; Uniswap v3 SwapRouter02 exact-in and exact-out swaps and its multicall; the Universal Router command list; ArbSys withdrawals to Ethereum; Multicall3 batches. An unknown selector is shown as unknown.
The same call is then run with eth_call on the latest block, with your address as sender when given, and priced with eth_estimateGas × eth_gasPrice. ETH / USD comes from the Chainlink feed on Robinhood Chain. For swaps the minimum received is read from the call data and compared with a fresh quote from the Uniswap v3 QuoterV2 or the v2 router for the same input.
- A simulation is a reading of one block. Prices, balances and allowances can change before your transaction lands.
- A contract can behave differently for another caller, time or block. A passing simulation is not proof of intent.
- v4 swaps inside the Universal Router are named but not decoded in detail: the encoding on this chain carries an extra field.
- The preview hash is keccak256 of the canonical JSON of the chain, signer, target, value, call data and decoded summary, so anyone can recompute it.
Approval Review
Three sources, reported separately under every result:
- Direct reads of allowance(owner, spender) for 39 listed tokens × 8 named spenders, Permit2 sub-allowances to the Universal Router, and balances, in Multicall3 batches. Complete for those pairs.
- Approval events with the wallet as owner over the whole chain, for WETH, USDG, tokens the wallet holds now and up to five addresses you add. The official RPC allows 10,000,000 blocks per query with one address and one value per topic.
- Approval and ApprovalForAll events for any contract in the most recent 360,000 blocks (about ten hours), because queries without an address are limited to 30,000 blocks each.
Every pair found is read again on chain: the table shows today's allowance. Ranges that could not be read are listed as numbered gaps, never treated as empty. Spenders are named only from the list in the source code, each with its source; Onvex does not call any contract safe.
Transfer Tracking
The node is asked for the transaction and its receipt. Pending means the node knows the transaction but no block includes it; confirmed and failed come from the receipt status; replaced means the sender's nonce is now used by another transaction while this hash is gone, which can only be known if this page saw the nonce earlier. The revert reason of a failed transaction is not shown: the public RPC keeps no historical state to replay it.
What Onvex is not
Not an exchange, not a wallet, not a custodian, and not a privacy tool. It never holds funds or keys, never sends a transaction for you, and uses no privacy network or zero-knowledge component. See Privacy Transparency.
Sources in the code
Token and spender lists live in src/config/tokens.ts and src/config/spenders.ts; node scripts/check-addresses.mjs re-checks every address on chain.