Skip to content

Commit

Permalink
Add Alpha v4 release notes (#860)
Browse files Browse the repository at this point in the history
* Add Alpha v4 and Alpha v4.1 release notes

* Update wording

* Fixes and addition of intro text

* Formatting fix

* Add links

* Correct typo
  • Loading branch information
jlwllmr authored Nov 29, 2024
1 parent cf93524 commit 6bc2e2e
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions docs/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 6bc2e2e

Please sign in to comment.