Search for projects by name or address
Facet v1 is a based rollup built on OP-Succinct. It uses FCT as its native gas token, which is mintable by burning ETH on L1.
Facet v1 is a based rollup built on OP-Succinct. It uses FCT as its native gas token, which is mintable by burning ETH on L1.
The project will move to Stage 0 because:
The proof system does not meet the minimum trusted setup requirements defined in the L2BEAT trusted setup assessment framework.
Not all onchain verifiers’ smart contracts can be independently regenerated from the verifier source code.
2025 May 31 — 2026 May 31
The section shows the operating costs that L2s pay to Ethereum.
2025 May 31 — 2026 May 31
This section shows how "live" the project's operators are by displaying how frequently they submit transactions of the selected type. It also highlights anomalies - significant deviations from their typical schedule.
No State updates have been performed for the past 12d 10h 57m (since 2026 May 19, 17:15 UTC). These typically occur every 6h on average.
All liveness anomalies detected for this project in the last 30 days, helping you review recent downtime and availability issues.
No State updates have been performed for the past 12d 10h 57m (since 2026 May 19, 17:15 UTC). These typically occur every 6h on average.
SP1 proof system deployed
2025 Jul 2nd
Facet launches its optimistic rollup contract with SP1 zk fault proofs.
Actors watching the chain can challenge state proposals, and challenged proposals must provide ZK proofs. SNARKs are zero knowledge proofs that ensure state correctness, but require trusted setup.
All of the data needed for proof construction is published on Ethereum L1.
Users can exit funds at any time because contracts are not upgradeable.
Anyone can propose blocks if accompanied by a validity proof. Only the whitelisted proposers can propose state roots for recent blocks optimistically. Anyone can propose optimistically for L2 blocks that are older than 14d.
New requirements coming soon
The proof system does not meet the minimum trusted setup requirements defined in the L2BEAT trusted setup assessment framework.
Not all onchain verifiers’ smart contracts can be independently regenerated from the verifier source code.

