Does Facet V2 Post State Roots?

In a blockchain a state root is a fingerprint (hash) that summarizes the entire state of the blockchain. If two people agree on the state root the must also agree on every detail of the blockchain's state. In fact, if two people agree on a state root it's possible to prove whether specific (potentially disputed) transactions really happened (and contributed to the blockchain's state).

Typically rollups post their state roots to an Ethereum L1 smart contract. In fact, L2Beat says that to be even a "Stage 0" rollup a project must post state roots to Ethereum! Does Facet?

How Do State Roots Work?

The purpose of posting state roots is to enable trust-minimized bridging from an L2 to Ethereum. When a state root is available on Ethereum, Ethereum smart contracts (like the bridge contract that holds all bridged ether) can use them to help determine whether someone's bridge withdrawal request is valid.

This is not possible without state root posting because L1 smart contracts cannot access L2 state unassisted, and a user's eligibility to withdraw is based on actions they took on the L2 that are reflected only in L2 state.

State Roots Summarize Reality

They don't create it. In a rollup, the ordering and content of L1 transactions unambiguously and objectively determine the state of the rollup blockchain. Humans have the ability to derive rollup state from L1 transactions by running a rollup node, and so they don't need to observe state root postings to know the accurate state of a rollup.

L1 smart contracts, on the other hand, cannot run rollup nodes and so the only way they can learn about L2 state is through state root postings.

So the question is: should an L2 protocol require that L1 smart contracts have access to rollup state? Or is it sufficient for the protocol to mandate that humans can compute the state?

Does Facet Post State Roots?

No. The Facet protocol does not require that any specific L1 smart contract must receive Facet state root postings. This means that there is no in-protocol mechanism for informing Ethereum smart contracts about the state of Facet, and no in-protocol mechanism for building a trust-minimized bridge.

Why? Because Facet is an L1+ and therefore cannot have dependencies outside of the Ethereum L1. Having anointed smart contracts that are "special" under the rules of the Facet protocol would violate this principle.

More importantly it would be insecure: a state root posting mechanism is only as secure as the smart contract logic that uses the state roots to make decisions. Because in the case of every L2 that uses state roots these smart contracts are upgradeable by "security councils," all current state root posting schemes have back doors and are not secure.

Does This Mean No Bridges?

The Facet protocol doesn't require state root posting, but it welcomes it at the application level! Any application on Facet is free to implement state root posting and a trust-minimized bridge.

Even if such a scheme had all the same security issues we see in other L2s it would be far less of an issue. On the application level users have the choice between who to trust, and a security failure doesn't mean bringing down the entire network.

By avoiding the temptation to "bundle" bridge software with rollup software, Facet preserves its status as a neutral L1+ while enabling the free market to select the best bridge applications.

Last updated