# Blob Adoption and Utilization - Insights from the first 85 days EIP 4844 shipped with Ethereum's Dencun upgrade. The proposal introduced "blob-carrying" transactions which represent a crucial step towards a scalable gas market. Four months out, we can see how that vision has played out. For the vast majority, blobs have behaved as expected and fulfilled their promise of significantly reducing gas prices for Ethereum-based rollups. Through our exploration of the data, we've found that: * 77.97% of on-chain Type 3 transaction volume is collectively submitted by 25 different Layer 2 protocols (L2s). * 72% of Type 3 transactions carry only 1 blob. * On average, Type 3 transactions with 1 posted blob use 23.3% of available storage, while Type 3 transactions with 6 posted blobs use 99.1%. * Type 3 transactions take 2.1 times longer to confirm on-chain than non-Type 3 transactions * 0.12% of total on-chain blob transactions were sent privately. 99% of [Lisk](https://lisk.com/) on-chain volume was detected to be private. * Median `MaxPriorityFeePerGas` for Type 3 transactions has hovered around 1 GWEI. * Around June 4, 2024, the median `MaxPriorityFeePerGas` rose to 4 GWEI. This was the first occurrence of Type 3 tip contention between several L2s. * On average, a `MaxPriorityFeePerGas` of more than 1 GWEI does not have a faster on-chain time than a `MaxPriorityFeePerGas` of less than 1 GWEI. As the ecosystem continues to adapt to blob-carrying transactions, these insights provide a crucial understanding of their behavior and performance. In the following sections, we delve deeper into each finding. The content below assumes some familiarity with the technical characteristics of Type 3 transactions. For an introduction to Type 3 transactions, please read the following: * [EIP 4844: Shard Blob Transactions](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md) * [EIP 4844, Blobs, and Blob Gas: What you need to know - Blocknative](https://www.blocknative.com/blog/eip-4844-blobs-and-blob-gas-what-you-need-to-know) # Data Sources and Collection The following datasets were used for this analysis: * [Blocknative Historical Mempool Data](https://docs.blocknative.com/blocknative-data-archive/mempool-archive) The confirmation time and gas values of a given Type 3 transaction. * [Blocknative Blob Archive](https://docs.blocknative.com/blocknative-data-archive/blob-archive) Spot checking particular blobs. * [Dune ethereum.blobs Query](https://dune.com/queries/3805787) Total consumed space of a given Type 3 transaction. * [Blocknative Ethernow.xyz](https://www.ethernow.xyz/) On-chain data and labeled addresses. We analyzed Type 3 transactions from Mar 13, 2024, to Jun 6, 2024, submitted by 25 different L2 protocols listed below. Using [L2Beat](https://l2beat.com/scaling/summary), we also list the type of rollup. For addresses not listed here, we label it as `Unknown`. `Unknown` can be a mix of [Inscriptions](https://www.blocknative.com/blog/blobsplaining) or unlisted L2s. ``` ( 'Arbitrum', '0xc1b634853cb333d3ad8663715b08f41a3aec47cc', 'Optimistic Rollup' ), ( 'Linea', '0xa9268341831efa4937537bc3e9eb36dbece83c7e', 'ZK' ), ( 'Optopia', '0x3d0bf26e60a689a7da5ea3ddad7371f27f7671a5', 'Optimistic Rollup' ), ( 'Mint', '0x68bdfece01535090c8f3c27ec3b1ae97e83fa4aa', 'Optimistic Rollup' ), ( 'Mode', '0x99199a22125034c808ff20f377d91187e8050f2e', 'Optimistic Rollup' ), ( 'Optimism', '0x6887246668a3b87f54deb3b94ba47a6f63f32985', 'Optimistic Rollup' ), ( 'Kroma', '0x41b8cd6791de4d8f9e0eaf7861ac506822adce12', 'Optimistic Rollup' ), ( 'Lumio', '0x5c53f2ff1030c7fbc0616fd5b8fc6be97aa27e00', 'Optimistic Rollup' ), ( 'Scroll', '0xcf2898225ed05be911d3709d9417e86e0b4cfc8f', 'ZK' ), ( 'Lambda', '0xdec273bf31ad79ad00d619c52662f724176a12fb', 'Unknown' ), ( 'Public Goods Network', '0x5ead389b57d533a94a0eacd570dc1cc59c25f2d4', 'Optimistic Rollup' ), ( 'Camp Network', '0x08f9f14ff43e112b18c96f0986f28cb1878f1d11', 'ZK' ), ( 'Taiko', '0x000000633b68f5d8d3a86593ebb815b4663bcbe0', 'Optimistic Rollup' ), ( 'Blast', '0x415c8893d514f9bc5211d36eeda4183226b84aa7', 'Optimistic Rollup' ), ( 'Paradex', '0xc70ae19b5feaa5c19f576e621d2bad9771864fe2', 'ZK' ), ( 'Metal', '0xc94c243f8fb37223f3eb2f7961f7072602a51b8b', 'Optimistic Rollup' ), ( 'Boba Network', '0xe1b64045351b0b6e9821f19b39f81bc4711d2230', 'Optimistic Rollup' ), ( 'zkSync Era', '0x0d3250c3d5facb74ac15834096397a3ef790ec99', 'ZK' ), ( 'Lisk', '0xa6ea2f3299b63c53143c993d2d5e60a69cd6fe24', 'Optimistic Rollup' ), ( 'Rari', '0x52ee324f2bcd0c5363d713eb9f62d1ee47266ac1', 'Optimistic Rollup' ), ( 'XPFP', '0x3e7a28d96f19b65676f4309531418a03039ee5b5', 'Unknown' ), ( 'Base', '0x5050f69a9786f081509234f1a7f4684b5e5b76c9', 'Optimistic Rollup' ), ( 'Zora', '0x625726c858dbf78c0125436c943bf4b4be9d9033', 'Optimistic Rollup' ), ( 'StarkNet', '0x2c169dfe5fbba12957bdd0ba47d9cedbfe260ca7', 'ZK' ), ( 'Debank Chain', '0x7ab7da0c3117d7dfe0abfaa8d8d33883f8477c74', 'Optimistic Rollup' ); ``` # Who is using blobs? A Type 3 transaction contains a `from_address`. We can use this field to classify which transactions belong to which L2 network. We computed a detailed statistical summary for each L2, including the first and last detection of Type 3 transactions, and the average number of Type 3 transactions and blobs posted. A Type 3 transaction can post anywhere from 1 - 6 blobs. Out of the listed L2s, **Scroll** had the largest Type 3 transaction market share at 13.12%, maintaining this lead by settling an average of 1,540 Type 3 transactions per day. **Taiko**, which started sending transactions on May 27, 2024, has quickly risen to the 4th position in terms of volume consumed. XPFP was active for a few days after the Dencun upgrade but appears to have stopped submitting blobs as their contract is no longer in use. Below is a summary statistic table for each `blob_submitter`. ![Group 10768](https://hackmd.io/_uploads/Sy1nYkcBC.png) Let's break down the average blobs per transaction. Base averages about 5.57 blobs per transaction, while Scroll averages about 1 blob per transaction. Generally, we see that Optimistic rollups are posting more blobs per transactions compared to ZK rollups. ![Group 10767](https://hackmd.io/_uploads/SkzEtJ5HC.png) We'll dive deeper into blob storage usage in the next section. # How are L2s using blobs? The EIP 4844 specification aims for each block to have a target of 3 blobs (0.375 MB) and a maximum of 6 blobs (0.75 MB). Each blob can contain up to 0.125 MB of data. These blobs are attached to Type 3 transactions, also known as blob-carrying transactions (with Type 0 being legacy transactions and Type 2 following the EIP 1559 specification). We can categorize Type 3 transactions based on the number of blobs they carry by examining the length of the `blobVersionedHashes` array. Most Type 3 transactions (72%) carry only 1 blob. ![databricks_blob](https://hackmd.io/_uploads/BJ9aqkcH0.png) This breakdown can be analyzed further by different Layer 2 networks. The heatmap below sorts the total Type 3 transactions amount in descending order, showing that currently, most L2s submit 1 blob per Type 3 transaction. ![tx_blob_breakdown](https://hackmd.io/_uploads/HybAqyqHR.png) Analyzing the storage usage per blob, we find that over 90% of the blob storage capacity is utilized. There are rare instances where blob storage usage drops below 10%, even in transactions carrying just one blob. For a detailed case study on this, check out [Dan from Blockworks' analysis of Taiko](https://x.com/smyyguy/status/1798017132258619614?s=46). ![fullness](https://hackmd.io/_uploads/Hk5Rc1cr0.png) Several hypotheses can explain the preference for single-blob transactions. One reason could be the lower transaction volume on many newly launched L2s. Alternatively, submitting fewer blobs per transaction might be a strategy to remain attractive to block builders, as single-blob Type 3 transactions require less computation time compared to six-blob Type 3 transactions. Smaller L2s might benefit from dynamic-sized blob storage or the ability to share blob sidecars with other L2s. # How long do blobs take to confirm? 85% of the blob transactions in our dataset were recorded confirmed on-chain between March 13, 2024, and June 6, 2024. On the other hand, non-blob transactions have a 96% confirmation ratio. The [longest it took for a blob transaction to confirm](https://www.ethernow.xyz/tx/0x49385de9471f035f5d06b17bb069ae7aafee4117121d5c3436b0c737385ddc36?batchIndex=1) was 52 days, 21 hours, 48 minutes and 14 seconds. On average, blob transactions take 18 seconds to confirm, compared to non-blob transactions, which take 8.4 seconds. ![Group 10766](https://hackmd.io/_uploads/BJWysJ9rR.png) Considering transactions confirmed within 24 hours, in general, **blob transactions take 2.1 times longer to confirm than non-blob transactions (17 seconds vs 8 seconds)**. # Are there any "private" blob transactions? Before exploring private blob transactions, let's first discuss non-blob private transactions... Private transactions have [steadily increased](https://www.blocknative.com/blog/private-transactions-on-ethereum-doubles-in-last-quarter) over time. These transactions typically occur when the sender wants to prioritize the order of execution, often to capture an arbitrage opportunity or to avoid being exploited in one. While the benefits of private blob transactions are not yet clear, they still occur. In our dataset, we found **580 blob transactions sent privately**. The overwhelming majority of private blob transactions are sent by [Lisk](https://lisk.com/). ![private_blobs_per_address](https://hackmd.io/_uploads/Hyggi15HR.png) Another trend we've noticed is that there have been at least 5-20 private Type 3 transactions per day since the Dencun upgrade. ![blob](https://hackmd.io/_uploads/BJLxikqH0.png) With new L2s frequently entering, we're keen to see if they will also adopt private blob transactions. Using [Ethernow.xyz](https://ethernow.xyz/mempool/all), we can observe private transactions in real-time. Here's a [filter for Lisk L2 private transactions](https://www.ethernow.xyz/mempool/all?filter=cce7e3de-1d0a-4511-8ee7-b31b22489716). # Blob Transactions - Priority Fee Blob transactions have two key fields affecting user cost: blob gas and the blob base fee. In [Blobsplaining: The Blob Gas Market Explained](https://www.blocknative.com/blog/blobsplaining), we detail this new fee structure and when blob submitters should use blobs versus call data. EIP 4844 has significantly lowered fees for L2s by reducing storage costs. As Ethereum evolves into a [settlement Layer 1](https://www.youtube.com/watch?v=Rd_04vVLE-4), L2s will need to compete for rapid settlement. The next focus is optimizing the priority fee for blob transactions, as they now compete with regular transactions. We empirically examined how priority fees for blob transactions have been behaving. On average, blob transactions have a median `MaxPriorityFeePerGas` of 1 GWEI. The discrete median of the graph likely indicates that most blob submitters put a reliable value to avoid failed transactions. The lack of variability could also be due to the small size of total blob submitters. Interestingly, there was a bump up in `MaxPriorityFeePerGas` to 4 GWEI around June 4, 2024. ![medianmaxpriorityblobnonblob](https://hackmd.io/_uploads/SJxWj15HR.png) We can dig deeper to see what could be the cause of the increase. Using our L2 labeled list, we can categorize the Type 3 transaction volume into two groups: L2s and non-L2s. The June 4 spike appears to be entirely caused by L2s in our labeled list. ![l2nonl2](https://hackmd.io/_uploads/ByDZiy9r0.png) The following figures shows one chart per L2 and one line for the number of blobs each transaction carried. Most L2s, except Arbitrum, increased their median max priority fee for transactions carrying 6 blobs during the June 4th spike. Taiko started submitting blobs on May 27th and aggressively set their median max priority fee to 5 GWEI. The transactions that carried 6 blobs `MaxPriorityFeePerGas` spike for other L2s could be a response to Taiko's high median max priority fee. ![Group 10765](https://hackmd.io/_uploads/BklMokqBC.png) When examining confirmation times, we see that generally a small `MaxPriorityFeePerGas` (1 GWEI or less) does not appear to significantly impact confirmation time. There are some notable spikes around March 2024 and end of May 2024 which shows. that a smaller tip has longer confirmation time. The following chart shows two different classes of tips over time. 1 GWEI >= represents tips 1 GWEI or lower. 1 GWEI < represents tips higher than 1 GWEI. ![timepending](https://hackmd.io/_uploads/rktfjkcrC.png) This goes against common sense, which is that a higher max priority fee correlates to faster on-chain settlement. # Next Steps These findings offer an excellent introduction to blob adoption and utilization. We will continue to monitor the following closely to see how the market matures: 1. **Type 3 Inclusion Rate - `mev-boost` builders** Do certain builders have an exclusion rule towards N-Blob Type 3 transactions? Ie. Does Builder XYZ accept only 6 blob transactions to maximally pack the block? 2. **Number of Blobs for each Type 3 Transaction** Will blob submitters continue to choose 1 blob or will there be a rise in 6 blobs per Type 3 transaction submitted as L2s become more comfortable in the space, the blob market becomes more competitive, and chain usage grows? 3. **Maximum Blobs Posted** How often are blocks maximally blob-filled? Is increasing the blob limit per block or transaction impactful at this stage? 4. **Optimistic vs ZK Sync Submitting Behaviour** Due to technical limitations, certain L2s can post data later without any adverse effect to L2 chain settlement. Will L2s launched in the adopt similar blob submitting behavior? 5. **`MaxPriorityFeePerGas` as more L2s enter the space** How will L2s tackle priority settlement on the L1? If they continue through the public mempool, how will the tip market evolve? 6. **Private Blob Market** How will the private blob market evolve? If you are interested in learning more or being part of the research at Blocknative, please check out our [research portal](https://www.blocknative.com/research) - Victoria Tran, Data Science @ [blocknative.com](https://blocknative.com/)