Skip to content
Developers

Contract addresses

Chain details for Robinhood Chain and its testnet, and the address table you will fill in at deployment.

Nothing is deployed yet. Every address on this page reads TBD at deployment, and it will stay that way until the deployment transaction has run and its report has been published. Treat any address you find elsewhere claiming to be Fyber as fraudulent until it appears here.

Chain details

MainnetTestnet
NameRobinhood ChainRobinhood Chain Testnet
Chain id466346630
StackArbitrum Nitro rollupArbitrum Nitro rollup
Native currencyETHETH
RPChttps://rpc.chain.robinhood.comhttps://rpc.testnet.chain.robinhood.com
ExplorerBlockscout, https://explorer.chain.robinhood.comhttps://explorer.testnet.chain.robinhood.com
FaucetAvailable on the testnet portal

Notes that matter when you integrate:

  • The sequencer orders transactions first-come, first-served. Whether a public mempool exists, and whether transactions can be reordered, determines if a liquidator or a CollateralSale buyer needs protection against value extraction. Verify this yourself before you assume either way.
  • Time is block.timestamp everywhere in Fyber. block.number is used only for the same-block guard and the offset guard. The sequencer may shift timestamps by minutes, and every threshold in the protocol carries at least ten minutes of margin (Rule R-3.0.2).
  • Gas costs change when the launch subsidy expires. Every keeper mechanism assumes marginal cost.

Core contracts

ContractInstancesMainnetTestnet
FYUSD1TBD at deploymentTBD at deployment
BranchRegistry1TBD at deploymentTBD at deployment
LiquidationEngine1TBD at deploymentTBD at deployment
RedemptionRouter1TBD at deploymentTBD at deployment
InterestRouter1TBD at deploymentTBD at deployment
Backstop1TBD at deploymentTBD at deployment
PoolIncentive1TBD at deploymentTBD at deployment
PSM1TBD at deploymentTBD at deployment
RateFloor1TBD at deploymentTBD at deployment
Router1TBD at deploymentTBD at deployment
Closer1TBD at deploymentTBD at deployment
Endowment1 (address only)TBD at deploymentTBD at deployment

Per-branch contracts

Twenty branches are deployed at genesis. SPY and QQQ are active from day zero; the other eighteen are dormant and activate on their own criteria. The four broad-market and gold branches are listed below.

BranchTierStatus at genesisBranchOracleAdapterLiquidityOracleSortedTrovesStabilityPoolsfyUSDCollateralSaleProbe
SPYAActiveTBDTBDTBDTBDTBDTBDTBDTBD
QQQAActiveTBDTBDTBDTBDTBDTBDTBDTBD
VTI1DormantTBDTBDTBDTBDTBDTBDTBDTBD
GLD1DormantTBDTBDTBDTBDTBDTBDTBDTBD
SLV2DormantTBDTBDTBDTBDTBDTBDTBDTBD

Registry slots six through ten are the zero address, permanently.

External addresses each branch depends on

Every one of these is immutable in the contract that reads it, and none of them can ever be repointed.

DependencyWhere it is fixedMainnetTestnet
Stock Token, per branchBranch and OracleAdapter constructorsTBD at deploymentTBD at deployment
Chainlink price feed proxy, per branchOracleAdapter constructorTBD at deploymentTBD at deployment
Sequencer uptime feedOracleAdapter constructor; zero if none existsTBD at deploymentTBD at deployment
Reference Uniswap pools, at least two per branchLiquidityOracle constructorTBD at deploymentTBD at deployment
Valve TWAP pool, per branchOracleAdapter constructor; zero disables it permanentlyTBD at deploymentTBD at deployment
USDGPSM constructorTBD at deploymentTBD at deployment
Reference Morpho market and market idRateFloor constructorTBD at deploymentTBD at deployment
Canonical incentive pools, one or twoPoolIncentive constructorTBD at deploymentTBD at deployment
Closer Safe (2 of 3)Closer constructorTBD at deploymentTBD at deployment

How to verify an address

When the addresses are published, do not take them on trust. The deployment produces a report, published in the repository, that asserts contract by contract (Rule R-16.5.1):

  1. No owner(), no AccessControl role and no TimelockController anywhere in the address graph.
  2. No ABI entry whose name begins with set, add, remove, update — other than updateMintFreezegrant, revoke, upgrade, transferOwnership or pause.
  3. No storage variable holding a risk constant; all of them are immutable or constant.
  4. fyUSD.isMinter true for exactly the twenty branches and the PSM, and nothing else.
  5. BranchRegistry.allBranches() returning five distinct addresses on five distinct tokens, with slots six to ten zero.
  6. Closer.safe equal to the published Safe, and Closer.expiresAt equal to DEPLOY_TS + 365 days.
  7. Each Branch.adapter.token equal to that branch's own token, and every cross-address non-zero.
  8. Every constructor relation from the parameter assertions verified by reading.
  9. The deployed bytecode of each module equal to the compiled bytecode of the frozen specification.
  10. No source group weighs more than half the composite, for every branch, read from each OracleAdapter.

You can re-run all ten checks yourself against the deployed addresses. That is the point of publishing them.

Contract verification

Source will be verified on Blockscout for both networks at deployment, with the compiler pinned to Solidity 0.8.26 and the exact optimiser settings published alongside. If a contract at one of these addresses is not verified, do not integrate it.

Deployment shape

The whole system is deployed by one atomic script. It deploys the nineteen modules, resolves the circular address references using precomputed CREATE2 addresses, activates SPY and QQQ, seeds the Probe contracts with 1e6 wei each, and asserts the final state before finishing (Rule R-3.0.3).

The deployer address holds no residual power afterwards, and there is nothing for it to renounce, because no module ever grants it anything.

Last reviewed: 2026-09-07 · Spec v0.4