tenet:~/docs/contracts

Contracts and networks

Every contract, the chains, the supported stocks and the pools.

Everything that holds or moves money is a smart contract on Robinhood Chain. This page lists them, the networks they are deployed on, and what is supported. The footer of every page links to the hub on the explorer.

#The contracts

ContractWhat it does
TenetHubThe registry of the protocol. It creates vaults (as EIP-1167 clones), keeps the allowlists of operators and DEX adapters, the oracle registry, the fees (each at most 0.5%), the per-trade cap and the global pause on executions. It never touches users' money.
TenetVaultOne user's vault. Holds the funds and the strategies. execute() can be called by an operator or by the owner. The minimum output of every trade is the oracle price minus slippage, and the vault measures its own balances rather than trusting the adapter. It also stores the agent's box and enforces it. Withdrawal works always, even when paused.
UniswapV4AdapterMainnet. Trades through the Uniswap v4 PoolManager, only through pools on the owner's allowlist, and can chain up to three pools in one transaction.
KeeperRegistryThe open network of robots. Bonding the project token gives the right to run rules and take the keeper fee. The owner can ban an address but cannot take the bond.
FeeSplitterReceives the protocol fee (0.1% of each run) and splits it: 30% to the burner, 70% to the author rewards.
FeeBurnerTurns its share into the project token and sends it to a dead address. Until a token is set it accumulates.
AuthorPayoutsHolds the authors' share (as ETH) and every hour pays 10% of it, in ETH,, split equally, to everyone who has an agent on sale. The contract checks who qualifies. The owner can pause, change the share and withdraw.
LicensesSells licenses to private agents in the project token, burning 5% of each sale and sending the rest to the owner of the agent.
FeePoolThe owner's own pool for money earned outside the protocol, such as a launch platform's creator fees. A deposit burns a share at once (30% by default); the rest stays until the owner withdraws it. It is separate from the automatic trade-fee split.
OracleSwapAdapterTestnet and local only. A pretend exchange that swaps test tokens at the oracle price.
TestToken, TestPriceFeedTestnet only. Test stocks with a faucet, and Chainlink-compatible feeds that copy the real mainnet prices.

#Networks

NetworkChain idUse
Robinhood Chain mainnet4663Real funds. The beta runs here.
Robinhood Chain testnet46630Test funds, the faucet card in the app, test stocks priced from mainnet feeds.
Local node31337Development. Adds an optional dev wallet for testing without a browser wallet.

Addresses for each network live in contracts/deployments/<chain>.json, and the ABIs in backend/src/generated/abi.ts and web/lib/generated/abi.ts. The site reads them from there and the /v1/config endpoint lists the active ones.

#What can be traded

On mainnet these 19 tokenized stocks, each with its own Chainlink feed and at least one vetted pool, against USDG or ETH:

AAPL AMZN ASML BABA COIN CRCL GOOGL INTC META MSFT MSTR MU NVDA PLTR QQQ SNDK SPCX SPY TSLA

The list is built automatically from official sources and checked with real trades on a copy of mainnet. Stocks without a usable pool are not included.

#Paying with ETH

A vault holds ether as WETH. Deposit wraps your ETH and sends it to the vault (two transactions), and Withdraw unwraps it on the way out. NVDA and SPY have a direct pool against ETH. Other stocks are bought with ETH in two hops through USDG, in one transaction, which costs about 0.3–0.6% more in spread.

#Pools

The adapter trades only through a fixed allowlist of 31 Uniswap v4 pools: 26 stock/USDG, 2 stock/WETH and 3 WETH/USDG. The owner adds or removes a pool with adapter.setPool. Pools whose hook rejected the adapter in testing are not on the list.

#Oracles

Prices come from Chainlink feeds registered in the hub with a maximum staleness. Stock feeds update 24/5 with a 24-hour heartbeat, so a price older than 25 hours counts as stale. Tokens with a pending corporate action, or that are paused themselves, count as having no price for the time around it. Rules that need such a price wait.

For the safety rules these contracts enforce, see Security and limits.