Skip to content

Intro

1. What is an outpost chain?

  • Chain that owns a different native bridge not controlled by the PP (Pessimistic Proof)
  • Is EVM compatible (in a first stage)
  • The chain already exists, we are not involved on the genesis
  • The state transition is not controlled by us (not controlled sequencer)
  • Has its own finality
  • All outposts will have a customGasToken that will be the native token of the chain
    • Outpost chains can not have native ether token
  • Examples:
    • Base
    • Optimism
    • BSC

1.1 Objective

  • Attach an outpost chain to the aggLayer

1.2 Implications

  • Deploy SC
  • Secure State transition

1.3 Limitations

  • Bridge, GER and wTokens have different addresses
  • Possible reorgs in the outpost chain,so also in the LER
    • A new functions in the bridge to rollback the LER
    • It can create double spending, will be paid by Polygon.

1.4 Flow examples

1.4.1 Outpost with native ETH

Example flow of an outpost having gasTokenNetwork different than native networkID/rollupID:

  • Initialize params:
    • GasTokenNetwork: 0 (ethereum)
    • GasTokenAddress: 0x000....000 (ethereum)
sequenceDiagram
    participant User
    participant L1_Base_Bridge
    participant Native_Bridge_Base
    participant Agglayer_Bridge_Base
    participant L1_Agglayer_Bridge

    Note left of User: User has ETH
    User ->> L1_Base_Bridge: bridge to base
    L1_Base_Bridge ->> L1_Base_Bridge: lock ETH
    L1_Base_Bridge ->> Native_Bridge_Base: bridge
    Native_Bridge_Base ->> User: mint baseETH
    Note left of User: User has baseETH
    User ->> Agglayer_Bridge_Base: bridge to L1 (from aggLayer)
    Agglayer_Bridge_Base ->> Agglayer_Bridge_Base: lock baseETH
    Agglayer_Bridge_Base ->> L1_Agglayer_Bridge: bridge
    L1_Agglayer_Bridge ->> User: ❌❌ There is no ETH on bridge to send ❌❌

1.4.2 Outpost with native token

Example flow of an outpost having gasTokenNetwork same than native networkID/rollupID: Initialize params: - GasTokenNetwork: 2 (base rollupId) - GasTokenAddress: 0x002....002 (custom address)

sequenceDiagram
    participant User
    participant L1_Base_Bridge
    participant Native_Bridge_Base
    participant Agglayer_Bridge_Base
    participant L1_Agglayer_Bridge

    Note left of User: User has ETH
    User ->> L1_Base_Bridge: bridge to base
    L1_Base_Bridge ->> L1_Base_Bridge: lock ETH
    L1_Base_Bridge ->> Native_Bridge_Base: bridge
    Native_Bridge_Base ->> User: mint baseETH
    Note left of User: User has baseETH
    User ->> Agglayer_Bridge_Base: bridge to L1 (from aggLayer)
    Agglayer_Bridge_Base ->> Agglayer_Bridge_Base: lock baseETH
    Agglayer_Bridge_Base ->> L1_Agglayer_Bridge: bridge
    L1_Agglayer_Bridge ->> User: mint wrappedBaseETH
    Note left of User: User has wrappedBaseETH ✅