From d13e2da4b8a5e66dc66c56f1d91e417dea099583 Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 5 Feb 2025 18:32:22 +0100 Subject: [PATCH] deployment script --- scripts/deployReferralRegistry.sol | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 scripts/deployReferralRegistry.sol diff --git a/scripts/deployReferralRegistry.sol b/scripts/deployReferralRegistry.sol new file mode 100644 index 0000000..5a861ff --- /dev/null +++ b/scripts/deployReferralRegistry.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.17; + +import { console } from "forge-std/console.sol"; +import { BaseScript } from "./utils/Base.s.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { ReferralRegistry } from "../contracts/ReferralRegistry.sol"; +import { DistributionCreator } from "../contracts/DistributionCreator.sol"; +import { IAccessControlManager } from "../contracts/interfaces/IAccessControlManager.sol"; +interface IDistributionCreator { + function distributor() external view returns (address); + + function feeRecipient() external view returns (address); + + function accessControlManager() external view returns (IAccessControlManager); +} + +contract DeployReferralRegistry is BaseScript { + function run() public { + uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + uint256 feeSetup = 0; + // uint32 cliffDuration = 1 weeks; + IDistributionCreator distributionCreator = IDistributionCreator(0x8BB4C975Ff3c250e0ceEA271728547f3802B36Fd); + address feeRecipient = distributionCreator.feeRecipient(); + IAccessControlManager accessControlManager = distributionCreator.accessControlManager(); + + // Deploy implementation + address implementation = address(new ReferralRegistry()); + console.log("ReferralRegistry Implementation:", implementation); + + // Deploy proxy + ERC1967Proxy proxy = new ERC1967Proxy(implementation, ""); + console.log("ReferralRegistry Proxy:", address(proxy)); + + // Initialize + ReferralRegistry(payable(address(proxy))).initialize(accessControlManager, feeSetup, feeRecipient); + vm.stopBroadcast(); + } +}