Facet Docs
  • 1. Introduction
    • Overview of Facet Protocol
    • What is Layer 1+?
    • The Based Sovereign Rollup
  • 2. Getting Started
    • Connecting a Wallet
    • Sending Transactions
    • Bridging In (and Out)
    • What about Gas?
    • Facet Apps
  • 3. Technical Details
    • Introduction
    • Facet RPC & Explorer
    • Genesis Contracts
    • Facet Transactions
      • From Calldata
      • From Event Logs
    • Facet Typescript SDK
    • Facet Sol (Foundry)
    • Chain State Derivation
    • Running a Facet Node
    • Bridging Assets
    • Building an Optimistic Bridge on Facet
    • Basic Transaction Flow
    • Facet's Gas Mechanism
      • FCT Issuance Calculation
      • FCT Gas Fee Calculation
    • Security Audits
  • 4. Community & Support
    • FAQs
    • Comparison with Other Rollups
    • Micro-Grants
    • Community Resources
    • Brand Kit
Powered by GitBook
On this page
  • Trust-Minimized Bridges
  • How Bridging Works
  1. 3. Technical Details

Bridging Assets

PreviousRunning a Facet NodeNextBuilding an Optimistic Bridge on Facet

Last updated 5 months ago

A key feature of Facet is the removal of a canonical (official, built-in) bridge between L1 and Facet for assets such as ether. Bridging assets, of course, is still possible.

Trust-Minimized Bridges

As is the case with other rollups, anyone can build a trust-minimized bridge between Ethereum and Facet. Such third-party bridges can still use state root mechanisms and various proof technologies to achieve trust-minimized cross-chain transfers. The only difference is that these bridges on Facet are not "enshrined" - or built into the protocol in a way links them to a privileged governance system within the rollup itself. To put it another way - bridges are market-driven, and users retain the freedom to adopt or abandon any given bridge without affecting the underlying protocol.

Facet is optimized for building OP-style Optimistic Bridges; that is, bridges that use Optimism's suite of contracts and rely on the L2ToL1MessagePasser predeploy.

How Bridging Works

From a user's perspective, bridging an asset from L1 to Facet is effectively the same experience. You send an asset to an L1 smart contract, which mints an equivalent asset on the rollup. You would then burn the rollup asset to redeem the L1 asset.

Let's explore bridging on Facet with the below diagram:

1

Submit Deposit

User connects to a DEX (e.g., FacetSwap.com) and deposits an asset (e.g. 0.5 ETH) into a L1 bridge contract. With Facet, all bridges are third-party contracts; there are no enshrined/canonical bridges managed by the rollup.

Facet Apps like FacetSwap.com rely on a trust-minimized bridge deployed by the Facet team. This bridge is a fork of Optimism's trust-minimized bridge.

2

Send Transactions

In parallel, other users can also send transactions to the Facet Inbox Address:

0x00000000000000000000000000000000000face7
3

Execute Transactions

L1 Validators are natively sequencing and executing L1 transactions through the EVM. As Bridge contract deposits are executed, a contract-initiated call is made, emitting an event that is identified by the Facet event signature:

 0x00000000000000000000000000000000000000000000000000000000000face7

This event contains a data payload in the same RLP encoded format found in the calldata of an EOA-originated Facet transaction to the Facet Inbox Address.

4

Secure Transactions in L1 History

EVM execution sequences and secures both Transactions and Events into L1's immutable history.

5

Fetch Ethereum Transaction History

Facet Verifiers (nodes) actively monitor Ethereum via an Ethereum node, parsing L1 transaction history and event logs for Facet payloads.

6

Derive State

7

Query Data

Facet state can then be queried from a Facet geth. The DEX, for example, is connected to both an Ethereum node and Facet geth, displaying both the user's reduced L1 ETH balance and their incremented Facet WETH balance.

Bridging back out to L1 works similarly to other trust-minimized bridging solutions on L2 networks, requiring three transactions:

1

Initialize the Withdrawal on Facet

The first transaction initiates a burn of the Facet asset (WETH) on the Facet network. This effectively signals the user's intent to redeem their asset on Ethereum L1.

2

Prove the Withdrawal on Ethereum

The second transaction involves proving the burn of the Facet asset on the L1. You must wait for the Facet state root to be posted to Ethereum. Bridges can configure the frequency of state root posting at their own discretion (e.g. hourly, daily, etc.).

3

Finalize the Withdrawal on Ethereum

Once the withdrawal is proven and the challenge period has passed, a third transaction finalizes the withdrawal, redeeming the L1 asset from the bridge contract. Bridges will configure their own challenge periods.

Nodes then derive state (e.g., crediting the user with 0.5 WETH) by extracting Facet payloads and processing them through Facet geth. See here for a closer look at .

State Derivation