Skip to content

Commit

Permalink
feat: improve scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
0xOneTony committed Nov 23, 2023
1 parent f7a93c2 commit 81386e6
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 11 deletions.
13 changes: 10 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
## For e2e tests and deployment scripts
MAINNET_RPC=
MAINNET_DEPLOYER_PK=

GOERLI_RPC=
GOERLI_DEPLOYER_PK=
OPTIMISM_RPC=
OPTIMISM_GOERLI_RPC=

## For deployment scripts
DEPLOYER_MAINNNET_PRIVATE_KEY=
DEPLOYER_GOERLI_PRIVATE_KEY=
DEPLOYER_OPTIMISM_PRIVATE_KEY=
DEPLOYER_OPTIMISM_GOERLI_PRIVATE_KEY=
STORAGE_MIRROR_ADDRESS=

ETHERSCAN_API_KEY=
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@
"build": "forge build",
"build:optimized": "FOUNDRY_PROFILE=optimized forge build",
"coverage": "forge coverage --match-contract Unit",
"deploy:goerli": "bash -c 'source .env && forge script DeployGoerli --rpc-url $GOERLI_RPC --broadcast --private-key $GOERLI_DEPLOYER_PK --verify --etherscan-api-key $ETHERSCAN_API_KEY'",
"deploy:mainnet": "bash -c 'source .env && forge script DeployMainnet --rpc-url $MAINNET_RPC --broadcast --private-key $MAINNET_DEPLOYER_PK --verify --etherscan-api-key $ETHERSCAN_API_KEY'",
"deploy:goerli": "bash -c 'source .env && forge script -vv --rpc-url $GOERLI_RPC --slow --broadcast --private-key $DEPLOYER_GOERLI_PRIVATE_KEY solidity/scripts/DeployGoerli.s.sol:DeployGoerli'",
"deploy:mainnet": "bash -c 'source .env && forge script -vv --rpc-url $MAINNET_RPC --slow --broadcast --private-key $DEPLOYER_MAINNNET_PRIVATE_KEY solidity/scripts/DeployMainnet.s.sol:DeployMainnet'",
"deploy:optimism": "bash -c 'source .env && forge script -vv --rpc-url $OPTIMISM_RPC --slow --broadcast --private-key $DEPLOYER_OPTIMISM_PRIVATE_KEY solidity/scripts/DeployOptimism.s.sol:DeployOptimism'",
"deploy:optimismGoerli": "bash -c 'source .env && forge script -vv --rpc-url $OPTIMISM_GOERLI_RPC --slow --broadcast --private-key $DEPLOYER_OPTIMISM_GOERLI_PRIVATE_KEY solidity/scripts/DeployOptimismGoerli.s.sol:DeployOptimismGoerli'",
"lint:check": "yarn lint:sol-tests && yarn lint:sol-logic && forge fmt check",
"lint:fix": "sort-package-json && forge fmt && yarn lint:sol-tests --fix && yarn lint:sol-logic --fix",
"lint:sol-logic": "solhint -c .solhint.json 'solidity/contracts/**/*.sol' 'solidity/interfaces/**/*.sol'",
Expand Down
3 changes: 2 additions & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ solidity-rlp/=node_modules/Solidity-RLP
contracts/=solidity/contracts
interfaces/=solidity/interfaces
test/=solidity/test
libraries/=solidity/libraries
libraries/=solidity/libraries
scripts/=solidity/scripts/
20 changes: 20 additions & 0 deletions solidity/scripts/DeployGoerli.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.19;

import {DeployHomeChain, DeployVars} from 'scripts/DeployHomeChain.s.sol';

// We threat Goerli as the Home Chain in this case
contract DeployGoerli is DeployHomeChain {
address public deployer = vm.rememberKey(vm.envUint('DEPLOYER_GOERLI_PRIVATE_KEY'));

function run() external {
vm.startBroadcast(deployer);

DeployVars memory _deployVars = DeployVars(deployer);

// Deploy protocol
_deploy(_deployVars);

vm.stopBroadcast();
}
}
4 changes: 2 additions & 2 deletions solidity/scripts/DeployHomeChain.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.4 <0.9.0;
pragma solidity =0.8.19;

