Derivation
Table of Contents
Activation Block Rules
The first block with a timestamp at or after the Karst activation time is considered the Karst activation block.
On the Karst activation block, in addition to the L1 attributes deposit and potentially any user deposits from L1, a set of deposit transaction-based upgrade transactions are deterministically generated by the derivation pipeline.
The contents of the transaction are defined by the file
karst_upgrade_bundle.json
in the monorepo, which contains 31 transactions. In addition to the contents of the files, the consensus layer
node MUST also prepend the string "Karst: " at the front of the intent string.
These transactions can be classified into the following groups:
- ConditionalDeployer Deployment: One transaction to deploy the ConditionalDeployer contract
- ConditionalDeployer Upgrade One transaction to upgrade a new predeploy to the ConditionalDeployer implementation
- Implementation Deployments: One transaction for each predeploy being upgraded, to deploy its implementation
(26 total) - ProxyAdmin Upgrade One transactions to upgrade the L2ProxyAdmin implementation
- L2ContractsManager Deployment: One transaction to deploy the L2ContractsManager for this upgrade
- Upgrade Execution: One transactions to call
L2ProxyAdmin.upgradePredeploys(l2ContractsManagerAddress)
More information regarding the upgrade path implemented by the bundle transactions can be found in L2 Upgrade Execution.