Miner Extractable Value (MEV) and Programmable Money: The Good, The Bad, and The Ugly
Blockstream Research

Miner Extractable Value (MEV) and Programmable Money: The Good, The Bad, and The Ugly

Kiara Bickers
Kiara Bickers

The core of Bitcoin’s security model relies on this basic game theory—miners, armed with their digital pickaxes, are in a relentless chase for profit. And it’s this pursuit that keeps the network secure. Basic vanilla mining involves producing blocks to earn the block rewards and transaction fees, but have you ever considered that miners might have other ways to extract value from the blockchain beyond this standard mining process? Are there other avenues for profit on the blockchain where miners can leverage their unique position as validators?

What is MEV?

In proof-of-work systems, “Miner Extractable Value” (MEV) is a term that describes the profits miners can earn by manipulating how transactions are prioritized, excluded, rearranged, or altered in the blocks they mine. However, since Ethereum’s upgrade to Ethereum 2.0, which moved the network to proof-of-stake, the concept of MEV has taken on a new name and is now referred to as “Maximal Extractable Value” in proof-of-stake systems. In this context, it’s the block proposers instead of miners—who are the validators—that have the opportunity to extract this value.

Miners (or validators in Ethereum) have a special role in these networks confirming transactions in blocks. Their position places them a step ahead of other users and allows them to determine the final order of transactions in the chain. Inside a block, transactions are typically ordered with the highest fees at the top, but every now and again opportunities open up that would allow miners to take an additional profit by strategically changing the order of transactions for their own benefit.

You might think, what’s the harm in letting miners take a bit of extra profit off the top? The concerns only start to crop up when some of these miners, those equipped with more advanced analytical capabilities and more powerful computing, can identify and exploit MEV profit opportunities more effectively than others.

These opportunities might not always be easy to spot, but the more value that can be extracted through analyzing the chain, the stronger the incentive becomes for research teams equipped with bots to do this work. Over time, this disparity in miner's profit-making ability creates a trend toward centralization within the network. Ultimately undermining the core principle of the blockchain: decentralization.

This is exactly the scenario the Bitcoin developer community is aiming to prevent when considering how best to manage more expressivity on Bitcoin.

Why Do We Want Programmable Money?

Historically, Bitcoin has operated with relatively simple smart contracts. However, this model struggles with even moderately complex transactions. Bitcoin Script can only validate authentication data, it does not have the capability to impose speed limits on transactions or define coin destinations because Bitcoin Script does not have access to transaction data.

As a somewhat separate issue, working with and writing Bitcoin smart contracts can be challenging for users who do not fully grasp its security requirements. A proposed feature, known as "vaults," aims to solve some of these pain points by introducing time-locked conditions for transactions. Essentially, vaults could serve as an emergency “escape hatch,” allowing users to recover their funds in the event of compromised private keys. But features like this are only possible with more expressivity.

Ethereum is widely recognized for its highly expressive scripting capabilities, but it also notably struggles with the issue of MEV. Most users generally assume that Bitcoin has no MEV, in stark contrast to Ethereum, which is viewed as a wild frontier for it. But is this the full story?

Do more expressive smart contracts automatically incentivize more MEV scenarios?

There are several factors that contribute to MEV: (1) mempool transparency, (2) smart contract transparency, and (3) smart contract expressivity. Each of these factors opens up new channels for MEV; we will review each here.

The Bad: (1) Mempool Transparency

Like Bitcoin's mempool, the mempools of most blockchains are fully transparent, open, and visible, so that everyone can see what transactions are pending before being validated and confirmed in a block. Bitcoin blocks typically take about 10 minutes to find, which theoretically gives miners that same amount of time to take advantage and front-run.

In practice, on Bitcoin, this is not a source of MEV for a few reasons: (1) Bitcoin transactions are simple enough that no miners have a significant analytic advantage over other miners, and (2) Bitcoin transactions generally do not execute multi-asset transactions such as swaps or open trades that could be front-run.

Contrast this with Ethereum, which has some of the most complex multi-asset transactions taking place on public decentralized exchanges (DEXs). Officially the block time on Ethereum is 15 seconds, but during periods of high mempool traffic, the required gas fees for immediate block inclusion can easily exceed a hundred dollars. As a result, transactions with lower fees end up waiting minutes or even hours before being included in a block. This can extend the window for these nefarious front-running opportunities, already more prevalent on Ethereum due to the substantial value wrapped up in layer-2 tokens.

The Bad: (2) Smart Contract Transparency

In Bitcoin “smart contracts” are the simple locking and unlocking mechanism inherent in Bitcoin Script. The transaction values, sender, and receiver details are all publicly visible on the blockchain. While this complete and naked transparency is not ideal from a privacy perspective, it’s part of how Bitcoin allows all participants in the network to verify the full state of the blockchain. Any observer can analyze these contract details, potentially opening the door to certain MEV-related strategies.

