├── setup-templates ├── template-deploy │ ├── inputs │ │ ├── deploy-config.json │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── deployed │ │ └── addresses.json │ ├── .env │ ├── Makefile │ ├── script │ │ └── RunDeployBedrock.s.sol │ └── foundry.toml ├── template-generic │ ├── .env │ ├── script │ │ └── SomeScript.s.sol │ └── foundry.toml └── template-incident │ ├── .env │ └── foundry.toml ├── sepolia ├── 2024-04-10-deploy-ERC20Factory │ ├── deployed │ │ └── addresses.json │ ├── .env │ ├── Makefile │ ├── script │ │ └── RunERC20FactoryDeploy.s.sol │ └── foundry.toml ├── 2023-10-07-upgrade-l1-standard-bridge │ ├── .gitignore │ ├── .env │ ├── Makefile │ └── foundry.toml ├── 2024-04-30-deployTempERC20Factory │ ├── inputs │ │ ├── deploy-config.json │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── deployed │ │ └── addresses.json │ ├── .env │ ├── Makefile │ ├── src │ │ └── ERC20Factory.sol │ ├── script │ │ └── RunDeployERC20Factory.sol │ └── foundry.toml ├── 2023-09-26-deploy │ ├── .env │ ├── Makefile │ ├── foundry.toml │ └── deployed │ │ └── addresses.json ├── 2024-03-26-increase-gas-limit │ ├── Makefile │ ├── .env │ ├── foundry.toml │ └── script │ │ └── UpdateGasLimit.sol ├── 2024-02-28-pause-unpause-portal │ ├── .env │ ├── script │ │ ├── PausePortal.s.sol │ │ └── UnpausePortal.s.sol │ ├── foundry.toml │ └── Makefile ├── 2024-03-07-ecotone-sysconfig-updates │ ├── Makefile │ ├── foundry.toml │ └── script │ │ └── UpdateGasConfig.sol ├── .env └── 2024-01-22-deploy-revshare │ └── foundry.toml ├── goerli ├── 2023-06-13-l2-upgrades │ ├── .gitignore │ ├── inputs │ │ ├── misc-config.json │ │ ├── addresses-l2.json │ │ ├── addresses.json │ │ └── foundry-config.json │ ├── remappings.txt │ ├── foundry.toml │ ├── script │ │ ├── DeployL2Implementations.s.sol │ │ └── RunPostSherlockL2.s.sol │ └── .env ├── 2023-01-31-deploy │ ├── .env │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ └── execute │ │ └── Utils.sol ├── 2023-06-08-upgrade-l2OO │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── inputs │ │ └── config.json │ └── Makefile ├── 2023-06-12-batcher-rotation │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ └── records │ │ └── SetBatcherAddr.s.sol │ │ └── 5 │ │ └── dry-run │ │ └── run-1686613997.json ├── 2023-06-29-transfer-l1-owner │ ├── .env │ ├── Makefile │ └── foundry.toml ├── 2023-06-29-transfer-l2-owner │ ├── .env │ ├── Makefile │ └── foundry.toml ├── .env ├── 2023-06-13-deploy-proxy │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ └── script │ │ └── DeterministicProxyDeploy.s.sol ├── 2023-06-27-test-nested-safe │ ├── script │ │ ├── DeployTest.s.sol │ │ ├── TestNestedSafeL1.s.sol │ │ └── TestNestedSafeL2.s.sol │ ├── .env │ └── foundry.toml ├── 2023-06-22-deploy-challenger │ ├── .env │ ├── foundry.toml │ ├── Makefile │ └── script │ │ └── DeployChallenger.s.sol ├── 2023-08-15-support-eas │ ├── .env │ ├── foundry.toml │ └── script │ │ └── DeployEASImplementation.s.sol ├── 2023-07-11-use-challenger1of2 │ ├── .env │ └── foundry.toml ├── 2023-08-24-feevault-fix │ └── foundry.toml ├── 2023-08-23-deploy-revshare │ └── foundry.toml └── addresses.json ├── mainnet ├── 2024-04-12-deployERC20Factory │ ├── deployed │ │ └── addresses.json │ ├── .env │ ├── Makefile │ ├── script │ │ └── RunERC20FactoryDeploy.s.sol │ └── foundry.toml ├── 2024-04-30-deployTempERC20Factory │ ├── inputs │ │ ├── deploy-config.json │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── deployed │ │ └── addresses.json │ ├── .env │ ├── Makefile │ ├── src │ │ └── ERC20Factory.sol │ ├── script │ │ └── RunDeployERC20Factory.sol │ └── foundry.toml ├── 2023-06-14-deploy │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ ├── execute │ │ └── RunDeployBedrock.s.sol │ └── deployed │ │ └── addresses.json ├── .env ├── 2023-06-14-test-tx │ ├── .env │ ├── Makefile │ ├── remappings.txt │ ├── src │ │ └── Test.sol │ ├── foundry.toml │ └── script │ │ └── Test.s.sol ├── 2023-06-15-validate-deploy │ ├── .env │ ├── Makefile │ ├── remappings.txt │ ├── foundry.toml │ └── script │ │ └── ValidateDeploy.s.sol ├── 2023-08-15-support-eas │ ├── FINAL-runbook-supportEAS.pdf │ ├── .env │ └── foundry.toml ├── 2023-06-21-transfer-system-cfg-owner │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── sign.sh │ └── Makefile ├── 2023-06-15-unpause-portal │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── script │ │ └── UnpausePortal.s.sol │ └── Makefile ├── 2023-07-26-transfer-owner-nested-safes │ ├── .env │ └── foundry.toml ├── 2024-03-05-pause-unpause-test │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2023-06-14-deploy-deterministic-proxy │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ └── script │ │ └── DeterministicProxyDeploy.s.sol ├── 2023-07-11-test-l2-safe │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2023-08-07-test-op-fee-nested-safe │ ├── .env │ └── foundry.toml ├── 2023-07-17-test-l1-nested-safe │ ├── .env │ └── foundry.toml ├── 2024-04-01-increase-gas-limit │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2023-07-19-challenger-1-of-2 │ ├── .env │ └── foundry.toml ├── 2023-07-19-test-l2-nested-safe │ ├── .env │ └── foundry.toml ├── 2024-03-26-increase-gas-limit │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2024-04-17-upgrade-erc20-factory │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2024-02-23-transfer-op │ ├── .env │ └── foundry.toml ├── 2023-08-22-fee-vault-fix │ ├── foundry.toml │ └── .env ├── 2023-08-28-deploy-revshare │ ├── foundry.toml │ └── script │ │ └── FeeDisburserOwnershipTransfer.s.sol ├── 2024-02-21-setup-smart-escrow │ ├── foundry.toml │ ├── Makefile │ └── .env ├── 2024-04-15-redeploy-smart-escrow │ ├── foundry.toml │ ├── .env │ └── Makefile ├── addresses.json └── 2024-03-07-ecotone-sysconfig-updates │ ├── foundry.toml │ └── Makefile ├── sepolia-alpha ├── 2023-10-06-upgrade-l1-standard-bridge │ ├── .gitignore │ ├── .env │ ├── Makefile │ └── foundry.toml ├── 2023-09-20-deploy │ ├── .env │ ├── Makefile │ ├── foundry.toml │ └── deployed │ │ └── addresses.json └── .env ├── internal-devnet ├── .env ├── 2023-05-25-deploy │ ├── .env │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── remappings.txt │ ├── foundry.toml │ └── Makefile └── addresses.json ├── internal-testnet ├── .env ├── 2023-05-24-deploy │ ├── .env │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── remappings.txt │ ├── foundry.toml │ └── Makefile └── addresses.json ├── logo.webp ├── goerli-alpha ├── 2023-05-18-deploy │ ├── .env │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── remappings.txt │ ├── foundry.toml │ └── Makefile ├── 2023-06-14-deploy │ ├── inputs │ │ └── misc-config.json │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── script │ │ └── RunDeployBedrock.s.sol │ ├── Makefile │ └── deployed │ │ └── addresses.json ├── 2023-06-23-transfer-l1-owner │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ └── Makefile ├── 2023-06-23-transfer-l2-owner │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ └── Makefile ├── 2023-06-28-safe-threshold │ ├── .env │ ├── Makefile │ ├── foundry.toml │ └── script │ │ └── ChangeThreshold.s.sol ├── 2023-10-04-fix-batcher-proposer │ ├── .env │ ├── Makefile │ └── foundry.toml ├── 2023-10-27-ownership-update │ ├── .env │ ├── Makefile │ └── foundry.toml ├── 2023-07-12-practicing-incident-response │ ├── .env │ ├── foundry.toml │ └── script │ │ ├── PausePortal.s.sol │ │ └── UnpausePortal.s.sol ├── .env ├── 2023-06-09-l2-upgrades │ ├── .env │ ├── remappings.txt │ ├── foundry.toml │ ├── Makefile │ ├── script │ │ └── RunPostSherlockL2.s.sol │ ├── .gitmodules │ ├── inputs │ │ └── addresses-l2.json │ └── records │ │ └── RunPostSherlockL2.s.sol │ │ └── 11763071 │ │ └── run-1686613683.json ├── 2023-06-08-test-aliased-owner │ ├── remappings.txt │ ├── .env │ ├── foundry.toml │ ├── script │ │ ├── DeployTest.s.sol │ │ ├── L1toL2AliasedAddr.s.sol │ │ └── CallIncrement.s.sol │ ├── src │ │ └── TestIncrement.sol │ ├── Makefile │ ├── inputs │ │ └── addresses.json │ └── README.md ├── 2023-06-21-deploy-challenger │ ├── remappings.txt │ ├── foundry.toml │ ├── .env │ ├── Makefile │ └── script │ │ └── DeployChallenger.s.sol ├── 2023-06-22-test-nested-safe │ ├── remappings.txt │ ├── foundry.toml │ ├── sign-l2.sh │ ├── sign-l1.sh │ ├── sign-l2-approve.sh │ ├── sign-l1-approve.sh │ ├── script │ │ ├── DeployTest.s.sol │ │ ├── TestNestedSafeL1.s.sol │ │ └── TestNestedSafeL2.s.sol │ └── .env ├── 2023-06-12-transfer-owner-l1-alias-to-l2-safe │ ├── remappings.txt │ ├── foundry.toml │ ├── .env │ └── Makefile ├── 2023-06-27-test-l2-owner │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2023-06-29-increase-finalization │ ├── .env │ └── foundry.toml ├── 2023-06-26-use-challenger1of2 │ ├── .env │ └── foundry.toml ├── 2023-08-15-support-eas │ ├── .env │ ├── foundry.toml │ └── script │ │ └── DeployEASImplementation.s.sol ├── 2023-08-21-deploy-revshare │ └── foundry.toml ├── 2023-08-21-feevault-fix │ ├── foundry.toml │ └── .env └── addresses.json ├── localhost ├── 2023-06-08-deploy │ ├── inputs │ │ ├── misc-config.json │ │ └── construct-config.sh │ ├── remappings.txt │ ├── foundry.toml │ ├── execute │ │ └── RunDeployBedrock.s.sol │ ├── .env │ └── deployed │ │ └── addresses.json ├── 2023-06-20-systemcfg-test │ ├── .env │ ├── remappings.txt │ ├── sign.sh │ ├── foundry.toml │ └── Makefile ├── 2023-07-11-test-l1-safe │ ├── .env │ ├── foundry.toml │ └── Makefile ├── 2023-06-27-use-challenger1of2 │ ├── .env │ ├── foundry.toml │ └── Makefile ├── Makefile ├── addresses.json └── .env ├── .gitignore ├── docker-compose.yml └── LICENSE /setup-templates/template-deploy/inputs/deploy-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /setup-templates/template-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sepolia/2024-04-10-deploy-ERC20Factory/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /setup-templates/template-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/.gitignore: -------------------------------------------------------------------------------- 1 | records/**/dry-run/** 2 | -------------------------------------------------------------------------------- /mainnet/2024-04-12-deployERC20Factory/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/inputs/deploy-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sepolia/2023-10-07-upgrade-l1-standard-bridge/.gitignore: -------------------------------------------------------------------------------- 1 | /src/ 2 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/inputs/deploy-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /sepolia-alpha/2023-10-06-upgrade-l1-standard-bridge/.gitignore: -------------------------------------------------------------------------------- 1 | /src/ 2 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /setup-templates/template-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT= 2 | BASE_CONTRACTS_COMMIT= 3 | -------------------------------------------------------------------------------- /setup-templates/template-generic/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT= 2 | BASE_CONTRACTS_COMMIT= 3 | -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3c3e1a88b234a68bcd59be0c123d9f3cc152a91e 2 | -------------------------------------------------------------------------------- /internal-devnet/.env: -------------------------------------------------------------------------------- 1 | NETWORK=internal-devnet 2 | L1_RPC_URL=https://coinnet-dev.cbhq.net -------------------------------------------------------------------------------- /internal-testnet/.env: -------------------------------------------------------------------------------- 1 | NETWORK=internal-testnet 2 | L1_RPC_URL=https://coinnet.cbhq.net -------------------------------------------------------------------------------- /logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lexicon179/contract-deployments/HEAD/logo.webp -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3c3e1a88b234a68bcd59be0c123d9f3cc152a91e 2 | -------------------------------------------------------------------------------- /goerli/2023-06-08-upgrade-l2OO/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=fc56ded13c91ae945f7e35bff0e45f9154fd647e 2 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=bb6d28bdcf046fe411f321f2325159e294812610 2 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=fc56ded13c91ae945f7e35bff0e45f9154fd647e 2 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x6606d3c20cc94cc7aa1d430c0e83a5129976153a" 3 | } -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x833994EB0F293C4B314D94610cf2b5E57E061e41" 3 | } 4 | -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" 3 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0xd4091ae24219a312b7a9f8d9dd5d805b2f39d378" 3 | } 4 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x7976a9aa99df64bdf35427d4760f0159f33f94e1" 3 | } 4 | -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x7655555Ef300B2bf1B261a2eB4465ba1cA8F4373" 3 | } 4 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x0f7A6c70A70F0287912febE9a251d608144B3Bfe" 3 | } 4 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/inputs/misc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployerAddress": "0x835c74eb472442670b182396e8A0d7a2E5464f76" 3 | } 4 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=36965ea35232b26a3abb2638e39ea97786597d94 -------------------------------------------------------------------------------- /mainnet/.env: -------------------------------------------------------------------------------- 1 | NETWORK=mainnet 2 | L1_RPC_URL=https://eth.llamarpc.com 3 | L2_RPC_URL=https://mainnet.base.org 4 | L1_CHAIN_ID=1 5 | L2_CHAIN_ID=8453 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=36965ea35232b26a3abb2638e39ea97786597d94 3 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 2 | BASE_CONTRACTS_COMMIT=d02f415758e7dd491881a6f5298ed91b228f4f09 3 | -------------------------------------------------------------------------------- /sepolia/2023-09-26-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a7ff5a811612fa338d0a6d6dd72dc2ec9badef6d 2 | BASE_CONTRACTS_COMMIT=405d0c4f94c442b6dd44116260371fd42e9908d7 3 | -------------------------------------------------------------------------------- /sepolia-alpha/2023-09-20-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a7ff5a811612fa338d0a6d6dd72dc2ec9badef6d 2 | BASE_CONTRACTS_COMMIT=405d0c4f94c442b6dd44116260371fd42e9908d7 3 | -------------------------------------------------------------------------------- /goerli/2023-06-12-batcher-rotation/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=6fd07366e4b1f692a5c5e363d365c93197d53b84 2 | BASE_CONTRACTS_COMMIT=51e8c52a6d8b5a1d9d584a7bfe7915e6f49408c7 3 | -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l1-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l2-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | -------------------------------------------------------------------------------- /localhost/2023-06-20-systemcfg-test/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=a4cc6504c019b78f4e7c76fa76c34ba3ea52168f 3 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-validate-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=d5e67b7ef0addc953ca213735c596bec5d2a23c0 3 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l1-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=e1c66093af049cec1d79f54a36b6d935c0e58ad8 3 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l2-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=e1c66093af049cec1d79f54a36b6d935c0e58ad8 3 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-28-safe-threshold/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | -------------------------------------------------------------------------------- /goerli-alpha/2023-10-04-fix-batcher-proposer/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=90bff30727d05fb3451e2a6a118c1350fd0c62af 2 | BASE_CONTRACTS_COMMIT=e961e8638874d571aa63a6e35507e3779131d1eb -------------------------------------------------------------------------------- /goerli-alpha/2023-10-27-ownership-update/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=90bff30727d05fb3451e2a6a118c1350fd0c62af 2 | BASE_CONTRACTS_COMMIT=de5d9417c144a78743d2e10c4e2b4effbb2d1acd 3 | -------------------------------------------------------------------------------- /mainnet/2024-04-12-deployERC20Factory/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e6ef3a900c42c8722e72c2e2314027f85d12ced5 2 | BASE_CONTRACTS_COMMIT=c8e14388e478471411abb10f3a99ab3bd9206a95 3 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e6ef3a900c42c8722e72c2e2314027f85d12ced5 2 | BASE_CONTRACTS_COMMIT=c8e14388e478471411abb10f3a99ab3bd9206a95 3 | -------------------------------------------------------------------------------- /sepolia/2024-04-10-deploy-ERC20Factory/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e6ef3a900c42c8722e72c2e2314027f85d12ced5 2 | BASE_CONTRACTS_COMMIT=c8e14388e478471411abb10f3a99ab3bd9206a95 3 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e6ef3a900c42c8722e72c2e2314027f85d12ced5 2 | BASE_CONTRACTS_COMMIT=c8e14388e478471411abb10f3a99ab3bd9206a95 3 | -------------------------------------------------------------------------------- /sepolia/2023-10-07-upgrade-l1-standard-bridge/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e3ba24e72085d85bb5584dda33a03ccf60db86f0 2 | BASE_CONTRACTS_COMMIT=e961e8638874d571aa63a6e35507e3779131d1eb 3 | -------------------------------------------------------------------------------- /goerli-alpha/2023-07-12-practicing-incident-response/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 -------------------------------------------------------------------------------- /sepolia-alpha/2023-10-06-upgrade-l1-standard-bridge/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=e3ba24e72085d85bb5584dda33a03ccf60db86f0 2 | BASE_CONTRACTS_COMMIT=e961e8638874d571aa63a6e35507e3779131d1eb 3 | -------------------------------------------------------------------------------- /mainnet/2023-08-15-support-eas/FINAL-runbook-supportEAS.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lexicon179/contract-deployments/HEAD/mainnet/2023-08-15-support-eas/FINAL-runbook-supportEAS.pdf -------------------------------------------------------------------------------- /mainnet/2023-06-21-transfer-system-cfg-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=a4cc6504c019b78f4e7c76fa76c34ba3ea52168f 3 | 4 | LEDGER_ACCOUNT=0 -------------------------------------------------------------------------------- /goerli-alpha/.env: -------------------------------------------------------------------------------- 1 | NETWORK=goerli-alpha 2 | L1_RPC_URL=https://nodes-proxy-development.cbhq.net/geth/testnet-archive-goerli-lighthouse 3 | L2_RPC_URL=https://base-goerli-alpha.cbhq.net 4 | L2_CHAIN_ID=11763071 -------------------------------------------------------------------------------- /goerli/.env: -------------------------------------------------------------------------------- 1 | NETWORK=goerli 2 | L1_RPC_URL=https://nodes-proxy-development.cbhq.net/geth/testnet-archive-goerli-lighthouse 3 | L2_RPC_URL=https://base-goerli.cbhq.net 4 | L2_CHAIN_ID=84531 5 | L1_CHAIN_ID=5 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 2 | BASE_CONTRACTS_COMMIT=0a649e7ef07fb11efc448cfeda3e6eb37c69c9b8 3 | 4 | OWNER_L2=0x7768171512911988acfce3fd295a4cf8aa8e8dba -------------------------------------------------------------------------------- /localhost/2023-07-11-test-l1-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | 4 | L1_SAFE=0x41715dd88d95c3c80248f19dace21015346069b8 -------------------------------------------------------------------------------- /localhost/2023-06-27-use-challenger1of2/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=a4cc6504c019b78f4e7c76fa76c34ba3ea52168f 3 | 4 | CHALLENGER=0x6c4219fC0DA6813FbB3301F103813fe230FA6653 -------------------------------------------------------------------------------- /mainnet/2023-06-15-unpause-portal/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=6dc89b9d746e7733d8a13c28340532161a7e36a8 3 | 4 | INCIDENT_MULTISIG=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: test 9 | test: 10 | forge script TestScript --rpc-url $(L1_RPC_URL) 11 | -------------------------------------------------------------------------------- /setup-templates/template-incident/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT= # commit number to use of Optimism's code (https://github.com/ethereum-optimism/optimism) 2 | BASE_CONTRACTS_COMMIT= # commit number to use of Base contract code (https://github.com/base-org/contracts) 3 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-validate-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: validate-deploy 9 | validate-deploy: 10 | forge script --rpc-url $(L1_RPC_URL) ValidateDeploy 11 | -------------------------------------------------------------------------------- /mainnet/2023-07-26-transfer-owner-nested-safes/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=b22778cf4ac9d4307b3c7d439cbef9e672084785 3 | 4 | SENDER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F 5 | 6 | LOCAL_URL=http://127.0.0.1:8545 -------------------------------------------------------------------------------- /sepolia/2024-03-26-increase-gas-limit/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | .PHONY: update-gas-limit 6 | update-gas-limit: 7 | @forge script --rpc-url $(L1_RPC_URL) UpdateGasLimitSepolia --private-key $(PRIVATE_KEY) --broadcast 8 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | forge script RunERC20FactoryDeploy --rpc-url $(L2_RPC_URL) --broadcast --verify -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | forge script RunERC20FactoryDeploy --rpc-url $(L2_RPC_URL) --broadcast --verify -------------------------------------------------------------------------------- /localhost/Makefile: -------------------------------------------------------------------------------- 1 | ## 2 | # Local Environment Setup 3 | ## 4 | .PHONY: node 5 | node: 6 | anvil --init setup/genesis.json 7 | 8 | .PHONY: deploy 9 | deploy: 10 | cd 2023-06-08-deploy && make deps && make deploy-local && make transfer-owner-to-safe && cd .. 11 | 12 | -------------------------------------------------------------------------------- /goerli/2023-06-13-deploy-proxy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 2 | BASE_CONTRACTS_COMMIT=5b6ba9c083cf2aeee916156ec9627b4e3246ca65 3 | 4 | DEPLOYER=0x21856935e5689490c72865f34CC665D0FF25664b 5 | ADMIN=0x2eD486761dcF287E7b79E526B0d3fC2349834a66 6 | SALT=FeeDisburserProxy 7 | -------------------------------------------------------------------------------- /mainnet/2024-03-05-pause-unpause-test/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=10b06fb49861053999a89533d846ee5c2ccb33e1 2 | BASE_CONTRACTS_COMMIT=56d8f40b48795663fa88366d762161af5a1ba5d5 3 | 4 | OPTIMISM_PORTAL_PROXY=0x49048044D57e1C92A77f79988d21Fa8fAF74E97e 5 | GUARDIAN=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 6 | -------------------------------------------------------------------------------- /sepolia/2024-02-28-pause-unpause-portal/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=10b06fb49861053999a89533d846ee5c2ccb33e1 2 | BASE_CONTRACTS_COMMIT=fe492be3478134b2305c207a12b153eca04148c0 3 | 4 | GUARDIAN=0xA9FF930151130fd19DA1F03E5077AFB7C78F8503 5 | OPTIMISM_PORTAL_PROXY=0x49f53e41452C74589E85cA1677426Ba426459e85 6 | -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | -------------------------------------------------------------------------------- /goerli/2023-06-08-upgrade-l2OO/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy-deterministic-proxy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 2 | BASE_CONTRACTS_COMMIT=5b6ba9c083cf2aeee916156ec9627b4e3246ca65 3 | 4 | DEPLOYER=0x21856935e5689490c72865f34CC665D0FF25664b 5 | ADMIN=0x76a737dac0c4eb926bd7d2d68b958a1ae6ad6993 6 | SALT=FeeDisburserProxy 7 | -------------------------------------------------------------------------------- /mainnet/2023-07-11-test-l2-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=5c6b54a1312f3991e1986745ab06305a88f0ce70 3 | 4 | DEPLOYER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F 5 | L2_SAFE=0xd94e416cf2c7167608b2515b7e4102b41efff94f 6 | SENDER=0x8e5de5ca219e3ffc9cdeb2dc7d71b8a199cd2c4f -------------------------------------------------------------------------------- /sepolia/2024-03-07-ecotone-sysconfig-updates/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | # Unpause OptimismPortal Commands 6 | 7 | .PHONY: update-gas-config 8 | update-gas-config: 9 | @forge script --rpc-url $(L1_RPC_URL) UpdateGasConfigSepolia --private-key $(PRIVATE_KEY) --broadcast 10 | -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /goerli/2023-06-12-batcher-rotation/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /goerli/2023-06-13-deploy-proxy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-unpause-portal/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-validate-deploy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate.git/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /localhost/2023-06-20-systemcfg-test/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/src/Test.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | contract Test { 5 | uint256 public number; 6 | 7 | function setNumber(uint256 newNumber) public { 8 | number = newNumber; 9 | } 10 | 11 | function increment() public { 12 | number++; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate.git/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /goerli-alpha/2023-06-21-deploy-challenger/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l1-owner/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l2-owner/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-21-transfer-system-cfg-owner/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy-deterministic-proxy/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate/ 5 | @base-contracts/=lib/base-contracts 6 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-12-transfer-owner-l1-alias-to-l2-safe/remappings.txt: -------------------------------------------------------------------------------- 1 | @eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/ 2 | @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts 3 | @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts 4 | @rari-capital/solmate/=lib/solmate.git/ 5 | @base-contracts/=lib/base-contracts -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /setup-templates/template-generic/script/SomeScript.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | 6 | contract SomeScript is Script { 7 | function setUp() public {} 8 | 9 | function run() public { 10 | RunThis runThis = new RunThis(); 11 | runThis.run(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-08-upgrade-l2OO/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-12-batcher-rotation/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-13-deploy-proxy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /localhost/2023-06-20-systemcfg-test/sign.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | 7 | payload=$(forge script --via-ir --rpc-url ${L1_RPC_URL} TransferSystemConfigOwner --sig "sign()" | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 8 | cd lib/base-contracts 9 | echo "${payload}" | go run ./cmd/sign --private-key ${PRIVATE_KEY} 10 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-unpause-portal/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-06-15-validate-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /localhost/2023-06-20-systemcfg-test/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-21-deploy-challenger/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l1-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l2-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-13-deploy-proxy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | 9 | .PHONY: deploy-proxy 10 | deploy-proxy: 11 | forge script DeterministicProxyDeploy --rpc-url $(L2_RPC_URL) --sig "run(address,address,string)" $(DEPLOYER) $(ADMIN) $(SALT) \ 12 | --private-key $(SIGNER_PRIVATE_KEY) --broadcast 13 | -------------------------------------------------------------------------------- /mainnet/2023-06-21-transfer-system-cfg-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=fc56ded13c91ae945f7e35bff0e45f9154fd647e 2 | BASE_CONTRACTS_COMMIT=8748f2b9b6cfa76c6f751867396a3d1eda84a559 3 | 4 | OWNER_L1=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 5 | OWNER_L2_ALIAS=0xb332E753e82626f96b83b3665f4fa92114a2b804 6 | DEPLOYER=0xa53901de1f38E313eC109482Cef3F28201Ad63A6 7 | SENDER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 12 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | 9 | # Upgrade L2 contracts 10 | l2-upgrade: 11 | forge script -vvvv --rpc-url $(L2_RPC_URL) \ 12 | RunPostSherlockL2 \ 13 | --sig "run(uint256,address)" $(L2_CHAIN_ID) $(OWNER_L2) \ 14 | --private-key $(SIGNER_PRIVATE_KEY) --broadcast -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy-deterministic-proxy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-21-deploy-challenger/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=aa0b2f531fde81bfb1605172506d1ed1cb58db48 3 | 4 | SAFE_1=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 5 | SAFE_2=0x9d8dCd68F3f88FB29C92C8c4B5039906a8b96Ed6 6 | L2_OUTPUT_ORACLE_PROXY=0x805fbEDB43E814b2216ce6926A0A19bdeDb0C8Cd 7 | DEPLOYER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /goerli/2023-06-08-upgrade-l2OO/inputs/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "L2OutputOracleUpgrade": { 3 | "newImplementationAddr": "0x73A5aE576C53Cf49d9dD6E70d895460b826B2557", 4 | "proxyAddr": "0x2a35891ff30313ccfa6ce88dcf3858bb075a2298", 5 | "proxyAdmin": "0xbc0fc544736b7d610d9b05f31b182c8154bef336", 6 | "proxyAdminOwner": "0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa" 7 | } 8 | } -------------------------------------------------------------------------------- /sepolia/.env: -------------------------------------------------------------------------------- 1 | NETWORK=sepolia 2 | L1_RPC_URL=https://ethereum-full-sepolia-k8s-dev.cbhq.net 3 | L2_RPC_URL=https://base-sepolia.cbhq.net 4 | L1_CHAIN_ID=11155111 5 | L2_CHAIN_ID=84532 6 | export PROXY_ADMIN=0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3 7 | export PROXY_ADMIN_OWNER=0x608081689Fe46936fB2fBDF7552CbB1D80ad4822 8 | export L1_STANDARD_BRIDGE_PROXY=0xfd0Bf71F60660E2f608ed56e1659C450eB113120 9 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-12-transfer-owner-l1-alias-to-l2-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /mainnet/2023-08-07-test-op-fee-nested-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=b22778cf4ac9d4307b3c7d439cbef9e672084785 3 | 4 | OP_SAFE_ADDR=0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0 5 | CB_SAFE_ADDR=0x6e1DFd5C1E22A4677663A81D24C6BA03561ef0f6 6 | NESTED_L2_SAFE_ADDR=0x0a7361e734cf3f0394B0FC4a45C74E7a4Ec70940 7 | 8 | OP_L2_RPC_URL=https://mainnet.optimism.io -------------------------------------------------------------------------------- /sepolia/2024-03-26-increase-gas-limit/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=c87a469d7d679e8a4efbace56c3646b925bcc009 2 | BASE_CONTRACTS_COMMIT=56d8f40b48795663fa88366d762161af5a1ba5d5 3 | 4 | # https://sepolia.etherscan.io/address/0xf272670eb55e895584501d564AfEB048bEd26194 5 | L1_SYSTEM_CONFIG_ADDRESS=0xf272670eb55e895584501d564AfEB048bEd26194 6 | OWNER_ADDRESS=0x608081689Fe46936fB2fBDF7552CbB1D80ad4822 7 | GAS_LIMIT=45000000 -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | 12 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 13 | -------------------------------------------------------------------------------- /mainnet/2023-06-21-transfer-system-cfg-owner/sign.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | 7 | payload=$(forge script --via-ir --rpc-url ${L1_RPC_URL} TransferSystemConfigOwner --sig "sign()" | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 8 | cd lib/base-contracts 9 | echo "${payload}" | go run ./cmd/sign --ledger --hd-path "m/44'/60'/${LEDGER_ACCOUNT}'/0/0" 10 | -------------------------------------------------------------------------------- /mainnet/2023-07-17-test-l1-nested-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=b22778cf4ac9d4307b3c7d439cbef9e672084785 3 | 4 | OP_SAFE_ADDR=0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A 5 | CB_SAFE_ADDR=0x9855054731540A48b28990B63DcF4f33d8AE46A1 6 | NESTED_L1_SAFE_ADDR=0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c 7 | 8 | DEPLOYER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F 9 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-27-test-l2-owner/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=9ef27373770606ff2aba5035be4cf7024ace64f9 3 | 4 | SAFE_1_ADDR=0x7768171512911988acfce3fd295a4cf8aa8e8dba 5 | SAFE_2_ADDR=0x185d1422dcccf117d547ff2f278be88fda59b240 6 | 7 | L2_PROXY_ADMIN_CONTRACT=0x4200000000000000000000000000000000000018 8 | L1_BLOCK_PROXY=0x4200000000000000000000000000000000000015 -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy-deterministic-proxy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include .env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | .PHONY: deploy-proxy 10 | deploy-proxy: 11 | forge script DeterministicProxyDeploy --rpc-url $(L2_RPC_URL) --sig "run(address,address,string)" $(DEPLOYER) $(ADMIN) $(SALT) \ 12 | --private-key $(SIGNER_PRIVATE_KEY) --broadcast -------------------------------------------------------------------------------- /mainnet/2024-04-01-increase-gas-limit/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=c87a469d7d679e8a4efbace56c3646b925bcc009 2 | BASE_CONTRACTS_COMMIT=32022cd06d414b75924b1565a4cfe8e0c837bf9b 3 | 4 | L1_SYSTEM_CONFIG_ADDRESS=0x73a79Fab69143498Ed3712e519A88a918e1f4072 5 | SYSTEM_CONFIG_OWNER=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 6 | 7 | GAS_LIMIT=60000000 8 | ROLLBACK_GAS_LIMIT=45000000 9 | 10 | UPDATE_NONCE=14 11 | ROLLBACK_NONCE=15 12 | -------------------------------------------------------------------------------- /sepolia-alpha/.env: -------------------------------------------------------------------------------- 1 | NETWORK=sepolia-alpha 2 | L1_RPC_URL=https://ethereum-full-sepolia-k8s-dev.cbhq.net 3 | L2_RPC_URL=https://base-sepolia-alpha.cbhq.net 4 | L1_CHAIN_ID=11155111 5 | L2_CHAIN_ID=11763072 6 | export PROXY_ADMIN=0xC5aE9023bFA79124ffA50169E1423E733D0166f1 7 | export PROXY_ADMIN_OWNER=0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430 8 | export L1_STANDARD_BRIDGE_PROXY=0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c 9 | -------------------------------------------------------------------------------- /sepolia/2023-10-07-upgrade-l1-standard-bridge/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | .PHONY: deploy 6 | deploy: 7 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) DeployL1StandardBridgeImplementation --broadcast 8 | 9 | .PHONY: upgrade 10 | upgrade: 11 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) UpgradeL1StandardBridge --broadcast 12 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/sign-l2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | source .env.local 7 | 8 | payload=$(forge script --via-ir --rpc-url ${L2_RPC_URL} TestNestedSafeL2 --sig "signTransaction(address)" ${SIGNER_SAFE_2_L2} | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 9 | cd lib/base-contracts 10 | echo "${payload}" | go run ./cmd/sign --private-key ${PRIVATE_KEY} 11 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/src/ERC20Factory.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import {OptimismMintableERC20Factory} from "@eth-optimism-bedrock/src/universal/OptimismMintableERC20Factory.sol"; 5 | 6 | contract ERC20Factory is OptimismMintableERC20Factory { 7 | constructor() { 8 | initialize({ _bridge: address(0x4200000000000000000000000000000000000010 ) }); 9 | } 10 | } -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/src/ERC20Factory.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import {OptimismMintableERC20Factory} from "@eth-optimism-bedrock/src/universal/OptimismMintableERC20Factory.sol"; 5 | 6 | contract ERC20Factory is OptimismMintableERC20Factory { 7 | constructor() { 8 | initialize({ _bridge: address(0x4200000000000000000000000000000000000010 ) }); 9 | } 10 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/sign-l1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | source .env.local 7 | 8 | payload=$(forge script --via-ir --rpc-url ${L1_RPC_URL} TestNestedSafeL1 --sig "signTransaction(address)" ${SIGNER_SAFE_2_L1} | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 9 | cd lib/base-contracts 10 | echo "${payload}" | go run ./cmd/sign --private-key ${PRIVATE_KEY} 11 | 12 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/sign-l2-approve.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | source .env.local 7 | 8 | payload=$(forge script --via-ir --rpc-url ${L2_RPC_URL} TestNestedSafeL2 --sig "signApproval(address)" ${SIGNER_SAFE_1_L2} | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 9 | cd lib/base-contracts 10 | echo "${payload}" | go run ./cmd/sign --private-key ${PRIVATE_KEY} 11 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) RunDeployBedrock 12 | jq --sort-keys . unsorted.json > deployed/addresses.json 13 | cp deployed/addresses.json ../addresses.json 14 | rm unsorted.json inputs/foundry-config.json 15 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-unpause-portal/script/UnpausePortal.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@base-contracts/script/calls/UnpausePortal.s.sol"; 6 | 7 | contract RunUnpausePortal is Script { 8 | function run(address _safe) public { 9 | UnpausePortal unpausePortal = new UnpausePortal(); 10 | unpausePortal.run(_safe); 11 | } 12 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/sign-l1-approve.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | source ../.env 5 | source .env 6 | source .env.local 7 | 8 | payload=$(forge script --via-ir --rpc-url ${L1_RPC_URL} TestNestedSafeL1 --sig "signApproval(address)" ${SIGNER_SAFE_1_L1} | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv) 9 | cd lib/base-contracts 10 | echo "${payload}" | go run ./cmd/sign --private-key ${PRIVATE_KEY} 11 | 12 | -------------------------------------------------------------------------------- /localhost/2023-06-20-systemcfg-test/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: sign 9 | sign: 10 | chmod +x ./sign.sh && ./sign.sh 11 | 12 | .PHONY: run 13 | run: 14 | forge script --via-ir --rpc-url $(L1_RPC_URL) TransferSystemConfigOwner \ 15 | --sender $(LOCALHOST_ADDR_3) --private-key $(PRIVATE_KEY_3) \ 16 | --sig "run(bytes)" $(SIGNATURES) --broadcast -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) DeployBedrock --broadcast 12 | jq --sort-keys . unsorted.json > deployed/addresses.json 13 | cp deployed/addresses.json ../addresses.json 14 | rm unsorted.json inputs/foundry-config.json 15 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-29-increase-finalization/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | 4 | DEPLOYER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d 5 | FINALIZATION_PERIOD_SECS=300 6 | L2_OUTPUT_ORACLE_PROXY=0x805fbEDB43E814b2216ce6926A0A19bdeDb0C8Cd 7 | 8 | SAFE_1_ADDR=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 9 | SAFE_2_ADDR=0x9d8dCd68F3f88FB29C92C8c4B5039906a8b96Ed6 -------------------------------------------------------------------------------- /mainnet/2023-07-19-challenger-1-of-2/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=b22778cf4ac9d4307b3c7d439cbef9e672084785 3 | 4 | DEPLOYER=0x3885226c26c467b342220132ec9d0b311b2dd43c 5 | OP_SAFE=0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A 6 | CB_SAFE=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 7 | L2_OUTPUT_ORACLE_PROXY=0x56315b90c40730925ec5485cf004d835058518A0 8 | 9 | SENDER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F -------------------------------------------------------------------------------- /mainnet/2023-06-15-unpause-portal/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | ifndef LEDGER_ACCOUNT 9 | override LEDGER_ACCOUNT = 0 10 | endif 11 | 12 | .PHONY: unpause-portal 13 | unpause-portal: 14 | forge script --rpc-url $(L1_RPC_URL) RunUnpausePortal --sender $(SENDER) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --sig "run(address)" $(INCIDENT_MULTISIG) 15 | -------------------------------------------------------------------------------- /mainnet/2023-07-19-test-l2-nested-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=b22778cf4ac9d4307b3c7d439cbef9e672084785 3 | 4 | OP_SAFE_ADDR=0x28EDB11394eb271212ED66c08f2b7893C04C5D65 5 | CB_SAFE_ADDR=0xd94E416cf2c7167608B2515B7e4102B41efff94f 6 | NESTED_L2_SAFE_ADDR=0x2304CB33d95999dC29f4CeF1e35065e670a70050 7 | DEPLOYER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F 8 | SENDER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F -------------------------------------------------------------------------------- /setup-templates/template-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) RunDeployBedrock && \ 12 | jq --sort-keys . unsorted.json > deployed/addresses.json && cp deployed/addresses.json ../addresses.json && \ 13 | rm unsorted.json && rm inputs/foundry-config.json 14 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/script/RunDeployBedrock.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.13; 4 | 5 | import "forge-std/Script.sol"; 6 | import "forge-std/StdJson.sol"; 7 | import "@base-contracts/script/deploy/l1/DeployBedrock.s.sol"; 8 | 9 | contract RunDeployBedrock is Script { 10 | function run() public { 11 | DeployBedrock deployBedrock = new DeployBedrock(); 12 | deployBedrock.run(); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-21-deploy-challenger/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | # include .env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | .PHONY: deploy-challenger 10 | deploy-challenger: 11 | forge script -vvvv --rpc-url $(L1_RPC_URL) DeployChallenger \ 12 | --sig "run(address,address,address,address)" $(DEPLOYER) $(SAFE_1) $(SAFE_2) $(L2_OUTPUT_ORACLE_PROXY) \ 13 | --private-key $(PRIVATE_KEY) --broadcast 14 | -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/execute/RunDeployBedrock.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.13; 4 | 5 | import "forge-std/Script.sol"; 6 | import "forge-std/StdJson.sol"; 7 | import "@base-contracts/script/deploy/l1/DeployBedrock.s.sol"; 8 | 9 | contract RunDeployBedrock is Script { 10 | function run() public { 11 | DeployBedrock deployBedrock = new DeployBedrock(); 12 | deployBedrock.run(); 13 | } 14 | } -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/execute/RunDeployBedrock.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.13; 4 | 5 | import "forge-std/Script.sol"; 6 | import "forge-std/StdJson.sol"; 7 | import "@base-contracts/script/deploy/l1/DeployBedrock.s.sol"; 8 | 9 | contract RunDeployBedrock is Script { 10 | function run() public { 11 | DeployBedrock deployBedrock = new DeployBedrock(); 12 | deployBedrock.run(); 13 | } 14 | } -------------------------------------------------------------------------------- /setup-templates/template-deploy/script/RunDeployBedrock.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity 0.8.15; 4 | 5 | import "forge-std/Script.sol"; 6 | import "forge-std/StdJson.sol"; 7 | import "@base-contracts/script/deploy/l1/DeployBedrock.s.sol"; 8 | 9 | contract RunDeployBedrock is Script { 10 | function run() public { 11 | DeployBedrock deployBedrock = new DeployBedrock(); 12 | deployBedrock.run(); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-26-use-challenger1of2/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=e1c66093af049cec1d79f54a36b6d935c0e58ad8 3 | 4 | DEPLOYER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d 5 | CHALLENGER=0x6c4219fC0DA6813FbB3301F103813fe230FA6653 6 | L2_OUTPUT_ORACLE_PROXY=0x805fbEDB43E814b2216ce6926A0A19bdeDb0C8Cd 7 | 8 | SAFE_1_ADDR=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 9 | SAFE_2_ADDR=0x9d8dCd68F3f88FB29C92C8c4B5039906a8b96Ed6 -------------------------------------------------------------------------------- /mainnet/2023-06-21-transfer-system-cfg-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: sign 9 | sign: 10 | chmod +x ./sign.sh && ./sign.sh 11 | 12 | .PHONY: run 13 | run: 14 | forge script --via-ir --rpc-url $(L1_RPC_URL) TransferSystemConfigOwner \ 15 | --sender $(SENDER) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" \ 16 | --sig "run(bytes)" $(SIGNATURES) --broadcast -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | go run cmd/foundry_deploy_config_gen/main.go && \ 11 | forge script --rpc-url $(L1_RPC_URL) RunDeployBedrock && \ 12 | jq --sort-keys . unsorted.json > deployed/addresses.json && cp deployed/addresses.json ../addresses.json && \ 13 | rm unsorted.json && rm inputs/foundry-config.json 14 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-test-tx/script/Test.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import "src/Test.sol"; 6 | 7 | contract TestScript is Script { 8 | function run() public { 9 | vm.broadcast(0x0996bb0F5d56BB72c85C50Bd92A950E9756dF117); 10 | Test test = new Test(); 11 | vm.broadcast(0x0996bb0F5d56BB72c85C50Bd92A950E9756dF117); 12 | test.increment(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | chmod +x inputs/construct-config.sh && ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) RunDeployBedrock --broadcast 12 | jq --sort-keys . unsorted.json > deployed/addresses.json 13 | cp deployed/addresses.json ../addresses.json 14 | rm unsorted.json inputs/foundry-config.json 15 | -------------------------------------------------------------------------------- /goerli/2023-06-27-test-nested-safe/script/DeployTest.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@base-contracts/src/TestOwner.sol"; 6 | 7 | contract DeployTest is Script { 8 | function run(address deployer, address nestedSafe) public { 9 | vm.broadcast(deployer); 10 | TestOwner testowner = new TestOwner(nestedSafe); 11 | console.log(address(testowner)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) DeployBedrock --broadcast 12 | jq --sort-keys . unsorted.json > deployed/addresses.json 13 | cp deployed/addresses.json ../addresses.json 14 | rm unsorted.json inputs/foundry-config.json 15 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | ./inputs/construct-config.sh && \ 11 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) DeployBedrock --broadcast 12 | jq --sort-keys . unsorted.json > deployed/addresses.json 13 | cp deployed/addresses.json ../addresses.json 14 | rm unsorted.json inputs/foundry-config.json 15 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-12-transfer-owner-l1-alias-to-l2-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=fc56ded13c91ae945f7e35bff0e45f9154fd647e 2 | BASE_CONTRACTS_COMMIT=6ec7e640b13fc04bb508475c6a5c29e1488ed0b2 3 | 4 | L2_PROXY_ADMIN_CONTRACT=0x4200000000000000000000000000000000000018 5 | L1_OPTIMISM_PORTAL=0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B 6 | OWNER_L1_SAFE=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 7 | OWNER_L2_SAFE=0x7768171512911988acfce3fd295a4cf8aa8e8dba 8 | SIGNER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d -------------------------------------------------------------------------------- /goerli-alpha/2023-06-12-transfer-owner-l1-alias-to-l2-safe/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | transfer-owner: 9 | forge script --rpc-url $(L1_RPC_URL) \ 10 | TransferOwnershipForcedInclusion \ 11 | --private-key $(SIGNER_PRIVATE_KEY) \ 12 | --sig "run(address,address,address,address,address)" \ 13 | $(L2_PROXY_ADMIN_CONTRACT) $(L1_OPTIMISM_PORTAL) $(OWNER_L1_SAFE) $(OWNER_L2_SAFE) $(SIGNER) --broadcast -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/script/DeployTest.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@base-contracts/src/TestOwner.sol"; 6 | 7 | contract DeployTest is Script { 8 | function run(address deployer, address nestedSafe) public { 9 | vm.broadcast(deployer); 10 | TestOwner testowner = new TestOwner(nestedSafe); 11 | console.log(address(testowner)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /goerli-alpha/2023-10-27-ownership-update/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include ../.env.local 5 | 6 | 7 | .PHONY: sign 8 | sign: 9 | $(GOPATH)/bin/eip712sign --private-key $(PRIVATE_KEY) -- \ 10 | forge script --rpc-url $(L2_RPC_URL) UpdateOwners --sig "sign()" 11 | 12 | .PHONY: run 13 | run: 14 | forge script --rpc-url $(L2_RPC_URL) \ 15 | UpdateOwners --sig "run(bytes)" $(SIGNATURES) \ 16 | --private-key $(PRIVATE_KEY) --broadcast 17 | -------------------------------------------------------------------------------- /mainnet/2023-06-15-validate-deploy/script/ValidateDeploy.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@base-contracts/script/deploy/l1/CheckBedrockDeploy.s.sol"; 6 | 7 | contract ValidateDeploy is Script { 8 | function run() public { 9 | CheckBedrockDeploy checkBedrockDeploy = new CheckBedrockDeploy(); 10 | checkBedrockDeploy.setup(); 11 | checkBedrockDeploy.run(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Executable cli binary 2 | bin/ 3 | 4 | cache/ 5 | out/ 6 | lib/ 7 | 8 | # Localhost and run-latest deploy scripts 9 | **/records/**/**/run-latest.json 10 | localhost/*/records/ 11 | **/records/**/**/dry-run/ 12 | 13 | # Test binary, built with `go test -c` 14 | *.test 15 | 16 | # Output of the go coverage tool, specifically when used with LiteIDE 17 | *.out 18 | out/ 19 | 20 | /.idea/ 21 | 22 | yarn-error.log 23 | 24 | .env.local 25 | 26 | .gitmodules 27 | 28 | .DS_Store 29 | -------------------------------------------------------------------------------- /goerli/2023-06-12-batcher-rotation/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | ifndef LEDGER_ACCOUNT 9 | override LEDGER_ACCOUNT = 1 10 | endif 11 | 12 | .PHONY: run 13 | run: 14 | forge script --rpc-url $(RPC_URL) SetBatcherAddr --sender $(SENDER) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --sig "run(address,address)" 0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa 0xb15eea247ece011c68a614e4a77ad648ff495bc1 --broadcast 15 | -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=fc56ded13c91ae945f7e35bff0e45f9154fd647e 2 | BASE_CONTRACTS_COMMIT=8748f2b9b6cfa76c6f751867396a3d1eda84a559 3 | SAFE_COMMIT=bf943f80fec5ac647159d26161446ac5d716a294 4 | 5 | # Safe deployment addresses and resulting Safe 6 | 7 | SAFE=0x41715dd88d95c3c80248f19dace21015346069b8 8 | SAFE_PROXY_FACTORY=0x5493000000000000000000000000000000000003 9 | SAFE_CODE=0x5493000000000000000000000000000000000001 10 | FALLBACK_HANDLER=0x5493000000000000000000000000000000000005 -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/script/RunDeployERC20Factory.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity 0.8.15; 4 | 5 | import "forge-std/Script.sol"; 6 | import {ERC20Factory} from "../src/ERC20Factory.sol"; 7 | 8 | contract RunERC20FactoryDeploy is Script { 9 | function run() public { 10 | uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); 11 | vm.startBroadcast(deployerPrivateKey); 12 | new ERC20Factory{salt: '0xBA5ED'}(); 13 | } 14 | } -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/script/RunDeployERC20Factory.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity 0.8.15; 4 | 5 | import "forge-std/Script.sol"; 6 | import {ERC20Factory} from "../src/ERC20Factory.sol"; 7 | 8 | contract RunERC20FactoryDeploy is Script { 9 | function run() public { 10 | uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); 11 | vm.startBroadcast(deployerPrivateKey); 12 | new ERC20Factory{salt: '0xBA5ED'}(); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/script/DeployTest.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "forge-std/StdJson.sol"; 6 | import "src/TestIncrement.sol"; 7 | 8 | contract DeployTestIncrement is Script { 9 | function run(address deployer, address ownerL1) public { 10 | vm.broadcast(deployer); 11 | TestIncrement test = new TestIncrement(ownerL1); 12 | console.log(test.owner()); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/script/L1toL2AliasedAddr.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import { AddressAliasHelper } from "@eth-optimism-bedrock/contracts/vendor/AddressAliasHelper.sol"; 6 | 7 | // TODO: add this to base-org/contracts 8 | contract L1toL2AliasAddress is Script { 9 | function run(address ownerL1) public view { 10 | console.log(AddressAliasHelper.applyL1ToL2Alias(ownerL1)); 11 | } 12 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-10-04-fix-batcher-proposer/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | 9 | .PHONY: sign 10 | sign: 11 | $(GOPATH)/bin/eip712sign --private-key $(PRIVATE_KEY) -- \ 12 | forge script --rpc-url $(L1_RPC_URL) SetBatcherAddr --sig "sign()" 13 | 14 | .PHONY: run 15 | run: 16 | forge script --rpc-url $(L1_RPC_URL) \ 17 | SetBatcherAddr --sig "run(bytes)" $(SIGNATURES) \ 18 | --private-key $(PRIVATE_KEY) \ 19 | --broadcast -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/script/DeployL2Implementations.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "forge-std/StdJson.sol"; 6 | import "@base-contracts/script/deploy/l2/DeployBedrockL2ImplContracts.s.sol"; 7 | 8 | contract DeployL2Implementations is Script { 9 | function run() public { 10 | DeployBedrockL2ImplContracts deployL2 = new DeployBedrockL2ImplContracts(); 11 | deployL2.run(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /goerli/2023-06-08-upgrade-l2OO/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: example 9 | example: 10 | forge script --rpc-url $(RPC_URL) $(script) --sig "run(address)" $(DEPLOYER) --broadcast 11 | 12 | ifndef LEDGER_ACCOUNT 13 | override LEDGER_ACCOUNT = 0 14 | endif 15 | 16 | goerli-prod-upgrade-l2oo: 17 | @forge script --rpc-url $(L1_RPC_URL) L2OutputOracleUpgrade -vvvv --sig "run(address)" $(SENDER) --ledger --hd-paths ${LEDGER_ACCOUNT} -------------------------------------------------------------------------------- /mainnet/2024-04-12-deployERC20Factory/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | forge script RunERC20FactoryDeploy --rpc-url $(L2_RPC_URL) --broadcast 11 | 12 | .PHONY: verify 13 | verify: 14 | forge verify-contract 0x6922ac4dbdfedea3a1e5535f12c3171f2b964c91 OptimismMintableERC20Factory \ 15 | --watch --chain-id 8453 \ 16 | --num-of-optimizations=99999 --retries=1 \ 17 | --verifier-url https://api.basescan.org/api -------------------------------------------------------------------------------- /mainnet/2023-08-15-support-eas/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=48ed4e8c2b03d2c038aaf3ee308b2095bcf9e58f 2 | BASE_CONTRACTS_COMMIT=55b9dafd276ed20c2490f374df1e01ce9d7590da 3 | 4 | L2_NESTED_SAFE=0x2304cb33d95999dc29f4cef1e35065e670a70050 5 | OP_SAFE_ADDR=0x28EDB11394eb271212ED66c08f2b7893C04C5D65 6 | CB_SAFE_ADDR=0xd94e416cf2c7167608b2515b7e4102b41efff94f 7 | 8 | SENDER=0x8e5de5cA219e3FFC9cdEb2Dc7D71B8a199cd2C4F 9 | 10 | REGISTRY_IMPL_ADDRESS=0x75505a97BD334E7BD3C476893285569C4136Fa0F 11 | EAS_IMPL_ADDRESS=0xbEb5Fc579115071764c7423A4f12eDde41f106Ed -------------------------------------------------------------------------------- /sepolia/2024-04-10-deploy-ERC20Factory/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | forge script RunERC20FactoryDeploy --rpc-url $(L2_RPC_URL) --broadcast 11 | 12 | .PHONY: verify 13 | verify: 14 | forge verify-contract 0x6922ac4dbdfedea3a1e5535f12c3171f2b964c91 OptimismMintableERC20Factory \ 15 | --watch --chain-id 84532 \ 16 | --num-of-optimizations=99999 --retries=1 \ 17 | --verifier-url https://sepolia-api.basescan.org/api -------------------------------------------------------------------------------- /sepolia-alpha/2023-10-06-upgrade-l1-standard-bridge/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | .PHONY: prepare 6 | prepare: 7 | rm -rf src 8 | cp -r lib/optimism/packages/contracts-bedrock/src/ src/ 9 | 10 | .PHONY: deploy 11 | deploy: 12 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) DeployL1StandardBridgeImplementation --broadcast 13 | 14 | .PHONY: upgrade 15 | upgrade: 16 | forge script --rpc-url $(L1_RPC_URL) --private-key $(PRIVATE_KEY) UpgradeL1StandardBridge --broadcast 17 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/script/RunPostSherlockL2.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "forge-std/StdJson.sol"; 6 | import "@base-contracts/script/upgrade/l2/PostSherlockL2.s.sol"; 7 | 8 | contract RunPostSherlockL2 is Script { 9 | function run(uint256 _l2ChainId, address _safe) public { 10 | PostSherlockL2 postSherlockL2 = new PostSherlockL2(_l2ChainId); 11 | postSherlockL2.setUp(); 12 | postSherlockL2.run(_safe); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/script/RunPostSherlockL2.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import "forge-std/StdJson.sol"; 6 | import "@base-contracts/script/upgrade/l2/PostSherlockL2.s.sol"; 7 | 8 | contract RunPostSherlockL2 is Script { 9 | function run(uint256 _l2ChainId, address _safe) public { 10 | PostSherlockL2 postSherlockL2 = new PostSherlockL2(_l2ChainId); 11 | postSherlockL2.setUp(); 12 | postSherlockL2.run(_safe); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /mainnet/2024-03-26-increase-gas-limit/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=c87a469d7d679e8a4efbace56c3646b925bcc009 2 | BASE_CONTRACTS_COMMIT=32022cd06d414b75924b1565a4cfe8e0c837bf9b 3 | 4 | L1_SYSTEM_CONFIG_ADDRESS=0x73a79Fab69143498Ed3712e519A88a918e1f4072 5 | SYSTEM_CONFIG_OWNER=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 6 | 7 | GAS_LIMIT=45000000 8 | ROLLBACK_GAS_LIMIT=30000000 9 | 10 | # Expecting pause (N=11) and unpause (N=12) to execute before this, explicitly set the nonces accordingly 11 | # See: mainnet/2024-03-05-pause-unpause-test 12 | UPDATE_NONCE=13 13 | ROLLBACK_NONCE=14 14 | -------------------------------------------------------------------------------- /mainnet/2024-04-17-upgrade-erc20-factory/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=844cc20084a2e9716631b4092ce7eca4804a8e0a 2 | BASE_CONTRACTS_COMMIT=323c957350fe27c1f2052c04941ef6c30c894812 3 | 4 | BRIDGE=0x4200000000000000000000000000000000000010 5 | PROXY_ADMIN=0x4200000000000000000000000000000000000018 6 | ERC20_FACTORY=0x4200000000000000000000000000000000000012 7 | ERC20_FACTORY_IMPL=0x6922ac4DbDfEdEa3a1E5535f12c3171f2b964C91 8 | NESTED_SAFE=0x2304CB33d95999dC29f4CeF1e35065e670a70050 9 | BASE_SAFE=0xd94E416cf2c7167608B2515B7e4102B41efff94f 10 | OP_SAFE=0x28EDB11394eb271212ED66c08f2b7893C04C5D65 -------------------------------------------------------------------------------- /mainnet/2024-04-12-deployERC20Factory/script/RunERC20FactoryDeploy.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity 0.8.15; 4 | 5 | import "forge-std/Script.sol"; 6 | import {OptimismMintableERC20Factory} from "@eth-optimism-bedrock/src/universal/OptimismMintableERC20Factory.sol"; 7 | 8 | contract RunERC20FactoryDeploy is Script { 9 | function run() public { 10 | uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); 11 | vm.startBroadcast(deployerPrivateKey); 12 | new OptimismMintableERC20Factory{salt: '0xBA5ED'}(); 13 | } 14 | } -------------------------------------------------------------------------------- /sepolia/2024-04-10-deploy-ERC20Factory/script/RunERC20FactoryDeploy.s.sol: -------------------------------------------------------------------------------- 1 | 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity 0.8.15; 4 | 5 | import "forge-std/Script.sol"; 6 | import {OptimismMintableERC20Factory} from "@eth-optimism-bedrock/src/universal/OptimismMintableERC20Factory.sol"; 7 | 8 | contract RunERC20FactoryDeploy is Script { 9 | function run() public { 10 | uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); 11 | vm.startBroadcast(deployerPrivateKey); 12 | new OptimismMintableERC20Factory{salt: '0xBA5ED'}(); 13 | } 14 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/src/TestIncrement.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | contract TestIncrement { 5 | uint256 public number; 6 | address public owner; 7 | 8 | constructor (address _owner) { 9 | require(_owner != address(0), "Owner cannot be zero address"); 10 | number = 0; 11 | owner = _owner; 12 | } 13 | 14 | function increment() external { 15 | if (msg.sender != owner) { 16 | revert("Only owner can increment"); 17 | } 18 | number++; 19 | } 20 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l1-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include .env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | sign: 10 | forge script --via-ir --rpc-url ${L1_RPC_URL} TransferL1Owner --sig "sign()" | \ 11 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 12 | (cd lib/base-contracts && go run ./cmd/sign --private-key ${PRIVATE_KEY}) 13 | 14 | run: 15 | forge script --via-ir --rpc-url $(L1_RPC_URL) \ 16 | TransferL1Owner --sig "run(bytes)" $(SIGNATURES) \ 17 | --private-key $(PRIVATE_KEY) --broadcast 18 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-23-transfer-l2-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include .env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | sign: 10 | forge script --via-ir --rpc-url ${L2_RPC_URL} TransferL2Owner --sig "sign()" | \ 11 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 12 | (cd lib/base-contracts && go run ./cmd/sign --private-key ${PRIVATE_KEY}) 13 | 14 | run: 15 | forge script --via-ir --rpc-url $(L2_RPC_URL) \ 16 | TransferL2Owner --sig "run(bytes)" $(SIGNATURES) \ 17 | --private-key $(PRIVATE_KEY) --broadcast 18 | -------------------------------------------------------------------------------- /goerli/2023-06-27-test-nested-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | 4 | DEPLOYER=0x29861a8043358242c0244C8530a535a0eB4712F7 5 | 6 | NESTED_SAFE_L1=0x444b8C3E4eA49cE15A93D96AfA83D421F6049524 7 | SIGNER_SAFE_1_L1=0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa 8 | SIGNER_SAFE_2_L1=0x4574D0A407c9eF275128Df822CF13BF8aEF28BD8 9 | 10 | NESTED_SAFE_L2=0x4c7C99555e8afac3571c7456448021239F5b73bA 11 | SIGNER_SAFE_1_L2=0x2eD486761dcF287E7b79E526B0d3fC2349834a66 12 | SIGNER_SAFE_2_L2=0xfC99F72E433982088346ACa05FA65B0dff09F19B 13 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=e1c66093af049cec1d79f54a36b6d935c0e58ad8 3 | 4 | DEPLOYER=0xD753a89450213A8D7f7aCCE3a615d71ebD97366d 5 | 6 | NESTED_SAFE_L1=0xCDdEb1F77Cbc9BD2Bd07aD5808CE6108EB07DF89 7 | SIGNER_SAFE_1_L1=0xA221e753e82626F96b83b3665F4fA92114a2a6f3 8 | SIGNER_SAFE_2_L1=0x9d8dCd68F3f88FB29C92C8c4B5039906a8b96Ed6 9 | 10 | 11 | NESTED_SAFE_L2=0xf71a498086d00843d7754964b27dd7198a16ee7f 12 | SIGNER_SAFE_1_L2=0x7768171512911988acfce3fd295a4cf8aa8e8dba 13 | SIGNER_SAFE_2_L2=0x185d1422dcccf117d547ff2f278be88fda59b240 -------------------------------------------------------------------------------- /sepolia-alpha/2023-09-20-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | cp deploy-config/deploy-config.json lib/optimism/packages/contracts-bedrock/deploy-config/ 11 | cd lib/optimism/packages/contracts-bedrock && \ 12 | forge build && \ 13 | ETH_RPC_URL=$(L1_RPC_URL) DEPLOYMENT_CONTEXT=deploy-config IMPL_SALT=base forge script --private-key $(PRIVATE_KEY) --rpc-url $(L1_RPC_URL) Deploy --broadcast 14 | cp lib/optimism/packages/contracts-bedrock/deployments/deploy-config/.deploy deployed/addresses.json 15 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | get-aliased-addr: 9 | forge script L1toL2AliasAddress --sig "run(address)" $(OWNER_L1) 10 | 11 | deploy-test-increment: 12 | forge script --rpc-url $(L2_RPC_URL) DeployTestIncrement --private-key $(PRIVATE_KEY) --sig "run(address,address)" $(DEPLOYER) $(OWNER_L2_ALIAS) --broadcast 13 | 14 | call-increment: 15 | forge script -vvvv --rpc-url $(L1_RPC_URL) SafeForcedInclusion --sender $(SENDER) --private-key $(SIGNER_PRIVATE_KEY) --sig "run(address)" $(OWNER_L1) -------------------------------------------------------------------------------- /goerli-alpha/2023-06-28-safe-threshold/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include ../.env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | .PHONY: sign 10 | sign: 11 | forge script --via-ir --rpc-url $(L2_RPC_URL) ChangeThreshold --sig "sign()" | \ 12 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 13 | (cd lib/base-contracts && go run ./cmd/sign --private-key $(PRIVATE_KEY)) 14 | 15 | .PHONY: run 16 | run: 17 | forge script --via-ir --rpc-url $(L2_RPC_URL) \ 18 | ChangeThreshold --sig "run(bytes)" $(SIGNATURES) \ 19 | --private-key $(PRIVATE_KEY) --broadcast 20 | -------------------------------------------------------------------------------- /sepolia/2023-09-26-deploy/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Deploy command 7 | ## 8 | .PHONY: deploy 9 | deploy: 10 | cp deploy-config/deploy-config.json lib/optimism/packages/contracts-bedrock/deploy-config/ 11 | cd lib/optimism/packages/contracts-bedrock && \ 12 | forge build && \ 13 | ETH_RPC_URL=$(L1_RPC_URL) DEPLOYMENT_CONTEXT=deploy-config IMPL_SALT=allyourbasearebelongtoyou forge script --private-key $(PRIVATE_KEY) --rpc-url $(L1_RPC_URL) Deploy --broadcast 14 | cp lib/optimism/packages/contracts-bedrock/deployments/deploy-config/.deploy deployed/addresses.json 15 | -------------------------------------------------------------------------------- /goerli/2023-06-22-deploy-challenger/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=ed6d5c2054bdaad0a826d3d0fad8231756650028 # commit from PR: https://github.com/base-org/contracts/pull/13 (has not been merged to master yet) 3 | 4 | DEPLOYER=0x833994eb0f293c4b314d94610cf2b5e57e061e41 # CB K2 Key 5 | SAFE_1=0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa 6 | SAFE_2=0x4574D0A407c9eF275128Df822CF13BF8aEF28BD8 7 | L2_OUTPUT_ORACLE_PROXY=0x2A35891ff30313CcFa6CE88dcf3858bb075A2298 8 | 9 | CHALLENGER=0xf30b40411c4d76228092E7eCdc1593c996b13D22 10 | VERIFIER=etherscan 11 | VERIFIER_URL=https://api-goerli.etherscan.io/api -------------------------------------------------------------------------------- /goerli/2023-08-15-support-eas/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=48ed4e8c2b03d2c038aaf3ee308b2095bcf9e58f 2 | BASE_CONTRACTS_COMMIT=55b9dafd276ed20c2490f374df1e01ce9d7590da 3 | 4 | DEPLOYER=0xb92b975835b32be2cfc2dcb002a54a7c41ff58c0 5 | SENDER=0x066a2b1419CCf2e1e672A03F14cC1d1146E717a0 6 | 7 | REGISTRY_IMPL_ADDRESS=0x36bA68d68CABC3a67eCc987013F75F9fE5832928 8 | EAS_IMPL_ADDRESS=0x53B1ac834418d2d55b73060452A3494a1d1122C6 9 | 10 | VERIFIER=etherscan 11 | VERIFIER_URL=https://api-goerli.basescan.org/api 12 | 13 | L2_NESTED_SAFE=0x4c7C99555e8afac3571c7456448021239F5b73bA 14 | OP_SAFE_ADDR=0xfC99F72E433982088346ACa05FA65B0dff09F19B 15 | CB_SAFE_ADDR=0x2eD486761dcF287E7b79E526B0d3fC2349834a66 16 | -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l2-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 1 7 | endif 8 | 9 | ## 10 | # Foundry commands 11 | ## 12 | sign: 13 | forge script --via-ir --rpc-url ${L2_RPC_URL} TransferL2Owner --sig "sign()" | \ 14 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 15 | (cd lib/base-contracts && go run ./cmd/sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0") 16 | 17 | run: 18 | forge script --via-ir --rpc-url $(L2_RPC_URL) \ 19 | TransferL2Owner --sig "run(bytes)" $(SIGNATURES) \ 20 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast -------------------------------------------------------------------------------- /goerli-alpha/2023-08-15-support-eas/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=48ed4e8c2b03d2c038aaf3ee308b2095bcf9e58f 2 | BASE_CONTRACTS_COMMIT=55b9dafd276ed20c2490f374df1e01ce9d7590da 3 | 4 | DEPLOYER=0xE91efB608747f8f99CBB7d77020B80ECaEc16E26 5 | 6 | REGISTRY_IMPL_ADDRESS=0xba906B089b14F340B0eE1B1F453827C95FCF588C 7 | EAS_IMPL_ADDRESS=0x95a24759136FC22B1C6f676DAfea738f6c6D846f 8 | 9 | VERIFIER=blockscout 10 | VERIFIER_URL=https://base-goerli-alpha-explorer.cbhq.net/api? # or https://api-goerli.etherscan.io/api 11 | 12 | L2_NESTED_SAFE=0xf71a498086d00843d7754964b27dd7198a16ee7f 13 | CB_SAFE_ADDR=0x7768171512911988acfce3fd295a4cf8aa8e8dba 14 | OP_SAFE_ADDR=0x185d1422dcccf117d547ff2f278be88fda59b240 15 | -------------------------------------------------------------------------------- /sepolia/2023-09-26-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'script' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | remappings = [ 11 | # '@optimism/=lib/optimism/packages/contracts-bedrock', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@cwia/=lib/clones-with-immutable-args/src', 16 | 'safe-contracts/=lib/safe-contracts/contracts/', 17 | ] 18 | -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l1-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 1 7 | endif 8 | 9 | ## 10 | # Foundry commands 11 | ## 12 | sign: 13 | forge script --via-ir --rpc-url ${L1_RPC_URL} TransferL1Owner --sig "sign()" | \ 14 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 15 | (cd lib/base-contracts && go run ./cmd/sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0") 16 | 17 | run: 18 | forge script --via-ir --rpc-url $(L1_RPC_URL) \ 19 | TransferL1Owner --sig "run(bytes)" $(SIGNATURES) \ 20 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 21 | -------------------------------------------------------------------------------- /sepolia-alpha/2023-09-20-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'script' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | remappings = [ 11 | # '@optimism/=lib/optimism/packages/contracts-bedrock', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@cwia/=lib/clones-with-immutable-args/src', 16 | 'safe-contracts/=lib/safe-contracts/contracts/', 17 | ] 18 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | # Using a named volume for the go root (where packages are installed) so that 4 | # filesystem performance on a Mac is acceptable (if we bind-mount to the host, 5 | # then Mac FS performance is poor). 6 | volumes: 7 | go_root_volume: 8 | 9 | services: 10 | main: 11 | image: golang:1.18 12 | volumes: 13 | - $PWD/..:$PWD/.. 14 | - go_root_volume:/go 15 | working_dir: $PWD 16 | environment: 17 | - GO111MODULE=off 18 | command: echo 19 | 20 | foundry-main: 21 | image: ghcr.io/foundry-rs/foundry:nightly-cd7850bfb64a4babb07bf5dd6fe5ebac664449cf 22 | volumes: 23 | - $PWD/..:$PWD/.. 24 | working_dir: $PWD 25 | -------------------------------------------------------------------------------- /goerli/2023-08-15-support-eas/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | via-ir = true 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-08-15-support-eas/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | via-ir = true 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-08-15-support-eas/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | via-ir = true 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-07-11-use-challenger1of2/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=a541c8a859d9258ad410598655f189de69adae19 2 | BASE_CONTRACTS_COMMIT=af37067a74fbe896d20647084466592de80a6a22 3 | 4 | DEPLOYER=0x833994eb0f293c4b314d94610cf2b5e57e061e41 5 | CHALLENGER=0xf30b40411c4d76228092E7eCdc1593c996b13D22 6 | L2_OUTPUT_ORACLE_PROXY=0x2A35891ff30313CcFa6CE88dcf3858bb075A2298 7 | PROPOSER=0x4f28beB40635093B72dEf43D0aD801cdd8E0e6fE 8 | L2_OUTPUT_ORACLE_IMPL=0x551E1aa0e21b1c7dD408dBFb31f1368A987df622 9 | 10 | SAFE_1_ADDR=0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa 11 | SAFE_2_ADDR=0x4574D0A407c9eF275128Df822CF13BF8aEF28BD8 12 | 13 | VERIFIER=etherscan 14 | VERIFIER_URL=https://api-goerli.etherscan.io/api 15 | 16 | SENDER=0x066a2b1419CCf2e1e672A03F14cC1d1146E717a0 -------------------------------------------------------------------------------- /localhost/2023-07-11-test-l1-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2024-02-23-transfer-op/.env: -------------------------------------------------------------------------------- 1 | OPTIMISM_RPC_URL=https://mainnet.optimism.io 2 | 3 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 4 | BASE_CONTRACTS_COMMIT=a147139671c09923f78ae46a6ebedc91209bb076 5 | 6 | OP_TOKEN=0x4200000000000000000000000000000000000042 7 | NESTED_SAFE=0x0a7361e734cf3f0394B0FC4a45C74E7a4Ec70940 8 | OP_MULTISIG=0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0 9 | CB_MULTISIG=0x6e1DFd5C1E22A4677663A81D24C6BA03561ef0f6 10 | SMART_ESCROW_CONTRACT=0x1a984e693f8a9c38f3ae1f1af14b677ac245dead 11 | ALLIGATOR_PROXY=0x7f08F3095530B67CdF8466B7a923607944136Df0 12 | UPFRONT_GRANT_TOKENS=10737418000000000000000000 13 | TOKENS_TO_TRANSFER=26843545000000000000000000 14 | BENEFICIARY=0x635Fb974F09B269Bc750bF96338c29cF41430125 -------------------------------------------------------------------------------- /goerli-alpha/2023-06-27-test-l2-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-28-safe-threshold/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-22-deploy-challenger/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l1-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-29-transfer-l2-owner/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-06-26-use-challenger1of2/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-22-deploy-challenger/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: deploy-challenger 9 | deploy-challenger: 10 | forge script -vvvv --rpc-url $(L1_RPC_URL) DeployChallenger \ 11 | --sig "run(address,address,address,address)" $(DEPLOYER) $(SAFE_1) $(SAFE_2) $(L2_OUTPUT_ORACLE_PROXY) 12 | 13 | verify-challenger: 14 | forge verify-contract ${CHALLENGER} Challenger1of2 --constructor-args $(shell cast abi-encode "constructor(address,address,address)" ${SAFE_1} ${SAFE_2} ${L2_OUTPUT_ORACLE_PROXY}) --verifier ${VERIFIER} --watch --chain-id 5 --verifier-url ${VERIFIER_URL} --compiler-version v0.8.15+commit.e14f2714 --num-of-optimizations=999999 --retries=1 -------------------------------------------------------------------------------- /sepolia/2024-02-28-pause-unpause-portal/script/PausePortal.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@eth-optimism-bedrock/src/L1/OptimismPortal.sol"; 6 | 7 | contract PausePortal is Script { 8 | address internal OPTIMISM_PORTAL_PROXY = vm.envAddress("OPTIMISM_PORTAL_PROXY"); 9 | address internal GUARDIAN = vm.envAddress("GUARDIAN"); 10 | 11 | function run() external { 12 | OptimismPortal optimismPortal = OptimismPortal(payable(OPTIMISM_PORTAL_PROXY)); 13 | 14 | vm.broadcast(GUARDIAN); 15 | optimismPortal.pause(); 16 | 17 | require(optimismPortal.paused() == true, "PausePortal: failed to pause"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /goerli/2023-08-24-feevault-fix/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia/2024-02-28-pause-unpause-portal/script/UnpausePortal.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@eth-optimism-bedrock/src/L1/OptimismPortal.sol"; 6 | 7 | contract UnpausePortal is Script { 8 | address internal OPTIMISM_PORTAL_PROXY = vm.envAddress("OPTIMISM_PORTAL_PROXY"); 9 | address internal GUARDIAN = vm.envAddress("GUARDIAN"); 10 | 11 | function run() external { 12 | OptimismPortal optimismPortal = OptimismPortal(payable(OPTIMISM_PORTAL_PROXY)); 13 | 14 | vm.broadcast(GUARDIAN); 15 | optimismPortal.unpause(); 16 | 17 | require(optimismPortal.paused() == false, "PausePortal: failed to unpause"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /goerli-alpha/2023-07-12-practicing-incident-response/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | 18 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-06-27-test-nested-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | via-ir = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-07-11-use-challenger1of2/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir=true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-08-23-deploy-revshare/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-07-11-test-l2-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-08-22-fee-vault-fix/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-08-28-deploy-revshare/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-08-21-deploy-revshare/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-08-21-feevault-fix/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-10-27-ownership-update/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /localhost/2023-06-27-use-challenger1of2/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | via-ir = true 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-07-17-test-l1-nested-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-07-19-challenger-1-of-2/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-07-19-test-l2-nested-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via_ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2024-02-21-setup-smart-escrow/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2024-04-15-redeploy-smart-escrow/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia/2024-01-22-deploy-revshare/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 20 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-29-increase-finalization/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | remappings = [ 11 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts' 16 | ] 17 | via-ir=true 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-10-04-fix-batcher-proposer/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-08-07-test-op-fee-nested-safe/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via_ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia/2024-02-28-pause-unpause-portal/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 20 | -------------------------------------------------------------------------------- /mainnet/2023-07-26-transfer-owner-nested-safes/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli/2023-08-15-support-eas/script/DeployEASImplementation.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.19; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@eth-optimism-bedrock/src/EAS/EAS.sol"; 6 | import "@eth-optimism-bedrock/src/EAS/SchemaRegistry.sol"; 7 | 8 | contract DeployEASImplementation is Script { 9 | address internal _deployer = vm.envAddress("DEPLOYER"); 10 | 11 | function run() public { 12 | vm.broadcast(_deployer); 13 | SchemaRegistry schemaRegistry = new SchemaRegistry(); 14 | 15 | vm.broadcast(_deployer); 16 | EAS eas = new EAS(); 17 | 18 | console.logAddress(_deployer); 19 | console.logAddress(address(schemaRegistry)); 20 | console.logAddress(address(eas)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /mainnet/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", 3 | "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", 4 | "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", 5 | "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", 6 | "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", 7 | "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", 8 | "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", 9 | "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", 10 | "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", 11 | "SystemDictatorProxy": "0x1fE3fdd1F0193Dd657C0a9AAC37314D6B479E557" 12 | } 13 | -------------------------------------------------------------------------------- /setup-templates/template-generic/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /setup-templates/template-incident/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2024-03-26-increase-gas-limit/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2024-04-01-increase-gas-limit/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia/2024-03-26-increase-gas-limit/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /goerli-alpha/2023-08-15-support-eas/script/DeployEASImplementation.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.19; 3 | 4 | import "forge-std/Script.sol"; 5 | import "@eth-optimism-bedrock/src/EAS/EAS.sol"; 6 | import "@eth-optimism-bedrock/src/EAS/SchemaRegistry.sol"; 7 | 8 | contract DeployEASImplementation is Script { 9 | address internal _deployer = vm.envAddress("DEPLOYER"); 10 | 11 | function run() public { 12 | vm.broadcast(_deployer); 13 | SchemaRegistry schemaRegistry = new SchemaRegistry(); 14 | 15 | vm.broadcast(_deployer); 16 | EAS eas = new EAS(); 17 | 18 | console.logAddress(_deployer); 19 | console.logAddress(address(schemaRegistry)); 20 | console.logAddress(address(eas)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /mainnet/2024-03-05-pause-unpause-test/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 21 | -------------------------------------------------------------------------------- /mainnet/2024-03-07-ecotone-sysconfig-updates/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia/2024-03-07-ecotone-sysconfig-updates/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /setup-templates/template-deploy/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | script = 'execute' 6 | broadcast = 'records' 7 | fs_permissions = [ {access = "read-write", path = "./"} ] 8 | optimizer = true 9 | optimizer_runs = 999999 10 | solc_version = "0.8.15" 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/' 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 21 | -------------------------------------------------------------------------------- /mainnet/2024-04-17-upgrade-erc20-factory/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [{ access = "read-write", path = "./" }] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.19" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/', 18 | ] 19 | 20 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config 21 | -------------------------------------------------------------------------------- /sepolia/2023-10-07-upgrade-l1-standard-bridge/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | via-ir = true 10 | remappings = [ 11 | '@eth-optimism-bedrock/contracts/=lib/optimism/packages/contracts-bedrock/src/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts', 16 | '@cwia/=lib/clones-with-immutable-args/src' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /sepolia-alpha/2023-10-06-upgrade-l1-standard-bridge/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | via-ir = true 10 | remappings = [ 11 | '@eth-optimism-bedrock/contracts/=lib/optimism/packages/contracts-bedrock/src/', 12 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 13 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 14 | '@rari-capital/solmate/=lib/solmate/', 15 | '@base-contracts/=lib/base-contracts', 16 | '@cwia/=lib/clones-with-immutable-args/src' 17 | ] 18 | 19 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", 3 | "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", 4 | "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", 5 | "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", 6 | "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", 7 | "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", 8 | "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", 9 | "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", 10 | "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", 11 | "SystemDictatorProxy": "0x1fE3fdd1F0193Dd657C0a9AAC37314D6B479E557" 12 | } 13 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-14-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x2725A7a5973f910eD952E03b0ACC36e65524f696", 3 | "L1CrossDomainMessengerProxy": "0xDF81F89a85657762528E41ea47f2911AB7AEC8A5", 4 | "L1ERC721BridgeProxy": "0xED7744326BFa81308265d0536Fc6b259C84f9b97", 5 | "L1StandardBridgeProxy": "0x509D4A57212FF4997D900DB52a7eF9937efAbFc9", 6 | "L2OutputOracleProxy": "0xE8FDaEfa94b24E281388817e6bC32B9f8f9671E0", 7 | "OptimismMintableERC20FactoryProxy": "0xa3De1B42F5175D6CED36402E4F87053b7a19F9cC", 8 | "OptimismPortalProxy": "0x8c30f9dbdD47C2848b425EcBb6940910b867A003", 9 | "ProxyAdmin": "0xb90eA7B844742929e67fE8D085e0fa95Ec1c62f5", 10 | "SystemConfigProxy": "0x840f587d4969Cae3776c50e3996e61a5B4bA91a4", 11 | "SystemDictatorProxy": "0x55E85a1089AF9dc74065E81A0f876b823318EF32" 12 | } 13 | -------------------------------------------------------------------------------- /mainnet/2024-02-23-transfer-op/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.19" 10 | via-ir = true 11 | remappings = [ 12 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 13 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 14 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 15 | '@rari-capital/solmate/=lib/solmate/', 16 | '@base-contracts/=lib/base-contracts', 17 | 'solady/=lib/solady/src/', 18 | '@agora=lib/optimism-gov/src', 19 | ] 20 | 21 | # See more config options https://github.com/foundry-rs/foundry/tree/master/config -------------------------------------------------------------------------------- /localhost/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", 3 | "BlockNumber": 0, 4 | "BlockTimestamp": 0, 5 | "L1CrossDomainMessengerProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", 6 | "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", 7 | "L1StandardBridgeProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", 8 | "L2OutputOracleProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", 9 | "OptimismMintableERC20FactoryProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", 10 | "OptimismPortalProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", 11 | "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", 12 | "SystemConfigProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", 13 | "SystemDictatorProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" 14 | } 15 | -------------------------------------------------------------------------------- /goerli-alpha/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x098492Ef1F4Bf26F305F25826CA0F4e4Be6d45f4", 3 | "BlockNumber": 9011568, 4 | "BlockTimestamp": 1684262892, 5 | "L1CrossDomainMessengerProxy": "0x548531f9E60e75726F6f6ec1E5F0A181B9d2c1C0", 6 | "L1ERC721BridgeProxy": "0x8e5B1fF0C5afB207Ac447B31e149996E053D9C22", 7 | "L1StandardBridgeProxy": "0x21E0Cc91D566cfF3edC500F8012D6105f889d2b0", 8 | "L2OutputOracleProxy": "0x805fbEDB43E814b2216ce6926A0A19bdeDb0C8Cd", 9 | "OptimismMintableERC20FactoryProxy": "0x92210e86f7e71606394FD57Be284Ef46Eced62Da", 10 | "OptimismPortalProxy": "0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B", 11 | "ProxyAdmin": "0x4d56E97228bBF10DcB2ED7E8F455c57AbE247404", 12 | "SystemConfigProxy": "0x4f775d578e3Ab8ce81f5Ec065050938DbD5Fb8c2", 13 | "SystemDictatorProxy": "0xb684894834b0843E755CAdd18fA74785Eb42Dd6B" 14 | } -------------------------------------------------------------------------------- /goerli/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x4Cf6b56b14c6CFcB72A75611080514F94624c54e", 3 | "BlockNumber": 8410981, 4 | "BlockTimestamp": 1675193616, 5 | "L1CrossDomainMessengerProxy": "0x8e5693140eA606bcEB98761d9beB1BC87383706D", 6 | "L1ERC721BridgeProxy": "0x5E0c967457347D5175bF82E8CCCC6480FCD7e568", 7 | "L1StandardBridgeProxy": "0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a", 8 | "L2OutputOracleProxy": "0x2A35891ff30313CcFa6CE88dcf3858bb075A2298", 9 | "OptimismMintableERC20FactoryProxy": "0xa88530E2DD811363cA3Ef479dBab3C0BF73d90b1", 10 | "OptimismPortalProxy": "0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA", 11 | "ProxyAdmin": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", 12 | "SystemConfigProxy": "0xb15eea247eCE011C68a614e4a77AD648ff495bc1", 13 | "SystemDictatorProxy": "0x3A2b271C49e673DEF1561c7fF159b99a7c5801b8" 14 | } 15 | -------------------------------------------------------------------------------- /internal-devnet/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x3677B1373F70e2a9891BA5d6b158f54b5E9d834a", 3 | "BlockNumber": 160, 4 | "BlockTimestamp": 1685038068, 5 | "L1CrossDomainMessengerProxy": "0xef97bC75d02FCeB5c84BbD595292586D3C987130", 6 | "L1ERC721BridgeProxy": "0x96C83a89c8FEB1aF4Da38aB0e4F191ACEC2783d6", 7 | "L1StandardBridgeProxy": "0x1D6C8Ab93bF71705568297cc21c3f8fcfA1957C1", 8 | "L2OutputOracleProxy": "0x7d3df2bb359746d4A8a5edFA8303F0228792D43d", 9 | "OptimismMintableERC20FactoryProxy": "0xD3a546bcf4620957826e3Da3A9d438aEfa7ddF88", 10 | "OptimismPortalProxy": "0x6e18a1F26609315a45A6fcE24d541c22890B2524", 11 | "ProxyAdmin": "0xb52dEafBf13D6d49cb9D27D562c89402A373d16D", 12 | "SystemConfigProxy": "0x17b1e2C247019596d2aD54A603e1952ea936D420", 13 | "SystemDictatorProxy": "0xf566DDe2659c041947BA2874f02233E6755E44dE" 14 | } 15 | -------------------------------------------------------------------------------- /internal-testnet/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x4DAB7212DE753ee88970a04641Be4C31cc6394F1", 3 | "BlockNumber": 6800, 4 | "BlockTimestamp": 1683651396, 5 | "L1CrossDomainMessengerProxy": "0x520BCC013Cd76a95294Ff350D55163768A9eCc8f", 6 | "L1ERC721BridgeProxy": "0xD42b12A30bE22E5CB1b26b6f0bB16DD301C4A7c4", 7 | "L1StandardBridgeProxy": "0xaE0BA8C50bF26e6f393b29B40b8728FD16DaEefa", 8 | "L2OutputOracleProxy": "0xB66148dC9A507d35bB63f9F509269C5341Dd4984", 9 | "OptimismMintableERC20FactoryProxy": "0x647c0fe47ab245c0E74A71f5ebcbB126444c1390", 10 | "OptimismPortalProxy": "0x33c1C149A291c6a318d46119482aA73a0ea0608a", 11 | "ProxyAdmin": "0x0FF074021BF2cC8Ee7Ca6d514850087c5FBF3e61", 12 | "SystemConfigProxy": "0x6BC4dAcdb4F185Cd98Dd86CaF195b105dEE7eDae", 13 | "SystemDictatorProxy": "0x8A456f98c9305AB6BB9Cf4c4a7fC30b42A31bd7c" 14 | } 15 | -------------------------------------------------------------------------------- /mainnet/2024-04-15-redeploy-smart-escrow/.env: -------------------------------------------------------------------------------- 1 | OPTIMISM_RPC_URL=https://mainnet.optimism.io 2 | OPTIMISM_CHAIN_ID=10 3 | 4 | OP_COMMIT=4a157b4b0aad8eef2ea19320d5ed1a1d50a9807e 5 | BASE_CONTRACTS_COMMIT=b2682e85953a48cf64659a24ae7121f39f327867 6 | 7 | OP_TOKEN=0x4200000000000000000000000000000000000042 8 | 9 | BENEFACTOR=0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0 10 | BENEFICIARY=0x635Fb974F09B269Bc750bF96338c29cF41430125 11 | BENEFACTOR_OWNER=0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0 12 | BENEFICIARY_OWNER=0x6e1DFd5C1E22A4677663A81D24C6BA03561ef0f6 13 | NESTED_SAFE=0x0a7361e734cf3f0394B0FC4a45C74E7a4Ec70940 14 | START=1724976000 15 | END=1882764000 16 | VESTING_PERIOD_SECONDS=7889400 17 | INITIAL_TOKENS=17895697000000000000000000 18 | VESTING_EVENT_TOKENS=4473924000000000000000000 19 | 20 | DEPLOYED_CONTRACT=0x1a984E693F8A9C38f3AE1f1aF14b677ac245deAD -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/inputs/addresses-l2.json: -------------------------------------------------------------------------------- 1 | { 2 | "BaseFeeVault": "0x1775006eb33aC62a6Ec59c245257ef7C6833F093", 3 | "GasPriceOracle": "0xDe99Fb5D8e49F5F61CCB5241704776f17D50a979", 4 | "L1Block": "0xd2591745db1B72Cc7E7276E73710c221F2183EFd", 5 | "L1FeeVault": "0xd628263dDf76cDb35B3E6255E42cC1d8729b2445", 6 | "L2CrossDomainMessenger": "0x51C01566622264148dCF930B2426dd72EdF9C306", 7 | "L2ERC721Bridge": "0x687F16A94A76CEe431A50283aD5DF0a0C7f6B5a1", 8 | "L2StandardBridge": "0x1Df53C54847f8704FDb7ef96311a0aE3f11aAddF", 9 | "L2ToL1MessagePasser": "0x7433333Fb70AD795f1Fb418349Df6295dD221Bae", 10 | "OptimismMintableERC20Factory": "0xa57baDEdbc58e092C7C8A3ef1ca526ADFf08cC4B", 11 | "OptimismMintableERC721Factory": "0xaBf733c41e411D10B57b05C0c1684b34F954eDAF", 12 | "SequencerFeeVault": "0x54f0dBa33CcF80fbEAD24F35043896f29bD46c02" 13 | } 14 | -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", 3 | "BlockNumber": 0, 4 | "BlockTimestamp": 0, 5 | "L1CrossDomainMessengerProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", 6 | "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", 7 | "L1StandardBridgeProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", 8 | "L2OutputOracleProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", 9 | "OptimismMintableERC20FactoryProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", 10 | "OptimismPortalProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", 11 | "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", 12 | "SystemConfigProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", 13 | "SystemDictatorProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" 14 | } 15 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/forge-std"] 2 | path = lib/forge-std 3 | url = https://github.com/foundry-rs/forge-std 4 | branch = v1.5.5 5 | [submodule "lib/openzeppelin-contracts"] 6 | path = lib/openzeppelin-contracts 7 | url = https://github.com/OpenZeppelin/openzeppelin-contracts 8 | branch = v4.7.3 9 | [submodule "lib/openzeppelin-contracts-upgradeable"] 10 | path = lib/openzeppelin-contracts-upgradeable 11 | url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable 12 | branch = v4.7.3 13 | [submodule "lib/solmate.git"] 14 | path = lib/solmate.git 15 | url = https://github.com/rari-capital/solmate.git 16 | branch = 8f9b23f8838670afda0fd8983f2c41e8037ae6bc 17 | [submodule "lib/safe-contracts"] 18 | path = lib/safe-contracts 19 | url = https://github.com/safe-global/safe-contracts 20 | branch = v1.3.0-libs.0 -------------------------------------------------------------------------------- /sepolia/2024-03-26-increase-gas-limit/script/UpdateGasLimit.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; 5 | import "forge-std/Script.sol"; 6 | 7 | contract UpdateGasLimitSepolia is Script { 8 | address internal L1_SYSTEM_CONFIG = vm.envAddress("L1_SYSTEM_CONFIG_ADDRESS"); 9 | uint64 internal GAS_LIMIT = uint64(vm.envUint("GAS_LIMIT")); 10 | address internal OWNER = vm.envAddress("OWNER_ADDRESS"); 11 | 12 | function _postCheck() internal view { 13 | require(SystemConfig(L1_SYSTEM_CONFIG).gasLimit() == GAS_LIMIT); 14 | } 15 | 16 | function run() public { 17 | vm.startBroadcast(OWNER); 18 | SystemConfig(L1_SYSTEM_CONFIG).setGasLimit(GAS_LIMIT); 19 | _postCheck(); 20 | vm.stopBroadcast(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/inputs/addresses-l2.json: -------------------------------------------------------------------------------- 1 | { 2 | "BaseFeeVault": "0x378D36069475CCfAeD214C131959D70be920743F", 3 | "GasPriceOracle": "0x01c32ecDb40ba35534B021b4dAe760aCb0901F11", 4 | "L1Block": "0x6309F4Da2449726429d8880F9b6E883bd2f62042", 5 | "L1FeeVault": "0xbd56a9d53Eb2F18D2507665A5a7B81558e243977", 6 | "L2CrossDomainMessenger": "0x3e5C62E0b2D23C3C623a0Ba8d12b1202e80F586D", 7 | "L2ERC721Bridge": "0xe3222c7c8C28e990Eab47C3F280EE2Bdb37E28f4", 8 | "L2StandardBridge": "0x6427477E21608EDE600A229c4C5672B4f9f240da", 9 | "L2ToL1MessagePasser": "0x40E59ecE5E20dEC21955e61B1b5c4AAedC518566", 10 | "OptimismMintableERC20Factory": "0x8A0f008a4A75B9E087Ac181C41cB053F8D48E53a", 11 | "OptimismMintableERC721Factory": "0x2c9871B688AfD8A0525166bC5bbf24b089f903ec", 12 | "SequencerFeeVault": "0x4091049CEdd9cc80Af997CbBa4dE5FF264DD045c" 13 | } -------------------------------------------------------------------------------- /mainnet/2024-02-21-setup-smart-escrow/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | .PHONY: deploy-new-implementation 6 | deploy-new-implementation: 7 | forge script --rpc-url $(OPTIMISM_RPC_URL) DeploySmartEscrow 8 | 9 | 10 | .PHONY: verify-implementation 11 | verify-implementation: 12 | forge verify-contract ${DEPLOYED_CONTRACT} SmartEscrow \ 13 | --constructor-args $(shell cast abi-encode "constructor(address,address,address,address,address,uint256,uint256,uint256,uint256,uint256)" ${BENEFACTOR} ${BENEFICIARY} ${BENEFACTOR_OWNER} ${BENEFICIARY_OWNER} ${NESTED_SAFE} ${START} ${END} ${VESTING_PERIOD_SECONDS} ${INITIAL_TOKENS} ${VESTING_EVENT_TOKENS}) \ 14 | --watch --chain-id $(OPTIMISM_CHAIN_ID) \ 15 | --compiler-version v0.8.15+commit.e14f2714 --num-of-optimizations=99999 --retries=1 \ 16 | --verifier-url https://api-optimistic.etherscan.io/api -------------------------------------------------------------------------------- /localhost/2023-06-27-use-challenger1of2/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: deploy-new-impl 9 | deploy-new-impl: 10 | forge script --rpc-url $(L1_RPC_URL) DeployL2OOImplementation \ 11 | --sig "run(address,address,address)" $(LOCALHOST_ADDR_1) $(CHALLENGER) $(L2_OUTPUT_ORACLE_PROXY) \ 12 | --private-key $(PRIVATE_KEY) --broadcast 13 | 14 | .PHONY: sign 15 | sign: 16 | forge script --via-ir --rpc-url $(L1_RPC_URL) UpgradeL2OutputOracle --sig "sign()" | \ 17 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 18 | (cd lib/base-contracts && go run ./cmd/sign --private-key $(PRIVATE_KEY)) 19 | 20 | .PHONY: run 21 | run: 22 | forge script --via-ir --rpc-url $(L1_RPC_URL) \ 23 | UpgradeL2OutputOracle --sig "run(bytes)" $(SIGNATURES) \ 24 | --private-key $(PRIVATE_KEY_2) \ 25 | --broadcast -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/inputs/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x4Cf6b56b14c6CFcB72A75611080514F94624c54e", 3 | "BlockNumber": 8410981, 4 | "BlockTimestamp": 1675193616, 5 | "L1CrossDomainMessengerProxy": "0x8e5693140eA606bcEB98761d9beB1BC87383706D", 6 | "L1ERC721BridgeProxy": "0x5E0c967457347D5175bF82E8CCCC6480FCD7e568", 7 | "L1StandardBridgeProxy": "0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a", 8 | "L2OutputOracleProxy": "0x2A35891ff30313CcFa6CE88dcf3858bb075A2298", 9 | "OptimismMintableERC20FactoryProxy": "0xa88530E2DD811363cA3Ef479dBab3C0BF73d90b1", 10 | "OptimismPortalProxy": "0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA", 11 | "ProxyAdmin": "0xbc0Fc544736b7d610D9b05F31B182C8154BEf336", 12 | "SystemConfigProxy": "0xb15eea247eCE011C68a614e4a77AD648ff495bc1", 13 | "SystemDictatorProxy": "0x3A2b271C49e673DEF1561c7fF159b99a7c5801b8" 14 | } -------------------------------------------------------------------------------- /mainnet/2024-02-21-setup-smart-escrow/.env: -------------------------------------------------------------------------------- 1 | OPTIMISM_RPC_URL=https://mainnet.optimism.io 2 | OPTIMISM_CHAIN_ID=10 3 | 4 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 5 | BASE_CONTRACTS_COMMIT=a147139671c09923f78ae46a6ebedc91209bb076 6 | 7 | OP_TOKEN=0x4200000000000000000000000000000000000042 8 | 9 | DEPLOYER=0xbebe472f467888b197b90693b8852ad12a50b261 10 | BENEFACTOR=0x2501c477d0a35545a387aa4a3eee4292a9a8b3f0 11 | BENEFICIARY=0x635Fb974F09B269Bc750bF96338c29cF41430125 12 | BENEFACTOR_OWNER=0x2501c477D0A35545a387Aa4A3EEe4292A9a8B3F0 13 | BENEFICIARY_OWNER=0x6e1DFd5C1E22A4677663A81D24C6BA03561ef0f6 14 | NESTED_SAFE=0x0a7361e734cf3f0394B0FC4a45C74E7a4Ec70940 15 | START=1720674000 16 | END=1878462000 17 | VESTING_PERIOD_SECONDS=7889400 18 | INITIAL_TOKENS=17895697000000000000000000 19 | VESTING_EVENT_TOKENS=4473924000000000000000000 20 | 21 | DEPLOYED_CONTRACT=0x143F5773CFE5613ca94196d557c889134F47CB77 -------------------------------------------------------------------------------- /localhost/.env: -------------------------------------------------------------------------------- 1 | NETWORK=localhost 2 | L1_RPC_URL=http://127.0.0.1:8545 3 | 4 | # Default local addresses provided that are funded by default. Run `anvil` to start up environment. 5 | LOCALHOST_ADDR_1=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 6 | PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 7 | LOCALHOST_ADDR_2=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 8 | PRIVATE_KEY_2=59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d 9 | LOCALHOST_ADDR_3=0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC 10 | PRIVATE_KEY_3=5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a 11 | TEST_MNEMONIC="test test test test test test test test test test test junk" 12 | 13 | # Proxy addresses 14 | PROXY_ADMIN=0x5FbDB2315678afecb367f032d93F642f64180aa3 15 | SYSTEM_CFG_PROXY=0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6 16 | L2_OUTPUT_ORACLE_PROXY=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/inputs/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x098492Ef1F4Bf26F305F25826CA0F4e4Be6d45f4", 3 | "BlockNumber": 9011568, 4 | "BlockTimestamp": 1684262892, 5 | "L1CrossDomainMessengerProxy": "0x548531f9E60e75726F6f6ec1E5F0A181B9d2c1C0", 6 | "L1ERC721BridgeProxy": "0x8e5B1fF0C5afB207Ac447B31e149996E053D9C22", 7 | "L1StandardBridgeProxy": "0x21E0Cc91D566cfF3edC500F8012D6105f889d2b0", 8 | "L2OutputOracleProxy": "0x805fbEDB43E814b2216ce6926A0A19bdeDb0C8Cd", 9 | "OptimismMintableERC20FactoryProxy": "0x92210e86f7e71606394FD57Be284Ef46Eced62Da", 10 | "OptimismPortalProxy": "0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B", 11 | "ProxyAdmin": "0x4d56E97228bBF10DcB2ED7E8F455c57AbE247404", 12 | "SystemConfigProxy": "0x4f775d578e3Ab8ce81f5Ec065050938DbD5Fb8c2", 13 | "SystemDictatorProxy": "0xb684894834b0843E755CAdd18fA74785Eb42Dd6B" 14 | } -------------------------------------------------------------------------------- /sepolia/2024-04-10-deploy-ERC20Factory/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # note 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' is needed 12 | # for relative paths in optimism repo to work 13 | remappings = [ 14 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 15 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 16 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 17 | '@rari-capital/solmate/=lib/solmate/', 18 | '@base-contracts/=lib/base-contracts', 19 | 'solady/=lib/solady/src/', 20 | 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' 21 | ] 22 | -------------------------------------------------------------------------------- /mainnet/2024-04-12-deployERC20Factory/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # note 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' is needed 12 | # for relative paths in optimism repo to work 13 | remappings = [ 14 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 15 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 16 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 17 | '@rari-capital/solmate/=lib/solmate/', 18 | '@base-contracts/=lib/base-contracts', 19 | 'solady/=lib/solady/src/', 20 | 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' 21 | ] 22 | 23 | -------------------------------------------------------------------------------- /goerli/2023-06-22-deploy-challenger/script/DeployChallenger.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import { Challenger1of2 } from "@base-contracts/src/Challenger1of2.sol"; 6 | 7 | contract DeployChallenger is Script { 8 | function run(address deployer, address signer1, address signer2, address l2OutputOracleProxy) public { 9 | vm.broadcast(deployer); 10 | Challenger1of2 challenger1of2 = new Challenger1of2(signer1, signer2, l2OutputOracleProxy); 11 | require(challenger1of2.OP_SIGNER() == signer1, "OP_SIGNER not set correctly"); 12 | require(challenger1of2.OTHER_SIGNER() == signer2, "OTHER_SIGNER not set correctly"); 13 | require(challenger1of2.L2_OUTPUT_ORACLE_PROXY() == l2OutputOracleProxy, "L2_OUTPUT_ORACLE_PROXY not set correctly"); 14 | console.log(address(challenger1of2)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /mainnet/2023-07-11-test-l2-safe/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | ## 10 | # Foundry commands 11 | ## 12 | .PHONY: deploy-test 13 | deploy-test: 14 | forge script --rpc-url $(L2_RPC_URL) DeployTestProxy \ 15 | --sig "run(address, address)" $(DEPLOYER) $(L2_SAFE) \ 16 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 17 | 18 | ## 19 | # MultisigBuilder commands 20 | ## 21 | 22 | .PHONY: sign 23 | sign: 24 | cd lib/base-contracts && \ 25 | go run ./cmd/sign --workdir ../.. --ledger -- forge script --via-ir --rpc-url $(L2_RPC_URL) TestL2Safe --sig "sign()" 26 | 27 | .PHONY: run 28 | run: 29 | forge script --via-ir --rpc-url $(L2_RPC_URL) \ 30 | TestL2Safe --sig "run(bytes)" $(SIGNATURES) --sender $(SENDER) \ 31 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 32 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # note 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' is needed 12 | # for relative paths in optimism repo to work 13 | remappings = [ 14 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 15 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 16 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 17 | '@rari-capital/solmate/=lib/solmate/', 18 | '@base-contracts/=lib/base-contracts', 19 | 'solady/=lib/solady/src/', 20 | 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' 21 | ] 22 | 23 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/foundry.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | src = 'src' 3 | out = 'out' 4 | libs = ['lib'] 5 | broadcast = 'records' 6 | fs_permissions = [ {access = "read-write", path = "./"} ] 7 | optimizer = true 8 | optimizer_runs = 999999 9 | solc_version = "0.8.15" 10 | 11 | # note 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' is needed 12 | # for relative paths in optimism repo to work 13 | remappings = [ 14 | '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', 15 | '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', 16 | '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', 17 | '@rari-capital/solmate/=lib/solmate/', 18 | '@base-contracts/=lib/base-contracts', 19 | 'solady/=lib/solady/src/', 20 | 'src/universal=lib/optimism/packages/contracts-bedrock/src/universal' 21 | ] 22 | 23 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-21-deploy-challenger/script/DeployChallenger.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import "forge-std/Script.sol"; 5 | import { Challenger1of2 } from "@base-contracts/src/Challenger1of2.sol"; 6 | 7 | contract DeployChallenger is Script { 8 | function run(address deployer, address signer1, address signer2, address l2OutputOracleProxy) public { 9 | vm.broadcast(deployer); 10 | Challenger1of2 challenger1of2 = new Challenger1of2(signer1, signer2, l2OutputOracleProxy); 11 | require(challenger1of2.OP_SIGNER() == signer1, "OP_SIGNER not set correctly"); 12 | require(challenger1of2.OTHER_SIGNER() == signer2, "OTHER_SIGNER not set correctly"); 13 | require(challenger1of2.L2_OUTPUT_ORACLE_PROXY() == l2OutputOracleProxy, "L2_OUTPUT_ORACLE_PROXY not set correctly"); 14 | console.log(address(challenger1of2)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /mainnet/2024-04-15-redeploy-smart-escrow/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | .PHONY: deploy-new-implementation 6 | deploy-new-implementation: 7 | forge script --rpc-url $(OPTIMISM_RPC_URL) DeploySmartEscrow --ledger --hd-paths "m/44'/60'/0'/0/0" --broadcast 8 | 9 | .PHONY: verify-implementation 10 | verify-implementation: 11 | forge verify-contract ${DEPLOYED_CONTRACT} SmartEscrow \ 12 | --constructor-args $(shell cast abi-encode "constructor(address,address,address,address,address,uint256,uint256,uint256,uint256,uint256)" ${BENEFACTOR} ${BENEFICIARY} ${BENEFACTOR_OWNER} ${BENEFICIARY_OWNER} ${NESTED_SAFE} ${START} ${END} ${VESTING_PERIOD_SECONDS} ${INITIAL_TOKENS} ${VESTING_EVENT_TOKENS}) \ 13 | --watch --chain-id $(OPTIMISM_CHAIN_ID) \ 14 | --compiler-version v0.8.15+commit.e14f2714 --num-of-optimizations=99999 --retries=1 \ 15 | --verifier-url https://api-optimistic.etherscan.io/api -------------------------------------------------------------------------------- /sepolia/2024-03-07-ecotone-sysconfig-updates/script/UpdateGasConfig.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import {SystemConfig} from "@eth-optimism-bedrock/src/L1/SystemConfig.sol"; 5 | import "forge-std/Script.sol"; 6 | 7 | contract UpdateGasConfigSepolia is Script { 8 | 9 | address internal L1_SYSTEM_CONFIG = vm.envAddress("L1_SYSTEM_CONFIG_ADDRESS"); 10 | uint256 internal SCALAR = vm.envUint("SCALAR"); 11 | address internal OWNER = vm.envAddress("OWNER_ADDRESS"); 12 | 13 | function _postCheck() internal view { 14 | require(SystemConfig(L1_SYSTEM_CONFIG).scalar() == SCALAR); 15 | require(SystemConfig(L1_SYSTEM_CONFIG).overhead() == 0); 16 | } 17 | 18 | function run() public { 19 | vm.startBroadcast(OWNER); 20 | SystemConfig(L1_SYSTEM_CONFIG).setGasConfig(0, SCALAR); 21 | _postCheck(); 22 | vm.stopBroadcast(); 23 | } 24 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/README.md: -------------------------------------------------------------------------------- 1 | # Steps ran 2 | 3 | * Saved Deployer key in .env and relevant private key in .env.local 4 | * Saved L1 owner Safe address in .env 5 | * Ran `make get-aliased-addr` to get the L2 aliased key, which then saved in .env as well 6 | * Ran `deploy-test-increment` to deploy test contract 7 | * Check owner and number variables on the deployed contract with `cast call --rpc-url "owner()"` 8 | * Try calling increment() with key that's not an owner and it should revert 9 | * Ran `make call-increment` with correct owner key (repeated X times by different signers to reach threshold) 10 | * Checked that increment worked by calling `cast call --rpc-url "number()"` and seeing that number has increased to 1. 11 | 12 | Tx hash of successful exec transaction: https://goerli.etherscan.io/tx/0xa4581554f159a8ede23494e408e279d1c48a06d7b88dd4309ed51861b67d9dba 13 | -------------------------------------------------------------------------------- /goerli/2023-06-13-deploy-proxy/script/DeterministicProxyDeploy.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import { console } from "forge-std/console.sol"; 5 | import { Script } from "forge-std/Script.sol"; 6 | 7 | import { Proxy } from "@eth-optimism-bedrock/contracts/universal/Proxy.sol"; 8 | 9 | /** 10 | * @title DeterministicProxyDeploy 11 | * @notice Script for setting deploying deterministic proxies. 12 | */ 13 | contract DeterministicProxyDeploy is Script { 14 | 15 | function run(address deployer, address admin, string calldata salt) external { 16 | console.log("Deployer: %s", deployer); 17 | console.log("Admin: %s", admin); 18 | console.log("salt: %s", salt); 19 | vm.startBroadcast(deployer); 20 | Proxy proxy = new Proxy{ salt: keccak256(abi.encode(salt))}(admin); 21 | vm.stopBroadcast(); 22 | console.log("Proxy address: %s", address(proxy)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy-deterministic-proxy/script/DeterministicProxyDeploy.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import { console } from "forge-std/console.sol"; 5 | import { Script } from "forge-std/Script.sol"; 6 | 7 | import { Proxy } from "@eth-optimism-bedrock/contracts/universal/Proxy.sol"; 8 | 9 | /** 10 | * @title DeterministicProxyDeploy 11 | * @notice Script for setting deploying deterministic proxies. 12 | */ 13 | contract DeterministicProxyDeploy is Script { 14 | 15 | function run(address deployer, address admin, string calldata salt) external { 16 | console.log("Deployer: %s", deployer); 17 | console.log("Admin: %s", admin); 18 | console.log("salt: %s", salt); 19 | vm.startBroadcast(deployer); 20 | Proxy proxy = new Proxy{ salt: keccak256(abi.encode(salt))}(admin); 21 | vm.stopBroadcast(); 22 | console.log("Proxy address: %s", address(proxy)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /mainnet/2023-08-28-deploy-revshare/script/FeeDisburserOwnershipTransfer.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "forge-std/Script.sol"; 5 | import { Proxy } from "@eth-optimism-bedrock/contracts/universal/Proxy.sol"; 6 | 7 | contract FeeDisburserOwnershipTransfer is Script { 8 | address internal _proxyContract = vm.envAddress("FEE_DISBURSER_PROXY"); 9 | address internal _oldOwner = vm.envAddress("FEE_DISBURSER_EXISTING_OWNER"); 10 | address internal _newOwner = vm.envAddress("CB_SAFE_ADDR"); 11 | 12 | function run() public { 13 | Proxy feeDisburserProxyContract = Proxy(payable(_proxyContract)); 14 | 15 | vm.broadcast(_oldOwner); 16 | feeDisburserProxyContract.changeAdmin(_newOwner); 17 | 18 | vm.prank(address(0)); 19 | require( 20 | feeDisburserProxyContract.admin() == _newOwner, 21 | "FeeDisburserOwnershipTransfer: Proxy owner did not get updated" 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-27-test-l2-owner/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | include ../.env.local 5 | 6 | ## 7 | # Foundry commands 8 | ## 9 | get-impl-addr: 10 | cast call $(L2_PROXY_ADMIN_CONTRACT) "getProxyImplementation(address)(address)" \ 11 | $(L1_BLOCK_PROXY) --rpc-url $(L2_RPC_URL) 12 | 13 | .PHONY: sign 14 | sign: 15 | forge script --via-ir --rpc-url $(L2_RPC_URL) TestNewOwner \ 16 | --sig "signApproval(address)" $(SAFE_1_ADDR) | \ 17 | tee /dev/stderr | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 18 | (cd lib/base-contracts && go run ./cmd/sign --private-key $(PRIVATE_KEY)) 19 | 20 | .PHONY: approve 21 | approve: 22 | forge script --via-ir --rpc-url $(L2_RPC_URL) TestNewOwner \ 23 | --sig "runApproval(address,bytes)" $(SAFE_1_ADDR) $(SIGNATURES) \ 24 | --private-key $(PRIVATE_KEY) --broadcast 25 | 26 | .PHONY: execute 27 | execute: 28 | forge script --via-ir --rpc-url $(L2_RPC_URL) TestNewOwner \ 29 | --sig "runTransaction(address,bytes)" $(SAFE_2_ADDR) "" \ 30 | --private-key $(PRIVATE_KEY) --broadcast 31 | -------------------------------------------------------------------------------- /localhost/2023-07-11-test-l1-safe/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Foundry commands 7 | ## 8 | .PHONY: deploy-test 9 | deploy-test: 10 | forge script --rpc-url $(L1_RPC_URL) DeployTestProxy \ 11 | --sig "run(address, address)" $(LOCALHOST_ADDR_1) $(L1_SAFE) --broadcast \ 12 | --private-key $(PRIVATE_KEY) 13 | 14 | ## 15 | # MultisigBuilder commands 16 | # The following commands can be used for tasks that utilize the MultisigBuilder. 17 | # Note that --ledger --hd-paths can be replaced with --private-key $(PRIVATE_KEY) 18 | # in any command when using a local key. 19 | ## 20 | 21 | .PHONY: sign 22 | sign: 23 | forge script --via-ir --rpc-url $(L1_RPC_URL) TestL1Safe --sig "sign()" | \ 24 | grep -A1 vvvvvvvv | grep -v vvvvvvvv | \ 25 | (cd lib/base-contracts && go run ./cmd/sign --private-key $(PRIVATE_KEY)) 26 | 27 | .PHONY: run 28 | run: 29 | forge script --via-ir --rpc-url $(L1_RPC_URL) \ 30 | TestL1Safe --sig "run(bytes)" $(SIGNATURES) \ 31 | --private-key $(PRIVATE_KEY_2) \ 32 | --broadcast 33 | -------------------------------------------------------------------------------- /mainnet/2024-03-26-increase-gas-limit/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | .PHONY: sign-update-gas-limit 10 | sign-update-gas-limit: 11 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 12 | forge script --rpc-url $(L1_RPC_URL) UpdateGaslimit \ 13 | --sig "sign()" 14 | 15 | .PHONY: execute 16 | execute: 17 | forge script --rpc-url $(L1_RPC_URL) UpdateGaslimit \ 18 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 19 | 20 | 21 | .PHONY: sign-rollback-gas-limit 22 | sign-rollback-gas-limit: 23 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 24 | forge script --rpc-url $(L1_RPC_URL) RollbackGasLimit \ 25 | --sig "sign()" 26 | 27 | 28 | .PHONY: execute-rollback 29 | execute-rollback: 30 | forge script --rpc-url $(L1_RPC_URL) RollbackGasLimit \ 31 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 32 | -------------------------------------------------------------------------------- /mainnet/2024-04-01-increase-gas-limit/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | .PHONY: sign-update-gas-limit 10 | sign-update-gas-limit: 11 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 12 | forge script --rpc-url $(L1_RPC_URL) UpdateGaslimit \ 13 | --sig "sign()" 14 | 15 | .PHONY: execute 16 | execute: 17 | forge script --rpc-url $(L1_RPC_URL) UpdateGaslimit \ 18 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 19 | 20 | 21 | .PHONY: sign-rollback-gas-limit 22 | sign-rollback-gas-limit: 23 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 24 | forge script --rpc-url $(L1_RPC_URL) RollbackGasLimit \ 25 | --sig "sign()" 26 | 27 | 28 | .PHONY: execute-rollback 29 | execute-rollback: 30 | forge script --rpc-url $(L1_RPC_URL) RollbackGasLimit \ 31 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 32 | -------------------------------------------------------------------------------- /mainnet/2024-03-07-ecotone-sysconfig-updates/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | .PHONY: sign-update-gas-config 10 | sign-update-gas-config: 11 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 12 | forge script --rpc-url $(L1_RPC_URL) UpdateGasConfig \ 13 | --sig "sign()" 14 | 15 | .PHONY: execute 16 | execute: 17 | forge script --rpc-url $(L1_RPC_URL) UpdateGasConfig \ 18 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 19 | 20 | 21 | .PHONY: sign-rollback-gas-config 22 | sign-rollback-gas-config: 23 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 24 | forge script --rpc-url $(L1_RPC_URL) RollbackGasConfig \ 25 | --sig "sign()" 26 | 27 | 28 | .PHONY: execute-rollback 29 | execute-rollback: 30 | forge script --rpc-url $(L1_RPC_URL) RollbackGasConfig \ 31 | --sig "run(bytes)" $(SIGNATURES) --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --broadcast 32 | -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l2BlockTime","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleSubmissionInterval","p2pSequencerAddress","proxyAdminOwnerL2"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=3580bf1b41d80fcb2b895d5610836bfad27fc989 2 | BASE_CONTRACTS_COMMIT=5b6ba9c083cf2aeee916156ec9627b4e3246ca65 3 | 4 | OWNER_L2=0x2eD486761dcF287E7b79E526B0d3fC2349834a66 5 | 6 | BASE_FEE_VAULT=0x1775006eb33aC62a6Ec59c245257ef7C6833F093 7 | GAS_PRICE_ORACLE=0xDe99Fb5D8e49F5F61CCB5241704776f17D50a979 8 | L1_BLOCK=0xd2591745db1B72Cc7E7276E73710c221F2183EFd 9 | L1_FEE_VAULT=0xd628263dDf76cDb35B3E6255E42cC1d8729b2445 10 | L2_CROSS_DOMAIN_MESSENGER=0x51C01566622264148dCF930B2426dd72EdF9C306 11 | L1_CROSS_DOMAIN_MESSENGER_PROXY=0x8e5693140eA606bcEB98761d9beB1BC87383706D 12 | L2_ERC721_BRIDGE=0x687F16A94A76CEe431A50283aD5DF0a0C7f6B5a1 13 | L2_STANDARD_BRIDGE=0x1Df53C54847f8704FDb7ef96311a0aE3f11aAddF 14 | L2_TO_L1_MESSAGE_PASSER=0x7433333Fb70AD795f1Fb418349Df6295dD221Bae 15 | OPTIMISM_MINTABLE_ERC20_FACTORY=0xa57baDEdbc58e092C7C8A3ef1ca526ADFf08cC4B 16 | OPTIMISM_MINTABLE_ERC721_FACTORY=0xaBf733c41e411D10B57b05C0c1684b34F954eDAF 17 | SEQUENCER_FEE_VAULT=0x54f0dBa33CcF80fbEAD24F35043896f29bD46c02 18 | 19 | 20 | VERIFIER=etherscan 21 | VERIFIER_URL=https://api-goerli.basescan.org/api -------------------------------------------------------------------------------- /goerli-alpha/2023-05-18-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l2BlockTime","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleSubmissionInterval","p2pSequencerAddress","proxyAdminOwnerL2"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /internal-devnet/2023-05-25-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l2BlockTime","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleSubmissionInterval","p2pSequencerAddress","proxyAdminOwnerL2"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /internal-testnet/2023-05-24-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l2BlockTime","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleSubmissionInterval","p2pSequencerAddress","proxyAdminOwnerL2"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Base 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /sepolia/2024-02-28-pause-unpause-portal/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ## 6 | # Incident response commands 7 | # Note that --ledger --hd-paths can be replaced with --private-key $(PRIVATE_KEY) 8 | # in any command when using a local key. 9 | ## 10 | 11 | ifndef PORTAL_GUARDIAN_PRIVATE_KEY 12 | $(error PORTAL_GUARDIAN_PRIVATE_KEY is undefined) 13 | endif 14 | 15 | # Pause OptimismPortal Commands 16 | 17 | .PHONY: pause-portal-dryrun 18 | pause-portal-dryrun: 19 | @forge script --rpc-url $(L1_RPC_URL) \ 20 | PausePortal --private-key $(PORTAL_GUARDIAN_PRIVATE_KEY) 21 | 22 | .PHONY: pause-portal 23 | pause-portal: 24 | @forge script --rpc-url $(L1_RPC_URL) \ 25 | PausePortal --private-key $(PORTAL_GUARDIAN_PRIVATE_KEY) \ 26 | --broadcast 27 | 28 | # Unpause OptimismPortal Commands 29 | 30 | .PHONY: unpause-portal-dryrun 31 | unpause-portal-dryrun: 32 | @forge script --rpc-url $(L1_RPC_URL) \ 33 | UnpausePortal --private-key $(PORTAL_GUARDIAN_PRIVATE_KEY) 34 | 35 | .PHONY: unpause-portal 36 | unpause-portal: 37 | @forge script --rpc-url $(L1_RPC_URL) \ 38 | UnpausePortal --private-key $(PORTAL_GUARDIAN_PRIVATE_KEY) \ 39 | --broadcast 40 | -------------------------------------------------------------------------------- /localhost/2023-06-08-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"baseFeeVaultRecipient","batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l1FeeVaultRecipient","l2BlockTime","l2ChainID","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleSubmissionInterval","p2pSequencerAddress","proxyAdminOwnerL2","sequencerFeeVaultRecipient"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /mainnet/2023-08-22-fee-vault-fix/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=90bff30727d05fb3451e2a6a118c1350fd0c62af 2 | BASE_CONTRACTS_COMMIT=55b9dafd276ed20c2490f374df1e01ce9d7590da 3 | 4 | OP_SAFE_ADDR=0x28EDB11394eb271212ED66c08f2b7893C04C5D65 5 | CB_SAFE_ADDR=0xd94e416cf2c7167608b2515b7e4102b41efff94f 6 | L2_NESTED_SAFE=0x2304cb33d95999dc29f4cef1e35065e670a70050 7 | SENDER=0x8e5de5ca219e3ffc9cdeb2dc7d71b8a199cd2c4f 8 | 9 | MIN_WITHDRAWAL_AMOUNT=2000000000000000000 10 | FEE_VAULT_RECIPIENT=0x09c7bad99688a55a2e83644bfaed09e62bdcccba 11 | DEPLOYER=0x06bdb6fc44e3d0ae053d5f2ff6c60135141181c9 12 | 13 | SEQUENCER_FEEVAULT_IMPL_INT=0x54d194FaAe439fc3f8024801B0b9EBc91Ebd39f5 14 | L1_FEEVAULT_IMPL_INT=0xD36F11023188134d0f4610fF0C6e01c1B11488f8 15 | BASE_FEEVAULT_IMPL_INT=0xB0B77878bBc76E29aBE7584Bda27ae3CE1A9059a 16 | SEQUENCER_FEEVAULT_IMPL_FINAL=0xd53210eE20948eCFF8B6B8180E29657e0ce8492d 17 | L1_FEEVAULT_IMPL_FINAL=0x0c9034b92351cF8f067379a1fFA4fa35f5AF9dCC 18 | BASE_FEEVAULT_IMPL_FINAL=0x4E207bDF8aece56de86821f5370b2b993D08C9E9 19 | 20 | SEQUENCER_VAULT_TARGET_TOTAL_PROCESSED=0 21 | L1_VAULT_TARGET_TOTAL_PROCESSED=0 22 | BASE_VAULT_TARGET_TOTAL_PROCESSED=0 23 | 24 | VERIFIER=etherscan # or blockscout 25 | VERIFIER_URL=https://api.basescan.org/api -------------------------------------------------------------------------------- /goerli/2023-06-27-test-nested-safe/script/TestNestedSafeL1.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/src/TestOwner.sol"; 5 | import "@base-contracts/script/universal/NestedMultisigBuilder.sol"; 6 | 7 | contract TestNestedSafeL1 is NestedMultisigBuilder { 8 | address constant internal TEST_CONTRACT = 0x49f891c8032f182CCcb6bb3854B75B3F6d3E26A0; 9 | address constant internal L1_NESTED_SAFE = 0x444b8C3E4eA49cE15A93D96AfA83D421F6049524; 10 | 11 | function _postCheck() internal override view { 12 | // perform post execution checks 13 | } 14 | 15 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 16 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 17 | 18 | calls[0] = IMulticall3.Call3({ 19 | target: TEST_CONTRACT, 20 | allowFailure: false, 21 | callData: abi.encodeCall( 22 | TestOwner.increment, 23 | () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return L1_NESTED_SAFE; 32 | } 33 | } -------------------------------------------------------------------------------- /goerli/2023-06-27-test-nested-safe/script/TestNestedSafeL2.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/src/TestOwner.sol"; 5 | import "@base-contracts/script/universal/NestedMultisigBuilder.sol"; 6 | 7 | contract TestNestedSafeL2 is NestedMultisigBuilder { 8 | address constant internal TEST_CONTRACT = 0x7915f3785D9C12121262418F2331db2205124BC2; 9 | address constant internal L2_NESTED_SAFE = 0x4c7C99555e8afac3571c7456448021239F5b73bA; 10 | 11 | function _postCheck() internal override view { 12 | // perform post execution checks 13 | } 14 | 15 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 16 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 17 | 18 | calls[0] = IMulticall3.Call3({ 19 | target: TEST_CONTRACT, 20 | allowFailure: false, 21 | callData: abi.encodeCall( 22 | TestOwner.increment, 23 | () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return L2_NESTED_SAFE; 32 | } 33 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/script/TestNestedSafeL1.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/src/TestOwner.sol"; 5 | import "@base-contracts/script/universal/NestedMultisigBuilder.sol"; 6 | 7 | contract TestNestedSafeL1 is NestedMultisigBuilder { 8 | address constant internal TEST_CONTRACT = 0x5A95Ad66cb8b031bf5bA64669528E431c300723B; 9 | address constant internal L1_NESTED_SAFE = 0xCDdEb1F77Cbc9BD2Bd07aD5808CE6108EB07DF89; 10 | 11 | function _postCheck() internal override view { 12 | // perform post execution checks 13 | } 14 | 15 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 16 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 17 | 18 | calls[0] = IMulticall3.Call3({ 19 | target: TEST_CONTRACT, 20 | allowFailure: false, 21 | callData: abi.encodeCall( 22 | TestOwner.increment, 23 | () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return L1_NESTED_SAFE; 32 | } 33 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-22-test-nested-safe/script/TestNestedSafeL2.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/src/TestOwner.sol"; 5 | import "@base-contracts/script/universal/NestedMultisigBuilder.sol"; 6 | 7 | contract TestNestedSafeL2 is NestedMultisigBuilder { 8 | address constant internal TEST_CONTRACT = 0xbc3895EaE104fE86b60E4838013e2fd1373C1047; 9 | address constant internal L2_NESTED_SAFE = 0xf71a498086d00843d7754964B27dd7198a16Ee7F; 10 | 11 | function _postCheck() internal override view { 12 | // perform post execution checks 13 | } 14 | 15 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 16 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 17 | 18 | calls[0] = IMulticall3.Call3({ 19 | target: TEST_CONTRACT, 20 | allowFailure: false, 21 | callData: abi.encodeCall( 22 | TestOwner.increment, 23 | () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return L2_NESTED_SAFE; 32 | } 33 | } -------------------------------------------------------------------------------- /mainnet/2023-06-14-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"baseFeeVaultRecipient","batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l1ChainID","l1FeeVaultRecipient","l2BlockTime","l2ChainID","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleStartingTimestamp","l2OutputOracleSubmissionInterval","p2pSequencerAddress","portalGuardian","proxyAdminOwnerL2","sequencerFeeVaultRecipient"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /setup-templates/template-deploy/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"baseFeeVaultRecipient","batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l1ChainID","l1FeeVaultRecipient","l2BlockTime","l2ChainID","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleStartingTimestamp","l2OutputOracleSubmissionInterval","p2pSequencerAddress","portalGuardian","proxyAdminOwnerL2","sequencerFeeVaultRecipient"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /mainnet/2024-04-30-deployTempERC20Factory/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"baseFeeVaultRecipient","batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l1ChainID","l1FeeVaultRecipient","l2BlockTime","l2ChainID","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleStartingTimestamp","l2OutputOracleSubmissionInterval","p2pSequencerAddress","portalGuardian","proxyAdminOwnerL2","sequencerFeeVaultRecipient"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /sepolia/2024-04-30-deployTempERC20Factory/inputs/construct-config.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEPLOY_FIELDS='"baseFeeVaultRecipient","batchSenderAddress","controller","deployerAddress","finalSystemOwner","finalizationPeriodSeconds","gasPriceOracleOverhead","gasPriceOracleScalar","l1ChainID","l1FeeVaultRecipient","l2BlockTime","l2ChainID","l2OutputOracleChallenger","l2OutputOracleProposer","l2OutputOracleStartingBlockNumber","l2OutputOracleStartingTimestamp","l2OutputOracleSubmissionInterval","p2pSequencerAddress","portalGuardian","proxyAdminOwnerL2","sequencerFeeVaultRecipient"' 4 | 5 | DEPLOY_CONFIG_FILE="inputs/deploy-config.json" 6 | MISC_CONFIG_FILE="inputs/misc-config.json" 7 | FOUNDRY_CONFIG_FILE="inputs/foundry-config.json" 8 | 9 | # Convert field from hex to decimal 10 | VALUE=$(jq -r '.l2GenesisBlockGasLimit' "$DEPLOY_CONFIG_FILE") 11 | GAS_LIMIT=$(printf %d $VALUE) 12 | 13 | # Construct config file which will be the input in deploy script 14 | jq -s '.[0] * .[1]' "$DEPLOY_CONFIG_FILE" "$MISC_CONFIG_FILE" | \ 15 | jq "with_entries(select([.key] | inside([$DEPLOY_FIELDS])))" | \ 16 | jq --arg l2GenesisBlockGasLimit $GAS_LIMIT '. + {l2GenesisBlockGasLimit: $l2GenesisBlockGasLimit | tonumber}' | \ 17 | jq --sort-keys | \ 18 | jq '{"deployConfig": .}' > "$FOUNDRY_CONFIG_FILE" 19 | -------------------------------------------------------------------------------- /goerli/2023-01-31-deploy/execute/Utils.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.8.13; 2 | 3 | import "forge-std/Script.sol"; 4 | import "forge-std/StdJson.sol"; 5 | 6 | contract Utils is Script { 7 | using stdJson for string; 8 | 9 | struct DeployBedrockConfig { 10 | address batchSenderAddress; 11 | address controller; 12 | address deployerAddress; 13 | address finalSystemOwner; 14 | uint256 finalizationPeriodSeconds; 15 | uint256 gasPriceOracleOverhead; 16 | uint256 gasPriceOracleScalar; 17 | uint256 l2BlockTime; 18 | uint64 l2GenesisBlockGasLimit; 19 | address l2OutputOracleChallenger; 20 | address l2OutputOracleProposer; 21 | uint256 l2OutputOracleStartingBlockNumber; 22 | uint256 l2OutputOracleSubmissionInterval; 23 | address p2pSequencerAddress; 24 | } 25 | 26 | function getDeployBedrockConfig(string memory network) external view returns(DeployBedrockConfig memory) { 27 | string memory root = vm.projectRoot(); 28 | string memory path = string.concat(root, "deployed/foundry-config.json"); 29 | string memory json = vm.readFile(path); 30 | bytes memory deployBedrockConfigRaw = json.parseRaw(".deployConfig"); 31 | return abi.decode(deployBedrockConfigRaw, (DeployBedrockConfig)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /goerli/2023-06-13-l2-upgrades/inputs/foundry-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deployConfig": { 3 | "baseFeeVaultRecipient": "0x0b933ffd030d2679986560c414d26093b9d3130f", 4 | "batchSenderAddress": "0x2d679b567db6187c0c8323fa982cfb88b74dbcc7", 5 | "controller": "0x833994eb0f293c4b314d94610cf2b5e57e061e41", 6 | "deployerAddress": "0x7655555ef300b2bf1b261a2eb4465ba1ca8f4373", 7 | "finalSystemOwner": "0x4c35ca57616e0d5fd808574772f632d8da4eadca", 8 | "finalizationPeriodSeconds": 12, 9 | "gasPriceOracleOverhead": 2100, 10 | "gasPriceOracleScalar": 1000000, 11 | "l1ChainId": 5, 12 | "l1FeeVaultRecipient": "0x0b933ffd030d2679986560c414d26093b9d3130f", 13 | "l2BlockTime": 2, 14 | "l2ChainId": 84531, 15 | "l2GenesisBlockGasLimit": 25000000, 16 | "l2OutputOracleChallenger": "0x4c35ca57616e0d5fd808574772f632d8da4eadca", 17 | "l2OutputOracleProposer": "0x4f28beb40635093b72def43d0ad801cdd8e0e6fe", 18 | "l2OutputOracleStartingBlockNumber": 0, 19 | "l2OutputOracleSubmissionInterval": 120, 20 | "p2pSequencerAddress": "0x09d5fedb4bb6105a8420cdd31c87867216013c26", 21 | "proxyAdminOwnerL2": "0xd8ede4040b853701d948d4b82c9fab2e2a545a59", 22 | "sequencerFeeVaultRecipient": "0x0b933ffd030d2679986560c414d26093b9d3130f" 23 | } 24 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-08-21-feevault-fix/.env: -------------------------------------------------------------------------------- 1 | OP_COMMIT=90bff30727d05fb3451e2a6a118c1350fd0c62af 2 | BASE_CONTRACTS_COMMIT=de5d9417c144a78743d2e10c4e2b4effbb2d1acd 3 | 4 | # FeeVault configuration 5 | FEE_VAULT_DEPLOYER=0x21856935e5689490c72865f34CC665D0FF25664b 6 | FEE_VAULT_CHAIN_ID=11763071 7 | 8 | # Signing 9 | CB_SAFE_ADDR=0x7768171512911988acfce3fd295a4cf8aa8e8dba 10 | OP_SAFE_ADDR=0x185d1422dcccf117d547ff2f278be88fda59b240 11 | SENDER=0x5EA541c557378857FDEaD473a86cd876C76477aE 12 | SIGNATURES=58f6ef35f5eac0a68b3fe0683650c2bcca631ea4b4cd074a3a0dc8d16ac52b1b341c4d0a3be815e72ef122abff481dc8a391a09d16c837da1838358631f9bce11bf12d3f17c59387a4d5a7f6306f4d8c1c83a05445f91f96870e22dfb3e96803e70dfe65b5037fc45d3e9b099eb50306f5fa1524c1b280ef1568333abc1503e0831c 13 | 14 | # Verification 15 | VERIFIER=blockscout # or etherscan 16 | VERIFIER_URL=https://base-goerli-alpha-explorer.cbhq.net/api? # or https://api-goerli.etherscan.io/api 17 | SEQUENCER_FEEVAULT_IMPL_INT= 0x0e11a703404e7fd45e16128BCDD70777a899948C 18 | L1_FEEVAULT_IMPL_INT=0xab659328665E85A339Aa0D4847DfA65d492d811e 19 | BASE_FEEVAULT_IMPL_INT=0xD3C299c208206497d4c23E9b54771567393132E5 20 | SEQUENCER_FEEVAULT_IMPL_FINAL=0xddf0F94C6Bb2b8d49C3210d9e256A2e1d4EA82f2 21 | L1_FEEVAULT_IMPL_FINAL=0xd4921913C5Cb08cFA60f0059eFB00b09CA5015bC 22 | BASE_FEEVAULT_IMPL_FINAL=0x47Bc1562DEbBbF70c55Bb492a16d6B18c1E32009 23 | -------------------------------------------------------------------------------- /mainnet/2024-03-05-pause-unpause-test/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | ## 10 | # Incident response commands 11 | # Note that --ledger --hd-paths can be replaced with --private-key $(PRIVATE_KEY) 12 | # in any command when using a local key. 13 | ## 14 | 15 | # Pause OptimismPortal Commands 16 | 17 | .PHONY: pause-portal-sign 18 | pause-portal-sign: 19 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 20 | forge script --rpc-url $(L1_RPC_URL) PausePortal --sig "sign()" 21 | 22 | .PHONY: pause-portal-run 23 | pause-portal-run: 24 | @forge script --rpc-url $(L1_RPC_URL) \ 25 | PausePortal --sig "run(bytes)" $(PAUSE_SIGNATURES) \ 26 | --private-key $(EXECUTOR_PRIVATE_KEY) \ 27 | --broadcast 28 | 29 | # Unpause OptimismPortal Commands 30 | 31 | .PHONY: unpause-portal-sign 32 | unpause-portal-sign: 33 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 34 | forge script --rpc-url $(L1_RPC_URL) UnpausePortal --sig "sign()" 35 | 36 | .PHONY: unpause-portal-run 37 | unpause-portal-run: 38 | @forge script --rpc-url $(L1_RPC_URL) \ 39 | UnpausePortal --sig "run(bytes)" $(UNPAUSE_SIGNATURES) \ 40 | --private-key $(EXECUTOR_PRIVATE_KEY) \ 41 | --broadcast 42 | -------------------------------------------------------------------------------- /goerli-alpha/2023-06-08-test-aliased-owner/script/CallIncrement.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.15; 3 | 4 | import "src/TestIncrement.sol"; 5 | import "@base-contracts/script/upgrade/SafeBuilder.sol"; 6 | 7 | import { OptimismPortal } from "@eth-optimism-bedrock/contracts/L1/OptimismPortal.sol"; 8 | 9 | contract SafeForcedInclusion is SafeBuilder { 10 | function _postCheck() internal override view { 11 | } 12 | 13 | function buildCalldata() internal override view returns (bytes memory) { 14 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 15 | 16 | bytes memory data = abi.encodeCall(TestIncrement.increment, ()); 17 | address to = 0xc1e40f9FD2bc36150e2711e92138381982988791; // TestIncrement contract on L2 18 | address optimismPortal = 0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B; 19 | uint64 gasLimit = 1000000; // TODO: tune this 20 | 21 | // Call increment() 22 | calls[0] = IMulticall3.Call3({ 23 | target: optimismPortal, 24 | allowFailure: false, 25 | callData: abi.encodeCall( 26 | OptimismPortal.depositTransaction, 27 | (to, uint256(0), gasLimit, false, data) 28 | ) 29 | }); 30 | 31 | return abi.encodeCall(IMulticall3.aggregate3, (calls)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /goerli-alpha/2023-07-12-practicing-incident-response/script/PausePortal.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/script/universal/MultisigBuilder.sol"; 5 | import "@eth-optimism-bedrock/contracts/L1/OptimismPortal.sol"; 6 | 7 | contract PausePortal is MultisigBuilder { 8 | address constant internal OPTIMISM_PORTAL_PROXY = 0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B; 9 | address constant internal GUARDIAN = 0xA221e753e82626F96b83b3665F4fA92114a2a6f3; 10 | 11 | function _postCheck() internal override view { 12 | OptimismPortal optimismPortal = OptimismPortal(payable(OPTIMISM_PORTAL_PROXY)); 13 | require(optimismPortal.paused() == true, "PausePortal: Portal did not get paused"); 14 | } 15 | 16 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 17 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 18 | 19 | calls[0] = IMulticall3.Call3({ 20 | target: OPTIMISM_PORTAL_PROXY, 21 | allowFailure: false, 22 | callData: abi.encodeCall( 23 | OptimismPortal.pause, () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return GUARDIAN; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /mainnet/2024-04-17-upgrade-erc20-factory/Makefile: -------------------------------------------------------------------------------- 1 | include ../../Makefile 2 | include ../.env 3 | include .env 4 | 5 | ifndef LEDGER_ACCOUNT 6 | override LEDGER_ACCOUNT = 0 7 | endif 8 | 9 | .PHONY: sign-cb 10 | sign-cb: 11 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 12 | forge script --rpc-url $(L2_RPC_URL) UpgradeOptimismMintableERC20Factory \ 13 | --sig "sign(address)" $(BASE_SAFE) 14 | 15 | .PHONY: sign-op 16 | sign-op: 17 | $(GOPATH)/bin/eip712sign --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -- \ 18 | forge script --rpc-url $(L2_RPC_URL) UpgradeOptimismMintableERC20Factory \ 19 | --sig "sign(address)" $(OP_SAFE) 20 | 21 | 22 | .PHONY: approve-cb 23 | approve-cb: 24 | forge script --rpc-url $(L2_RPC_URL) UpgradeOptimismMintableERC20Factory \ 25 | --sig "approve(address,bytes)" $(BASE_SAFE) $(SIGNATURES) \ 26 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" 27 | 28 | .PHONY: approve-op 29 | approve-op: 30 | forge script --rpc-url $(L2_RPC_URL) UpgradeOptimismMintableERC20Factory \ 31 | --sig "approve(address,bytes)" $(OP_SAFE) $(SIGNATURES) \ 32 | --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" 33 | 34 | .PHONY: execute 35 | execute: 36 | forge script --rpc-url $(L2_RPC_URL) UpgradeOptimismMintableERC20Factory \ 37 | --sig "run()" --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" -------------------------------------------------------------------------------- /goerli-alpha/2023-07-12-practicing-incident-response/script/UnpausePortal.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import "@base-contracts/script/universal/MultisigBuilder.sol"; 5 | import "@eth-optimism-bedrock/contracts/L1/OptimismPortal.sol"; 6 | 7 | contract UnpausePortal is MultisigBuilder { 8 | address constant internal OPTIMISM_PORTAL_PROXY = 0x61A7dc680a0f3F67aDc357453d3f51bDc70fAE1B; 9 | address constant internal GUARDIAN = 0xA221e753e82626F96b83b3665F4fA92114a2a6f3; 10 | 11 | function _postCheck() internal override view { 12 | OptimismPortal optimismPortal = OptimismPortal(payable(OPTIMISM_PORTAL_PROXY)); 13 | require(optimismPortal.paused() == false, "UnpausePortal: Portal did not get unpaused"); 14 | } 15 | 16 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 17 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 18 | 19 | calls[0] = IMulticall3.Call3({ 20 | target: OPTIMISM_PORTAL_PROXY, 21 | allowFailure: false, 22 | callData: abi.encodeCall( 23 | OptimismPortal.unpause, () 24 | ) 25 | }); 26 | 27 | return calls; 28 | } 29 | 30 | function _ownerSafe() internal override view returns (address) { 31 | return GUARDIAN; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /sepolia/2023-09-26-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B", 3 | "L1CrossDomainMessenger": "0x08A0C2EB1599718854bA30da3A3F6229982f31Ae", 4 | "L1CrossDomainMessengerProxy": "0xC34855F4De64F1840e5686e64278da901e261f20", 5 | "L1ERC721Bridge": "0xbb2Bb6A75cb9E302bb79804b36232D0f78Ee3B3A", 6 | "L1ERC721BridgeProxy": "0x21eFD066e581FA55Ef105170Cc04d74386a09190", 7 | "L1StandardBridge": "0x48E438E88870e5806d56c0fEF5BcAad080dB9b37", 8 | "L1StandardBridgeProxy": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", 9 | "L2OutputOracle": "0xAFEac3ccABcbCb93e0d04fb0337B519360E898B8", 10 | "L2OutputOracleProxy": "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254", 11 | "OptimismMintableERC20Factory": "0x2f36789426D2E32d33d2Fc2F2A7C06e5B1ED17f6", 12 | "OptimismMintableERC20FactoryProxy": "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37", 13 | "OptimismPortal": "0xC1A068299d53DbEc9f23A334B2C8FB72FA87CA4A", 14 | "OptimismPortalProxy": "0x49f53e41452C74589E85cA1677426Ba426459e85", 15 | "ProtocolVersions": "0x2763F595e95B1D18cF0Aa4ef35a7A1Cefb6652Ea", 16 | "ProtocolVersionsProxy": "0x2e18754eA334c30Adb7Ecdd0A0d0D7dDf7A711E0", 17 | "ProxyAdmin": "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3", 18 | "SystemConfig": "0x1126E5AfB588d39C3C5465a15aF389146D309581", 19 | "SystemConfigProxy": "0xf272670eb55e895584501d564AfEB048bEd26194" 20 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-28-safe-threshold/script/ChangeThreshold.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.15; 3 | 4 | import { 5 | OwnableUpgradeable 6 | } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; 7 | import "@base-contracts/script/universal/MultisigBuilder.sol"; 8 | import { IGnosisSafe, Enum } from "@eth-optimism-bedrock/scripts/interfaces/IGnosisSafe.sol"; 9 | 10 | 11 | contract ChangeThreshold is MultisigBuilder { 12 | address constant internal SAFE = 0x185D1422dccCf117D547fF2F278be88FDA59b240; 13 | 14 | function _postCheck() internal override view { 15 | // perform post execution checks 16 | IGnosisSafe safe = IGnosisSafe(payable(SAFE)); 17 | require(safe.getThreshold() == 1, "Threshold should now be 1"); 18 | } 19 | 20 | function _buildCalls() internal override view returns (IMulticall3.Call3[] memory) { 21 | IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](1); 22 | 23 | calls[0] = IMulticall3.Call3({ 24 | target: SAFE, 25 | allowFailure: false, 26 | callData: abi.encodeCall( 27 | IGnosisSafe.changeThreshold, (1) 28 | ) 29 | }); 30 | 31 | return calls; 32 | } 33 | 34 | function _ownerSafe() internal override view returns (address) { 35 | return SAFE; 36 | } 37 | } -------------------------------------------------------------------------------- /sepolia-alpha/2023-09-20-deploy/deployed/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AddressManager": "0x882a60911d00867Fe4ea632C479cc48e583A8D69", 3 | "L1CrossDomainMessenger": "0xAf347D24F99E9f66BE6d4AD47A599d6a417cD14F", 4 | "L1CrossDomainMessengerProxy": "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f", 5 | "L1ERC721Bridge": "0x0978b4dC20a50434cBFEe73917d52F2c7C54d908", 6 | "L1ERC721BridgeProxy": "0xc3016ED03E087d092d576B585F5222fFD9cadc10", 7 | "L1StandardBridge": "0xfB74918FEbA5A73FC55b6B38023bD6B755d6A211", 8 | "L1StandardBridgeProxy": "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c", 9 | "L2OutputOracle": "0xDb9B05A5573Cf6bFD77e0d516455Ab1b9217F6c4", 10 | "L2OutputOracleProxy": "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A", 11 | "OptimismMintableERC20Factory": "0xeb18726dAC6f3C1a09d7ccA96fdb3f8Df1515df6", 12 | "OptimismMintableERC20FactoryProxy": "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd", 13 | "OptimismPortal": "0xCe7b8049D23F77e7b71AD45647D1B6C136a79b55", 14 | "OptimismPortalProxy": "0x579c82A835B884336B632eeBeCC78FA08D3291Ec", 15 | "ProtocolVersions": "0x31c34D99B3E426DD84247B8716139109eD57546F", 16 | "ProtocolVersionsProxy": "0xDe8dBb1c0D2A6e22c8927cF80ddeE001d9eCd2c4", 17 | "ProxyAdmin": "0xC5aE9023bFA79124ffA50169E1423E733D0166f1", 18 | "SystemConfig": "0xE850222383d980Df54AA5245e547a1B35CD2463A", 19 | "SystemConfigProxy": "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE" 20 | } -------------------------------------------------------------------------------- /goerli-alpha/2023-06-09-l2-upgrades/records/RunPostSherlockL2.s.sol/11763071/run-1686613683.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xb035b548161bf50731388c342bd1531581aaef790c563878c1277ef268b2c9c3", 5 | "transactionType": "CALL", 6 | "contractName": null, 7 | "contractAddress": "0x7768171512911988ACfCE3Fd295A4Cf8AA8E8dBA", 8 | "function": null, 9 | "arguments": null, 10 | "rpc": "https://base-goerli-alpha.cbhq.net", 11 | "transaction": { 12 | "type": "0x02", 13 | "from": "0xd753a89450213a8d7f7acce3a615d71ebd97366d", 14 | "to": "0x7768171512911988acfce3fd295a4cf8aa8e8dba", 15 | "gas": "0x11cbb", 16 | "value": "0x0", 17 | "data": "0xd4d9bdcd7b5b792edb7e757a78fe9ed4cdd1c76e938ea4f90232e1f1006d42323d017bc1", 18 | "nonce": "0x1f", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [] 22 | } 23 | ], 24 | "receipts": [], 25 | "libraries": [], 26 | "pending": [ 27 | "0xb035b548161bf50731388c342bd1531581aaef790c563878c1277ef268b2c9c3" 28 | ], 29 | "path": "/Users/anikaraghuvanshi/Documents/protocols/base-deployments/goerli-devnet/2023-06-09-l2-upgrades/records/RunPostSherlockL2.s.sol/11763071/run-latest.json", 30 | "returns": {}, 31 | "timestamp": 1686613683, 32 | "chain": 11763071, 33 | "multi": false, 34 | "commit": "fd2ea66" 35 | } -------------------------------------------------------------------------------- /goerli/2023-06-12-batcher-rotation/records/SetBatcherAddr.s.sol/5/dry-run/run-1686613997.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CALL", 6 | "contractName": null, 7 | "contractAddress": "0x4C35Ca57616E0d5fD808574772f632D8dA4eadCa", 8 | "function": null, 9 | "arguments": null, 10 | "rpc": "https://nodes-proxy-development.cbhq.net/geth/testnet-archive-goerli-lighthouse", 11 | "transaction": { 12 | "type": "0x02", 13 | "from": "0x2fa5d8294575a8fa880a8aec008b860fb6a70e26", 14 | "to": "0x4c35ca57616e0d5fd808574772f632d8da4eadca", 15 | "gas": "0x11ccb", 16 | "value": "0x0", 17 | "data": "0xd4d9bdcd3ac7a025d6a7aee95b455da7e632e73a8c57844915c0de3bb3c5902475143dde", 18 | "nonce": "0x6", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "path": "/Users/michaeldehoog/src/contract-deployments/goerli/2023-06-12-batcher-rotation/records/SetBatcherAddr.s.sol/5/dry-run/run-latest.json", 29 | "returns": { 30 | "0": { 31 | "internal_type": "bool", 32 | "value": "false" 33 | } 34 | }, 35 | "timestamp": 1686613997, 36 | "chain": 5, 37 | "multi": false, 38 | "commit": "0c18b2c" 39 | } --------------------------------------------------------------------------------