A simple 1:1 token, built for clear exits
Roxx turns deposited ETH into a plain rETH token at a one-for-one rate. Connect your wallet, mint from this page or the dedicated app, and redeem when you want to return to ETH.
Open the mint appThe argument
rETH is designed around a clear promise: the token is minted only when ETH enters the contract, and each token can be redeemed against the same amount of ETH.
What rETH does not promise
- No fixed APY or manual return promise.
- No price oracle or synthetic exposure.
- No hidden reward stream.
The token represents deposited ETH, not a made-up performance number.
What rETH does provide
- One ETH deposited mints one rETH.
- rETH remains a transferable ERC-20.
- Burning rETH requests the matching ETH.
The balance and backing can be checked directly on Robinhood Chain.
The mechanic
Four clear actions describe the entire rETH lifecycle. ETH enters, a plain ERC-20 leaves, and the same token can be redeemed back through the contract.
-
1
Deposit
mint() payableSend ETH to the contract and it mints the same amount of rETH to your wallet.
-
2
Hold
transfer(to, amount)rETH is a plain ERC-20. Send it to another wallet or use it wherever compatible tokens are accepted.
-
3
Redeem
redeem(amount)Burn rETH and the contract sends the same amount of ETH back to your wallet.
-
4
Verify
balanceOf / totalSupplyCompare the contract's ETH balance with rETH total supply to check the 1:1 backing relationship.
The rETH lifecycle
Every action is visible and tied to the same 1:1 backing rule.
Deposit ETH
Send ETH to mint the same amount of rETH.
Plain ERC-20
Transfer rETH like any other token on the network.
Exact backing
Contract ETH and rETH supply move together.
Redeem
Burn rETH to request the matching amount of ETH.
No mint fee
The contract does not charge a mint fee.
No admin mint
New rETH only comes from ETH deposited through the contract.
Mint rETH that accrues value
Deposit ETH and receive rETH at the current exchange rate. As the protocol adds yield from staking and lending, each rETH becomes redeemable for more ETH. Withdraw to ETH at the live rate anytime. The rate is set purely by the ETH actually backing the token — variable, and never more than the vault holds.
Connect a wallet to mint rETH.
// The rate is derived purely from balances, so the vault can never owe
// more ETH than it holds. Yield fed in via addYield() lifts every rETH.
// ETH value of a given amount of rETH:
function convertToAssets(uint256 shares) public view returns (uint256) {
return (shares * (totalAssets + 1)) / (totalSupply + 1e3);
}
// Deposit ETH, mint rETH at the current rate:
function deposit() external payable returns (uint256 shares) {
shares = convertToShares(msg.value); // assets and supply rise together
totalAssets += msg.value;
_mint(msg.sender, shares); // depositors never dilute holders
}
// Withdraw anytime: burn rETH for its current ETH value:
function redeem(uint256 shares) external returns (uint256 assets) {
assets = convertToAssets(shares);
require(assets <= totalAssets, "insufficient liquidity");
_burn(msg.sender, shares);
totalAssets -= assets;
(bool ok, ) = msg.sender.call{value: assets}("");
require(ok, "ETH transfer failed");
}
// Permissionless yield top-up — mints NO shares, so the rate rises
// for everyone. This is where the protocol returns real staking /
// lending yield. No privileged setter can move the rate directly.
function addYield() external payable {
totalAssets += msg.value;
}
The redemption rate is rate = totalAssets / totalSupply. Deposits and withdrawals move both together, so they never change the rate — only real yield added through addYield() does. Because redemption is always priced against the ETH actually held, the vault is always fully backed. The ~8% target is variable and comes from the protocol's staking and lending; it is not a guarantee.
Where this stands
The live contract is on Robinhood Chain. The product is intentionally simple: ETH enters, rETH is minted 1:1, and rETH can be redeemed back to ETH.
Use the Open App button to connect a wallet and mint from the dedicated app page, or use the mint interface on this home page.
Questions
The ones integrators actually ask.
rETH is a plain ERC-20 you receive by depositing ETH into the Roxx vault. It starts at 1:1 with ETH, and its redemption value rises over time as the protocol adds yield to the vault.
The exchange rate is simply the vault's ETH balance divided by the rETH supply. The protocol stakes and lends the deposited ETH off-chain and returns the earnings to the vault, which lifts every rETH's redemption value. The target is around 8% APY, but it is variable and not guaranteed — it only reflects the ETH actually funded into the vault.
Yes, withdrawals are always open. Burning rETH returns its current ETH value at the live rate, subject to the ETH liquidity available in the vault at that moment.
The app uses EIP-6963 wallet discovery and can list compatible browser wallets such as MetaMask, Phantom EVM, Coinbase Wallet, Rabby, and others installed in your browser.
Use the mint panel on the home page or click Open app in the header to use the dedicated app page. Both surfaces use the same Robinhood Chain contract configuration.