But the Bitcoin scripting language is, by design, quite limited, focusing primarily on the basic functions of sending and receiving funds, and validating transactions with signatures or hashlocks. This simplicity inherently limits the scope for MEV strategies on Bitcoin, making such opportunities relatively scarce compared to other chains.

Platforms like Ethereum, Solana, and Cardano also have fully transparent smart contracts, but they diverge from Bitcoin by also having highly complex and expressive scripting languages. Their Turing-complete systems make it possible to theoretically execute virtually any computational task which has come to include: self-executing contracts, integration of real-world data through oracles, decentralized applications (dApps), layer-2 tokens, swaps within DEXs, and automated market makers (AMMs). These come together to foster a rich environment for MEV opportunities. Zero-knowledge-proof-based schemes, such as STARKex, could theoretically avoid some of these issues, but this trade-off would come with other complexities.

The Ugly: (3) Smart Contract Expressivity

The MEV opportunities are so lucrative on some chains that there are “MEV trading firms” bringing in “high five figures, mid six figures” in profits a month. This trend has become so prominent that there are public dashboards dedicated to scanning for profitable opportunities on Ethereum and Solana. Their profitability is generated by executing the full basket of MEV strategies: front-running, sandwich trading, token arbitrage, back-running, and liquidations to name a few. Each exploiting a different smart contract dynamics for profit.

Some of these MEV strategies apply to both layer-1 and layer-2.

  1. Generalized Front-Running: Bots scan the mempool for profitable transactions, and then front-run the original transaction for a profit.
  2. Sandwich Trading: The attacker places orders both before and after a large transaction to manipulate asset prices for profit. This strategy leverages the predictable price movement caused by the large transaction.

Then certain strategies are unique to layer-2 tokens and smart contracts.

  1. Arbitrage Across Different DEXs: Bots exploit price differences for the same asset on various DEXs by buying low on one and selling high on another.
  2. Back-Running in DeFi Bonding Curves: MEV bots capitalize on predictable price rises in DeFi bonding curves by placing transactions immediately after large ones, buying during uptrends, and selling for profit.
  3. DeFi Liquidations: MEV bots spot opportunities in DeFi lending where collateral values fall below set thresholds, allowing validator's to prioritize their transactions for buying the liquidated collateral at lower prices.

The complexity of contracts significantly contributes to the challenges associated with MEV.

  1. Re-Entrancy Attacks: These attacks exploit smart contract logic flaws, allowing attackers to repeatedly call a function before the first execution completes, extracting funds multiple times. In the context of MEV, skilled individuals can significantly profit from this, particularly in contracts with substantial funds.
  2. Interconnected Contracts and Global State: On platforms like Ethereum, smart contracts can interact, leading to chain reactions across several contracts from a single transaction. This interconnectivity enables complex MEV strategies, where a transaction in one contract may impact another, offering a chain reaction of profit opportunities.

Part of the problem here is that the total value created by tokens and dApps built on layer-2 often exceeds the value of the blockchain’s native asset on layer-1, undermining the validators incentive to select and confirm transactions purely based on fees.

To make matters worse, many of these opportunities are not strictly limited to network validators. Other network participants with MEV scanning bots can compete for these same opportunities, causing network congestion, raising gas fees, and elevating transaction costs. This scenario creates a negative externality for the network and its users, who are all affected by the price of higher transaction fees, as the chain becomes less efficient and more expensive to operate. MEV in DeFi is so common that users have almost accepted it as an invisible tax on everyone in the network.

Do these MEV opportunities naturally emerge as a byproduct of the highly expressive smart contracts, or is there an alternative route to the dream of fully programmable money?

Short of avoiding protocols with highly expressive smart contracts and layer-2 tokens, users can avoid some of these risks by utilizing protocols that support Confidential Transactions, like Liquid, that conceal transaction details. But unlike these platforms with more expressive scripting languages, Bitcoin lacks the ability to do things you would expect to be able to do with programmable money.

The Good: Trade-offs to Programmable Money

When considering the evolution of smart contracts on Bitcoin the options we are given are to (1) push the complexity off-chain, (2) cautiously integrate narrow or limited covenant functionalities, or (3) embrace the path of full expressivity. Let’s explore some of the proposals from each of these options.

(1) A New Structure for Off-Chain Contracts: ANYPREVOUT

Off-chain solutions, like the Lightning Network, aim to enhance Bitcoin’s scalability and functionality without burdening the mainchain, keeping transactions fast and fees low. This all sounds good so far.

SIGHASH_ANYPREVOUT (APO) is a proposal for a new type of public key that allows certain adjustments to a transaction even after it’s signed. It simplifies how transactions are updated, allowing transactions to refer to previous (UTXOs) more easily, making Lightning Network channels faster, cheaper, safer, and more straightforward, especially in resolving disputes.

Under the hood, APO is a new proposed type of sighash flag. Every Bitcoin transaction must have a signature to prove it’s legitimate. When creating this signature, you use a “sighash flag” to determine which parts of the transaction you are signing. With APO a sender would sign all outputs and none of the inputs, to commit the outputs of the transaction, but not specifically which transaction the funds are going to come from.

APO enables Eltoo, allowing users to exchange pre-signed transactions off-chain. However APO may inadvertently introduce MEV by making transactions reorderable. As soon as you allow a signature that’s binding the transaction graph you have the ability to swap out transactions. Inputs can be swapped, as long as the new inputs are still compatible with the signature.

(2) Covenants: CAT + CSFS and CTV

Covenants would allow users to control where coins can move, by imposing speed limits or setting specific destinations for coins in a transaction. There are two different categories of covenants: recursive and non-recursive.

  1. Recursive covenants allow coins to continually return to covenants of the same type.
  2. Non-recursive covenants limit this control to the next transaction, requiring the entire future path of the coins to be defined upfront.

CAT + CSFS is a covenant proposal that allows scripts to construct or define certain parts of a future transaction. CHECKSIGFROMSTACK (CSFS) verifies a signature against the data that OP_CAT constructed. By using CSFS to require the signature to match some dynamically constructed format from OP_CAT, we can define how these UTXOs can be spent in the future and create a recursive covenant, albeit clunkily.

OP_CHECKTEMPLATEVERIFY (CTV) is a way of creating non-recursive covenants. Instead of defining and verifying against specific parts of a transaction, CTV restricts how funds can be spent, without specifying the exact next address they must go to. It defines a “template” that the next transaction has to confirm.

One risk with recursive covenants might be possible to create a scenario where coins must follow a set of rules that repeat over and over, that get trapped in a loop without a way of getting out. Another is that, because covenants are transparent and self-executing they could open Bitcoin up to some of the MEV strategies we see on other chains.

What is the good news here?

The good news is that these proposals all introduce new expressivity!

Now what is the maximum amount of expressivity we can get?

(3) Full Expressivity: Simplicity

Simplicity is a blockchain-based programming language that differs from other scripting languages in that it is very low-level. It is not a language on top of Bitcoin Script or a new opcode within it, it’s an alternative to it. Theoretically, it’s possible to implement all covenant proposals within Simplicity, and implement many of the other contracts cypherpunks want from programmable money, but with less of the negative externalities of Ethereum.

Simplicity maintains Bitcoin’s design principle of self-contained transactions whereby programs do not have access to any information outside the transaction. Designed for both maximal expressiveness and safety, Simplicity supports formal verification and static analysis, giving users more reliable smart contracts.

Compare Simplicity and Simfony (Simplicity's front end) to: (1) Bitcoin covenant proposals and (2) scripting languages on other blockchains:

blockstable

The covenant proposals on Bitcoin Script, though much simpler than Simplicity, lack the expressivity to handle fee estimation in Script, due to Bitcoin's lack of arithmetic functions. There is no way to multiply or divide, no conditionals or stack manipulations opcodes; it is also very hard to estimate a reasonable fee to be associated with a given contract or covenant. Users end up with spaghetti code, where 80% of their contract logic is dedicated to trying to determine what their fee rate should be. Making these covenant contracts super complicated and difficult to reason about.

The EVM has looping constructs which makes static analysis of gas usage very difficult. Whereas with Script or Simplicity, you can just count each opcode, or recursively add up the cost of each function. Because Simplicity has a formal model, you can formally reason about program behavior. You cannot do this with Script even though you can do static analysis of resource usage.

Simplicity would provide users with the highest degree of expressiveness, along with other valuable features like static analysis and formal verification. Users are incentivized, though not restricted, to build smart contracts that are resistant to MEV. Additionally, a combination of different contracts together may give rise to MEV, even when individually they do not. This represents a fundamental trade-off.

The idea of advancing Bitcoin’s smart contract functionality is undeniably promising and exciting. But it’s important to acknowledge that all these proposals carry some degree of MEV risk—albeit likely not to the extent that we see on other chains. As we think about bringing more programmable money to Bitcoin, there are questions we have to ask:

  • Can we build a protocol with zero MEV risk, or is this an unattainable ideal?
  • Given the inherent risks of MEV in many proposals, what level of MEV risk is acceptable?
  • And finally, what represents the simplest proposal that offers the greatest degree of expressivity?

Each proposal has its own set of advantages and disadvantages. However, regardless of the direction we take, we should always aim to prioritize security and uphold the principle of decentralization.

For detailed updates and more information, keep an eye on the Blockstream Research 𝕏 feed.

Note: this article was originally published in Bitcoin Magazine and can be read here.

If you have specific preferences, please, mark the topic(s) you would like to read: