Skip to content

Commit

Permalink
feat: update deployment script get cross-chain incentive from GARP repo
Browse files Browse the repository at this point in the history
  • Loading branch information
reednaa committed Mar 1, 2024
1 parent 41a63aa commit 468b485
Show file tree
Hide file tree
Showing 16 changed files with 216 additions and 1,350 deletions.
14 changes: 10 additions & 4 deletions evm/.env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
ALCHEMY_API_TOKEN=
WEB3_INFURA_PROJECT_ID=
ETHERSCAN_TOKEN=
BSC_RPC_ENDPOINT=https://bsc-dataseed1.binance.org:443
CATALYST_ADDRESS="0x0000007aAAC54131e031b3C0D6557723f9365A5B"
ROUTER_DEPLOYER=
DEPLOYER_PK=

# RPC urls
mumbai=
sepolia=
basesepolia=
arbitrumsepolia=
optimismsepolia=
2 changes: 1 addition & 1 deletion evm/foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ libs = ["lib"]
via_ir = true
optimizer = true
optimizer_runs = 10000
fs_permissions = [{ access = "read-write", path = "./script/config" }]
fs_permissions = [{ access = "read-write", path = "./script/config" }, { access = "read", path = "./lib/GeneralisedIncentives/script/bridge_contracts.json" }, { access = "read", path = "./lib/catalyst-channel-lists/src/config/chains.json" }]
evm_version = "paris"
solc_version = "0.8.22"

Expand Down
100 changes: 10 additions & 90 deletions evm/script/BaseMultiChainDeployer.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,103 +3,23 @@ pragma solidity ^0.8.19;

import "forge-std/Script.sol";

contract BaseMultiChainDeployer is Script {
enum Stage {
test,
prod
}

enum Chains {
Mumbai,
Sepolia,
ScrollSepolia,
OPBNBTestnet,
BSCTestnet,
MantleTestnet,
INEVMDevnet,
BaseSepolia,
OptimismSepolia
}

mapping(Chains => string) public rpc;
mapping(Chains => string) public wrapped_gas;


Chains[] chain_list;
Chains[] chain_list_legacy;

Chains chain;
// Import MultiChainDeployer from garp
import { BaseMultiChainDeployer } from "GeneralisedIncentives/script/BaseMultiChainDeployer.s.sol";

constructor() {
rpc[Chains.Mumbai] = "mumbai";
wrapped_gas[Chains.Mumbai] = "WMATIC";
chain_list.push(Chains.Mumbai);
contract MultiChainDeployer is BaseMultiChainDeployer {

rpc[Chains.Sepolia] = "sepolia";
wrapped_gas[Chains.Sepolia] = "WETH10";
chain_list.push(Chains.Sepolia);
mapping(string => string) wrappedGas;

rpc[Chains.ScrollSepolia] = "scrollsepolia";
wrapped_gas[Chains.ScrollSepolia] = "WETH";
chain_list_legacy.push(Chains.ScrollSepolia);
constructor() BaseMultiChainDeployer() {
wrappedGas[chainKey[Chains.Mumbai]] = "WMATIC";

rpc[Chains.OPBNBTestnet] = "opbnbtestnet";
wrapped_gas[Chains.OPBNBTestnet] = "WBNB";
chain_list.push(Chains.OPBNBTestnet);

rpc[Chains.BSCTestnet] = "bsctestnet";
wrapped_gas[Chains.BSCTestnet] = "WBNB";
chain_list.push(Chains.BSCTestnet);

rpc[Chains.MantleTestnet] = "mantletestnet";
wrapped_gas[Chains.MantleTestnet] = "WMNT";
chain_list_legacy.push(Chains.MantleTestnet);

rpc[Chains.INEVMDevnet] = "inevmdevnet";
wrapped_gas[Chains.INEVMDevnet] = "WINJ";
chain_list.push(Chains.INEVMDevnet);

rpc[Chains.BaseSepolia] = "basesepolia";
wrapped_gas[Chains.BaseSepolia] = "WETH";
chain_list.push(Chains.BaseSepolia);

rpc[Chains.OptimismSepolia] = "optimismsepolia";
wrapped_gas[Chains.OptimismSepolia] = "WETH";
chain_list.push(Chains.OptimismSepolia);
}
wrappedGas[chainKey[Chains.Sepolia]] = "WETH10";

uint256 pk;

function selectFork(Chains chain_) internal {
console.log(vm.envString(rpc[chain_]));
vm.createSelectFork(vm.envString(rpc[chain_]));
}


modifier iter_chains(Chains[] memory chains) {
for (uint256 chainIndex = 0; chainIndex < chains.length; ++chainIndex) {

chain = chains[chainIndex];

selectFork(chain);

_;
}
}

modifier broadcast() {
pk = vm.envUint("CATALYST_DEPLOYER");
vm.startBroadcast(pk);

_;

vm.stopBroadcast();
}
wrappedGas[chainKey[Chains.BaseSepolia]] = "WETH";

function fund(address toFund, uint256 amount) internal {
if (toFund.balance >= amount) return;
wrappedGas[chainKey[Chains.ArbitrumSepolia]] = "WETH";

payable(toFund).transfer(amount);
wrappedGas[chainKey[Chains.OptimismSepolia]] = "WETH";
}
}

18 changes: 12 additions & 6 deletions evm/script/DeployCatalyst.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,28 @@ pragma solidity ^0.8.19;
import "forge-std/Script.sol";
import {stdJson} from "forge-std/StdJson.sol";

import { BaseMultiChainDeployer } from "./BaseMultiChainDeployer.s.sol";
import { MultiChainDeployer } from "./BaseMultiChainDeployer.s.sol";
import { JsonContracts, DeployContracts } from "./DeployContracts.s.sol";


contract DeployCatalyst is BaseMultiChainDeployer, DeployContracts {
contract DeployCatalyst is MultiChainDeployer, DeployContracts {
using stdJson for string;

address private admin;

function deploy() iter_chains(chain_list) broadcast external {
function deployAll(string[] memory chains) iter_chains_string(chains) broadcast external {
verify = true;
admin = vm.envAddress("CATALYST_ADDRESS");
deployAllContracts(admin);
}
function deploy_legacy() iter_chains(chain_list_legacy) broadcast external {

function deployAll() iter_chains(chain_list) broadcast external {
verify = true;
admin = vm.envAddress("CATALYST_ADDRESS");
deployAllContracts(admin);
}

function deployAllLegacy() iter_chains(chain_list_legacy) broadcast external {
verify = true;
admin = vm.envAddress("CATALYST_ADDRESS");
deployAllContracts(admin);
Expand All @@ -35,9 +42,8 @@ contract DeployCatalyst is BaseMultiChainDeployer, DeployContracts {
function getAddresses() external {
get = true;
address admin_ = vm.envAddress("CATALYST_ADDRESS");
uint256 pk = vm.envUint("CATALYST_DEPLOYER");

vm.startBroadcast(pk);
vm.startBroadcast(uint256(1));

deployAllContracts(admin_);

Expand Down
4 changes: 2 additions & 2 deletions evm/script/DeployContracts.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ struct JsonContracts {

contract DeployContracts is Script {
using stdJson for string;

address private admin;


bytes32 constant NO_ADDRESS_CODEHASH = 0x0000000000000000000000000000000000000000000000000000000000000000;
bytes32 constant NO_ADDRESS_CODEHASH = bytes32(0);

bool get;
bool verify;
Expand Down
Loading

0 comments on commit 468b485

Please sign in to comment.