-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGemStargateDeployer.s.sol
More file actions
58 lines (44 loc) · 1.94 KB
/
GemStargateDeployer.s.sol
File metadata and controls
58 lines (44 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import {Script, console} from "forge-std/Script.sol";
import {StargateFeeReceiver} from "../../src/stargate/StargateFeeReceiver.sol";
contract GemStargateDeployerScript is Script {
struct NetworkConfig {
address endpoint;
}
mapping(uint256 => string) private chainToNetworkName;
constructor() {
chainToNetworkName[1] = "ETHEREUM";
chainToNetworkName[10] = "OPTIMISM";
chainToNetworkName[8453] = "BASE";
chainToNetworkName[56] = "BSC";
chainToNetworkName[42161] = "ARBITRUM";
chainToNetworkName[137] = "POLYGON";
chainToNetworkName[43114] = "AVALANCHE";
chainToNetworkName[2741] = "ABSTRACT";
}
function getNetworkConfig(uint256 chainId) internal view returns (NetworkConfig memory) {
string memory networkName = chainToNetworkName[chainId];
// Construct environment variable names
string memory endpointVar = string.concat("STARGATE_ENDPOINT_", networkName);
// Get values from environment
address endpoint = vm.envAddress(endpointVar);
return NetworkConfig({endpoint: endpoint});
}
function run() public {
console.log("Deploying StargateFeeReceiver...");
uint256 chainId = block.chainid;
console.log("chainId: %s", chainId);
// Skip unsupported chains
if (bytes(chainToNetworkName[chainId]).length == 0) {
console.log("Unsupported chain. Chain ID: %s. Skipping...", chainId);
return;
}
NetworkConfig memory config = getNetworkConfig(chainId);
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
StargateFeeReceiver handler = new StargateFeeReceiver(config.endpoint);
console.log("Deployed StargateFeeReceiver for Stargate %s at %s", config.endpoint, address(handler));
vm.stopBroadcast();
}
}