By Brecht

The aim of this sketch is to make it possible to do synchronous composability between L1 and all L2s in an efficient way, when L2s follow some (hopefully minimal) standard.

Yes, this is similar to other interop designs like AggLayer.

The starting point is the interop design within Gwyneth, but otherwise is not related to Gwyneth. Though in many ways, gwyneth is a vanilla EVM with minimal extra functionality to make it possible to do cross chain calls. As far as neutrality goes, this could be a reasonable base (wow such unbiased take).

The main goals are

The goal of this document is to explain how this could be done in a plausible way, without defining all the implementation details just yet. Those will come later.

The glue

Some additional checks need to be performed between L2s to enforce certain properties. Our base however still remains what is executed directly on L1. We simply extend (offchain!) the EVM execution with some additional logic. This additional logic is unfortunate, but hopefully can largely be replaced by standard EVM logic.

Calls to specific addresses will be interpreted as certain operations (the extended stuff), and these calls can have an immediate return value. This is important to allow general composability, with the L1 being able to directly depend on the offchain result.

Sync composability between L2s

We need to standardize a way transactions can be exchanged between L2s. We also need to ensure that all transactions are executed as expected. This can be done quite easily, though this will likely require a new transaction type.

A transaction that accesses different chains can generate a list of (sub)transactions that are represented by: