Skip to content

Conversation

@0xClandestine
Copy link
Member

Motivation:

Explain here the context, and why you're making that change. What is the problem you're trying to solve.

Modifications:

Describe the modifications you've done.

Result:

After your change, what will change.

@ypatil12
Copy link
Collaborator

We should only merge the Zeus upgrade script into the release branch

function computeCrosschainUpgradeableProxyAddress(
address implementation,
address admin,
bytes11 salt
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: add deterministic salt per contract name. Discussed using FFI offline


bytes11 constant EMPTY_CONTRACT_SALT = bytes11(uint88(0xffffffffffffffffffffff));

library CrosschainDeployLib {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's move this to script/releases

@ypatil12 ypatil12 changed the base branch from release-dev/multichain to feat/deploy-scripts June 27, 2025 20:24
@ypatil12 ypatil12 merged commit 4afa18c into feat/deploy-scripts Jun 27, 2025
15 checks passed
@ypatil12 ypatil12 deleted the feat/crosschain-deploy branch June 27, 2025 20:24
ypatil12 pushed a commit that referenced this pull request Jun 28, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 pushed a commit that referenced this pull request Jun 28, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 pushed a commit that referenced this pull request Jun 28, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 pushed a commit that referenced this pull request Jul 1, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 pushed a commit that referenced this pull request Jul 1, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 pushed a commit that referenced this pull request Jul 1, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
ypatil12 added a commit that referenced this pull request Jul 1, 2025
**Motivation:**

We need deploy scripts for multichain 

**Modifications:**

Adds a `crossChainDeployLib` from:
#1474. This
library uses `createX` for deterministic deployments. In order to keep
the same address on all `destinationChains`, we deploy contracts from
the same multisig on each chain.

Add `testnet-base-sepolia` to CI for deploy scripts. 

Adds a `deploy_globalRootConfirmerSet` script. This script initiates a
global root confirmer set (ie. generator) and updates the `network.toml`
file used in the deploy scripts. It is only intended to be used on
`preprod` and `testnet`.

To distinguish between a source and destination chain we add a
`SOURCE_CHAIN: bool` and `DESTINATION_CHAIN: bool` to the Zeus Config.
We skip parts of the deploy if a chain is not a source or destination.

Deploys the contracts in 5 steps

1. `deploySourceChain.s.sol`: Deploys `KeyRegistrar`, `ReleaseManager`,
`CrossChainRegistry`.
2. `deployDestinationChainProxies.s.sol`: Deploys _empty_ proxy
contracts for `OperatorTableUpdater`, `BN254CertificateVerifier`,
`ECDSACertificateVerifier`. _Note: in order to have deterministic
proxies, we need to ensure the `initCode` is the same. Thus, the
implementation is the same `emptyContract` and the proxyAdmin is
initially the `multichainDeployerMultisig`_.
3. `deployDestinationChainImpls`: Deploys implementations using EOA
4. `instantiateDestinationChainProxies`: Upgrades the proxies to the
actual implementations. Transfer proxy admin to the actual `proxyAdmin`
5. `configureCrossChainRegistry`: Updates the `crossChainRegistry` on
the `SOURCE_CHAIN` to whitelist proper chainIds

**Result:**

Deploy scripts

---------

Co-authored-by: clandestine.eth <[email protected]>
ypatil12 added a commit that referenced this pull request Jul 1, 2025
**Motivation:**

We need deploy scripts for multichain 

**Modifications:**

Adds a `crossChainDeployLib` from:
#1474. This
library uses `createX` for deterministic deployments. In order to keep
the same address on all `destinationChains`, we deploy contracts from
the same multisig on each chain.

Add `testnet-base-sepolia` to CI for deploy scripts. 

Adds a `deploy_globalRootConfirmerSet` script. This script initiates a
global root confirmer set (ie. generator) and updates the `network.toml`
file used in the deploy scripts. It is only intended to be used on
`preprod` and `testnet`.

To distinguish between a source and destination chain we add a
`SOURCE_CHAIN: bool` and `DESTINATION_CHAIN: bool` to the Zeus Config.
We skip parts of the deploy if a chain is not a source or destination.

Deploys the contracts in 5 steps

1. `deploySourceChain.s.sol`: Deploys `KeyRegistrar`, `ReleaseManager`,
`CrossChainRegistry`.
2. `deployDestinationChainProxies.s.sol`: Deploys _empty_ proxy
contracts for `OperatorTableUpdater`, `BN254CertificateVerifier`,
`ECDSACertificateVerifier`. _Note: in order to have deterministic
proxies, we need to ensure the `initCode` is the same. Thus, the
implementation is the same `emptyContract` and the proxyAdmin is
initially the `multichainDeployerMultisig`_.
3. `deployDestinationChainImpls`: Deploys implementations using EOA
4. `instantiateDestinationChainProxies`: Upgrades the proxies to the
actual implementations. Transfer proxy admin to the actual `proxyAdmin`
5. `configureCrossChainRegistry`: Updates the `crossChainRegistry` on
the `SOURCE_CHAIN` to whitelist proper chainIds

**Result:**

Deploy scripts

---------

Co-authored-by: clandestine.eth <[email protected]>
ypatil12 added a commit that referenced this pull request Jul 7, 2025
**Motivation:**

We need deploy scripts for multichain 

**Modifications:**

Adds a `crossChainDeployLib` from:
#1474. This
library uses `createX` for deterministic deployments. In order to keep
the same address on all `destinationChains`, we deploy contracts from
the same multisig on each chain.

Add `testnet-base-sepolia` to CI for deploy scripts. 

Adds a `deploy_globalRootConfirmerSet` script. This script initiates a
global root confirmer set (ie. generator) and updates the `network.toml`
file used in the deploy scripts. It is only intended to be used on
`preprod` and `testnet`.

To distinguish between a source and destination chain we add a
`SOURCE_CHAIN: bool` and `DESTINATION_CHAIN: bool` to the Zeus Config.
We skip parts of the deploy if a chain is not a source or destination.

Deploys the contracts in 5 steps

1. `deploySourceChain.s.sol`: Deploys `KeyRegistrar`, `ReleaseManager`,
`CrossChainRegistry`.
2. `deployDestinationChainProxies.s.sol`: Deploys _empty_ proxy
contracts for `OperatorTableUpdater`, `BN254CertificateVerifier`,
`ECDSACertificateVerifier`. _Note: in order to have deterministic
proxies, we need to ensure the `initCode` is the same. Thus, the
implementation is the same `emptyContract` and the proxyAdmin is
initially the `multichainDeployerMultisig`_.
3. `deployDestinationChainImpls`: Deploys implementations using EOA
4. `instantiateDestinationChainProxies`: Upgrades the proxies to the
actual implementations. Transfer proxy admin to the actual `proxyAdmin`
5. `configureCrossChainRegistry`: Updates the `crossChainRegistry` on
the `SOURCE_CHAIN` to whitelist proper chainIds

**Result:**

Deploy scripts

---------

Co-authored-by: clandestine.eth <[email protected]>
ypatil12 pushed a commit that referenced this pull request Aug 1, 2025
**Motivation:**

*Explain here the context, and why you're making that change. What is
the problem you're trying to solve.*

**Modifications:**

*Describe the modifications you've done.*

**Result:**

*After your change, what will change.*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants