Search for projects by name or address
Fluent is an Ethereum L2 that blends Wasm and EVM smart contracts into a unified execution environment (with SVM planned). Batches are preconfirmed by an AWS Nitro Enclave and finalize after a delay; challenges are resolved by SP1 ZK proofs.
Fluent is an Ethereum L2 that blends Wasm and EVM smart contracts into a unified execution environment (with SVM planned). Batches are preconfirmed by an AWS Nitro Enclave and finalize after a delay; challenges are resolved by SP1 ZK proofs.
Consequence: projects without a proper proof system fully rely on single entities to safely update the state. A malicious proposer can finalize an invalid state, which can cause loss of funds.
Learn more about the recategorisation here.
The section shows the operating costs that L2s pay to Ethereum.
2026 Apr 19 — May 11
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.
Fluent mainnet launch
2026 Apr 24th
Fluent activates its Ethereum L2 mainnet alongside the BLEND token launch.
There is no mechanism to have transactions be included if the sequencer is down or censoring.
State roots are accepted on the basis of an AWS Nitro Enclave preconfirmation and a 2d time delay; the SP1 ZK proof system exists in the contracts but is currently unreachable because CHALLENGER_ROLE has no holders. Effective security reduces to trust the TEE and wait the delay. See the State Validation section below for details.
All of the data needed for proof construction is published on Ethereum L1.
There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.
Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen.
All the data that is used to construct the system state is published on chain in the form of cheap blobs or calldata. This ensures that it will be available for enough time. Fluent posts transaction data to Ethereum L1 as EIP-4844 blobs. Blob hashes are pinned on the Rollup contract via submitBlobs and SP1 proofs verify that block data matches both the pinned hashes and the EIP-4844 commitments.
Fluent runs an optimistic batch lifecycle backed by SP1 ZK proofs for dispute resolution. (1) the sequencer commits a batch root via commitBatch; (2) EIP-4844 blob hashes are pinned via submitBlobs; (3) an AWS Nitro Enclave preconfirms the batch with an ECDSA signature whose key was admitted onchain only after an SP1 proof verified AWS’s attestation document for that key and that the document’s PCR0 (a fingerprint of the enclave image) matches the expected (audited) value; (4) within 1d 12h of acceptance, addresses with the CHALLENGER_ROLE can dispute via challengeBatchRoot or challengeBlock and the prover must resolve each challenge with an SP1 proof before the same window closes; (5) batches finalize either after a 2d L1 delay (finalizeBatches, no proof needed in the happy path) or immediately once all challenged blocks are proven (finalizeWithProofs).
Currently CHALLENGER_ROLE has no holders, so challengeBatchRoot and challengeBlock cannot be invoked. Because _provenBlocks is only populated inside resolveBlockChallenge (which itself requires an active challenge), no SP1 proof can be submitted onchain in this state and finalizeWithProofs reverts. Every batch therefore finalizes purely through the time-based path, and effective security reduces to trust the TEE plus the 2d delay until the admin grants the role.
The PROVER, EMERGENCY, and CHALLENGER roles on the Rollup are gated by access control; see the Permissions section for the current holders.
Funds can be stolen if an invalid batch is preconfirmed by a compromised AWS Nitro Enclave and no permissioned challenger disputes it before the challenge window closes.
Name | Hash | Repository | Verification | Used in | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00e3...7334 | Code unknown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x0085...311b | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The metrics include upgrades on the currently used proxy contracts. Historical proxy contracts and changes of such are not included.
The operator is the only entity that can propose blocks. A live and trustworthy operator is vital to the health of the system. Sequencing and proof submission are also permissioned at launch: only allowlisted addresses can submit batches and SP1 proofs to the Rollup. See the Permissions section for current role holders.
MEV can be extracted if the operator exploits their centralized position and frontruns user transactions.
There is no general mechanism to force the sequencer to include the transaction.
Users can be censored if the operator refuses to include their transactions.
The user initiates the withdrawal by submitting a regular transaction on this chain. When the block containing that transaction is settled the funds become available for withdrawal on L1. ZK proofs are required to settle blocks. Finally the user submits an L1 transaction to claim the funds. On Fluent, the message hash enters the block’s withdrawal root which becomes part of the next batch root; once the batch is finalized, an address with RELAYER_ROLE delivers the message on L1 via receiveMessageWithProof with two Merkle proofs (block-against-batch and message-against-block). First delivery is permissioned, so withdrawals progress only when the relayer acts; if a delivered message’s L1-side execution reverts, anyone can retry via the permissionless receiveFailedMessage.
Funds can be frozen if the RELAYER_ROLE holder stops delivering L2->L1 messages on L1, since first delivery is permissioned and there is no user-initiated bypass.
After a batch is preconfirmed by the AWS Nitro Enclave, withdrawals can be released without waiting for finalization, subject to per-token hourly and daily caps enforced by the FastWithdrawalList registry. ETH and WETH share a bucket to prevent cap evasion.
Funds can be stolen if the AWS Nitro Enclave attestation key is compromised and the operator preconfirms an invalid batch within the rate-limited window.

schedule operations on the timelock; the configured min-delay must elapse before they can be executed.
submit SP1 ZK proofs that resolve challenged batches and accelerate finalization via finalizeWithProofs.
AWS Nitro Enclave attestation key admitted to preconfirm batches; binds the optimistic fast-withdrawal path.
deliver L2->L1 messages on L1 via receiveMessageWithProof; this is the only entry point for first-time delivery, so user withdrawals progress only when a holder of this role acts (failed-execution retries via receiveFailedMessage are permissionless once a message has been delivered at least once).
A Multisig with 4/5 threshold.
Member of FluentMultisig.

Per-token rate-limit registry for the optimistic (preconfirmed) fast-withdrawal path. Enforces hourly and daily caps using rolling windows keyed by block timestamp; related tokens (e.g. ETH and WETH) can be aliased to a shared bucket to prevent cap evasion.
Bridge core for Fluent. Routes deposits from L1 gateways into a FIFO queue consumed by the sequencer, and lets relayers process L2->L1 messages with two Merkle proofs against the latest preconfirmed or finalized batch root. Custodies bridged ETH on L1 (gateways forward ETH here on deposit). UUPS-upgradeable; upgrades and gateway-whitelist / oracle / pause changes are gated by DEFAULT_ADMIN_ROLE.

All supported tokens in this escrow are included in the value secured calculation.
OpenZeppelin TimelockController used to delay privileged operations. PROPOSER_ROLE schedules calls; the configured minimum delay must elapse before EXECUTOR_ROLE can execute them; CANCELLER_ROLE can drop scheduled calls.
Core Fluent rollup contract. Sequencers commit batch roots and EIP-4844 blob hashes; an AWS Nitro Enclave preconfirms each batch via a signature whose key is bound to a PCR0 measurement verified by SP1; participants holding CHALLENGER_ROLE can dispute and the prover resolves disputes with SP1 ZK proofs; batches finalize after a block-count delay or immediately once all blocks are proven.
Verifies AWS Nitro Enclave attestations onchain. The enclave’s signing key is admitted only after an SP1 proof confirms its attestation matches the expected PCR0 measurement, binding preconfirmation authority to audited enclave code.
Verifies AWS Nitro Enclave attestations onchain. The enclave’s signing key is admitted only after an SP1 proof confirms its attestation matches the expected PCR0 measurement, binding preconfirmation authority to audited enclave code.
The current deployment carries some associated risks:
Funds can be stolen if a contract receives a malicious code upgrade. There is no delay on code upgrades (CRITICAL).
Name | Hash | Repository | Verification | Used in | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00e3...7334 | Code unknown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x0085...311b | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||