# Fuel v1 Markdown version of https://l2beat.com/layer2s/projects/fuelv1 ## Summary **Warning:** This project is archived and no longer maintained. - Total Value Secured: $693.47 (-1.62% compared to seven days ago; canonically bridged $693.47, natively minted $0.00, externally bridged $0.00; 0.00% with additional trust assumptions compared to the tokens involved and the Stage assigned to the project's canonical messaging bridge) - Stage: Stage 2 - Type: Optimistic Rollup - Purpose: Payments - Host chain: Ethereum ### Risks - Sequencer failure: Self sequence (sentiment: good) - State validation: Fraud proofs (1R) (sentiment: good) - Data availability: Onchain (sentiment: good) - Exit window: ∞ (sentiment: good) - Proposer failure: Self propose (sentiment: good) ### About Fuel v1 is the first Optimistic Rollup live on Ethereum, supporting payments. ## Value Secured Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/fuelv1#tvs). - [TVS chart (JSON)](https://l2beat.com/api/scaling/tvs/fuelv1) - [TVS breakdown by token (JSON)](https://l2beat.com/api/scaling/tvs/fuelv1/breakdown) ## Milestones & Incidents - 2020-12-31: [Fuel v1 is live on Mainnet](https://twitter.com/fuellabs_/status/1344707195250896899). First trustless Optimistic Rollup is live on Mainnet. ## Risk summary ### Funds can be stolen if 1. there is no one that checks the published state. Fraud proofs assume at least one honest and able validator. ### Funds can be frozen if 2. the operator refuses to include their transactions and users lack resources to propose blocks themselves. ### MEV can be extracted if 3. the operator exploits their centralized position and frontruns user transactions. ## Risk analysis ### Sequencer failure Self sequence (sentiment: good) In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. ### State validation Fraud proofs (1R) (sentiment: good) Fraud proofs allow actors watching the chain to prove that the state is incorrect. Single round proofs (1R) only require a single transaction to resolve. ### Data availability Onchain (sentiment: good) All of the data needed for proof construction is published on Ethereum L1. ### Exit window ∞ (sentiment: good) Users can exit funds at any time because contracts are not upgradeable. ### Proposer failure Self propose (sentiment: good) Anyone can be a Proposer and propose new roots to the L1 bridge. ## Stage Fuel v1 is a Stage 2 Optimistic Rollup. ### Scope of assessment #### In scope - L1 core contracts - Gas token #### Not in scope - Source code implementation of the spec - Non-gas tokens - Derivation logic spec Fuel v1 provides the infrastructure to support token transfers and HTLC swaps. Arbitrary contracts are not supported. ### Stage 0 - [x] A complete and functional proof system is deployed. - [x] There are at least 5 external actors who can submit fraud proofs. - [x] The project calls itself a rollup. - [x] State roots are posted to Ethereum L1. - [x] Inputs for the state transition function are posted to Ethereum L1. - [x] A source-available node exists that can recreate the state from Ethereum L1 data. Please note that the L2BEAT team has not verified the validity of the node source code. [View code](https://github.com/cartesi/rollups/tree/v1.0.2/offchain) ### Stage 1 - [x] Principle: Compromising ≥75% of the Security Council is the only way (other than bugs) for a rollup to indefinitely block an L2→L1 message (e.g. a withdrawal) or push an invalid L2→L1 message (e.g. an invalid withdrawal) with a <7d exit window. - [x] Users are able to exit without the help of the permissioned operators. ### Stage 2 - [x] Fraud proof submission is open to everyone. - [x] Users have at least 30d to exit as the system cannot be upgraded. ## Data availability ### All data required for proofs is published onchain All the data that is used to construct the system state is published onchain in the form of cheap calldata. This ensures that it will always be available when needed. **References** - [Background - Fuel documentation](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Fuel%20Overview.html#background) ## State derivation ### Node software The node software source code can be found [here](https://github.com/FuelLabs/fuel-js). ### Genesis state The bridge contracts deployments are the genesis state of the rollup chain. The bridge contracts of mainnet and testnet (rinkeby) deployment block number are available [here](https://github.com/FuelLabs/fuel-js/blob/master/packages/logic/src/genesis.js). ### Data format The data format details are documented in the Data Structure subsection [here](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/System%20Description%20Primer.html). ## State validation ### Fraud proofs After some period of time, the published state root is assumed to be correct. For a certain time period, usually one week, anyone can submit a fraud proof that shows that the state was incorrect. **Risks** - Funds can be stolen if there is no one that checks the published state. Fraud proofs assume at least one honest and able validator. **References** - [Background - Fuel documentation](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Fuel%20Overview.html#background) ## Updates Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/fuelv1#updates). ## Operator ### The system has a centralized sequencer While forcing transaction is open to anyone the system employs a privileged sequencer that has priority for submitting transaction batches and ordering transactions. **Risks** - MEV can be extracted if the operator exploits their centralized position and frontruns user transactions. **References** - [Architecture: A High-Level View - Fuel documentation](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Fuel%20Overview.html#architectureahighlevelview) - [Mainnet deployment parameters - Fuel documentation](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Deployment%20Parameters.html#mainnet) ### Users can force any transaction Because the block production is open to anyone if users experience censorship from the operator they can propose their own blocks which would include their transactions. **Risks** - Funds can be frozen if the operator refuses to include their transactions and users lack resources to propose blocks themselves. **References** - [Architecture: A High-Level View - Fuel documentation](https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Fuel%20Overview.html#architectureahighlevelview) ## Withdrawals ### Regular exit 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. The process of settling a block usually takes several days to complete. Finally the user submits an L1 transaction to claim the funds. **References** - [Withdraw.yulp#L40 - Fuel documentation](https://github.com/FuelLabs/fuel-v1-contracts/blob/master/src/Withdraw.yulp#L40) ## Smart contracts ### Ethereum #### Fuel Addresses: [0x6880f6Fd960D1581C2730a451A22EED1081cfD72](https://etherscan.io/address/0x6880f6Fd960D1581C2730a451A22EED1081cfD72#code) **References** - [Source Code](https://github.com/FuelLabs/fuel-v1-contracts/blob/master/src/Fuel.yulp)