import {Script} from 'forge-std/Script.sol';
import {console} from 'forge-std/console.sol';
Expand All @@ -15,7 +15,7 @@ struct DeployVars {
address deployer;
}

abstract contract Deploy is Script, TestConstants {
abstract contract DeployHomeChain is Script, TestConstants {
function _deploy(DeployVars memory _deployVars)
internal
returns (
Expand Down
20 changes: 20 additions & 0 deletions solidity/scripts/DeployMainnet.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.19;

import {DeployHomeChain, DeployVars} from 'scripts/DeployHomeChain.s.sol';

// We threat Mainnet as the Home Chain in this case
contract DeployMainnet is DeployHomeChain {
address public deployer = vm.rememberKey(vm.envUint('DEPLOYER_MAINNNET_PRIVATE_KEY'));

function run() external {
vm.startBroadcast(deployer);

DeployVars memory _deployVars = DeployVars(deployer);

// Deploy protocol
_deploy(_deployVars);

vm.stopBroadcast();
}
}
6 changes: 3 additions & 3 deletions solidity/scripts/DeployNonHomeChain.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.4 <0.9.0;
pragma solidity =0.8.19;

import {Script} from 'forge-std/Script.sol';
import {console} from 'forge-std/console.sol';
Expand All @@ -20,7 +20,7 @@ struct DeployVars {
address storageMirror;
}

abstract contract Deploy is Script, TestConstants {
abstract contract DeployNonHomeChain is Script, TestConstants {
function _deploy(DeployVars memory _deployVars)
internal
returns (
Expand All @@ -34,7 +34,7 @@ abstract contract Deploy is Script, TestConstants {
uint256 _currentNonce = vm.getNonce(_deployVars.deployer);

address _storageMirrorRootRegistryTheoriticalAddress =
ContractDeploymentAddress.addressFrom(_deployVars.deployer, 2);
ContractDeploymentAddress.addressFrom(_deployVars.deployer, _currentNonce + 2);

_blockHeaderOracle = new BlockHeaderOracle(); // deployer nonce 0
console.log('ORACLE: ', address(_blockHeaderOracle));
Expand Down
21 changes: 21 additions & 0 deletions solidity/scripts/DeployOptimism.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.19;

import {DeployNonHomeChain, DeployVars} from 'scripts/DeployNonHomeChain.s.sol';

// We threat Goerli as the Home Chain in this case
contract DeployOptimism is DeployNonHomeChain {
address public deployer = vm.rememberKey(vm.envUint('DEPLOYER_OPTIMISM_PRIVATE_KEY'));
address public storageMirrorAddress = vm.envAddress('STORAGE_MIRROR_ADDRESS');

function run() external {
vm.startBroadcast(deployer);

DeployVars memory _deployVars = DeployVars(deployer, storageMirrorAddress);

// Deploy protocol
_deploy(_deployVars);

vm.stopBroadcast();
}
}
20 changes: 20 additions & 0 deletions solidity/scripts/DeployOptimismGoerli.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.19;

import {DeployNonHomeChain, DeployVars} from 'scripts/DeployNonHomeChain.s.sol';

// We threat Goerli as the Home Chain in this case
contract DeployOptimismGoerli is DeployNonHomeChain {
address public deployer = vm.rememberKey(vm.envUint('DEPLOYER_OPTIMISM_PRIVATE_KEY'));
address public storageMirrorAddress = vm.envAddress('STORAGE_MIRROR_ADDRESS');

function run() external {
vm.startBroadcast(deployer);

DeployVars memory _deployVars = DeployVars(deployer, storageMirrorAddress);
// Deploy protocol
_deploy(_deployVars);

vm.stopBroadcast();
}
}

0 comments on commit 81386e6

Please sign in to comment.