Glossary

Block Stuffing Attack

A block stuffing attack is when an entity fills blocks with their own transactions to prevent others from getting confirmed.

Key Takeaways

  • A block stuffing attack is an economic denial-of-service attack where an entity floods blocks with their own transactions to crowd out legitimate users and inflate fee market prices.
  • The most famous example occurred during the Fomo3D game on Ethereum in August 2018, where the winner stuffed blocks for roughly three minutes to prevent competing bids and claimed a prize of 10,469 ETH (approximately $2.8 million at the time).
  • Defenses like EIP-1559 make sustained block stuffing exponentially more expensive because the base fee is burned rather than paid to validators, and Bitcoin's 10-minute block times make prolonged attacks prohibitively costly.

What Is a Block Stuffing Attack?

A block stuffing attack is a form of economic denial-of-service in which an attacker submits a large number of high-fee transactions to fill available block space. By consuming most or all of a block's capacity, the attacker prevents legitimate transactions from being included in new blocks. This forces other users to either wait for the attack to end or bid even higher fees to compete for the remaining space.

Unlike traditional DDoS attacks that overwhelm network bandwidth or computing resources, block stuffing exploits the economic mechanics of blockchain fee markets. The attacker does not need to compromise any nodes or break cryptographic guarantees. They simply outbid everyone else for the scarce resource of block space. This makes block stuffing a unique attack vector: it plays by the protocol's own rules while undermining its availability for everyone else.

The attack is sometimes called "block filling" or "transaction flooding," though block stuffing specifically refers to the deliberate, strategic filling of blocks rather than accidental congestion from organic demand.

How It Works

A block stuffing attack follows a straightforward economic logic. The attacker needs enough capital to outbid all other transaction senders for a sustained period:

  1. The attacker creates many transactions (often sending funds to their own addresses) with fees set high enough to guarantee inclusion in the next block
  2. These transactions consume the block's capacity (the gas limit on Ethereum, or the block size limit on Bitcoin)
  3. Miners or validators, who are economically rational, include the highest-fee transactions first, which means the attacker's transactions take priority
  4. Legitimate transactions are pushed out of blocks and remain pending in the mempool, creating network congestion
  5. The attack continues as long as the attacker keeps submitting high-fee transactions and has capital to fund them

Ethereum-Specific Mechanics

On Ethereum, block stuffing typically involves deploying contracts or calling functions that consume large amounts of gas. The attacker submits transactions with high gas prices that fill the block's gas limit (currently 30 million gas), leaving no room for other transactions. The attacker can further optimize by using computationally intensive operations that consume gas without doing useful work:

// Conceptual example: a contract designed to consume gas
// The attacker calls this repeatedly with high gas price
contract GasConsumer {
    uint256 public counter;

    // Burns gas through storage writes (expensive operations)
    function consume(uint256 iterations) external {
        for (uint256 i = 0; i < iterations; i++) {
            counter = i;
        }
    }
}

On pre-EIP-1559 Ethereum, the attacker simply set a high gasPrice and miners included the highest-paying transactions. Post-EIP-1559, the attacker must pay the burned base fee plus a priority fee, making sustained attacks significantly more expensive.

Bitcoin-Specific Considerations

On Bitcoin, block stuffing works differently due to the UTXO model and longer block times. The attacker creates transactions that fill the ~4 MB block weight limit. However, Bitcoin's 10-minute average block interval means the attacker must sustain spending for much longer periods to achieve the same denial-of-service effect. A three-minute window on Ethereum (as in the Fomo3D attack) covers roughly 12 blocks, while the same window on Bitcoin would not even span a single block on average.

Bitcoin's fee rate auction is also simpler: the attacker must pay a high sats-per-vbyte rate across large transactions. With current fee levels, filling consecutive Bitcoin blocks for hours would cost tens of thousands of dollars with no mechanism to recover those fees, making sustained block stuffing attacks on Bitcoin economically impractical for most scenarios.

Real-World Examples

Fomo3D: The Definitive Block Stuffing Attack

The most well-documented block stuffing attack occurred on August 22, 2018, during the first round of Fomo3D, a "last key holder wins the pot" game on Ethereum. The game's mechanics were simple: buying a key resets a countdown timer. When the timer reaches zero, the last buyer wins a portion of the prize pool.

A player bought a Fomo3D key and then immediately launched a block stuffing attack, sending multiple high-fee transactions to their own addresses at 501 Gwei gas price. Each stuffed block cost approximately 4 ETH. The attack lasted roughly 175 seconds across blocks 6,191,896 through 6,191,909, preventing any other player (including bots) from submitting competing key purchases.

When the timer expired, the attacker claimed 10,469 ETH from the total pot of 21,811 ETH (approximately $2.8 million at the time). In the block immediately following the winning moment, there were 103 unsuccessful bid attempts from other players whose transactions had been crowded out. The attack was notably profitable: the cost of stuffing blocks was a small fraction of the prize won.

