Facet V2 Architecture

Facet has these components:

  1. Standard Ethereum Node: maintains current state of Ethereum L1.

  2. Facet Node

    1. Talks to the Ethereum node to get every Ethereum call in every block (via debug_traceBlockByNumber).

    2. Examines each call to determine whether it is a valid Facet Transaction.

    3. For each call that is, constructs and delivers payload for Facet Geth (using the Engine API).

  3. Facet Geth

    1. A fork of go-ethereum.

    2. Communicates only with Facet Node.

    3. Computes Facet State from incoming Facet Node payloads.

Each step is deterministic:

  1. All Ethereum nodes deterministically arrive at the same state.

  2. Each Facet Node will construct the same Facet Payloads given the same underlying Ethereum state.

  3. go-ethereum processes incoming transactions deterministically according to EVM rules.

All Facet State is unambiguously determined by Ethereum's transaction history. This is what makes Facet a rollup.

Facet Apps read from Facet node and write Facet transactions to Ethereum (see Facet Transaction Structure).

Developers accustomed to the Ethereum ecosystem will find it easy to build on Facet, as the same tools and workflows apply. This includes using Solidity for smart contract development, standard Ethereum testnets for testing, and popular IDEs like Remix.

Last updated