Interact with Rocket Pool liquid staking contracts — deposit ETH to mint rETH, burn rETH for ETH, check exchange rates, query deposit pool balances, and perform rETH ERC-20 operations. Supports cast (Foundry CLI) and Ethereum MCP tools on mainnet and Hoodi testnet.
cast call 0xae78736Cd615f374D3085123A210448E74Fc6393 "getExchangeRate()(uint256)" --rpc-url https://ethereum-rpc.publicnode.com
cast send 0xCE15294273CFb9D9b628F4D61636623decDF4fdC "deposit()" --value 1ether --rpc-url $RPC_URL --private-key $PK
cast call 0xae78736Cd615f374D3085123A210448E74Fc6393 "balanceOf(address)(uint256)" $WALLET --rpc-url https://ethereum-rpc.publicnode.com
references/addresses.jsonassets/abis/<contractName>.json if needed for complex typescast call (read) or cast send (write)| Network | Chain ID | RPC | rocketStorage |
|---|---|---|---|
| Mainnet | 1 | https://ethereum-rpc.publicnode.com | 0x1d8f8f00cfa6758d7bE78336684788Fb0ee0Fa46 |
| Hoodi | 560048 | https://rpc.hoodi.ethpandaops.io | 0x594Fb75D3dc2DFa0150Ad03F99F97817747dd4E1 |
addresses.json reflect current deployments but can changeReceives ETH deposits from users and routes them to node operators.
deposit() [payable]
Deposit ETH to mint rETH at the current exchange rate.
getBalance() → uint256 [view]
getExcessBalance() → uint256 [view]
getUserBalance() → int256 [view]
getNodeBalance() → uint256 [view]
getMaximumDepositAmount() → uint256 [view]
Queue inspection:
getTotalQueueLength() → uint256 [view]
getStandardQueueLength() → uint256 [view]
getExpressQueueLength() → uint256 [view]
getMinipoolQueueLength() → uint256 [view]
Node operator functions:
nodeDeposit(uint256 _bondAmount) [payable]
requestFunds(uint256 _bondAmount, uint32 _validatorId, uint256 _amount, bool _expressQueue)
exitQueue(address _nodeAddress, uint32 _validatorId, bool _expressQueue)
getNodeCreditBalance(address _nodeAddress) → uint256 [view]
withdrawCredit(uint256 _amount)
reduceBond(address _nodeAddress, uint256 _amount)
assignDeposits(uint256 _max)
cast call $DEPOSIT_POOL "getBalance()(uint256)" --rpc-url $RPC_URL
cast call $DEPOSIT_POOL "getMaximumDepositAmount()(uint256)" --rpc-url $RPC_URL
cast send $DEPOSIT_POOL "deposit()" --value 1ether --rpc-url $RPC_URL --private-key $PK
The rETH liquid staking token. Value accrues via an increasing exchange rate against ETH. Implements ERC-20.
Exchange rate:
getExchangeRate() → uint256 [view]
getEthValue(uint256 _rethAmount) → uint256 [view]
getRethValue(uint256 _ethAmount) → uint256 [view]
getCollateralRate() → uint256 [view]
getTotalCollateral() → uint256 [view]
Burn:
burn(uint256 _rethAmount)
Burns rETH and returns ETH at the current exchange rate. Reverts if insufficient collateral.
ERC-20:
balanceOf(address account) → uint256 [view]
transfer(address recipient, uint256 amount) → bool
transferFrom(address sender, address recipient, uint256 amount) → bool
approve(address spender, uint256 amount) → bool
allowance(address owner, address spender) → uint256 [view]
totalSupply() → uint256 [view]
name() → string [view]
symbol() → string [view]
decimals() → uint8 [view]
cast call $RETH "getExchangeRate()(uint256)" --rpc-url $RPC_URL
cast call $RETH "getRethValue(uint256)(uint256)" 1000000000000000000 --rpc-url $RPC_URL
cast call $RETH "getEthValue(uint256)(uint256)" 1000000000000000000 --rpc-url $RPC_URL
cast call $RETH "balanceOf(address)(uint256)" $WALLET --rpc-url $RPC_URL
cast send $RETH "burn(uint256)" $RETH_AMOUNT --rpc-url $RPC_URL --private-key $PK
deposit() is on rocketDepositPool, not rocketTokenRETHburn() reverts if insufficient ETH collateral — check getTotalCollateral() firstrethDepositDelay setting) before newly minted rETH can be transferred