File size: 1,817 Bytes
181b38f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { ethers } from "hardhat";

async function main() {
  // Get the deployer's address
  const [deployer] = await ethers.getSigners();
  console.log("Deploying contracts with account:", deployer.address);

  // Check balance
  const balance = await ethers.provider.getBalance(deployer.address);
  console.log("Account balance:", ethers.formatEther(balance), "ETH");

  // Deployment parameters
  // For Sepolia, use your wallet address as the platform treasury
  const platformTreasury = deployer.address;
  const defaultTaxRate = 500; // 5% (500 basis points)
  const defaultWhaleMinBalance = ethers.parseUnits("10000", 18); // 10,000 tokens
  const defaultNFTRoyalty = 1000; // 10% (1000 basis points)

  console.log("\nDeployment parameters:");
  console.log("- Platform Treasury:", platformTreasury);
  console.log("- Default Tax Rate:", defaultTaxRate, "basis points (5%)");
  console.log("- Default Whale Min Balance:", ethers.formatUnits(defaultWhaleMinBalance, 18), "tokens");
  console.log("- Default NFT Royalty:", defaultNFTRoyalty, "basis points (10%)");

  // Deploy Factory
  const Factory = await ethers.getContractFactory("Factory");
  const factory = await Factory.deploy(
    platformTreasury,
    defaultTaxRate,
    defaultWhaleMinBalance,
    defaultNFTRoyalty
  );

  await factory.waitForDeployment();
  const factoryAddress = await factory.getAddress();
  
  console.log("\n✅ Factory deployed to:", factoryAddress);
  console.log("\n📝 Save this address in your frontend .env.local file as NEXT_PUBLIC_FACTORY_ADDRESS");

  // Verify deployment
  const economyCount = await factory.getEconomyCount();
  console.log("\nInitial economy count:", economyCount.toString());
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });