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
  • Facet Transaction Format
  • Sending Facet Transactions
  1. 3. Technical Details

Facet Transactions

Facet Transaction Format

Facet Transactions are similar to ordinary EIP-1559 Ethereum transactions as well as Optimism's Deposit transactions. Facet transactions have the EIP-2718 transaction type 0x46 (70 in base 10) and have the following fields:

  • chain_id: distinguishes the payload as being relevant only to Facet

    • mainnet chain_id is 1027303 (0xface7 in hex)

    • sepolia testnet chain_id is 16436858 (0xface7a in hex)

  • to: L2 recipient's address, be it an EOA or L2 contract. Blank for contract creations.

  • value: amount of FCT being transferred in the transaction

  • max_fee_per_gas: max fee user is willing to pay per unit of gas for transaction inclusion in a

  • gas_limit: The gas limit of the L2 transaction

  • data: EVM input data, i.e., ABI encoded contract call or contract creation code.

  • mine_boost: Optional appended data that increases payload size to increase the amount of FCT mined by a transaction (see below).

Facet transactions have no signature field. Their "from" is inferred from the properties of the Ethereum transaction in which they are delivered.

Facet transactions must be serialized in this format for Facet nodes to process them:

0x46 ++ rlp_encode([chain_id, to, value, gas_limit, data, mine_boost])

Sending Facet Transactions

There are two ways to make a Facet transaction reach a Facet node for inclusion in a block:

PreviousGenesis ContractsNextFrom Calldata

Last updated 1 month ago

1

From EOA: Include the encoded Facet transaction in the calldata of an Ethereum L1 transaction sent to the Facet inbox address.

2

From L1 Smart Contract: Include the encoded Facet transaction in the non-indexed data of an Ethereum log whose first and only topic is the Facet event signature.

From Calldata
From Event Logs