# Protocol Reference

The Espresso Network is a settlement layer for chains, providing secure confirmations for transaction ordering and data across chains. Its globally distributed network of validators run a BFT consensus protocol (HotShot) to maintain an available and consistent database of transactions. Chains' sequencers write transaction blocks to this database, which serves as a source of truth for the list of transactions that define the chain's state. The advantages a chain stands to gain from using Espresso Network include higher-throughput, lower operating costs, and faster transaction finality.

Whereas a chain's transaction blocks written to Ethereum take at least 15 minutes to finalize. Transaction blocks written to Espresso Network reach finality within a few seconds, enabling any of the chain's nodes to derive and confirm the chain's state with confidence. This is guaranteed by the safety of Espresso Network's consensus protocol. To break the integrity of Espresso Network transaction confirmations, an adversary would need to both compromise the chain's sequencer as well as control 33% of Espresso Network's distributed validators (33% of $ESP), similar to other proof-of-stake consensus protocols. The transaction confirmation guarantees of Espresso thus mirror that of Ethereum.

A chain using Espresso Network may have canonical bridges to other chains, including Ethereum, Solana, Avalanche, etc. A canonical bridge allows for assets to be locked on the parent chain (e.g., Ethereum), minted on the chain where it can be transferred between accounts or interact with other applications, and withdrawn back to the parent chain. In order for an asset to be withdrawn, a smart contract on the parent chain needs to receive and verify the state of the chain, a process often referred to as "settlement". There are several different methods for doing so, including optimistic fraud games, zero-knowledge proofs, or TEE attestations. In all cases, the parent chain contract verifies that the state it receives is correctly calculated from the list of transactions posted by the authorized sequencer and finalized by Espresso Network.

A chain on Espresso Network may also choose to use another base layer for finality in addition to Espresso, such as Ethereum. In this case the confirmation from Espresso Network may be called a pre-confirmation. The chain's sequencer first writes the transaction blocks to Espresso Network and once it confirms that they were finalized by Espresso Network it subsequently publishes them to the second base layer (e.g. Ethereum). Clients can pre-confirm transactions by reading the chain's transaction blocks from Espresso Network even before the second base layer has received them. Clients can also wait for confirmation from the second base layer. There is a mechanism to ensure that the second base layer finalizes the same list of chain transactions as Espresso Network. Several implementations are possible: for example, a contract on the second base layer can filter blocks that weren't first finalized by Espresso, or chain nodes reading transactions from the second base layer can apply this filtering directly when calculating chain state.

Many chains using Espresso Network continue to use Ethereum as a second base layer and have a canonical bridge to Ethereum. These chains get pre-confirmations from Espresso Network that are more resilient than those relying only on centralized sequencers for pre-confirmations, which can be broken as a result of hacks or bad actors.

Applications that interact between multiple chains, such as bridges or cross-chain exchanges, are especially sensitive to the security and latency of transaction confirmations and are better able to serve chains that use Espresso Network.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.espressosys.com/network/developer/the-espresso-network.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
