From 2a4b1dee6435d3c4c9c994852ac26da92472f03b Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:22:27 -0700 Subject: [PATCH 01/11] Update README.md --- contracts/README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/contracts/README.md b/contracts/README.md index 1413625e9..d3423990d 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,8 +1,26 @@ # Contracts +## 📜 Mainnet Contract Changelog + +> This changelog tracks every contract currently deployed on **Ethereum mainnet**, and is only valid from the `main` branch. +> • Add a **new row** when an L1 contract is first deployed from a release tag/branch. +> • When an on-chain upgrade is executed (`upgradeProxy` or `upgradeToAndCall`), **append** a bullet to the “Upgrade History” cell for that contract. +> • Bullets should include the date, new implementation version, and the tag from which the upgrade was deployed, e.g.: +> `• 2025-05-01 – upgraded to MevCommitAVSV2 (tag: v0.6.0)` + +| Contract | Proxy Address (mainnet) | Release Branch | Upgrade History | +|-----------------------|----------------------------------------------|----------------|-----------------| +| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | n/a | +| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | n/a +| MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | • 2025-03-12 - upgraded to MevCommitMiddlewareV2 (tag: v1.1.0-middleware) | +| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | n/a | +| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | n/a | + ## L1 Deployer CLI -The `l1-deployer-cli.sh` enables production deployment of L1 contracts, with publishing of source code to etherscan (see [source code verification](https://info.etherscan.com/how-to-verify-contracts/)). This deployment workflow is decoupled from the core mev-commit chain contracts. This cli accepts keystore (not suggested), ledger, or trezor wallets. Any contract must be deployed from a tagged mev-commit release, unless the `--skip-release-verification` flag is set. +> **After completing any L1 deployment, immediately record it in the “Mainnet Contract Changelog” table above (contract name, proxy address, release branch, and blank upgrade history).** + +The `l1-deployer-cli.sh` enables production deployment of L1 contracts, with publishing of source code to etherscan (see [source code verification](https://info.etherscan.com/how-to-verify-contracts/)). This deployment workflow is decoupled from the core mev-commit chain contracts. This cli accepts keystore (not suggested), ledger, or trezor wallets. L1 contracts must be deployed from a tagged commit, that's part of a release branch. For mainnet it's not recommended to use the `--skip-release-verification` flag. If contract deployment succeeds but etherscan verification fails, try running [forge verify-contract](https://book.getfoundry.sh/reference/forge/forge-verify-contract) directly with the deployment address. Ex: @@ -21,6 +39,8 @@ To avoid issues with etherscan verification, use a non-public RPC that can suppo ## Contract Upgrades +> **After completing any upgrade, immediately record a bullet point in the “Mainnet Contract Changelog” above (date, new implementation version, and the tag from which the upgrade was deployed).** + Contract upgrades are not always possible, as there are [strict limitations as enforced by Solidity](https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#modifying-your-contracts). When a contract feat/fix cannot be implemented as a contract upgrade, simply PR the changes into main, and release/deploy a new contract instance as needed. See [#360](https://github.com/primev/mev-commit/pull/360) for a reference example of a complete contract upgrade. From 297383cfe5cce0482ce684553054eaf08a207429 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:25:01 -0700 Subject: [PATCH 02/11] nit formatting --- contracts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/README.md b/contracts/README.md index d3423990d..e015303b3 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -9,7 +9,7 @@ > `• 2025-05-01 – upgraded to MevCommitAVSV2 (tag: v0.6.0)` | Contract | Proxy Address (mainnet) | Release Branch | Upgrade History | -|-----------------------|----------------------------------------------|----------------|-----------------| +|-----------------------|----------------------------------------------|----------------|--------------------------------| | L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | n/a | | MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | n/a | MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | • 2025-03-12 - upgraded to MevCommitMiddlewareV2 (tag: v1.1.0-middleware) | From 5f2b7b7487f58cbdbd5224b9dfa6ae48f16d918d Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:39:17 -0700 Subject: [PATCH 03/11] Update README.md --- contracts/README.md | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index e015303b3..cfda7300c 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,20 +1,27 @@ # Contracts -## 📜 Mainnet Contract Changelog - -> This changelog tracks every contract currently deployed on **Ethereum mainnet**, and is only valid from the `main` branch. -> • Add a **new row** when an L1 contract is first deployed from a release tag/branch. -> • When an on-chain upgrade is executed (`upgradeProxy` or `upgradeToAndCall`), **append** a bullet to the “Upgrade History” cell for that contract. -> • Bullets should include the date, new implementation version, and the tag from which the upgrade was deployed, e.g.: -> `• 2025-05-01 – upgraded to MevCommitAVSV2 (tag: v0.6.0)` - -| Contract | Proxy Address (mainnet) | Release Branch | Upgrade History | -|-----------------------|----------------------------------------------|----------------|--------------------------------| -| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | n/a | -| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | n/a -| MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | • 2025-03-12 - upgraded to MevCommitMiddlewareV2 (tag: v1.1.0-middleware) | -| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | n/a | -| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | n/a | +## Mainnet Contract Changelog + +This changelog tracks deployments of **Ethereum mainnet** contracts. + +• Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address and release branch should not change. +• After any on-chain upgrade, append a row to **Upgrade History**. + +### Current Deployments + +| Contract | Proxy Address | Release Branch | +|-----------------------|----------------------------------------------|---------------------| +| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | +| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | +| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | +| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | +| MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | + +### Upgrade History + +| Timestamp (UTC) | Contract | New Impl Version | Upgrade Tag | +|-----------------------------|---------------------|-----------------------|-------------------| +| Mar-12-2025 03:33:35 AM UTC | MevCommitMiddleware | MevCommitMiddlewareV2 | v1.1.0-middleware | ## L1 Deployer CLI From 417df228f539de99c6df9fae4afabadded913944 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:39:57 -0700 Subject: [PATCH 04/11] Update README.md --- contracts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/README.md b/contracts/README.md index cfda7300c..a7e596d10 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -2,7 +2,7 @@ ## Mainnet Contract Changelog -This changelog tracks deployments of **Ethereum mainnet** contracts. +This changelog tracks deployments of **Ethereum mainnet** contracts. This changelog is only valid from the `main` branch. • Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address and release branch should not change. • After any on-chain upgrade, append a row to **Upgrade History**. From a12f0078f2df4abddb557eecd98a0952f94c3fac Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:40:21 -0700 Subject: [PATCH 05/11] Update README.md --- contracts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index a7e596d10..7c1bc7775 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -4,8 +4,8 @@ This changelog tracks deployments of **Ethereum mainnet** contracts. This changelog is only valid from the `main` branch. -• Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address and release branch should not change. -• After any on-chain upgrade, append a row to **Upgrade History**. +* Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address and release branch should not change. +* After any on-chain upgrade, append a row to **Upgrade History**. ### Current Deployments From d7ecd717f6ad9042790f866ac178b3cfe87abce7 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:43:02 -0700 Subject: [PATCH 06/11] Update README.md --- contracts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index 7c1bc7775..28b19fbdc 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -25,7 +25,7 @@ This changelog tracks deployments of **Ethereum mainnet** contracts. This change ## L1 Deployer CLI -> **After completing any L1 deployment, immediately record it in the “Mainnet Contract Changelog” table above (contract name, proxy address, release branch, and blank upgrade history).** +> **After completing any L1 deployment, immediately record it in the “Mainnet Contract Changelog” table above.** The `l1-deployer-cli.sh` enables production deployment of L1 contracts, with publishing of source code to etherscan (see [source code verification](https://info.etherscan.com/how-to-verify-contracts/)). This deployment workflow is decoupled from the core mev-commit chain contracts. This cli accepts keystore (not suggested), ledger, or trezor wallets. L1 contracts must be deployed from a tagged commit, that's part of a release branch. For mainnet it's not recommended to use the `--skip-release-verification` flag. @@ -46,7 +46,7 @@ To avoid issues with etherscan verification, use a non-public RPC that can suppo ## Contract Upgrades -> **After completing any upgrade, immediately record a bullet point in the “Mainnet Contract Changelog” above (date, new implementation version, and the tag from which the upgrade was deployed).** +> **After completing any upgrade, immediately record it in the “Mainnet Contract Changelog” table above.** Contract upgrades are not always possible, as there are [strict limitations as enforced by Solidity](https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#modifying-your-contracts). When a contract feat/fix cannot be implemented as a contract upgrade, simply PR the changes into main, and release/deploy a new contract instance as needed. From 3fc4c9e48d9e81be141469e53371084a891a790f Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:44:03 -0700 Subject: [PATCH 07/11] Update README.md --- contracts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index 28b19fbdc..4bdc4c996 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -25,7 +25,7 @@ This changelog tracks deployments of **Ethereum mainnet** contracts. This change ## L1 Deployer CLI -> **After completing any L1 deployment, immediately record it in the “Mainnet Contract Changelog” table above.** +> **After completing any L1 deployment, immediately record it in the “Current Deployments” table above.** The `l1-deployer-cli.sh` enables production deployment of L1 contracts, with publishing of source code to etherscan (see [source code verification](https://info.etherscan.com/how-to-verify-contracts/)). This deployment workflow is decoupled from the core mev-commit chain contracts. This cli accepts keystore (not suggested), ledger, or trezor wallets. L1 contracts must be deployed from a tagged commit, that's part of a release branch. For mainnet it's not recommended to use the `--skip-release-verification` flag. @@ -46,7 +46,7 @@ To avoid issues with etherscan verification, use a non-public RPC that can suppo ## Contract Upgrades -> **After completing any upgrade, immediately record it in the “Mainnet Contract Changelog” table above.** +> **After completing any upgrade, immediately record it in the “Upgrade History” table above.** Contract upgrades are not always possible, as there are [strict limitations as enforced by Solidity](https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#modifying-your-contracts). When a contract feat/fix cannot be implemented as a contract upgrade, simply PR the changes into main, and release/deploy a new contract instance as needed. From 5338413808ecdbac9bb0db7ee6e206a17835f840 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:49:59 -0700 Subject: [PATCH 08/11] Update README.md --- contracts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/README.md b/contracts/README.md index 4bdc4c996..ba58736a9 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -58,7 +58,7 @@ The following instructions assist in upgrading an existing deployment of any of First, implement and merge an appropriate feat/fix to the implementation contract using the main branch. This ensures any future (new) deployments of the contract will include the feat/fix along with changes to the contract's ABI. -Next, create a branch off the appropriate release branch (e.g. `release/v0.5.x`) that the currently deployed contract was initially built/deployed from, we'll refer to this as the "upgrade branch". Copy/paste the currently deployed contract implementation to a new file (currently deployed implementation and new file should both reside within the upgrade branch). Name the new file with an incremented version number as a postfix of the original contract's filename. E.g. if the original contract's filename is `MevCommitAVS.sol`, then the new contract's filename should be `MevCommitAVSV2.sol`. +Next, create a branch off the appropriate release branch (see [Current Deployments](#current-deployments)), we'll refer to this as the "upgrade branch". Copy/paste the currently deployed contract implementation to a new file (currently deployed implementation and new file should both reside within the upgrade branch). Name the new file with an incremented version number as a postfix of the original contract's filename. E.g. if the original contract's filename is `MevCommitAVS.sol`, then the new contract's filename should be `MevCommitAVSV2.sol`. Now update the new implementation contract with the feat/fix that was merged to main. You can try to utilize cherry-picking here, but may have to re-implement the feat/fix manually. From fd0ffcba7abc5c9f5da758b16cc1af65f34c09c2 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:20:09 -0700 Subject: [PATCH 09/11] Update README.md --- contracts/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index ba58736a9..1f81cee3b 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -9,13 +9,13 @@ This changelog tracks deployments of **Ethereum mainnet** contracts. This change ### Current Deployments -| Contract | Proxy Address | Release Branch | -|-----------------------|----------------------------------------------|---------------------| -| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | -| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | -| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | -| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | -| MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | +| Contract | Proxy Address | Release Branch | Tag | +|-----------------------|----------------------------------------------|---------------------|-----------------| +| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | `v1.1.0-contracts` | +| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | `v1.1.0-contracts` | +| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | `v1.1.0-contracts` | +| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | `v1.1.0-contracts` | +| MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | `v1.1.0-contracts` | ### Upgrade History From 87f5b3398bf877c29b16157a621401161adc32c2 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:23:48 -0700 Subject: [PATCH 10/11] Update README.md --- contracts/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contracts/README.md b/contracts/README.md index 1f81cee3b..0b539017a 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -4,17 +4,17 @@ This changelog tracks deployments of **Ethereum mainnet** contracts. This changelog is only valid from the `main` branch. -* Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address and release branch should not change. -* After any on-chain upgrade, append a row to **Upgrade History**. +* Add a row to **Current Deployments** when a contract is first deployed from a release branch and tagged commit. Note the proxy address, release branch, and initial tag should not change. +* After any on-chain upgrade, append a row to **Upgrade History**. The `Upgrade Tag` contains the most up-to-date source code for that contract. ### Current Deployments -| Contract | Proxy Address | Release Branch | Tag | -|-----------------------|----------------------------------------------|---------------------|-----------------| -| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | `v1.1.0-contracts` | -| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | `v1.1.0-contracts` | -| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | `v1.1.0-contracts` | -| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | `v1.1.0-contracts` | +| Contract | Proxy Address | Release Branch | Initial Tag | +|-----------------------|----------------------------------------------|---------------------|--------------------------| +| ValidatorOptInRouter | `0x821798d7b9d57dF7Ed7616ef9111A616aB19ed64` | `release/v1.1.x` | `v1.1.0-contracts` | +| VanillaRegistry | `0x47afdcB2B089C16CEe354811EA1Bbe0DB7c335E9` | `release/v1.1.x` | `v1.1.0-contracts` | +| MevCommitAVS | `0xBc77233855e3274E1903771675Eb71E602D9DC2e` | `release/v1.1.x` | `v1.1.0-contracts` | +| L1Gateway | `0xDBf24cafF1470a6D08bF2FF2c6875bafC60Cf881` | `release/v1.1.x` | `v1.1.0-contracts` | | MevCommitMiddleware | `0x21fD239311B050bbeE7F32850d99ADc224761382` | `release/v1.1.x` | `v1.1.0-contracts` | ### Upgrade History From 5e03361b8ffa63a56cd3807cd7a808379ded80b7 Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:30:24 -0700 Subject: [PATCH 11/11] Update README.md --- contracts/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/README.md b/contracts/README.md index 0b539017a..065309b73 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -82,6 +82,8 @@ If possible it's recommended to avoid changing a contract's ABI for an upgrade. ### Deployment +Once your "upgrade branch" is reviewed and merged into the release branch, tag the latest commit from the release branch. This tag will be used to populate the **Upgrade History** table above. + Invoking the upgrade involves creating a script in which a new implementation contract is deployed, then calling `upgradeToAndCall` on the proxy contract, passing in the address of the new implementation contract. See example below