GravFi
Operator · deployment

Deploy GravFi contracts

Real deployments signed by your wallet, one transaction per step, on Ethereum and Robinhood Chain. Nothing is simulated; addresses come from receipts and the plan resumes where you left off.

Deploy plan · USDC → gUSDC · mainnet
Mainnet · real funds
Every step below is a real transaction paid from your wallet on Ethereum or Robinhood Chain. Your wallet becomes admin, pauser and relayer. Use a wallet you control; consider moving admin to a multisig afterwards.
Connect the wallet that will own the deployment.
  1. 1
    Deploy GravRelayMessenger on Robinhood ChainRobinhood Chain
    localEid 4663 · admin = your wallet
  2. 2
    Deploy GravBridge on Robinhood ChainRobinhood Chain
    messenger = destination messenger · remoteEid 1
  3. 3
    messenger.setBridge(bridge)Robinhood Chain
    The destination messenger only accepts sends from the destination bridge.
  4. 4
    messenger.grantRole(RELAYER_ROLE, wallet)Robinhood Chain
    Lets this wallet deliver messages from the Bridge page or scripts/relayer.mjs.
  5. 5
    Deploy GravToken gUSDCRobinhood Chain
    "GravFi USD Coin" · 6 decimals · no public mint
  6. 6
    gUSDC.grantRole(BRIDGE_ROLE, bridge)Robinhood Chain
    Only the bridge may mint or burn.
  7. 7
    bridge.setRoute(gUSDC → USDC, Token)Robinhood Chain
    Registers the unwrap route on Robinhood Chain.
  8. 8
    Deploy GravRelayMessenger on EthereumEthereum
    localEid 1 · admin = your wallet
  9. 9
    Deploy GravBridge on EthereumEthereum
    messenger = source messenger · remoteEid 4663
  10. 10
    messenger.setBridge(bridge)Ethereum
    The source messenger only accepts sends from the source bridge.
  11. 11
    messenger.grantRole(RELAYER_ROLE, wallet)Ethereum
    Needed to deliver unwraps back to the source chain.
  12. 12
    Deploy GravVault for USDCEthereum
    Single-asset custody · BRIDGE_ROLE-only movements
  13. 13
    vault.grantRole(BRIDGE_ROLE, bridge)Ethereum
    Only the bridge may deposit into or withdraw from the vault.
  14. 14
    bridge.setRoute(USDC → gUSDC, Vault)Ethereum
    Registers the wrap route on the source chain. After this the bridge is live for this asset.
Addresses
Source token
0xA0b8…eB48
Messenger · source
Bridge · source
Vault
Messenger · destination
Bridge · destination
gUSDC
Gas price · Ethereum: · Robinhood Chain:
Rough total: ~3.5M gas on the source chain, ~3.5M on Robinhood Chain per first asset.
When finished

Paste these into .env.local (or the Vercel production env) and rebuild. The interface verifies every address on-chain before enabling actions.

NEXT_PUBLIC_BRIDGE_PROVIDER=native
NEXT_PUBLIC_GRAV_MESSENGER_SOURCE=
NEXT_PUBLIC_GRAV_MESSENGER_DESTINATION=
NEXT_PUBLIC_GRAV_BRIDGE_SOURCE=
NEXT_PUBLIC_GRAV_BRIDGE_DESTINATION=
NEXT_PUBLIC_GRAV_VAULT_USDC=
NEXT_PUBLIC_GRAV_TOKEN_USDC=