Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions specs/protocol/delta/span-batches.md
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,9 @@ Span-batch rules, in validation order:
that is invalid or derived by other means exclusively:
- any transaction that is empty (zero length `tx_data`)
- any [deposited transactions][g-deposit-tx-type] (identified by the transaction type prefix byte in `tx_data`)
- any transaction of a future type > 2 (note that
[Isthmus adds support](../isthmus/derivation.md#activation)
for `SetCode` transactions of type 4)
- Overlapped blocks checks:
- Note: If the span batch overlaps the current L2 safe chain, we must validate all overlapped blocks.
- Variables:
Expand Down
3 changes: 3 additions & 0 deletions specs/protocol/derivation.md
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,9 @@ Rules, in validation order:
that is invalid or derived by other means exclusively:
- any transaction that is empty (zero length byte string)
- any [deposited transactions][g-deposit-tx-type] (identified by the transaction type prefix byte)
- any transaction of a future type > 2 (note that
[Isthmus adds support](isthmus/derivation.md#activation)
for `SetCode` transactions of type 4)

If no batch can be `accept`-ed, and the stage has completed buffering of all batches that can fully be read from the L1
block at height `epoch.number + sequence_window_size`, and the `next_epoch` is available,
Expand Down
16 changes: 14 additions & 2 deletions specs/protocol/isthmus/derivation.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- [GasPriceOracle Enable Isthmus](#gaspriceoracle-enable-isthmus)
- [EIP-2935 Contract Deployment](#eip-2935-contract-deployment)
- [Span Batch Updates](#span-batch-updates)
- [Activation](#activation)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down Expand Up @@ -322,7 +323,7 @@ transaction.
This corresponds with a new RLP-encoding of the `tx_datas` list as specified in
[the Delta span batch spec](../delta/span-batches.md), adding a new transaction type:

Transaction type `4` ([EIP-7702]):
Transaction type `4` ([EIP-7702] `SetCode`):
`0x04 ++ rlp_encode(value, max_priority_fee_per_gas, max_fee_per_gas, data, access_list, authorization_list)`

The [EIP-7702] transaction extends [EIP-1559] to include a new `authorization_list` field.
Expand All @@ -336,7 +337,18 @@ The [EIP-7702] transaction format is as follows.
- `access_list`: The [EIP-2930] access list.
- `authorization_list`: The [EIP-7702] signed authorization list.

Span batches with transaction type `4` should only be accepted after Isthmus is enabled.
## Activation

Singular batches with transactions of type `4` must only be accepted if Isthmus is active at the
timestamp of the batch. If a singular batch contains a transaction of type `4` before Isthmus is
active, this batch must be _dropped_. Note that if Holocene is active, this will also
lead to the remaining span batch, and channel that contained it, to get dropped.

Also note that this check must happen at the level of individual batches that are derived from span
batches, not to span batches as a whole. In particular, it is allowed for a span batch to span the
Isthmus activation timestamp and contain SetCode transactions in singular batches that have a
timestamp at or after the Isthmus activation time, even if the timestamp of the span batch is before
the Isthmus activation time.

[EIP-1559]: https://eips.ethereum.org/EIPS/eip-1559
[EIP-7702]: https://eips.ethereum.org/EIPS/eip-7702
Expand Down