TestnetRobinhood Chain testnet (46630) · test tokens only, no real valueRegistry…Get test ETH ↗
Skip to content

Contracts

The 6 contracts VX69 testnet runs on, in plain words: what each one does, what it can never do, and exactly what the owner can change.

Robinhood Chain Testnet · chain ID 46630

One owner wallet holds the owner powers listed on each contract. Two contracts have no owner at all.

0x0addd7bF35c221E30911514B956448d33baaf395

Testnet contracts are a chain-id-only copy of the mainnet core contracts, owned by a testnet-only deployer. Test tokens have no value.

What has and hasn't been checked

Checked: Testnet contracts. Addresses come from the testnet deployment manifest; open each on the testnet explorer to inspect it.

Tested: The same core contracts as mainnet, deployed on Robinhood Chain testnet (46630) with a test exchange and test assets for end-to-end testing. Tests are not an audit.

Not yet done: source code is not yet published on the explorer, and the contracts have not had an external audit. Check the addresses below before you interact, and only use amounts you can afford to lose.

Launch factory

PairFactory

Creates a new token and its 50 internal markets when a creator launches, paid with one ETH amount.

Every launched token comes from one public factory, so anyone can check that a token is genuine and which settings it runs under.

0x647F225D2f667E44ACF24309bcd5b9dAA54FA894

It can

  • Create a new launched token for the wallet that calls it.
  • Keep the public list of every token it created.
  • Hold the shared settings every launched token reads: the pause switch and the platform share of trading fees.

It can never

  • Create tokens on any chain other than Robinhood Chain (46630).
  • Take ETH or tokens out of a launched token’s pools.
  • Set the platform share of fees above 50%.

What you allow when you use it

  • Launching sends the ETH you choose. It is used to buy the 50 assets that seed the new token’s markets.

The owner can

  • Pauses or resumes launches, pool funding, swaps and market rotations in every launched token. Staking, unstaking and claiming keep working while paused. Can only unpause while the asset ranking is fresh.setPaused
  • Sets the share of each trading fee that goes to the platform instead of the token’s stakers. Capped at 50% in the code.setPlatformFeeBps

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited

Vault deployer

VaultDeployer

Builds the contract for each newly launched token, on behalf of the launch factory.

A launched token’s code is too large to fit inside the factory, so it lives in this helper.

0x24146bCC69955341914089f56291c53b5835f37C

It can

  • Create a new token vault, only when the launch factory asks it to.

It can never

  • Be called by anyone except the launch factory.
  • Hold funds or change a token after it is created.

This contract has no owner

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited

Asset ranking

AssetRegistry

Keeps the list of the top 50 Robinhood Chain assets, by market cap, that launched tokens can be paired with.

Markets only pair with admitted, liquid assets identified by contract address, so copycat tickers never get in.

0x49Fd5E59eaBC472A090973A56E6F5Bf6Db54aaeD

It can

  • Accept a fresh ranking from a separate reporter wallet.
  • Reject rankings that are stale (older than 3 minutes), out of order or include assets that were not admitted.
  • Tell launched tokens whether an asset is currently eligible.

It can never

  • Move, hold or touch any funds. It only ranks assets.
  • Accept a ranking from anyone other than the reporter wallet.
  • Publish fewer than 50 or more than 100 candidates.

The owner can

  • Admits or excludes an asset (and its pool) from the ranking. The asset and pool must be real contracts.setAdmission
  • Sets the minimum liquidity an asset needs to be eligible. Cannot be zero.setMinLiquidityUsd6
  • Changes the wallet allowed to publish rankings.setReporter

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited

Swap router

RouteExecutor

Runs the swaps that turn a creator’s ETH into the 50 market assets, using signed quotes.

Each swap is checked against a signed quote, so a route cannot be changed after it was approved.

0x8860689d9870b3B337Ab9Ed797b6969944AE50dc

It can

  • Execute a swap that matches a quote signed by the quote signer.
  • Call only router functions the owner has allowed.

It can never

  • Use a quote twice, or one older than 15 minutes.
  • Pay out less than the quote’s minimum. The whole swap reverts instead.
  • Keep any of your tokens or ETH. Balances are checked before and after every swap.

What you allow when you use it

  • Swaps you send move exactly the amount in the signed quote, and nothing more.

The owner can

  • Pauses or resumes all swaps through the router.setPaused
  • Allows or blocks a specific external router function. Must be a real contract, never the router itself.setRouterPermission
  • Changes the wallet that signs swap quotes.setSigner

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited

Fee collector

FeeCollector

Receives the platform share of trading fees and splits it between buying back the platform token and rewards for its stakers.

The platform share follows written rules on chain rather than going to a team wallet.

0x277E4e20cDc05a2aAFa0067810FfeDCF30ed2a25

It can

  • Take fee deposits from launched tokens.
  • Use signed swap routes to buy the platform token and lock it permanently in a burn address.
  • Send the rest to platform staking as rewards.

It can never

  • Send fees to the owner or any wallet of the owner’s choosing. There is no withdraw function.
  • Release platform tokens it bought back. They go to a burn address.
  • Hand out staking rewards before the platform token is set. They wait in the collector until then.

The owner can

  • Sets how much of the platform share is used for buyback and burn; the rest goes to stakers. Between 0% and 100%.setBuybackBps
  • Allows or blocks a contract from depositing fees.setDepositor
  • Allows or blocks a contract from registering new depositors (the launch factory does this for each new token).setRegistrar

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited

Platform staking

PlatformStaking

Lets you stake the platform token and earn a share of platform fees, in whichever assets they were paid.

Rewards are counted per staker on chain, so every claim is exact and anyone can check it.

0x2723eb227421Ecd4bde0072A13aC0D9F79134729

It can

  • Hold the platform tokens you stake, until you unstake them.
  • Record rewards sent in by the fee collector and pay them out when you claim.

It can never

  • Stop you unstaking or claiming. There is no pause on this contract.
  • Let the owner take staked tokens or rewards. There is no withdraw function.
  • Change the platform token once it has been set.

What you allow when you use it

  • Staking asks you to approve the exact amount of platform tokens you stake.

The owner can

  • Sets the platform token that can be staked. Only once. It can never be changed after that.setPlatformToken
  • Allows or blocks a contract (the fee collector) from adding rewards.setNotifier

Not upgradeable: the code cannot be changed after deployment.

Bytecode check pendingSource not yet published on explorerTests passingNot audited