Skip to content
On this page


A deposit transaction is a special type of transaction format specific to the OP Stack. It is for creating L2 transactions from TransactionDepositedEvents on L1. It is also used for L1 info system transactions. You can see the type in the op-viem repo and in op-geth.


An event declared in the L2ToL1MessagePasser that is emitted when a WithdrawTransaction is initiated.


A struct used in the OptimismPortal that represents a snapshot of L2 state. Defined in the Types library. Used in proving withdrawal transactions.


SourceHash uniquely identifies the source of a deposit transaction and serves as a nonce. It is derived from the SourceHashDomain, the log index (the index of the TransactionDepositedEvent among all logs in the block), and the block hash of the L1 block in which the TransactionDepositedEvent was emitted.


SourceHashDomain specifies whether the deposit transaction is from a deposit on L1 or is a system transaction. You can see the type here.


An event emitted from a depositTransaction call to the OptimismPortal contract, which is used to create a DepositTransaction on L2.


A withdrawal for an OP Stack chain is an L2 to L1 transaction where L2 state is created and can later be proven on L1. The withdrawal flow consists of three parts. First, there is the withdraw initiating transaction which the user submits on L2 and emits a MessagePassedEvent. Second, there is the withdrawal proving transaction which is submitted on L1 by the user to prove legitimacy of the withdrawal. This transaction emits a WithdrawalProvenEvent. Lastly, there is the withdrawal finalizing transaction which is submitted on L1 by the user after the fault challenge period has passed which emits a WithdrawalFinalizedEvent and executes the transaction on L1.


An event emitted from a finalizeWithdrawalTransaction call to the OptimismPortal contract for a WithdrawalTransaction.


An event emitted from a proveWithdrawalTransaction call to the OptimismPortal contract for a WithdrawalTransaction.


A dynamic-length array of bytes used in proving transactions in the OptimismPortal. The proving transaction must verify that this hash is contained in the L2ToL1MessagePasser's storage.


export type ContractAddress<chainId = number> = {
  address: `0x${string}`
  chainId: chainId
  blockCreated: number
export type RawOrContractAddress<chainId> =
  | `0x${string}`
  | ContractAddress<chainId>

Either a raw address string or an annotated ContractAddress such as found in the chain addresses object.