From 6bc2e2ea0dfb89dca16b9f2eb12a34631118ecf1 Mon Sep 17 00:00:00 2001 From: Joel Willmore <95916148+jlwllmr@users.noreply.github.com> Date: Fri, 29 Nov 2024 14:41:28 +0000 Subject: [PATCH] Add Alpha v4 release notes (#860) * Add Alpha v4 and Alpha v4.1 release notes * Update wording * Fixes and addition of intro text * Formatting fix * Add links * Correct typo --- docs/release-notes.mdx | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/docs/release-notes.mdx b/docs/release-notes.mdx index fee4dfb66..bde403016 100644 --- a/docs/release-notes.mdx +++ b/docs/release-notes.mdx @@ -29,6 +29,79 @@ This release includes: - New arithmetization, with selected modules activated from the [Linea specification](https://github.com/Consensys/linea-specification). - The transition to generating traces with Besu. +## Alpha v4 + +**Mainnet: December 10, 2024** + +**Linea Sepolia: November 27, 2024** + +This update upgrades several key contracts. Some updates prepare the protocol for the ability to +reconstruct the Linea state, while others add granularity to available roles, better preparing them +for any required pauses. Many of the contract modifications have also resulted in gas optimizations. + +Additionally, we are deprecating the `finalizeBlocksWithoutProof` function, and adding functionality +that enables any address to send blob submission and finalization transactions through a call +forwarding contract if no finalization occurs for more than six months. This effectively allows L1 +finalization, enabling withdrawal of potentially locked funds. + +- Adjust blob submission and finalization events to be state reconstruction-compatible + - This is a breaking change for the event structures. The new structures are below: + ```solidity + /** + * @notice Emitted when compressed data is being submitted and verified succesfully on L1. + * @dev The block range is indexed and parent shnarf included for state reconstruction simplicity. + * @param parentShnarf The parent shnarf for the data being submitted. + * @param shnarf The indexed shnarf for the data being submitted. + * @param finalStateRootHash The L2 state root hash that the current blob submission ends on. NB: The last blob in the collection. + */ + event DataSubmittedV3(bytes32 parentShnarf, bytes32 indexed shnarf, bytes32 finalStateRootHash); + + /** + * @notice Emitted when L2 blocks have been finalized on L1. + * @param startBlockNumber The indexed L2 block number indicating which block the finalization the data starts from. + * @param endBlockNumber The indexed L2 block number indicating which block the finalization the data ends on. + * @param shnarf The indexed shnarf being set as currentFinalizedShnarf in the current finalization. + * @param parentStateRootHash The parent L2 state root hash that the current finalization starts from. + * @param finalStateRootHash The L2 state root hash that the current finalization ends on. + */ + event DataFinalizedV3( + uint256 indexed startBlockNumber, + uint256 indexed endBlockNumber, + bytes32 indexed shnarf, + bytes32 parentStateRootHash, + bytes32 finalStateRootHash + ); + ``` + - `DataSubmittedV2` becomes `DataSubmittedV3`, `DataFinalized` becomes `DataFinalizedV3` + (`DataFinalizedV2` was skipped to align version numbers). + - The change also introduced gas optimizations for blob submission and finalization. +- Create granular roles for contracts `LineaRollup`, `L2MessageService` and `TokenBridge`: + - `LineaRollup`: Introduce more granular pausing and an additional verifier unsetting role + - `L2MessageService`: Introduce more granular pausing + - `TokenBridge`: Previously all administration functions were managed by a single owner (multisig) + role. The update adds role-based access with more granular roles per function, particularly for + pausing. +- Remove `finalizeBlocksWithoutProof` function + - The function enabled finalization without proofs. This allowed network activity to continue + while fundamental changes, such as changing the state management hashing mechanism, were being + made. This is the only time the function was used, and it was primarily retained as a contingency. +- Allow any address to finalize blocks if no finalization has occurred in the last six months + - Add functionality to the `LineaRollup` contract to allow any address to submit valid blobs and + valid finalization proofs, generated by running the Linea stack locally, to withdraw funds from + L2. The mechanism only works if no finalization has happened for six months. The system is + intended as a contingency. + - The change enables the `LineaRollup` contract to grant a "fallback operator" the `OPERATOR_ROLE` + required to submit the blobs and finalization proofs. The "fallback operator" is a message + forwarding contract enabling any address to submit this data. +- Bump L1 Solidity version to v0.8.26. Introduces slight gas optimizations. +- Optimize message and new token creation hashing, making it slightly cheaper to send and claim +messages. +- Address non-critical findings from previous audit rounds: + - [Cyfrin](https://github.com/Cyfrin/cyfrin-audit-reports/blob/main/reports/2024-11-28-cyfrin-linea-v2.0.pdf) + - Diligence (ongoing) + - [OpenZeppelin](https://blog.openzeppelin.com/linearollup-and-tokenbridge-role-upgrade) +- Generally clean up error management and interfaces. + ## Alpha v3.6 ### Block size changes