Optimism Public Changelog

What is this?

This page tracks which software versions we release and the environments we deploy them to.

Release Cycle

Optimism releases new software every Tuesday and Thursday at 7PM UTC. Software is released on Goerli first, followed by mainnet a week later.

Each "release" consists of multiple software packages. The package versions listed in release describe what was actually deployed to each environment. Note that we create many more software packages than we actually deploy to production.

Some releases are more important than others. Those that require action are marked with a "critical" tag in the list below. We may release critical software updates outside our regular release cycle at our discretion.

We recommend subscribing to our RSS feed or the optimism-announce@optimism.io mailing list. Both will allow you to be notified when we release new software.

Supported Environments

Mainnet
Goerli
Kovan

Kovan is deprecated. Please migrate to Goerli as soon as possible.

Releases

2022-08-02 - Kovan is Deprecated, Migrate to Goerli

As we announced last month, we’ve started the process of migrating our testnet from Kovan to Goerli. In line with the migration, we’ve updated this changelog to no longer reference the Kovan testnet. If you haven’t already, please migrate your apps to Goerli using the URLs described below:

For more information about the migration process, please see our dev blog and follow our Twitter for updates.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Kovan.
  • No packages were released to Goerli.

2022-04-05 - Mainnet Gas Price Reduction

This release reduces gas prices on mainnet by 20% in order to pass the gas savings introduced by batch compression on to our users.

This change is transparent - no action is necessary to take advantage of it. Enjoy the reduced fees!

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Kovan.
  • No packages were released to Goerli.

2022-03-24 - Mainnet Batch Compression

This release enables batch compression on mainnet. Please upgrade your data-transport-layers to at least version 0.5.20 as soon as possible if you are syncing from L1. See this release for more information on batch compression.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Kovan.
  • No packages were released to Goerli.

2022-03-17 - Kovan Batch Compression

Batch Compression

This release enables batch compression on Kovan. Batch compression will be rolled out to mainnet next week, so please upgrade your data-transport-layers to at least version 0.5.20 as soon as possible if you are syncing from L1. See this release for more information on batch compression.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Kovan.
  • No packages were released to Goerli.

2022-03-15 - Mainnet System Addresses, Batch Compression Upgrade Warning

System Addresses

This release adds support for system addresses on mainnet. If you haven’t already , please upgrade l2geth to at least version 0.5.14. See the Kovan Release for more information on system addresses.

Rate Limiting

As part of this release, we upgraded our caching infrastructure and began enforcing a rate limit on our public mainnet endpoint. The limit is quite high, and is designed to deter misconfigured/malicious clients from degrading the service. If you go over the limit, your IP will be banned for 1 minute. If you need a higher rate limit than what the public endpoint affords we recommend using a third-party infrastructure provider.

Batch Compression Upgrade Warning

We will be enabling batch compression on Kovan on Thursday the 17th. We’ll be enabling it on mainnet on the 21st. Please upgrade your data-transport-layers to at least version 0.5.20 as soon as possible if you are syncing from L1. See last week’s release for more information on the batch compression spec.

Routine Upgrades

Apart from the above, we also performed a routine upgrade of other services.

data-transport-layer

batch-submitter-service

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-03-08 - Kovan System Addresses

System Addresses

This release adds support for two additional system addresses to our Kovan sequencer. System addresses are special addresses of the form 0x420...NN, and are used for things like our cross chain messenger contract. This change is technically a hardfork, so please upgrade your replicas to at least 0.5.14 as soon as possible in order to avoid a chain split.

Note that both system addresses are currently empty. Unupgraded nodes will continue to work until we deploy a contract at one of the system addresses. However, you should still upgrade as soon as possible since we might deploy a system contract at any time without warning.

We’ll be deploying these changes to mainnet next Tuesday.

Typed Batches and Batch Compression

This release also adds support for typed batches and batch compression. Please see the announcement post for more information. We will be enabling compression on Kovan on the 17th, and mainnet on the 24th. Unless you are running an L1-syncing replica or parsing L1 batches yourself, no action is required.

If you are running an L1-syncing replica, please upgrade your data-transport-layer to at least version 0.5.20.