NFT Mint Gas Wars

While not always intentional attacks, competitive NFT mints produce effects nearly identical to block stuffing. During the Yuga Labs Otherdeed mint in May 2022, demand was so intense that gas fees spiked to over 8,000 Gwei. Users collectively spent over $150 million in gas fees, and more than $4.4 million in ETH was lost to failed transactions. Although this was driven by organic demand rather than a single malicious actor, the result was the same: legitimate Ethereum transactions were effectively priced out for hours.

These gas wars demonstrate that block stuffing does not always require malicious intent. Any scenario where participants are willing to pay extreme fees for time-sensitive transactions produces the same denial-of-service effect on other network users.

Why It Matters

Block stuffing attacks highlight a fundamental tension in blockchain design: the same fee market mechanism that enables permissionless access to block space also allows wealthy actors to monopolize it. This has implications for censorship resistance, fairness, and the practical usability of blockchain networks during congestion events.

For applications that depend on timely transaction inclusion (DeFi liquidations, auction mechanics, time-sensitive settlements), block stuffing can cause significant financial losses. Understanding this attack vector is important for smart contract developers designing on-chain games, auctions, or any mechanism with countdown timers.

Layer 2 solutions like Spark mitigate block stuffing risk by moving transactions off the base layer. Since L2 transactions do not compete for L1 block space, users can continue transacting even when the base layer is congested. This is one of the practical benefits of scaling solutions: they reduce the blast radius of block stuffing attacks on end users.

Defenses and Mitigations

EIP-1559 Base Fee Mechanism

Ethereum's EIP-1559 upgrade (August 2021) introduced a dynamic base fee that increases by up to 12.5% per block when blocks are more than 50% full. Because the base fee is burned rather than paid to validators, sustained block stuffing becomes exponentially more expensive:

  • After one full block, the base fee rises 12.5%
  • After several consecutive full blocks, compounding increases make each subsequent block significantly more costly to stuff
  • The burned ETH cannot be recovered, making the attack a pure cost to the attacker

This mechanism does not prevent short-duration attacks (a few blocks can still be stuffed at manageable cost), but it makes the multi-hour campaigns needed for sustained denial-of-service prohibitively expensive. For deeper analysis of fee market dynamics, see this research on fee markets.

Bitcoin's Natural Resistance

Bitcoin's protocol characteristics provide natural resistance to block stuffing:

  • 10-minute average block times require attackers to sustain fee expenditure for much longer periods
  • The fixed block size limit (4 million weight units) means each block's stuffing cost is predictable and cannot be amortized across larger blocks
  • Replace-by-fee allows legitimate users to bump their transaction fees to compete with stuffing transactions
  • No smart contract gas consumption: all Bitcoin transactions consume block weight proportionally to their serialized size, so the attacker cannot use computationally intensive tricks to fill blocks cheaply

Application-Level Defenses

Smart contract developers can design their applications to be more resistant to block stuffing:

  • Avoid countdown-to-zero mechanics where the last transaction before a deadline wins a prize
  • Use commit-reveal schemes that separate the action from the timing, making block stuffing less useful
  • Implement Dutch auctions or similar mechanisms that spread demand over time rather than concentrating it in a single block
  • Move time-sensitive operations to Layer 2 networks where block space is more abundant and less susceptible to base-layer congestion

Risks and Considerations

Cost-Benefit for Attackers

Block stuffing is only rational when the attacker's expected profit exceeds the cost of filling blocks. In the Fomo3D case, the ~50 ETH cost of stuffing was trivial compared to the 10,469 ETH prize. But for most scenarios, the cost of sustained block stuffing is high enough to deter attackers. The introduction of EIP-1559 and rising gas costs have further tilted the economics against attackers on Ethereum.

Collateral Damage

Block stuffing affects all network participants, not just the target. During a stuffing event, DeFi users may face failed liquidations, delayed settlements, or missed trading opportunities. Time-sensitive operations across the entire network are at risk, making block stuffing a blunt-force attack with broad collateral impact.

MEV and Block Builder Dynamics

On Ethereum, the rise of MEV extraction and block builders adds complexity. Sophisticated block builders may include or exclude transactions based on their own profit calculations, which can either amplify or reduce the effectiveness of block stuffing depending on the builder's incentives.

Relationship to Other Attacks

Block stuffing is related to but distinct from other blockchain attacks. Unlike a griefing attack, which locks up resources without direct profit motive, block stuffing is typically profit-driven. It differs from sandwich attacks or front-running, which target specific transactions rather than blocking all transactions. And unlike a 51% attack, block stuffing requires no control over the consensus mechanism: it works purely through economic competition for block space.

This glossary entry is for informational purposes only and does not constitute financial or investment advice. Always do your own research before using any protocol or technology.