Try โ€‚โ€‰HackMD

Deploying a Safe on Multiple Networks

Safe contract addresses are determined by the initializer function and a nonce. In order to deploy a Safe to the same address on multiple networks it is important to ensure the following conditions are met:

  • Same factory address is used on both networks
  • Same singleton address used on both networks
  • Same nonce used on both networks
  • The same initializer payload is used on both networks

This guide includes addresses for the latest v1.4.1 release of Safe. If the Safe you are trying to replicate is an earlier version you must find the old singleton address. This can be found in your original Safe creation transaction (see below)

Factory

The latest Safe factory is deployed to 0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67 on most networks

Singleton Address

The v1.4.1 template Safe contract is deployed to 0x41675C099F32341bf84BFc5382aF534df5C7461a on most networks

Initializer

The initializer sets up the Safe settings like owners and thresholds. You must copy the initializer used on the first network to the second. However this means that the new Safe will match the original settings of the first Safe. If after setup you have changed signers, thresholds, modules, etc, you will have to make these changes on the new Safe as well

Example - Deploying to the same address on Sepolia and Scroll

Sepolia Deployment

This example uses a v1.4.1 Safe deployed on Sepolia first then Scroll second.

Sepolia Deployment Tx: https://sepolia.etherscan.io/tx/0xdce9314dea0d3080d26e347d0828918be17dbb6e290ac0cd5711a066d1728df1

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

  • Singleton: 0x41675C099F32341bf84BFc5382aF534df5C7461a
  • Initializer (REMEMBER to change this to your initializer): 0xb63e800d00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bd89a1ce4dde368ffab0ec35506eece0b1ffdc540000000000000000000000000000000000000000000000000000000000000140000000000000000000000000fd0732dc9e303f09fcef3a7388ad10a83459ec99000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005afe7a11e7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001b2f8877f3e8f366ef4d4f482309491237338970000000000000000000000000000000000000000000000000000000000000024fe51f64300000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c76200000000000000000000000000000000000000000000000000000000
  • Nonce: 1

Scroll Deployment

Scroll Deployment Tx: https://scrollscan.com/tx/0xdb2e69796a1ff5ba22392fceabd437b88e6c3c08cdd53788f8932571a827d4ab

  • Singleton: 0x41675C099F32341bf84BFc5382aF534df5C7461a
  • Initializer (REMEMBER to change this to your initializer): 0xb63e800d00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bd89a1ce4dde368ffab0ec35506eece0b1ffdc540000000000000000000000000000000000000000000000000000000000000140000000000000000000000000fd0732dc9e303f09fcef3a7388ad10a83459ec99000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005afe7a11e7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001b2f8877f3e8f366ef4d4f482309491237338970000000000000000000000000000000000000000000000000000000000000024fe51f64300000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c76200000000000000000000000000000000000000000000000000000000
  • Nonce: 1

Instructions

  1. Find the deployment transaction for the Safe you want to copy

Note the version of the previous Safe. I think if it's v1.3.x or v1.4.1 it will work

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

  1. Go to the Safe Proxy Factory contract on the new chain

https://scrollscan.com/address/0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67#writeContract

  1. Enter the matching date on the createProxyWithNonce function and send the transaction

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

  1. Check transaction logs for the Safe address

This should match the original Safe address

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

  1. Visit the Safe on the UI

Enter your address in this link

https://app.safe.global/home?safe=scr:0x164730037ae0ccffb55dbd43df9cd6e040bf73e7

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’