The current implementation 6239 of EOL is not good because it adds a lot of code in the trusted code-base and is really hard to ensure the correctness.
This document aims to understand the current difficulties and also elaborates a high-level specification for the EOL feature that would lead to an easier implementation. This new specification should also simplifies other parts related to the inbox.
Each rollup maintains an inbox. This inbox is implemented by the protocol via a skip list
which is a sparse data-structure to represent L2
messages posted onto the L1
. (The protocol only keeps the head of this skip-list while the rollup node maintains the whole skip-list. This makes the skip-list off-chain.)
A cell of the skip list is a list of messages posted at some level (i.e. L1
block) and some metadata. If there is no message for a particular level, there is no cell. Consequently, proving the absence of message at some level
The second condition expresses that the predecessor cell at level
The EOL feature proposes the addition of a special message End Of Level
) such that at every level, there is an implicit
message
We want to stress that implicit
is important. Indeed, every message in the inbox is added via an explicit L1
operation. But this is not the case for EOL
.
An "easy" solution would be to have the L1
that adds the
The refutation game must consequently be changed to take into account this message implicitely at the end of the inbox.
The handling of
In the following, we aim to provide a specification that, hopefully, should lead to an easier implementation that will avoid those corner cases.