Documentation

YieldHoodFi Protocol

Liquid staking for tokenized real-world assets on Robinhood Chain. Stake an asset, receive a 1:1 liquid yh-receipt, and earn yield paid in the same asset you stake — continuously, on-chain.

Overview

Introduction

Robinhood Chain hosts tokenized real-world assets (RWAs) — equities, ETFs, ETH and other supported tokens — that trade 24/7 but sit idle while simply held. YieldHoodFi is a liquid staking protocol that puts those assets to work.

When you stake a supported asset you get:

  • A liquid receipt (yhToken) — e.g. yhTSLA. Minted 1:1 against your deposit, it represents your staking position and stays transferable and composable across DeFi.
  • Yield in the same asset — stake Tesla, earn Tesla. Rewards accrue continuously at the pool's target APR and are claimable any time. $YHF is the separate governance token, not a staking reward.
// value flow — stake Tesla, earn Tesla Stake YieldPool mints yhTSLA (receipt) + streams TESLA yield Unstake YieldPool burns yhTSLA → returns TESLA principal + earned TESLA
Overview

How it works

01

Stake collateral

Approve and deposit a supported asset (Tesla, Apple or SpaceX) into its pool via stake().

02

Hold a liquid receipt

The pool is an ERC-20; it mints your yhTSLA 1:1. Transfer it, use it as collateral — rewards always follow the current holder.

03

Earn & claim yield

Yield accrues in the staked asset (Tesla) every second. Call getReward() to claim, or exit() to withdraw your principal and rewards in one transaction.

Because the receipt token itself is the pool, every mint, burn and transfer runs through an accounting hook that checkpoints rewards for both sides. This means even if a yhTSLA receipt changes hands, the reward stream is redirected to its new owner — it can't be double-claimed or gamed.

Overview

Reward model

YieldHoodFi uses the battle-tested Synthetix StakingRewards accumulator pattern — but the reward asset is the same asset that is staked (stake Tesla, earn Tesla). The protocol treasury funds a pool by transferring the asset in and calling notifyRewardAmount(amount). That amount streams linearly to stakers over a reward period (rewardsDuration, default 7 days), split by each staker's share of the pool. Target rates run 5–10% APR per market.

TermMeaning
rewardRateAsset distributed per second = amount / rewardsDuration.
rewardPerTokenCumulative yield owed per staked token, scaled by 1e18.
earned(account)Yield (in the staked asset) an address can currently claim.
periodFinishTimestamp the current reward stream ends.

Because the reward asset equals the staking asset, the solvency check in notifyRewardAmount subtracts staked principal from the pool balance before validating the rate — so principal can never be paid out as rewards, and emissions stay fully backed.

Reference

Contracts

All contracts are Solidity ^0.8.24, built on OpenZeppelin v5 with ReentrancyGuard and Ownable2Step.

ContractResponsibility
YHFToken Governance token. ERC-20 + Permit, hard-capped at 1,000,000,000 (1B). Not emitted as a staking reward — used for protocol governance and utility; may be issued from an external platform.
YieldPool Core. A single-asset staking pool that is also its own liquid receipt token (e.g. yhTSLA). Stake → 1:1 mint, withdraw → burn, and yield paid in the same staked asset.
PoolFactory Deploys and indexes a new YieldPool for each asset. Each pool pays yield in the same asset it stakes (stake X, earn X).
Reference

Deployed addresses

Live on Robinhood Chain mainnet (chainId 4663). Click an address to copy, or open it in the Blockscout explorer.

YHFGovernance token · 1B cap
0x5E1936196DFd1a3069f1068269458c162D67F554 Explorer ↗
PoolFactoryPool registry
0xf46d030C61739a6b66f6aB3c20f55E1a283e3537 Explorer ↗
yhTSLA poolstake Tesla · earn Tesla
0xA4c0De77EFEE7F06cf8fA7CA0563439bC901fef9 Explorer ↗
Tokenized TeslaTSLA · staked asset & reward
0x322F0929c4625eD5bAd873c95208D54E1c003b2d Explorer ↗
yhAAPL poolstake Apple · earn Apple
0x12ED3e98F68677e58FB35ab1665c292E73349671 Explorer ↗
yhSPCX poolstake SpaceX · earn SpaceX
0x337E83f53CA8E6752bc0b9c582c00b0a689010cE Explorer ↗
Launch state
Three markets are live — Tesla, Apple and SpaceX — each paying yield in the same asset you stake at a 5–10% target APR. Reward periods are funded by the treasury transferring the asset into the pool and calling notifyRewardAmount. Apple and SpaceX use demo asset tokens until real tokenized listings are available. New assets are added by deploying a pool through PoolFactory.
Reference

