88 lines
2.3 KiB
Solidity
88 lines
2.3 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.4;
|
|
import {Implementation} from "../contracts/Implementation.sol";
|
|
import {Setup} from "../contracts/Setup.sol";
|
|
import {Wormhole} from "../contracts/Wormhole.sol";
|
|
import "forge-std/Script.sol";
|
|
|
|
contract DeployCore is Script {
|
|
// DryRun - Deploy the system
|
|
// dry run: forge script ./forge-scripts/DeployCore.s.sol:DeployCore --sig "dryRun()" --rpc-url $RPC
|
|
function dryRun(
|
|
address[] memory initialSigners,
|
|
uint16 chainId,
|
|
uint16 governanceChainId,
|
|
bytes32 governanceContract,
|
|
uint256 evmChainId
|
|
) public {
|
|
_deploy(
|
|
initialSigners,
|
|
chainId,
|
|
governanceChainId,
|
|
governanceContract,
|
|
evmChainId
|
|
);
|
|
}
|
|
|
|
// Deploy the system
|
|
function run(
|
|
address[] memory initialSigners,
|
|
uint16 chainId,
|
|
uint16 governanceChainId,
|
|
bytes32 governanceContract,
|
|
uint256 evmChainId
|
|
)
|
|
public
|
|
returns (
|
|
address deployedAddress,
|
|
address setupAddress,
|
|
address implAddress
|
|
)
|
|
{
|
|
vm.startBroadcast();
|
|
(deployedAddress, setupAddress, implAddress) = _deploy(
|
|
initialSigners,
|
|
chainId,
|
|
governanceChainId,
|
|
governanceContract,
|
|
evmChainId
|
|
);
|
|
vm.stopBroadcast();
|
|
}
|
|
|
|
function _deploy(
|
|
address[] memory initialSigners,
|
|
uint16 chainId,
|
|
uint16 governanceChainId,
|
|
bytes32 governanceContract,
|
|
uint256 evmChainId
|
|
)
|
|
internal
|
|
returns (
|
|
address deployedAddress,
|
|
address setupAddress,
|
|
address implAddress
|
|
)
|
|
{
|
|
Implementation impl = new Implementation();
|
|
Setup setup = new Setup();
|
|
|
|
bytes memory initData = abi.encodeWithSignature(
|
|
"setup(address,address[],uint16,uint16,bytes32,uint256)",
|
|
address(impl),
|
|
initialSigners,
|
|
chainId,
|
|
governanceChainId,
|
|
governanceContract,
|
|
evmChainId
|
|
);
|
|
|
|
Wormhole wormhole = new Wormhole(
|
|
address(setup),
|
|
initData
|
|
);
|
|
|
|
return (address(wormhole), address(setup), address(impl));
|
|
}
|
|
}
|