From 904ae2ae45c12299e52837b45dacd0a5498c5193 Mon Sep 17 00:00:00 2001 From: clabby Date: Tue, 25 Jun 2024 00:21:04 -0400 Subject: [PATCH] update for granite --- .../header.md => granite/withdrawals_root.md} | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) rename specs/{fjord/header.md => granite/withdrawals_root.md} (86%) diff --git a/specs/fjord/header.md b/specs/granite/withdrawals_root.md similarity index 86% rename from specs/fjord/header.md rename to specs/granite/withdrawals_root.md index 2175c3bb0..f554c9fcf 100644 --- a/specs/fjord/header.md +++ b/specs/granite/withdrawals_root.md @@ -1,7 +1,8 @@ -# Fjord L2 Block Header Changes +# Granite - `L2ToL1MessagePasser` Storage Root in Header + **Table of Contents** - [Header Changes](#header-changes) @@ -16,19 +17,24 @@ # Header Changes -After the Fjord hardfork's activation, the L2 block header's `withdrawalsRoot` field will consist of the 32-byte +After the Granite hardfork's activation, the L2 block header's `withdrawalsRoot` field will consist of the 32-byte [`L2ToL1MessagePasser`][l2-to-l1-mp] account storage root _after_ the block has been executed. ## Timestamp Activation -Fjord, like other network upgrades, is activated at a timestamp. +Granite, like other network upgrades, is activated at a timestamp. Changes to the L2 Block execution rules are applied when the `L2 Timestamp >= activation time`. Changes to the L2 block header are applied when it is considering data from a L1 Block whose timestamp is greater than or equal to the activation timestamp. ## Header Validity Rules -After Fjord activation, an L2 block header's `withdrawalsRoot` field is valid iff: +Prior to Granite activation, the L2 block header's `withdrawalsRoot` field must be: + +- `nil` if Canyon has not been activated. +- `rlp(empty)` if Canyon has been activated. + +After Granite activation, an L2 block header's `withdrawalsRoot` field is valid iff: 1. It is exactly 32 bytes in length. 1. The [`L2ToL1MessagePasser`][l2-to-l1-mp] account storage root, as committed to in the `storageRoot` within the block