ETH Omnibus Staking
Implement ETH staking in an omnibus architecture - one wallet and many users
Who is this for?
Exchanges, ETPs, banks, LST and LRT protocols, and anyone staking on behalf of many users with a single or few wallets who wants to create a great UX and accurately distribute rewards
If you're new to ETH staking...
Check out our ETH staking guides first, starting from The Lifecycle of a Validator
Omnibus details
An omnibus setup consolidates multiple users' offchain staking requests into a single wallet to enhance UX.
Omnibus requirements:
- Batching system that consolidates users’ staking and unstaking requests, and creates new validators with sets of 32 ETH, while tracking remaining amounts for the next day's batch (offchain + onchain)
- Accounting system for each user’s balance (offchain)
- Rewards distribution based on users’ proportional stakes in active validators (offchain)
Solution: daily batching

Part 1: Process Daily Batch
- Set up omnibus wallet:
- This wallet will be the withdrawal address and fee recipient address for validators creation
- This wallet will manage all validators and receive Consensus layer (CL) and Execution layer (EL) rewards
- Ensure sufficient ETH balance for transaction fees
- Aggregate requests:
- Aggregate off-chain user staking and withdrawal requests throughout the day until 00:00 UTC
- Calculate available ETH: the day’s new staking requests deposits + ETH carried over from previous batch - withdrawal requests for the day
Part 2: Process Validator Exits

- If requested withdrawal amount ≤ available ETH
- Transfer funds to users within 24 hours of their request
- If requested withdrawal amount > available ETH
- Calculate number of validators to be exited
- Initiate validators exit via POST /ethereum/validators/exit or POST /ethereum/broadcast_exit_message
- Monitor exit progress via GET /ethereum/validators, display withdrawal status updates in user interface
- Transfer withdrawn ETH to users once validator exits are complete
- It’s recommended to transfer the complete withdrawal amount only when fully available (e.g., wait for validator exit to process a user’s 32 ETH withdrawal request, even if 5 ETH is currently available)
Part 3: Create Validators with Remaining ETH

- Create new validators
- Create new validators with available ETH in increments of 32 ETH via POST /ethereum/validators and sign the staking transaction, and broadcast it on-chain via POST /ethereum/broadcast
- Track remaining ETH for next day's batch, e.g.
user_a
deposits 55 ETH,user_b
deposits 22 ETH,user_c
requests to withdraw 10 ETH,- Create 2 validators (64 ETH) via POST /ethereum/validators
- Track 3 ETH remainder for next batch
- Monitor validator status:
- Track validator activation progress and monitor validator status via GET /ethereum/validators
Part 4: Fetch Rewards

- Fetch reward data
- Use GET /ethereum/rewards_net to check rewards amount received by omnibus wallet.
- Fetch previous day rewards data after UTC 03:00, e.g. on January 27, 2025, specify “2025-01-26” as both the start and end dates. Update the off-chain accounting system daily.
- Rewards calculation:
- All depositors earn rewards proportionally, regardless of whether their ETH is in active validators or awaiting the next batch.
- Calculate each user's daily rewards with the formula: (user_eth_amount / total_active_eth) * total_daily_rewards.
- User interface:
- Display current stake, rewards accrual, and historical daily rewards data to each user
Updated 15 days ago