Network details

Verified from docs.robinhood.com/chain/connecting. Robinhood Chain is a permissionless, Ethereum-compatible Layer-2 built on Arbitrum Orbit, with ETH as the native gas token.

PropertyMainnetTestnet
Network nameRobinhood ChainRobinhood Chain Testnet
Chain ID466346630
Native currencyETHETH
Public RPCrpc.mainnet.chain.robinhood.comrpc.testnet.chain.robinhood.com
Explorerrobinhoodchain.blockscout.comexplorer.testnet.chain.robinhood.com

An Alchemy RPC endpoint (https://robinhood-mainnet.g.alchemy.com/v2/{API_KEY}) is also available and recommended for production traffic.

Reference

Contract interface

The primary entry points on YieldPool. Staker functions are permissionless; owner functions manage reward periods.

Staker functions

stake(uint256 amount)
Pull amount of the underlying asset and mint yhTSLA 1:1. Requires prior approve() on the asset.
withdraw(uint256 amount)
Burn amount of yhTSLA and return the underlying asset. Accrued TESLA yield stays claimable.
getReward()
Transfer the caller's accrued TESLA yield to their wallet.
exit()
Withdraw the full staked balance and claim all yield in a single transaction.
earned(address account) view
TESLA yield currently claimable by account.
totalStaked() view
Total underlying staked in the pool (equals receipt totalSupply()).

Owner functions

notifyRewardAmount(uint256 reward) owner
Start or top up a reward period. The pool must already hold the reward TESLA; the solvency check excludes staked principal to prevent over-promising.
setRewardsDuration(uint256 duration) owner
Set the length of future reward periods. Only callable between periods.
recoverERC20(address token, uint256 amount) owner
Rescue unrelated tokens sent to the pool. Reverts on the staking or reward token so user funds can't be touched.

Quick start with cast

# stake 10 yhTSLA (18 decimals) — approve first, then stake cast send 0x322F...03b2d "approve(address,uint256)" \ 0xA4c0De77EFEE7F06cf8fA7CA0563439bC901fef9 10000000000000000000 \ --rpc-url https://rpc.mainnet.chain.robinhood.com --private-key $PK cast send 0xA4c0De77EFEE7F06cf8fA7CA0563439bC901fef9 "stake(uint256)" \ 10000000000000000000 --rpc-url $RH_RPC --private-key $PK # check accrued TESLA yield, then claim cast call 0xA4c0De77EFEE7F06cf8fA7CA0563439bC901fef9 "earned(address)(uint256)" $YOUR_ADDR --rpc-url $RH_RPC cast send 0xA4c0De77EFEE7F06cf8fA7CA0563439bC901fef9 "getReward()" --rpc-url $RH_RPC --private-key $PK
More

Security

  • Contracts are OpenZeppelin-based with ReentrancyGuard and two-step ownership (Ownable2Step).
  • Reward claims follow checks-effects-interactions; balances are zeroed before transfer.
  • The receipt's transfer hook checkpoints both parties, so rewards can't be double-claimed via receipt transfers.
  • When the reward asset equals the staking asset, the solvency check subtracts staked principal, so rewards can never exceed the funded amount and principal is always withdrawable.
Demo deployment — not audited
The current mainnet deployment is for testing and demonstration only. The admin key used to deploy was exposed during development and must be treated as compromised, so protocol ownership is effectively burned. Do not deposit assets you are not prepared to lose. A production launch requires a fresh multisig owner and a professional audit.
More

Roadmap

PhaseScope
v1Tesla, Apple and SpaceX staking with same-asset yield, live on Robinhood Chain.
v2ERC-4337 gas-sponsored transactions, veYHF governance, fee sharing, Uniswap/Rialto liquidity.
v3Multi-asset vaults, cross-chain via LayerZero, security audit + production mainnet.