The bootloader system contract plays several vital roles on Abstract, responsible for:

  • Validating all transactions
  • Executing all transactions
  • Constructing new blocks for the L2

The bootloader processes transactions in batches that it receives from the VM and puts them all through the flow outlined in the transaction flow section.

Bootloader Execution Flow

  1. As the bootloader receives batches of transactions from the VM, it sends the information about the current batch to the SystemContext system contract before processing each transaction.

  2. As each transaction is processed, it goes through the flow outlined in the gas fees section.

  3. At the end of each batch, the bootloader informs the L1Messenger system contract for it to begin sending data to Ethereum about the transactions that were processed.

BootloaderUtilities System Contract

In addition to the bootloader itself, there is an additional BootloaderUtilities system contract that provides utility functions for the bootloader to use.

This separation is simply because the bootloader itself is written in Yul whereas the utility functions are written in Solidity.