If you are parsing L1 batches yourself, please see the specification at the end of this post.

Typed Batches/Batch Compression Spec

Transaction batches are specified as follows:

Sequencer Batch Appended Calldata
Starting tx index:                       5 bytes
Number of elements in batch:             3 bytes
Number of batch contexts:                3 bytes
Number of contexts * batch context size: number of contexts * 16 bytes
transaction length:                      3 bytes
raw transaction:                         transaction length number of bytes

Batch Context
Number of txs sent directly to L2:       3 bytes
Number of deposits:                      3 bytes
Timestamp:                               5 bytes
Block Number:                            5 bytes

To support a “versioning” of batches, we introduce the concept of a type batch. Typed batches include a dummy context with a timestamp of 0. It would be impossible to have a real context with a timestamp of 0, so this very clearly defines that the transaction batch is typed. The block number is then used as an enum to describe which batch type is in use.

Transaction Batch Types

Type 0

Sequencer Batch Appended Calldata
Starting tx index:                           5 bytes
Number of elements in batch:                 3 bytes
Number of batch contexts:                    3 bytes
Dummy Context
  Number of txs:      0x000000
  Number of deposits: 0x000000
  Timestamp:          0x0000000000
  Blocknumber:        0x0000000000
Number of contexts - 1 * batch context size: number of contexts - 1 * 16 bytes
zlib.compress:
  transaction length:                      3 bytes
  raw transaction:                         transaction length number of bytes

Batch Context
Number of txs sent directly to L2:       3 bytes
Number of deposits:                      3 bytes
Timestamp:                               5 bytes
Block Number:                            5 bytes

The main difference for this batch type is that the transaction data is compressed with zlib. There is an implementation of zlib in the node.js standard library as well as the golang standard library.

Routine Upgrades

Apart from the above, we also performed a routine upgrade of other services and added caching and automated failover to our public endpoints.

data-transport-layer

gas-oracle

batch-submitter-service

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-03-03 - Batch Submitter Upgrade

This release replaces our legacy batch submitter with a newer, more efficient one written in Go. Unless you are operating a batch submitter as part of a private Optimism testnet, no action is required. The new batch submitter lays the groundwork for concurrent batch submission and batch compression, which together will let us increase throughput and reduce fees.

As part of this release, we re-evaluated our batch submission rate given the network’s current usage. We’ve set the batch submission rate to be once every 30 minutes as a result of our findings. Tangibly, this means that messages sent from L2 to L1 may take up to 30 minutes to arrive. We’re working on a solution that will let us bring our batch submission rate back up - stay tuned.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Kovan.
  • No packages were released to Goerli.

2022-03-01 - DTL L1 Syncing Fix

This release adds patch blocks to the DTL so that it can properly sync from L1. As mentioned in the Batch Submitter L1 Sync Hotfix release, we discovered a bug in the batch submitter that led to state root divergence between nodes that sync from L1 and nodes that sync from L2. If you are one of the small number of node operators that sync from L1, you will need to update your DTL to use version 0.5.18 and resync.

Note that this fix only applies to mainnet. L1 syncing on Kovan is affected by a different issue which we are still looking into a fix for.

This release also includes routine updates and bugfixes for l2geth.

l2geth:

data-transport-layer:

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Goerli.

2022-02-22 - Mainnet Timestamp Interval Update

This release updates a runtime parameter on mainnet to reduce the timestamp update interval from 5 minutes to 15 seconds.

Apart from the timestamp change, we also upgraded the Kovan batch submitter with some minor fixes:

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Goerli.

2022-02-15 - Mainnet Berlin Hardfork

This release upgrades mainnet with the Berlin hardfork. The hardfork is set to activate at block 3950000. Given current usage, this will be sometime next week. Please upgrade your replicas to l2geth 0.5.11 as soon as possible.

The upgrade process is the same as it was on Kovan, with slightly different parameters:

  1. Stop Geth if it is running.
  2. Run the following command: geth init https://storage.googleapis.com/optimism/mainnet/genesis-berlin.json 0x106b0a3247ca54714381b1109e82cc6b7e32fd79ae56fbcc2e7b1541122f84ea. You must also specify USING_OVM=true in your environment variables. This will automatically download the updated genesis state and apply it.
  3. Start Geth.

