diff --git a/pkgs/contract/outputs/contracts-sepolia.json b/pkgs/contract/outputs/contracts-sepolia.json index 07a461dc..c3b7877b 100644 --- a/pkgs/contract/outputs/contracts-sepolia.json +++ b/pkgs/contract/outputs/contracts-sepolia.json @@ -3,16 +3,18 @@ "Hats": "0x3bc1A0Ad72417f2d411118085256fC53CBdDd137", "HatsModuleFactory": "0x0a3f85fa597B6a967271286aA0724811acDF5CD9", "PullSplitsFactory": "0x80f1B766817D04870f115fEBbcCADF8DBF75E017", - "BigBang": "\"0x2662b0Dc151bbD9C0e5F1b5bD8674b4eD3E92D0b\"", + "BigBang": "\"0xFC16BFa58552a6aE96f2a707e597E61849C33bA5\"", "FractionToken": "\"0xd6031f9543bEB0963e32CA2AC474de69D0515059\"", - "SplitsCreatorFactory": "\"0x447f22AB169eE89118E03f2f2DCbE8667010340D\"", - "SplitsCreator": "\"0x4BbA4e70437bF162F8EfB8de88E5ECb3C19e11e6\"", - "HatsTimeFrameModule": "\"0xa5449bAe3512a81D63a60E65E525B443a78de3b0\"", - "ProxyAdmin": "\"0xdAEC7C851DA8E9b041e4592fdCF19843Bc1f8bE8\"" + "SplitsCreatorFactory": "\"0x5359CCE1659e699EB91374fd1c1B31D2afF95Cd5\"", + "SplitsCreator": "\"0xcc1fce367cb146204e7Fdce4D6bD6896f92160A8\"", + "HatsTimeFrameModule": "\"0x669e5dE14354D1dBB0f7FC67640505B3c985652e\"", + "ProxyAdmin": "\"0xdAEC7C851DA8E9b041e4592fdCF19843Bc1f8bE8\"", + "ThanksTokenFactory_Implementation": "\"0x17cc985B1bdEE805670E381e122Df67C226C8462\"", + "ThanksTokenFactory": "\"0xF50aDf3c7C0f8c7ecD0952D9fdF16b82F63B6185\"" }, "implementations": { "FractionToken_Implementation": "\"0x6d701256205019e40cE02e13D799ed2cd3BBE8e8\"", - "SplitsCreatorFactory_Implementation": "\"0x5850255ed6DC90476eea2739dAc0B2829ac7e825\"", - "BigBang_Implementation": "\"0xe5c4dd13786Acc50228Fe1878709d10ef863503B\"" + "SplitsCreatorFactory_Implementation": "\"0x65d14703df1fE446121aaB67FA802F84E0e3C26f\"", + "BigBang_Implementation": "\"0x3746bBD64806F914B5EFCaDE5954346769e4C8a8\"" } -} +} \ No newline at end of file diff --git a/pkgs/contract/scripts/deploy/create2.ts b/pkgs/contract/scripts/deploy/create2.ts index e60fa237..96c4602c 100644 --- a/pkgs/contract/scripts/deploy/create2.ts +++ b/pkgs/contract/scripts/deploy/create2.ts @@ -1,8 +1,9 @@ import { ethers, network } from "hardhat"; import type { Address } from "viem"; import { deployBigBang } from "../../helpers/deploy/BigBang"; -import { deployFractionToken } from "../../helpers/deploy/FractionToken"; +// import { deployFractionToken } from "../../helpers/deploy/FractionToken"; import { + deployHatsFractionTokenModule, deployHatsHatCreatorModule, deployHatsTimeFrameModule, } from "../../helpers/deploy/Hats"; @@ -10,6 +11,10 @@ import { deploySplitsCreator, deploySplitsCreatorFactory, } from "../../helpers/deploy/Splits"; +import { + deployThanksToken, + deployThanksTokenFactory, +} from "../../helpers/deploy/ThanksToken"; import { writeContractAddress } from "../../helpers/deploy/contractsJsonHelper"; const deploy = async () => { @@ -17,17 +22,14 @@ const deploy = async () => { "##################################### [Create2 Deploy START] #####################################", ); + const [deployerSigner] = await ethers.getSigners(); + const deployerAddress = await deployerSigner.getAddress(); + // Deploy HatsTimeFrameModule (non-upgradeable) - const { HatsTimeFrameModule } = await deployHatsTimeFrameModule( - "0x0000000000000000000000000000000000000001", - "0.0.0", - ); + const { HatsTimeFrameModule } = await deployHatsTimeFrameModule("0.0.0"); const hatsTimeFrameModuleAddress = HatsTimeFrameModule.address; - const { HatsHatCreatorModule } = await deployHatsHatCreatorModule( - "0x0000000000000000000000000000000000000001", - "0.0.0", - ); // zero address 以外のアドレスを仮に渡す + const { HatsHatCreatorModule } = await deployHatsHatCreatorModule("0.0.0"); // zero address 以外のアドレスを仮に渡す const hatsHatCreatorModuleAddress = HatsHatCreatorModule.address; // Deploy SplitsCreator (non-upgradeable) @@ -37,9 +39,13 @@ const deploy = async () => { // Deploy FractionToken implementation and proxy console.log("Deploying FractionToken..."); - const { FractionToken, FractionTokenImplAddress, FractionTokenInitData } = - await deployFractionToken("", 10000n, process.env.HATS_ADDRESS as Address); - const fractionTokenAddress = FractionToken.address; + // const { FractionToken, FractionTokenImplAddress, FractionTokenInitData } = + // await deployFractionToken("", 10000n, process.env.HATS_ADDRESS as Address); + // const fractionTokenAddress = FractionToken.address; + + const { HatsFractionTokenModule } = + await deployHatsFractionTokenModule("0.0.0"); + const hatsFractionTokenModuleAddress = HatsFractionTokenModule.address; // Deploy SplitsCreatorFactory implementation and proxy console.log("Deploying SplitsCreatorFactory..."); @@ -51,6 +57,25 @@ const deploy = async () => { } = await deploySplitsCreatorFactory(splitsCreatorAddress); const splitsCreatorFactoryAddress = SplitsCreatorFactory.address; + console.log("Deploying ThanksToken..."); + const { ThanksToken } = await deployThanksToken(); + const thanksTokenAddress = ThanksToken.address; + + console.log("Deploying ThanksTokenFactory..."); + + const { + ThanksTokenFactory, + ThanksTokenFactoryImplAddress, + ThanksTokenFactoryInitData, + } = await deployThanksTokenFactory({ + initialOwner: deployerAddress as Address, + implementation: thanksTokenAddress, + hatsAddress: process.env.HATS_ADDRESS as Address, + fractionTokenAddress: hatsFractionTokenModuleAddress, + hatsTimeFrameModuleAddress: hatsTimeFrameModuleAddress, + }); + const thanksTokenFactoryAddress = ThanksTokenFactory.address; + // Deploy BigBang implementation and proxy console.log("Deploying BigBang..."); @@ -60,9 +85,10 @@ const deploy = async () => { .HATS_MODULE_FACTORY_ADDRESS as Address, hatsTimeFrameModule_impl: hatsTimeFrameModuleAddress, hatsHatCreatorModule_impl: hatsHatCreatorModuleAddress, + hatsFractionTokenModule_impl: hatsFractionTokenModuleAddress, splitsCreatorFactoryAddress: splitsCreatorFactoryAddress, splitsFactoryV2Address: process.env.PULL_SPLITS_FACTORY_ADDRESS as Address, - fractionTokenAddress: fractionTokenAddress, + thanksTokenFactoryAddress: thanksTokenFactoryAddress, }); const bigBangAddress = BigBang.address; @@ -73,21 +99,32 @@ const deploy = async () => { ); await SplitsCreatorFactoryContract.setBigBang(bigBangAddress); + // Set bigbang address to thanks token factory + const ThanksTokenFactoryContract = await ethers.getContractAt( + "ThanksTokenFactory", + thanksTokenFactoryAddress, + ); + await ThanksTokenFactoryContract.setBigBang(bigBangAddress); + console.log("Successfully deployed contracts!🎉"); console.log("Verify contract with these commands...\n"); console.log( "HatsTimeframeModule module:\n", - `pnpm contract hardhat verify ${hatsTimeFrameModuleAddress} 0.0.0 0x0000000000000000000000000000000000000001 --network ${network.name}\n`, + `pnpm contract hardhat verify ${hatsTimeFrameModuleAddress} 0.0.0 --network ${network.name}\n`, ); console.log( "HatsHatCreatorModule module:\n", - `pnpm contract hardhat verify ${hatsHatCreatorModuleAddress} 0.0.0 0x0000000000000000000000000000000000000001 --network ${network.name}\n`, + `pnpm contract hardhat verify ${hatsHatCreatorModuleAddress} 0.0.0 --network ${network.name}\n`, ); console.log( - "FractionToken:\n", - `pnpm contract hardhat verify ${FractionTokenImplAddress} --network ${network.name} &&`, - `pnpm contract hardhat verify ${fractionTokenAddress} ${FractionTokenImplAddress} ${FractionTokenInitData} --network ${network.name}\n`, + "HatsFractionTokenModule:\n", + `pnpm contract hardhat verify ${hatsFractionTokenModuleAddress} 0.0.0 --network ${network.name}\n`, + ); + console.log( + "ThanksTokenFactory:\n", + `pnpm contract hardhat verify ${thanksTokenFactoryAddress} --network ${network.name} &&`, + `pnpm contract hardhat verify ${thanksTokenFactoryAddress} ${ThanksTokenFactoryImplAddress} ${ThanksTokenFactoryInitData} --network ${network.name}\n`, ); console.log( "SplitsCreator:\n", @@ -111,6 +148,12 @@ const deploy = async () => { value: hatsTimeFrameModuleAddress, network: network.name, }); + writeContractAddress({ + group: "contracts", + name: "ThanksTokenFactory_Implementation", + value: ThanksTokenFactoryImplAddress, + network: network.name, + }); writeContractAddress({ group: "contracts", name: "SplitsCreator", @@ -119,12 +162,6 @@ const deploy = async () => { }); // Save upgradeable contracts implementations - writeContractAddress({ - group: "implementations", - name: "FractionToken_Implementation", - value: FractionTokenImplAddress, - network: network.name, - }); writeContractAddress({ group: "implementations", name: "SplitsCreatorFactory_Implementation", @@ -141,8 +178,14 @@ const deploy = async () => { // Save upgradeable contracts proxies writeContractAddress({ group: "contracts", - name: "FractionToken", - value: fractionTokenAddress, + name: "HatsTimeFrameModule", + value: hatsTimeFrameModuleAddress, + network: network.name, + }); + writeContractAddress({ + group: "contracts", + name: "ThanksTokenFactory", + value: thanksTokenFactoryAddress, network: network.name, }); writeContractAddress({