Facet implements a dual-track proving system that combines optimistic proposals with bonds with ZK validity proofs. The system allows bypassing the 7-day fraud proof window by providing a ZK proof.
The system operates on two parallel tracks: an optimistic track where whitelisted proposers submit state roots with ETH bonds that can be challenged within a time window, and a validity-proof track where anyone can submit direct ZK proofs for immediate resolution. Validity proofs bypass the optimistic flow and can invalidate multiple incorrect optimistic proposals simultaneously targeting the same state root. When optimistic proposals are challenged, proposers must defend their claims by providing ZK proofs within the proving window.
The system uses Succinct’s SP1 zkVM and Prover Network to generate zero-knowledge proofs that verify L2 state transitions. Anyone can submit a validity proof through the proveBlock() function of the Rollup contract to bypass the optimistic flow and settle an anchor block. Submitting a validity proof during a challenge settles the dispute in a single transaction.
Onchain verifier
Onchain verifier
Onchain verifier | ||
Onchain verifier |
Silenced discovery.
Silenced discovery.
| contract L2Bridge (0x016bE6d77b783aBdDccaF3fea49ffa9c1CA660D4) { | |
| +++ description: L2Bridge is an ERC20 minter counterpart to an L1 bridge. This contract is used to mint new ERC20 tokens on the L2 once a token deposit is made on the L1. Note that the token received on L2 could have a different ticker/symbol than the token sent on L1. | |
| values.totalSupply: | |
| - | 1000000000000000 |
| + | "52000000000000000" |
| } |
| contract L2ToL1MessagePasser (0x4200000000000000000000000000000000000016) { | |
| +++ description: L2ToL1MessagePasser is a contract that allows messages to be sent from the L2 to the L1, used to send withdrawal requests from the L2 to the L1. | |
| values.messageNonce: | |
| - | "1766847064778384329583297500742918515827483896875618958121606201292619931" |
| + | "1766847064778384329583297500742918515827483896875618958121606201292619932" |
| } |
Whitelisted Proposer changed. Config changes only (our side) for the bridge.
Whitelisted Proposer changed. Config changes only (our side) for the bridge.
| contract Rollup (0x686E7d01C7BFCB563721333A007699F154C04eb4) { | |
| +++ description: Rollup contract for Facet. This is the core contract that manages the state of the rollup and its proof system. | |
| values.whitelistedProposers.0: | |
| - | "eth:0x23B0caA3782b5CE6Be7A54655A5DD2791335EAFC" |
| + | "eth:0x615452db5467849689E98a8C5C242A96cF768a94" |
| } |
Initial discovery.
Initial discovery.
| + | Status: CREATED |
| contract L2Bridge (0x016bE6d77b783aBdDccaF3fea49ffa9c1CA660D4) | |
| +++ description: L2Bridge is an ERC20 minter counterpart to an L1 bridge. This contract is used to mint new ERC20 tokens on the L2 once a token deposit is made on the L1. Note that the token received on L2 could have a different ticker/symbol than the token sent on L1. |
| + | Status: CREATED |
| contract L2ToL1MessagePasser (0x4200000000000000000000000000000000000016) | |
| +++ description: L2ToL1MessagePasser is a contract that allows messages to be sent from the L2 to the L1, used to send withdrawal requests from the L2 to the L1. |
Discovery rerun on the same block number with only config-related changes.
Discovery rerun on the same block number with only config-related changes.
| contract L1Bridge (0x4E2eBa30a786c0643699b92234d74a71e958C08E) { | |
| +++ description: L1Bridge is an ETH bridge built on top of Rollup contract. It is the selected canonical bridge for this risk analysis. It used to bridge ETH from L1 to L2. Note that the token received on L2 has a different ticker/symbol than the token sent on L1. | |
| type: | |
| - | "EOA" |
| + | "Contract" |
| proxyType: | |
| - | "EOA" |
| + | "immutable" |
| template: | |
| + | "facet/L1ETHBridge" |
| sourceHashes: | |
| + | ["0x2428a7345462c1359eba9d5cf1d2749c05cb9419787b7e2914c411bb0c244867"] |
| description: | |
| + | "L1Bridge is an ETH bridge built on top of Rollup contract. It is the selected canonical bridge for this risk analysis. It used to bridge ETH from L1 to L2. Note that the token received on L2 has a different ticker/symbol than the token sent on L1." |
| sinceTimestamp: | |
| + | 1754512679 |
| sinceBlock: | |
| + | 23084460 |
| values: | |
| + | {"$immutable":true,"depositNonce":1,"l2Bridge":"eth:0x016bE6d77b783aBdDccaF3fea49ffa9c1CA660D4","owner":"eth:0x0000000000000000000000000000000000000000","paused":false,"rollup":"eth:0x686E7d01C7BFCB563721333A007699F154C04eb4","withdrawalDelay":0} |
| implementationNames: | |
| + | {"eth:0x4E2eBa30a786c0643699b92234d74a71e958C08E":"L1Bridge"} |
| category: | |
| + | {"name":"Canonical Bridges","priority":2} |
| } |
| contract Rollup (0x686E7d01C7BFCB563721333A007699F154C04eb4) { | |
| +++ description: Rollup contract for Facet. This is the core contract that manages the state of the rollup and its proof system. | |
| type: | |
| - | "EOA" |
| + | "Contract" |
| proxyType: | |
| - | "EOA" |
| + | "immutable" |
| template: | |
| + | "facet/Rollup" |
| sourceHashes: | |
| + | ["0xd5ecfadcad80a6370fcf20fd9285959bf3452352c79ba06748998ea55cad3732"] |
| description: | |
| + | "Rollup contract for Facet. This is the core contract that manages the state of the rollup and its proof system." |
| sinceTimestamp: | |
| + | 1754512643 |
| sinceBlock: | |
| + | 23084457 |
| values: | |
| + | {"$immutable":true,"AGG_VKEY":"0x0083a8b50160475a7a5911c03dfdee30f6c8a83112a71c5c1125cfb96148b8c2","anchorL2BlockNumber":1721260,"anchorProposalId":0,"anchorRoot":"0x88b54f3a73b2cbb7f29caae53a780a8b4974c5e0bd157ad3c7bb122b72939bcc","canonicalProposalFor":[],"canonicalProposalIdFor":[],"CHALLENGER_BOND":"10000000000000000000","computeL2Timestamp":[],"FALLBACK_TIMEOUT_SECS":1209600,"getAnchorRoot":["0x88b54f3a73b2cbb7f29caae53a780a8b4974c5e0bd157ad3c7bb122b72939bcc",1721260],"getProposalsLength":1,"isInFallbackWindow":[],"L2_BLOCK_TIME":12,"L2_START_TIMESTAMP":1754499659,"l2BlockAge":[],"MAX_CHALLENGE_SECS":604800,"MAX_PROVE_SECS":604800,"owner":"eth:0xb2B01DeCb6cd36E7396b78D3744482627F22C525","PROPOSAL_INTERVAL":1800,"PROPOSER_BOND":5000000000000000,"RANGE_VKEY_COMMITMENT":"0x43f01f7522e77ddc0bea30de6cb8075608a0d0c906660e4f5f430a1e5e170829","renouncedOwner":"eth:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001","ROLLUP_CONFIG_HASH":"0x9554c3fe04d8bd05d2dff01471781e1d9fbbdcfa58bda686ad883fe5451fd97c","sequencerInbox":"eth:0x00000000000000000000000000000000000face7","VERIFIER":"eth:0x70C7FdB9e543bD15cd392df04e6d4BD05AfD8A66","version":"1.0.0","whitelistedProposers":["eth:0x23B0caA3782b5CE6Be7A54655A5DD2791335EAFC"]} |
| implementationNames: | |
| + | {"eth:0x686E7d01C7BFCB563721333A007699F154C04eb4":"Rollup"} |
| category: | |
| + | {"name":"Local Infrastructure","priority":5} |
| } |
| + | Status: CREATED |
| contract SP1Verifier (0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459) | |
| +++ description: Verifier contract for SP1 proofs (v5.0.0). |
| + | Status: CREATED |
| contract FacetSafeModule (0x3235AdE33cF7013f5b5A51089390396e931e6BCF) | |
| +++ description: Module that allows the Safe to send Facet transactions. |
| + | Status: CREATED |
| contract SP1Verifier (0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5) | |
| +++ description: Verifier contract for SP1 proofs (v5.0.0). |
| + | Status: CREATED |
| contract SP1VerifierGateway (0x70C7FdB9e543bD15cd392df04e6d4BD05AfD8A66) | |
| +++ description: This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract. |
| + | Status: CREATED |
| contract Facet Multisig (0xb2B01DeCb6cd36E7396b78D3744482627F22C525) | |
| +++ description: None |
| + | Status: CREATED |
| contract FacetSafeProxy (0xC9F2d55C56Ef9fE4262c4d5b48d8032241AF4d25) | |
| +++ description: Helper of the Safe Module that allows to send Facet transactions. |
One line FacetEtherBridgeV6 upgrade: The gas limit for bridgeAndCall() transactions is now hardcoded to 50M.
One line FacetEtherBridgeV6 upgrade: The gas limit for bridgeAndCall() transactions is now hardcoded to 50M.
| contract FacetEtherBridgeV6 (0x0000000000000b07ED001607f5263D85bf28Ce4C) { | |
| +++ description: Official Facet implementation of the Ether Bridge. | |
| sourceHashes.1: | |
| - | "0xc6fc9d901cf59527db2a86ff96ebd61f6a469b56100f1a94498e2f068a91f50b" |
| + | "0xd5a977325a2b053491581c54141a59a425e2fe510cdfa1cd3b85ab45ca437a7e" |
| values.$implementation: | |
| - | "0x100524b68fe88035623F1309Bb3Db9b64e924724" |
| + | "0x68c56f4D88846A4Cdce966d92D92a0636baf40FE" |
| } |
There is no privileged entity that sequences transactions or produces blocks. This activity is permissionless and open to anyone.
Because the state of the system is based on transactions submitted on the underlying host chain and anyone can submit their transactions there it allows the users to circumvent censorship by interacting with the EOA inbox on the host chain directly.
Facet uses a based sequencing model where transaction ordering is determined entirely by Ethereum L1. Users submit transactions to an immutable address on Ethereum with transaction information encoded as RLP calldata. Facet blocks preserve the exact order in which Ethereum includes these transactions. Additionally, L1 smart contracts can create Facet transactions by emitting events with the Facet event signature, where the event data payload contains the same RLP-encoded transaction data.
The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. The process of block finalization takes a challenge period of 7d to complete. The challenge period can be shortened if the block is proven by providing a ZK proof.
Facet does not designate a canonical bridge and allows multiple bridges to be deployed that use the same Rollup state for depositing and withdrawing assets. Each bridge has its own smart contract counterpart on the L2, meaning the same L1 tokens bridged through different bridges will result in different L2 token representations. The risk analysis presented in this page is based on an arbitrarily selected ETH bridge built on top of Rollup.sol that does not introduce additional trust assumptions. However, there can be multiple other bridges to Facet that introduce additional trust assumptions, such as the FacetEtherBridgeV6 (0x0000000000000b07ED001607f5263D85bf28Ce4C) fast bridge that relies on a permissioned EOA as operator for withdrawal processing.
Facet uses FCT as its native gas token, which is minted through L1 gas consumption rather than being pre-minted. FCT issuance is directly tied to the amount of L1 ETH burned to pay calldata gas in Ethereum transactions, calculated as:
FCT minted = ETH burned for calldata × mint rate
ETH burned for calldata = L1 base fee × (total L1 gas cost - 21,000)
The system targets issuing ~78,300 FCT every 500 Facet blocks. If less than the target is minted in 500 blocks, the mint rate increases proportionally (up to a maximum 4x increase). If the target is reached in fewer than 500 blocks, the mint rate decreases proportionally (up to a maximum 75% decrease).
The maximum supply of FCT is ~1.65B. Once 50% of the supply is minted, the per-period target (now ~78,300) will be halved. It will be halved again at 75%, then at 87.5%, and so forth. The period target and period length are selected so that halvings will occur approximately every 5,256,000 blocks.
This mechanism is similar to standard OP Stack guaranteed gas markets, where L1 gas is burned to purchase L2 gas for deposits through an EIP-1559-style fee market. However, on Facet, gas purchased in this way accrues to the purchaser’s native balance on the L2, whereas in the OP Stack it can only be used for a single transaction.
.

Can propose state roots optimistically without a ZK proof. Note that anyone can propose with a ZK proof, and anyone can propose optimistically after the fallback timeout.
A Multisig with 2/3 threshold. It uses the following modules: FacetSafeModule (Module that allows the Safe to send Facet transactions).


Core rollup contract that manages the state of the rollup and its ZK fault proof system.
Deprecated entry point to deposit ERC20 tokens from host chain to this chain. Currently just holds ETH that the Facet multisig can withdraw.



Module that allows the Safe to send Facet transactions.
Helper of the Safe Module that allows to send Facet transactions.