Note that you will need to run the steps above even if you upgraded l2geth to version 0.5.11 last week in order to mitigate the critical security bug. Upgrading the node software and updating the genesis configuration are distinct processes.

If you’re syncing a node from scratch via op-replica, please use the mainnet-gen5-berlin shared env.

Apart from the Berlin hardfork, we also upgraded the Kovan batch submitter with some minor fixes:

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-02-08 - Critical Security Update Critical

IMPORTANT SECURITY UPDATE: This release fixes a critical security bug that made it possible to create ETH on Optimism by repeatedly triggering the SELFDESTRUCT opcode. While our sequencer and all infrastructure providers are already patched, please upgrade replicas to l2geth version 0.5.11 as soon as possible to avoid falling out of sync.

For more information about the bug, please see the disclosure.

Other items in this release include:

Kovan/mainnet l2geth:

Kovan data-transport-layer:

Kovan batch-submitter:

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-02-01 - Berlin Hardfork

This release deploys the Berlin hardfork on Kovan. Please upgrade your version of l2geth to version 0.5.9 as soon as possible. The hardfork activates at block 1138900, and any unupgraded nodes will fall out of sync at that time.

Our Berlin hardfork includes a subset of mainnet’s Berlin EIPs:

It does not include typed transactions.

To upgrade an existing Kovan node, you’ll need to reinitialize Geth. To do that:

  1. Stop Geth if it is running.
  2. Run the following command: geth init https://storage.googleapis.com/optimism/kovan/kovan-berlin-genesis.json 0xaed938bc5dee7eb703658d4bec1f3e28f8b92bd9c032b2be779186eafc2b5a2a. This will automatically download the updated genesis state and apply it.
  3. Start Geth.

Alternatively, if you’re using op-replica, set the SHARED_ENV environment variable to mainnet-gen5-kovan to do this automatically.

You will need to do this again on mainnet in a few weeks.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-01-28 - Batch Submitter L1 Sync Hotfix

We discovered a bug in the batch submitter that led to state root divergence between nodes that sync from L1 and nodes that sync from L2. The majority of our node operators sync from L2, and are unaffected by this issue. For the node operators that sync from L1, we’re fixing this issue in phases:

  1. Fix the batch submitter.
  2. Add “patch configs” to the DTL that will overwrite the invalid timestamps submitted to L1.

This release implements phase one for Kovan. Phase 2 will complete shortly, then we’ll roll everything out to mainnet. Once we’ve deployed the updated batch submitter to mainnet, all L1 syncing replicas will need to update their DTL and batch submitter versions and resync.

Again, you do not need to do anything if your node syncs from L2. To find out which sync mode your node is in, check the value of the ROLLUP_BACKEND environment variable. If it’s set to l1, then you are affected by this issue. If it’s undefined or set to l2, then you are not affected by this issue.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Goerli.

2022-01-25 - Nonce Error Hotfix

This release fixes a critical bug in l2geth’s nonce handling logic that could have caused a denial-of-service. The fix has been rolled out across both Kovan and mainnet, as well as to all major infrastructure providers. If you are running a replica, please upgrade l2geth to version 0.5.8 as soon as possible. No funds were ever at risk, and the issue was never exploited.

For full details of what went wrong, see the Nonce Error Hotfix Post-Mortem.

This release also deploys last week’s timestamp changes to mainnet and performs a bunch of routine upgrades.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to Goerli.

2022-01-21 - Kovan Provider Proxy

This release adds a caching proxy called proxyd to our public Kovan endpoint that routes traffic to infrastructure providers like Alchemy and Infura. This gives the Kovan public endpoint similar consistency and scalability guarantees to mainnet, and lets us test proxyd before rolling it out on mainnet.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Goerli.

2022-01-11 - Routine Upgrade

This routine upgrade bumps the batch submitter to fix a broken metric.

Changelog:

Mainnet Kovan Goerli
  • No packages were released to mainnet.
  • No packages were released to Goerli.