System Contracts

System contracts are a set of pre-deployed smart contracts on Citrea that are responsible for the core functionalities. These contracts are embedded in the genesis state. They contain functions that can only be processed through a system transaction, in addition to regular functions that can be called by any address.

Address
Name & Explorer Link

0x3100000000000000000000000000000000000001

0x3100000000000000000000000000000000000002

0x3100000000000000000000000000000000000003

0x3100000000000000000000000000000000000004

0x3100000000000000000000000000000000000005

0x3100000000000000000000000000000000000006

0x3100000000000000000000000000000000000007

0x3200000000000000000000000000000000000001

0x3200000000000000000000000000000000000002

0x3200000000000000000000000000000000000003

0x3200000000000000000000000000000000000004

0x3200000000000000000000000000000000000005

0x3200000000000000000000000000000000000007

0x31ffffffffffffffffffffffffffffffffffffff

In this section we're going over three main system smart contracts of Citrea:

System Transactions

System transactions originate from a hardcoded address with no private key:

Finding the corresponding private key is a 1-in-2^160 problem, which is practically impossible within the lifetime of the universe.

The sequencer prepares the calls and injects them at the start of every block. They spend no balance from the sender, but their gas consumption still counts toward the block gas limit (which is 10 million).

Typical system transactions include the one-time bootstraps

as well as the per-Bitcoin-block maintenance call

and the bridge’s deposit handler:

Because their inclusion is enforced, these transactions are deterministic and cannot be censored by external actors even though no private key signs them.

Last updated

Was this helpful?