Relay Enforced Preconfirmations

Relay Enforced Preconfirmations

Thanks to Alex from Fastlane for discussion (Article is in WIP state)

Relays have the following permissions:

  1. The ability to enforce constraints (or a partial state lock on L1) via the constraints api (or by censoring blocks with unwanted txs)
  2. They are a trusted intermediary for unique orderflow between the builder and proposer (and later l2s / users)

The above permissions are sufficient to grant a preconfirmation.

This post assumes familiarity with preconfirmations and preconfirmation gateways

Problems:

  • Gateways are too centralized, why?
    • not anyone can participate as a gateway
    • permissioned list of a few actors
  • Why can there only be a few gateways?
    • many l2s need to opt into one gateway, which offers sync composability between them
  • Gateway auction should be permissionless like builder auctions in PBS

Currently in the PBS pipeline, relays are already trusted intermediaries, requiring the proposers to trust the relay providing the highest possible bid, the searcher that their bundles aren’t being unpacked, and the builder that their block is being fed to the proposer.

We give the relay on additional power: the ability act as a mempool conveying pending transactions to the proposer, which can accept or deny requests.

The issue with gateway election is that it requires opt in from a large set of L2s to agree on a single gateway and a large set of proposers to also opt into a single gateway.

In this new version of the world, a validator will opt into a set of relays (which they are already currently doing), who have the option to preconfirm a transaction)

Pricing

A sophisticated pricing entity can suggest a minimum acceptable price to the proposer to accept the preconfirmation.

Citations

Alex Watts, Decentralized Fault Attributable Preconfirmations, https://drive.google.com/file/d/1gUEzcR05frIWdWtlYOBO4r_QhEkBty7p/view?usp=sharing


  Summary of the flow in the above article
  - user -(preconf request)-> relay / 4337 mempool -> proposer
  - proposer -(preconf'd tx)-> public mempool -> user