This article analyses the world of Ethereum liquid staking, specifically through the lens of Brick Towers’ innovative non-custodial StakeWise V3 platform. It offers a detailed examination of transaction costs from a staking provider’s perspective, focusing on the operational and running expenses of both public and institutional vaults. The piece thoroughly analyzes various accounts involved in the process, including operators, stakers, and vault administrators, emphasizing the impact of gas fees on Ethereum staking rewards.
Additionally, it provides practical insights into the initial costs and potential earnings for staking providers and stakers, backed by real-world data and examples.
This article is essential reading for anyone interested in the financial mechanics and opportunities of Ethereum liquid staking, whether they are node operators, individual investors, or institutional players.
Parties
While working on our Ethereum offering to enable non-custodial and secure liquid staking with StakeWise V3 for our public and institutional vaults
We analyzed the transactions that are made by the different parties involved from a node operator perspective in terms of gas fees. This was primarily to understand the initial and the running cost of our vaults and look at the offering from a customer / staker point of view, as the transaction fees can eat significantly into the ETH staking rewards, depending on the customer’s amount staked.
As such, we are focusing on the following accounts, which exclude any oracle and keeper (both non-public repositories) related interactions:
Operator
The service of the node operator, such as Brick Towers, running the vault with its specific terms. This account is a hot wallet.
Staker
Individuals or entities using a vault to stake ETH, earn staking rewards, mint and burn the liquid staking token osETH, and unstake ETH from the vault. All within their own control.
Vault admin
Admin account of the node operator, managing the vault’s whitelist, branding, fee recipient, etc. A multi-sig type of wallet is advisable.
Vault fee address
The account of the node operator collecting the staking fees (generated on execution and consensus layers) from the vault. This can be the same address as the vault admin, but it is advisable to set up and use a different account for separation of concerns.
Vault Interaction
The list of vault interactions is tabularized here:
| Date | Tx Hash | Sender | Receiver | Payee | Contract Address | Method | Frequency | Comment | Value (ETH) | Gas Limit | Gas Usage | Gas Price (Görli) | Gas Price (mainnet) | Transaction Fee (Goerli ETH) | Transaction Fee (mainnet ETH) | ETHUSD Price | Transaction Fee (Goerli USD) | Transaction Fee (mainnet USD) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 06/11/2023 | 0x51e9…1ac0 | Vault admin | Vault factory | Vault admin | 0xb3be…8c4b | 00. Create Vault | once | Create the vault | 0 | 394,311 | 374,411 | 1.500000009 | 50 | 0.00056 | 0.01872 | $2,000.00 | $1.12 | $37.44 |
| 06/11/2023 | 0x16e8…9170 | Vault admin | Vault contract | Vault admin | 0x53ad…de83 | 01. Set Validators Root | once | Set the root of the validators | - | 57,579 | 57,124 | 1.500000008 | 50 | 0.00009 | 0.00286 | $2,000.00 | $0.17 | $5.71 |
| 06/11/2023 | 0x2961…4c90 | Staker | Vault contract | Staker | 0x53ad…de83 | 02. Deposit (first) | once | First deposit to the vault, it changes some variables from 0 to some value. In solidity updating the variable that's not 0 is cheaper than updating the one that is 0. | 128 | 69,917 | 69,272 | 1.000000015 | 50 | 0.00007 | 0.00346 | $2,000.00 | $0.14 | $6.93 |
| 06/11/2023 | 0x1202…03aa | Staker | Vault contract | Staker | 0x53ad…de83 | 03. Deposit | Each deposit | Regular deposit | 1,600 | 54729 | 54321 | 1.000000013 | 50 | 0.00005 | 0.00272 | $2,000.00 | $0.11 | $5.43 |
| 06/11/2023 | 0xd70a…2404 | Operator | Vault contract | Operator | 0x53ad…de83 | 04. Register Validators (2) | Every time a new validator is registered (every 32 ETH) | 2 validators registered | - | 312,341 | 308,272 | 0.000000012 | 50 | 0.00000 | 0.01541 | $2,000.00 | $0.00 | $30.83 |
| 06/11/2023 | 0x2e5f…6ed8 | Operator | Vault contract | Operator | 0x53ad…de83 | 05. Register Validators (10) | Every time a new validator is registered (every 32 ETH) | 10 validators registered | - | 658,788 | 650,136 | 0.000000013 | 50 | 0.00000 | 0.03251 | $2,000.00 | $0.00 | $65.01 |
| 07/11/2023 | 0x3689…20e6 | Vault admin | Vault contract | Vault admin | 0x53ad…de83 | 06. Multicall (MetadataUpdated, WhiteListerUpdated) | Once every vault branding is updated | Used to update the vault branding | - | 44,496 | 44,300 | 1.50000001 | 50 | 0.00007 | 0.00222 | $2,000.00 | $0.13 | $4.43 |
| 21/11/2023 | 0x09bf…eeec | Vault admin | Vault contract | Vault admin | 0x53ad…de83 | 07. Multicall (WhitelistUpdated) | Every time an address is whitelisted for a private vault | Used to update the whitelist of addresses for private vault | - | 57,609 | 57,146 | 1.500000018 | 50 | 0.00009 | 0.00286 | $2,000.00 | $0.17 | $5.71 |
| 16/11/2023 | 0xf225…6013 | Staker | Vault contract | Staker | 0x53ad…de83 | 08. Update State And Deposit | Each deposit if not updated by operator | The state update is what calculates the rewards/penalties for the Vault, reprices the Vault shares accordingly, and distributes the Vault fees to the Vault fee address | 32 | 147,171 | 145,390 | 1.000000013 | 50 | 0.00015 | 0.00727 | $2,000.00 | $0.29 | $14.54 |
| 17/11/2023 | 0x5fb3…3534 | Vault admin | Vault contract | Vault admin | 0x53ad…de83 | 09. Multicall (WhiteListerUpdated, FeeRecipientUpdated) | Each time vault fee address is updated | Used to update the vault fee recipient address | - | 56,002 | 55,612 | 1.500000009 | 50 | 0.00008 | 0.00278 | $2,000.00 | $0.17 | $5.56 |
| 20/11/2023 | 0xee36…39b2 | Operator | Vault contract | Operator | 0x53ad…de83 | 10. Update State | Every 24 hours, if flag is set on operator and no Staker interaction happened since in the vault | Operator successfully updated state, fee shares were minted | - | 99,625 | 98,575 | 0.000000014 | 50 | 0.00000 | 0.00493 | $2,000.00 | $0.00 | $9.86 |
| 20/11/2023 | 0xddc0…7068 | Vault contract | Vault fee address | Vault fee address | 0x53ad…de83 | 11. Unstake Multicall (Redeemed) | Every time operator wants to retrieve commission from vault | Vault fee address (operator) redeems shares and receives ETH | - | 73,226 | 69,551 | 1.500000012 | 50 | 0.00010 | 0.00348 | $2,000.00 | $0.21 | $6.96 |
| 22/11/2023 | 0x54ef…e3d4 | Staker | Vault contract | Staker | 0x53ad…de83 | 12. Multicall (Transfer, StateUpdated, Transfer, Mint, OsTokenMinted) | Every mint of osETH token | Staker mints osETH token through vault UI | - | 131,384 | 127,829 | 1.500000027 | 50 | 0.00019 | 0.00639 | $2,000.00 | $0.38 | $12.78 |
| 23/11/2023 | 0x619b…42c3 | Staker | Vault contract | Staker | 0x53ad…de83 | 13. Burn Os Token | Every burn of osETH token | Burn osETH token | - | 80,339 | 79,527 | 1.00000001 | 50 | 0.00008 | 0.00398 | $2,000.00 | $0.16 | $7.95 |
| 04/11/2023 | 0xe424…21e9 | Operator | Keeper contract | Operator | 0x893c…c6fd | 14. Update Exit Signatures | On demand | - | 85,781 | 85,781 | 0.000000009 | 50 | 0.00000 | 0.00429 | $2,000.00 | $0.00 | $8.58 | |
| 11/12/2023 | 0x60aa…85c0 | Vault contract | Staker | Staker | 0x53ad…de83 | 15. Unstake Multicall (Redeemed) | Every time unstaking does not lead to validator exit, same as 11. | Staker unstakes without validator exit | 73,238 | 69,563 | 1.500000022 | 50 | 0.00010 | 0.00348 | $2,000.00 | $0.21 | $6.96 | |
| 24/11/2023 | 0xe424…21e9 | Vault contract | Staker | Staker | 0x53ad…de83 | 16. Unstake Multicall (Redeemed, ExitQueueEntered) | Every time unstaking leads to validator exit | Staker unstakes so much that a validator is exited | - | 159,050 | 153,890 | 1.500000011 | 50 | 0.00023 | 0.00769 | $2,000.00 | $0.46 | $15.39 |
| 24/11/2023 | 0x2f84…e5be | Vault contract | Staker | Staker | 0x53ad…de83 | 17. Unstake Multicall (ExitQueueEntered) | Every time unstaking happens during validator exit | Staker unstakes while a validator is exited | - | 106,643 | 104,228 | 1.500000016 | 50 | 0.00016 | 0.00521 | $2,000.00 | $0.31 | $10.42 |
and can be looked at in full from the following shared Google Sheet:
StakeWise V3 – Gas Fees Economics
Each interaction encompasses a specific on-chain transaction and the table shows the following properties for each interaction:
- Sender: Who is the sender and signer of the transaction
- Receiver: Who is the receiver of the transaction (contract or EOA address) and the transacted value (if applicable)
- Payee: Who pays for the gas fees, i.e. the transaction cost (can be either sender or receiver)
- Method: The method called on the specific contract forming part of the transaction
- Frequency: Estimated frequency of this type of interaction
- Value (ETH): Transacted ETH, if applicable
- Comment: Further details on the interaction
- Gas Limit and Gas Usage: Provides the important heaviness of the interaction, and determines the fixed parameter of the transaction cost
- Gas Price: Cost of the gas at the time of making the transaction. This is estimated for mainnet (from Etherscan), for testnet (Görli or Holesky) the gas price is not representative of the actual cost, as blockchain demand on testnets is not comparable to mainnet
- Transaction Fee (ETH): Based on gas usage and estimated gas price, the calculated transaction fee for the interaction
- ETHUSD Price: Estimated exchange rate from ETH to USD, taken from Google Finance
- Transaction Fee (USD): Calculated transaction fee for the interaction, based on transaction fee in ETH and ETHUSD Price.
In this context, it is worth noting that StakeWise V3 vaults are designed having principles of ERC-4626 Tokenized Vault Standard (used e.g. in Yearn Finance, Balancer pools, Frax Finance, Maple Finance) in mind.
This means that any participant in the vault who has a claim on the assets (ETH), is equipped with an adequate
number of shares upon contribution with his stake or receipt of staking rewards and attribution of fees (node
operator). To receive the asset from the claim, these shares must be converted into assets with an on-chain
transaction, as outlined in the table and paid for with gas fees by the payee.
This is different in the
dedicated staking case, where staking rewards are directly received by the withdrawal account on the beacon chain,
without any gas fees involved.
Gas Fees
The summary of resulting gas fees for each type of vault interaction and the payee is then summarised in the table below and the Google Sheet tab “Gas Fees”.
It shows that e.g. for a staking provider creating the vault, setting it up with branding, whitelisting, etc. bootstrapping it with the first validator, and retrieving the first staking fees, with a gas price of around 50 Gwei, a minimum of almost 0.05 ETH is required to be spent.
At an ETHUSD exchange rate of $2,000, this translates into a $100 upfront expense. With a supposed staking fee of 5% and an expected 5% APY for the staking rewards of the vault, this requires a 32 ETH validator stake to be kept in the Vault for 8 months before the staking provider starts earning net positive.
From a staker perspective, a deposit to stake and an unstaking action to retrieve the stake plus staking rewards are accounted for with a minimum ETH fee of approx. 0.01 ETH.
For minting and burning osETH, an additional minimum of approx. 0.01 ETH has to be accounted for.
Again, using the estimated values from above, this results in an approx. minimum $22 fee for staking and unstaking and similarly for minting and burning osETH. Thus, a minimum stake of approx. 0.42 ETH ($840) is required for the staking rewards to earn these fees in the first year and break even.
Overall, this analysis provides a solid starting point for understanding the economic dynamics involved in vault interactions. However, it’s important to approach these findings with a degree of caution, considering the numerous variables such as gas price, number of stakers, active validators, exiting validators in the vault and the network as a whole, etc., and potential fluctuations in the vault’s lifecycle (whitelisting, branding updates, fee address updates, etc.).
To gain a more nuanced understanding and to stay ahead in this evolving landscape, we encourage you to .