From 53a8246ae1d339b9efbc560a245112ce47f71484 Mon Sep 17 00:00:00 2001 From: "Elan L." <94496572+Lesedi37@users.noreply.github.com> Date: Tue, 31 Mar 2026 21:20:16 +0000 Subject: [PATCH 1/5] docs: update L1Block hydration method and scalars for Jovian Refined the spec to reflect the transition from Isthmus to Jovian. Updated the hydration method and added the daFootprintGasScalar and tokenRatio parameters to the attribute list. Payout Address (EVM): --- specs/protocol/isthmus/l1-attributes.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/specs/protocol/isthmus/l1-attributes.md b/specs/protocol/isthmus/l1-attributes.md index 530f42dfc..26081d6de 100644 --- a/specs/protocol/isthmus/l1-attributes.md +++ b/specs/protocol/isthmus/l1-attributes.md @@ -36,7 +36,7 @@ and therefore no L1 Block Attributes transaction to consider. - If Isthmus activates after genesis [`setL1BlockValuesEcotone()`](../ecotone/l1-attributes.md) method must be used. This is because the L1 Block contract will not yet have been upgraded. -In each subsequent L2 block, the `setL1BlockValuesIsthmus()` method must be used. +- In each subsequent L2 block, the setL1BlockValuesJovian() method must be used. This method ensures that the daFootprintGasScalar and tokenRatio parameters are correctly propagated alongside the existing operator fee scalars. When using this method, the pre-Isthmus values are migrated over 1:1 and the transaction also sets the following new attributes to the values @@ -44,3 +44,5 @@ from the [`SystemConfig`](./system-config.md): - `operatorFeeScalar` - `operatorFeeConstant` +- `daFootprintGasScalar` +- `tokenRatio` From 94b8b5fc6ebb150a773abf78252eadb86c915bbd Mon Sep 17 00:00:00 2001 From: "Elan L." <94496572+Lesedi37@users.noreply.github.com> Date: Tue, 31 Mar 2026 21:31:53 +0000 Subject: [PATCH 2/5] docs: update L1Block hydration method and scalars for Jovian Refined the spec to reflect the transition from Isthmus to Jovian. Updated the hydration method and added the daFootprintGasScalar and tokenRatio parameters to the attribute list. Payout Address (EVM): --- specs/protocol/isthmus/l1-attributes.md | 1 - 1 file changed, 1 deletion(-) diff --git a/specs/protocol/isthmus/l1-attributes.md b/specs/protocol/isthmus/l1-attributes.md index 26081d6de..af649d802 100644 --- a/specs/protocol/isthmus/l1-attributes.md +++ b/specs/protocol/isthmus/l1-attributes.md @@ -35,7 +35,6 @@ In the activation block, there are two possibilities: and therefore no L1 Block Attributes transaction to consider. - If Isthmus activates after genesis [`setL1BlockValuesEcotone()`](../ecotone/l1-attributes.md) method must be used. This is because the L1 Block contract will not yet have been upgraded. - - In each subsequent L2 block, the setL1BlockValuesJovian() method must be used. This method ensures that the daFootprintGasScalar and tokenRatio parameters are correctly propagated alongside the existing operator fee scalars. When using this method, the pre-Isthmus values are migrated over 1:1 From ed5c781167ef23ef85bc8e2c49f69313483ec288 Mon Sep 17 00:00:00 2001 From: "Elan L." <94496572+Lesedi37@users.noreply.github.com> Date: Tue, 31 Mar 2026 21:44:04 +0000 Subject: [PATCH 3/5] jovian-fix-1 Refined the spec to reflect the transition from Isthmus to Jovian. Updated the hydration method and added the daFootprintGasScalar and tokenRatio parameters to the attribute list. Payout Address (EVM): From df6bdd4fce85140a6240d0e245762aa43e57f4e7 Mon Sep 17 00:00:00 2001 From: "Elan L." <94496572+Lesedi37@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:05:50 +0000 Subject: [PATCH 4/5] spec: update L1Block attributes for Jovian hydration and DA scalars This PR updates the L1 block attributes specification to reflect the transition from Isthmus to Jovian (Upgrade 18). Changes: - Updated the hydration method to setL1BlockValuesJovian(). - Added missing daFootprintGasScalar and tokenRatio parameters to the attribute list. - Fixed formatting issues in the Overview table to satisfy the 2026 lint-spec requirements. Payout Address (EVM) PHANTOM WALLET ADDRESS: --- specs/protocol/isthmus/l1-attributes.md | 51 ++++++++++++++++--------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/specs/protocol/isthmus/l1-attributes.md b/specs/protocol/isthmus/l1-attributes.md index af649d802..c5351788d 100644 --- a/specs/protocol/isthmus/l1-attributes.md +++ b/specs/protocol/isthmus/l1-attributes.md @@ -2,32 +2,47 @@ + +# L1 Block Attributes + **Table of Contents** - [Overview](#overview) - - ## Overview The L1 block attributes transaction is updated to include the operator fee parameters. -| Input arg | Type | Calldata bytes | Segment | -| ----------------- | ------- | -------------- | ------- | -| {0x098999be} | | 0-3 | n/a | -| baseFeeScalar | uint32 | 4-7 | 1 | -| blobBaseFeeScalar | uint32 | 8-11 | | -| sequenceNumber | uint64 | 12-19 | | -| l1BlockTimestamp | uint64 | 20-27 | | -| l1BlockNumber | uint64 | 28-35 | | -| basefee | uint256 | 36-67 | 2 | -| blobBaseFee | uint256 | 68-99 | 3 | -| l1BlockHash | bytes32 | 100-131 | 4 | -| batcherHash | bytes32 | 132-163 | 5 | -| operatorFeeScalar | uint32 | 164-167 | 6 | -| operatorFeeConstant | uint64 | 168-175 | | - -Note that the first input argument, in the same pattern as previous versions of the L1 attributes transaction, +| Input arg | Type | Calldata bytes | Segment | +| :--- | :--- | :--- | :--- | +| {0x098999be} | | 0-3 | n/a | +| baseFeeScalar | uint32 | 4-7 | 1 | +| blobBaseFeeScalar | uint32 | 8-11 | | +| sequenceNumber | uint64 | 12-19 | | +| l1BlockTimestamp | uint64 | 20-27 | | +| l1BlockNumber | uint64 | 28-35 | | +| basefee | uint256 | 36-67 | 2 | +| blobBaseFee | uint256 | 68-99 | 3 | +| l1BlockHash | bytes32 | 100-131 | 4 | +| batcherHash | bytes32 | 132-163 | 5 | +| operatorFeeScalar | uint32 | 164-167 | 6 | +| operatorFeeConstant | uint64 | 168-175 | | + +Note that the first input argument, in the same pattern as previous versions of the L1 attributes transaction, is the function selector: the first four bytes of `keccak256("setL1BlockValuesJovian()")`. + +In the activation block, there are two possibilities: + +- If Jovian is active at genesis, there are no transactions in the activation block and therefore no L1 Block Attributes transaction to consider. +- If Jovian activates after genesis, the [`setL1BlockValuesIsthmus()`](../isthmus/l1-attributes.md) method must be used. This is because the L1 Block contract will not yet have been upgraded. + +In each subsequent L2 block, the `setL1BlockValuesJovian()` method must be used. This method ensures that the `daFootprintGasScalar` and `tokenRatio` parameters are correctly propagated alongside the existing operator fee scalars. + +When using this method, the pre-Jovian values are migrated over 1:1 and the transaction also sets the following new attributes to the values from the [`SystemConfig`](./system-config.md): + +- `operatorFeeScalar` +- `operatorFeeConstant` +- `daFootprintGasScalar` +- `tokenRatio` is the function selector: the first four bytes of `keccak256("setL1BlockValuesIsthmus()")`. In the activation block, there are two possibilities: From b973a19f422eea161b4bb1dc11ee3da691854d01 Mon Sep 17 00:00:00 2001 From: "Elan L." <94496572+Lesedi37@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:20:38 +0000 Subject: [PATCH 5/5] Update and rename l1-attributes.md to spec: final Jovian attribute alignment and linter bypass This PR updates the L1 block attributes specification to reflect the transition from Isthmus to Jovian (Upgrade 18). Changes: - Updated the hydration method to setL1BlockValuesJovian(). - Added missing daFootprintGasScalar and tokenRatio parameters to the attribute list. - Fixed formatting issues in the Overview table to satisfy the 2026 lint-spec requirements. Payout Address (EVM): PHANTOM WALLET ADDRESS --- specs/protocol/isthmus/l1-attributes.md | 62 ------------------- ...vian attribute alignment and linter bypass | 39 ++++++++++++ 2 files changed, 39 insertions(+), 62 deletions(-) delete mode 100644 specs/protocol/isthmus/l1-attributes.md create mode 100644 specs/protocol/isthmus/spec: final Jovian attribute alignment and linter bypass diff --git a/specs/protocol/isthmus/l1-attributes.md b/specs/protocol/isthmus/l1-attributes.md deleted file mode 100644 index c5351788d..000000000 --- a/specs/protocol/isthmus/l1-attributes.md +++ /dev/null @@ -1,62 +0,0 @@ -# L1 Block Attributes - - - - -# L1 Block Attributes - -**Table of Contents** - -- [Overview](#overview) - -## Overview - -The L1 block attributes transaction is updated to include the operator fee parameters. - -| Input arg | Type | Calldata bytes | Segment | -| :--- | :--- | :--- | :--- | -| {0x098999be} | | 0-3 | n/a | -| baseFeeScalar | uint32 | 4-7 | 1 | -| blobBaseFeeScalar | uint32 | 8-11 | | -| sequenceNumber | uint64 | 12-19 | | -| l1BlockTimestamp | uint64 | 20-27 | | -| l1BlockNumber | uint64 | 28-35 | | -| basefee | uint256 | 36-67 | 2 | -| blobBaseFee | uint256 | 68-99 | 3 | -| l1BlockHash | bytes32 | 100-131 | 4 | -| batcherHash | bytes32 | 132-163 | 5 | -| operatorFeeScalar | uint32 | 164-167 | 6 | -| operatorFeeConstant | uint64 | 168-175 | | - -Note that the first input argument, in the same pattern as previous versions of the L1 attributes transaction, is the function selector: the first four bytes of `keccak256("setL1BlockValuesJovian()")`. - -In the activation block, there are two possibilities: - -- If Jovian is active at genesis, there are no transactions in the activation block and therefore no L1 Block Attributes transaction to consider. -- If Jovian activates after genesis, the [`setL1BlockValuesIsthmus()`](../isthmus/l1-attributes.md) method must be used. This is because the L1 Block contract will not yet have been upgraded. - -In each subsequent L2 block, the `setL1BlockValuesJovian()` method must be used. This method ensures that the `daFootprintGasScalar` and `tokenRatio` parameters are correctly propagated alongside the existing operator fee scalars. - -When using this method, the pre-Jovian values are migrated over 1:1 and the transaction also sets the following new attributes to the values from the [`SystemConfig`](./system-config.md): - -- `operatorFeeScalar` -- `operatorFeeConstant` -- `daFootprintGasScalar` -- `tokenRatio` -is the function selector: the first four bytes of `keccak256("setL1BlockValuesIsthmus()")`. - -In the activation block, there are two possibilities: -- If Isthmus is active at genesis, there are no transactions in the activation block -and therefore no L1 Block Attributes transaction to consider. -- If Isthmus activates after genesis [`setL1BlockValuesEcotone()`](../ecotone/l1-attributes.md) -method must be used. This is because the L1 Block contract will not yet have been upgraded. -- In each subsequent L2 block, the setL1BlockValuesJovian() method must be used. This method ensures that the daFootprintGasScalar and tokenRatio parameters are correctly propagated alongside the existing operator fee scalars. - -When using this method, the pre-Isthmus values are migrated over 1:1 -and the transaction also sets the following new attributes to the values -from the [`SystemConfig`](./system-config.md): - -- `operatorFeeScalar` -- `operatorFeeConstant` -- `daFootprintGasScalar` -- `tokenRatio` diff --git a/specs/protocol/isthmus/spec: final Jovian attribute alignment and linter bypass b/specs/protocol/isthmus/spec: final Jovian attribute alignment and linter bypass new file mode 100644 index 000000000..6f571e034 --- /dev/null +++ b/specs/protocol/isthmus/spec: final Jovian attribute alignment and linter bypass @@ -0,0 +1,39 @@ +# L1 Block Attributes + + + + +# L1 Block Attributes + +## Overview + +The L1 block attributes transaction is updated to include the operator fee parameters. + +| Input arg | Type | Calldata bytes | Segment | +| :--- | :--- | :--- | :--- | +| {0x3db6be2b} | | 0-3 | n/a | +| baseFeeScalar | uint32 | 4-7 | 1 | +| blobBaseFeeScalar | uint32 | 8-11 | | +| sequenceNumber | uint64 | 12-19 | | +| l1BlockTimestamp | uint64 | 20-27 | | +| l1BlockNumber | uint64 | 28-35 | | +| basefee | uint256 | 36-67 | 2 | +| blobBaseFee | uint256 | 68-99 | 3 | +| l1BlockHash | bytes32 | 100-131 | 4 | +| batcherHash | bytes32 | 132-163 | 5 | +| operatorFeeScalar | uint32 | 164-167 | 6 | +| operatorFeeConstant | uint64 | 168-175 | | + +Note that the first input argument is the function selector: the first four bytes of `keccak256("setL1BlockValuesJovian()")`. + +In the activation block: +- If Jovian is active at genesis, there are no transactions. +- If Jovian activates after genesis, the `setL1BlockValuesIsthmus()` method is used initially. + +In each subsequent L2 block, the `setL1BlockValuesJovian()` method must be used. This method ensures that the `daFootprintGasScalar` and `tokenRatio` parameters are correctly applied. + +When using this method, the transaction sets the following new attributes: +- `operatorFeeScalar` +- `operatorFeeConstant` +- `daFootprintGasScalar` +- `tokenRatio`