Disclaimer: The authors of this report did not purchase or sell any of the relevant tokens using material non-public information during the research or drafting of this report. The contents of each report reflect the opinions of the respective authors and are provided for informational purposes only and are not intended to be a recommendation to buy or sell any token or use any protocol. Nothing contained in this report is investment advice and should not be construed as such.
Ethereum’s Shanghai Upgrade, a Week After
It’s been a week since the Shanghai Upgrade took place on April 12th. The Shanghai Upgrade was the first major upgrade to the Ethereum ecosystem in about half a year, with no major changes since “The Merge” in September of last year, which marked the transition from Proof of Work(PoW) to Proof of Stake(PoS).
There’s no denying that the Shanghai Upgrade is a major milestone in Ethereum’s roadmap, as it enables withdrawals from the Beacon Chain after more than two years of staking only. Given Ethereum’s unique position, influence in the crypto ecosystem, and size, it’s no wonder that the upgrade has been so highly anticipated, and numerous rumors and speculations exist. In this article, we’ll focus on the key changes and developments brought about by the Shanghai Upgrade to see how the market is faring a week after ETH withdrawals became available.
What is the Shanghai Upgrade?
There are many different terms for this upgrade, including Shanghai, Capella, and Shapella, but to be clear, each of these terms can be distinguished as the following based on the chain in which the hard fork occurred.
- Shanghai Upgrade: A hard fork in Ethereum’s execution layer(mainnet)
- Capella Upgrade: A hard fork in Ethereum’s consensus layer(Beacon Chain*).
- Shapella Upgrade: A term used collectively for the Shanghai Upgrade and the Capella Upgrade.
*Beacon Chain: Ethereum’s consensus layer. In Ethereum 2.0, validators will be able to stake their ETH on the Beacon Chain.
Strictly speaking, the Shanghai Upgrade only includes upgrades made on the Ethereum execution layer. However, many community members and market participants have come to use the term Shanghai Upgrade as a generic term to refer to this upgrade as a whole, eliminating the necessity to distinguish between the terms. In this article, the Shanghai Upgrade refers to the one that occurred on April 12th.
The Shanghai Upgrade was the first hard fork to occur simultaneously on both the execution and consensus layers, and the first time an upgrade was based on an exact time rather than a block height. For the most recent major upgrade, “The Merge,” there was only an announcement that the upgrade would occur at block 15537394, but the exact time was unknown, so people had to refer to a website called wenmerge.com which monitored block generation in real-time and counted down to the Merge time on its own(now repurposed). In the case of the Shanghai Upgrade, however, it was possible to calculate the exact time the upgrade would occur, down to the second, thanks to the nature of the beacon chain which operates on slots and epochs.
A slot is a block that is generated every 12 seconds within the beacon chain. When 32 slots are collected, an epoch is formed(one every 6.4 minutes). In the case of the Shanghai Upgrade, the exact moment of the upgrade could be calculated by designating the 6209536th slot for the upgrade to take place.
The Shanghai Upgrade includes the following five Ethereum Improvement Proposals(EIPs)
EIP-3651: Warm Coinbase
EIP-3855: PUSH0 instruction
EIP-3860: Limit and meter initcode
EIP-4895: Beacon chain push withdrawals and operations
EIP-6049: Deprecate SELF-DESTRUCT
EIP-4895 is at the core of the Shanghai Upgrade, containing changes that will most directly impact the market. It deals with the withdrawal of ETH staked on the beacon chain. Four additional EIPs are outlined below, followed by an in-depth breakdown of EIP-4895.
- EIP-3651: Reduce gas cost by moving COINBASE address from cold address to hot address
- EIP-3855: Reduced gas cost to enter constant 0 by adding PUSH0 instruction
- EIP-3860: Increase the maximum initcode from 24576 to 49152 to enable more contract functionality
- EIP-6049: Deprecate the use of the SELFDESTRUCT opcode
Prior to the Shanghai upgrade, staking on beacon chains was a one-way service with no withdrawals. The Shanghai upgrade and its EIP-4895 enabled withdrawals and allowed ETH stakers to bring their deposit principal and staking interest rewards to the Ethereum mainnet. Two notable details of EIP-4895 include the following:
- Pull vs. Push
- Partial vs. Full
Pull vs. Push
Pull vs. Push is the method of withdrawing ETH from the beacon chain. Currently, most PoS networks use the pull method to withdraw staked tokens by sending a withdrawal request to the execution layer, consuming gas fees. However, withdrawals within Ethereum’s beacon chain use the push method, where users can utilize the withdrawal queue within the consensus layer to perform the withdrawal instead of sending a request to the execution layer.
In the push method, most of the work for withdrawal is done at the system level, that is, within a new operating method performed by the protocol itself without going through individual transaction requests from users. Unlike the pull method, the push method has the advantage that it does not consume gas and does not take up block space while processing withdrawal transactions.
Partial vs. Full
Partial and full are the two types of withdrawals that validators can request. The amount of ETH that each validator has in the beacon chain can be divided into two parts: the minimum amount of staking required for a validator, which is 32 ETH, and the staking rewards they have earned. A partial withdrawal is a request to withdraw only the amount exceeding 32 ETH, which corresponds to the staking reward, while a full withdrawal is a request to withdraw the entire amount staked by the validator, including 32 ETH. Therefore, unlike partial withdrawals, full withdrawals will result in the validator being disqualified as a validator and removed from network operations, as they withdraw the minimum requirement for validation of 32 ETH.
We can ask one question here. If a large number of early validators were to withdraw their funds immediately after the upgrade to realize their profits, one might wonder if the sudden increase in selling pressure would cause the price of ETH to drop. To prevent this from happening, the Ethereum network has designed the withdrawal process to only allow withdrawals within the consensus layer’s secure fence. The diagram below shows step-by-step how partial and full withdrawals are pushed to the mainnet.
Push Withdrawal Process
- Validator checks and sending withdrawal requests
Step 1 is to verify that the validators who want to withdraw ETH from the beacon chain have sent a withdrawal request. Validators need to change their ‘withdrawal credentials’ from 0x00- to 0x01- to withdraw (Partial & Full).
2. Consensus layer
Partial and full withdrawals are handled by different logic in the consensus layer. First, partial withdrawals are processed automatically and immediately by simply changing the credential to 0x01 in step 1, and the withdrawal request is processed and piled into the withdrawal queue. On the other hand, a full withdrawal, which is the removal of all ETH, requires a more manual approach. As this is a major step in leaving the validator role, the validator who requested the full withdrawal along with the credential change must manually send an exit request for the full withdrawal to be processed. As such, a full withdrawal request sent by a validator who has completed both the credential change and the exit request will be registered in the exit queue before entering the withdrawal queue.
The exit queue then sends full withdrawal requests to the withdrawal queue at a rate of 8 exits per epoch. The number of requests in an epoch is determined by the ‘churn limit’, which is proportional to the number of active validators currently in the network. Partial withdrawal requests, which are relatively small, are sent directly to the withdrawal queue without going through an intermediate process, while larger full withdrawal requests go through an intermediate process called the exit queue to limit their speed. This structure demonstrates the protocol’s efforts to ensure that withdrawals occur at a stable rate.
3. Engine API
The Ethereum consensus layer and the execution layer interact with each other through the Engine API. Partial and full withdrawal requests that have previously accumulated in the consensus layer’s withdrawal queue are sent to the execution layer via the Engine API, where they are processed at a constant rate of 16 withdrawal requests per slot(created every 12 seconds).
4. Execution layer
Since most of the work related to withdrawals has already been handled at the consensus layer, the execution layer only needs to receive the 16 withdrawal requests from the withdrawal queue and increment the ETH balance at each withdrawal address.
Numerous Projections, What’s the Status Quo?
Given Ethereum’s current stature and size in the crypto ecosystem, the ability to withdraw ETH after just over two years of staking is expected to have a significant impact on the crypto ecosystem as well as ETH itself. In the following sections, we’ll evaluate the market’s behavior in each category, comparing our predictions before and a week after the Shanghai Upgrade.
ETH Withdrawal Trends
ETH withdrawal trends are a key part of the Shanghai Upgrade and the first number to look at to understand the impact it will have on the market. Earlier, we explained that there are two ways for validators to withdraw their staked ETH: partial, where they only withdraw the reward minus 32 ETH, and full, where they withdraw the entire amount. According to the on-chain data analytics platform ‘Glassnode’, the average ETH holdings of validators before the Shanghai Upgrade was 34 ETH, so even if all validators(around 520k at the time) requested a partial withdrawal of their staking rewards of 2 ETH, it would take around 4–6 days to withdraw a total of over 1 million ETH to the mainnet.
Using the same calculation as for partial withdrawals, given a rate of 8 exits/epoch for full withdrawals, we can expect around 210k-320k ETH to be withdrawn in the first 4–6 days. Now let’s take a look at the actual status of ETH withdrawals and see if it’s going as expected.
One week after ETH withdrawals became available(as of 4/19), approximately 1.08m ETH has been withdrawn, with partial withdrawals accounting for 78%(approximately 846k ETH) and full withdrawals accounting for 22%(239k ETH). Thus, we can see that ETH withdrawals are pretty much in line with expectations, only at a lower rate.
The overall withdrawal trend in the graph above shows that, except for 4/15, there has been a steady decrease in withdrawals. One of the reasons for this is that withdrawal requests made after the upgrade(changing credentials to 0x01) were piling up in the withdrawal queue and processed at once(related tweet).
Furthermore, data not yet reflected in the graph above reinforces the idea that the trend will remain stable. We can see that over 85% of validators have already completed their withdrawal requests, as the percentage of validators who have not yet requested a withdrawal(potential validators who are eligible for a withdrawal) is only 14.4% of the total. Additionally, only 5.27% of ETH is currently pending withdrawal, of which approximately 95%(939k ETH) are full withdrawals. Combining the above with the fact that the average Ethereum validator currently holds 32.46 ETH, there will be very little momentum left in the beacon chain for large-scale partial or full withdrawals after the current pending full withdrawals are processed over about 3 weeks. With over 52% of all withdrawal requests already processed in one week and no notable large-scale withdrawal request spikes observed, we expect the current modest decline in withdrawals to solidify.
ETH Curren Status
ETH price has risen by nearly 20% since the Shanghai Upgrade on April 12th, and is hovering around $2,070. The successful completion of the highly anticipated post-Merge upgrade, and the fact that withdrawals have been occurring at a steady pace as designed without significant selling pressure, are key drivers of the ETH price increase. In the previous ETH withdrawal trend graph, you can see that the noticeably high number of withdrawal requests processed on April 15th was also influenced by the steep price increase recorded on the 13th and 14th. From a validator’s perspective, the current price of ETH needs to be higher than the price of ETH at the time they staked to motivate them to withdraw, so it’s possible that validators who broke even during that period had their withdrawal requests queued up and processed on the 15th.
Even before the upgrade, it was widely believed that a large-scale sell-off would be unlikely. The reason is that the total amount of ETH that could theoretically be released to the market in a single day from partial and full withdrawals was approximately 300k ETH and 53k ETH, respectively, which together represented only 0.2% of the circulating supply, too small to have a significant impact on the ETH price. In addition, the number of validators requesting full withdrawals before the upgrade was less than 0.04% of the total. Even in the extreme case of all validators requesting full withdrawals, it would take over 500 days for all requests to be processed due to rate limits, making it unlikely for a drop in ETH price resulting from the Shanghai Upgrade.
ETH Staking Trends
The actors driving ETH staking can be broken down into four categories.
- Liquid Stakings(Lido, Frax) — Blue
- CEX(Central Exchanges) — Red
- Individual Stakers — Purple
- Staking Pool(Stakefish, Figment) — Beige
Of the four categories above, let’s take a look at the withdrawal status of the two largest(Liquid Stakings & CEX) and what to watch out for.
The dominant protocol for liquidity stakings is Lido, of course. With around 5.8m ETH staked, it has a massive 94% of liquid stakings and 31% of the total. Lido is followed by Frax and Stakewise in second and third place respectively, but both protocols account for less than 2% of the total, so it’s safe to say that Lido is currently the dominant liquid staking protocol.
Lido has withdrawn approximately 261k ETH to date, and all of these funds are held in a “WithdrawalsManagerStub” address rather than being released to the mainnet.
Last month, Lido announced on its official Twitter account that it would not withdraw ETH to the mainnet until mid-May, about a month after the Shanghai Upgrade to ensure more stable protocol operations.
Therefore, until the safety checks are complete, any ETH that Lido withdraws from the beacon chain will remain in the WithdrawalsManagerStub address, which seems like a reasonable decision given Lido’s massive size and influence in the Ethereum staking ecosystem.
Add to this the fact that the current stETH/ETH redemption ratio is already close to 1 in DeFi pair pools, which significantly relieves redemption pressure, and the fact that trading less than 1m stETH entails a very small price impact, it can be expected stETH to be redeemed for ETH without significant volatility when Lido’s staking withdrawals are released to the market in mid-May.
Among centralized exchanges, Coinbase(46.43%), Kraken(24.53%), and Binance(20.31%) account for the majority of exchange volume. Among these three exchanges, we’d like to highlight Kraken.
Currently, Kraken ranks second(18.9%) behind Lido as an individual entity in the amount of ETH withdrawn(left) and an overwhelming first(41.7%) in the amount pending withdrawal(right). The amount of ETH that Kraken has already withdrawn or applied to withdraw is equivalent to 47.3% of the cumulative ETH it has deposited on the beacon chain. This is a much higher figure compared to 4.5% and 12% for Lido and Coinbase, respectively, which have staked more ETH than Kraken.
The main reason for this is the SEC’s action against Kraken in February for securities violations. As a result of the SEC’s sanctions, Kraken suspended its staking services on February 9th, and a large amount of ETH being withdrawn is due to Kraken no longer being able to operate.
So what we’ll be watching for going forward is the direction of Kraken’s liquidity, which has withdrawn the most funds and still has a lot of ETH left to withdraw. For now, we’re not seeing any noticeable transactions from these two addresses, but it will be interesting to see whether the funds are going to liquid staking protocols or exchanges.
Shanghai Upgrade a Success, Who’s Next?
With the successful settlement of the Shanghai Upgrade, the Ethereum ecosystem continues to move forward with its roadmap. Among the core upgrades, the proposal closest to implementation is EIP-4844, Proto-Danksharding. Proto-Danksharding proposes to introduce a new form of data called “blobs” in place of the current “calldata” to address the cost and storage issues faced by traditional rollups in processing transactions. By introducing blobs, which are not compatible with the Ethereum Virtual Machine(EVM) and are automatically deleted after a set period (1–3 months), rollups can be made more “lightweight”. While ‘Danksharding’, which is the finalized implementation of Proto-Danksharding, is still years away, it has already been fine-tuned, tested, and is waiting for its official launch in the near future.
The Shanghai Upgrade brings a new phase to Ethereum’s PoS era after The Merge, and the Ethereum ecosystem is taking the next step toward “scalability” through Proto-Danksharding.
- Delphi Digital, Brace Yourselves, Shanghai Is Coming, 2023
- Mirror, Beacon Chain Withdrawals, 2023
- Hashed, [ETH] Shanghai Upgrade: The Hot Potato, Beacon Chain Withdrawal, 2023
- Galaxy, How to Watch Shanghai: The Completion of Ethereum’s Merge Upgrade, 2023