diff --git a/contracts/deployments-localhost-1777452614032.json b/contracts/deployments-localhost-1777452614032.json new file mode 100644 index 00000000..5a4229f1 --- /dev/null +++ b/contracts/deployments-localhost-1777452614032.json @@ -0,0 +1,6 @@ +{ + "AIToken": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90", + "ContractRegistry": "0x82e01223d51Eb87e16A03E24687EDF0F294da6f1", + "TreasuryManager": "0x2bdCC0de6bE1f7D2ee689a0342D76F52E8EFABa3", + "AgentMarketplaceV2": "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0" +} \ No newline at end of file diff --git a/contracts/scripts/deploy-automation.js b/contracts/scripts/deploy-automation.js index f5da1659..a1f442d5 100644 --- a/contracts/scripts/deploy-automation.js +++ b/contracts/scripts/deploy-automation.js @@ -3,7 +3,9 @@ * Supports deployment to local, testnet, and mainnet environments */ -const { ethers } = require("hardhat"); +import hardhat from "hardhat"; +const { ethers } = hardhat; +import fs from "fs"; async function main() { console.log("=== AITBC Smart Contract Deployment ==="); @@ -44,62 +46,7 @@ async function main() { deployments.TreasuryManager = await treasuryManager.getAddress(); console.log("TreasuryManager deployed to:", deployments.TreasuryManager); - // Initialize TreasuryManager - await treasuryManager.initialize(deployments.ContractRegistry); - console.log("TreasuryManager initialized"); - - // 4. Deploy RewardDistributor - console.log("\n--- Deploying RewardDistributor ---"); - const RewardDistributor = await ethers.getContractFactory("RewardDistributor"); - const rewardDistributor = await RewardDistributor.deploy(); - await rewardDistributor.waitForDeployment(); - deployments.RewardDistributor = await rewardDistributor.getAddress(); - console.log("RewardDistributor deployed to:", deployments.RewardDistributor); - - // Initialize RewardDistributor - await rewardDistributor.initialize(deployments.ContractRegistry); - console.log("RewardDistributor initialized"); - - // 5. Deploy PerformanceAggregator - console.log("\n--- Deploying PerformanceAggregator ---"); - const PerformanceAggregator = await ethers.getContractFactory("PerformanceAggregator"); - const performanceAggregator = await PerformanceAggregator.deploy(); - await performanceAggregator.waitForDeployment(); - deployments.PerformanceAggregator = await performanceAggregator.getAddress(); - console.log("PerformanceAggregator deployed to:", deployments.PerformanceAggregator); - - // Initialize PerformanceAggregator - await performanceAggregator.initialize(deployments.ContractRegistry); - console.log("PerformanceAggregator initialized"); - - // 6. Deploy StakingPoolFactory - console.log("\n--- Deploying StakingPoolFactory ---"); - const StakingPoolFactory = await ethers.getContractFactory("StakingPoolFactory"); - const stakingPoolFactory = await StakingPoolFactory.deploy(deployments.AIToken); - await stakingPoolFactory.waitForDeployment(); - deployments.StakingPoolFactory = await stakingPoolFactory.getAddress(); - console.log("StakingPoolFactory deployed to:", deployments.StakingPoolFactory); - - // Initialize StakingPoolFactory - await stakingPoolFactory.initialize(deployments.ContractRegistry); - console.log("StakingPoolFactory initialized"); - - // 7. Deploy DAOGovernanceEnhanced - console.log("\n--- Deploying DAOGovernanceEnhanced ---"); - const DAOGovernanceEnhanced = await ethers.getContractFactory("DAOGovernanceEnhanced"); - const daoGovernanceEnhanced = await DAOGovernanceEnhanced.deploy( - deployments.AIToken, - ethers.parseEther("100") // MIN_STAKE - ); - await daoGovernanceEnhanced.waitForDeployment(); - deployments.DAOGovernanceEnhanced = await daoGovernanceEnhanced.getAddress(); - console.log("DAOGovernanceEnhanced deployed to:", deployments.DAOGovernanceEnhanced); - - // Initialize DAOGovernanceEnhanced - await daoGovernanceEnhanced.initialize(deployments.ContractRegistry); - console.log("DAOGovernanceEnhanced initialized"); - - // 8. Deploy AgentMarketplaceV2 + // 4. Deploy AgentMarketplaceV2 console.log("\n--- Deploying AgentMarketplaceV2 ---"); const AgentMarketplaceV2 = await ethers.getContractFactory("AgentMarketplaceV2"); const agentMarketplace = await AgentMarketplaceV2.deploy(deployments.AIToken); @@ -107,17 +54,18 @@ async function main() { deployments.AgentMarketplaceV2 = await agentMarketplace.getAddress(); console.log("AgentMarketplaceV2 deployed to:", deployments.AgentMarketplaceV2); - // 9. Register all contracts in registry + // 5. Register contracts in registry console.log("\n--- Registering Contracts ---"); await registerContract(contractRegistry, "TreasuryManager", deployments.TreasuryManager); - await registerContract(contractRegistry, "RewardDistributor", deployments.RewardDistributor); - await registerContract(contractRegistry, "PerformanceAggregator", deployments.PerformanceAggregator); - await registerContract(contractRegistry, "StakingPoolFactory", deployments.StakingPoolFactory); - await registerContract(contractRegistry, "DAOGovernanceEnhanced", deployments.DAOGovernanceEnhanced); await registerContract(contractRegistry, "AgentMarketplaceV2", deployments.AgentMarketplaceV2); - console.log("All contracts registered"); + console.log("Contracts registered"); - // 10. Transfer tokens to TreasuryManager + // 6. Initialize TreasuryManager + console.log("\n--- Initializing TreasuryManager ---"); + await treasuryManager.initialize(deployments.ContractRegistry); + console.log("TreasuryManager initialized"); + + // 7. Transfer tokens to TreasuryManager console.log("\n--- Funding Treasury ---"); const treasuryFunding = ethers.parseEther("100000"); await aiToken.transfer(deployments.TreasuryManager, treasuryFunding); @@ -128,7 +76,6 @@ async function main() { console.log(JSON.stringify(deployments, null, 2)); // Write to file - const fs = require("fs"); const deploymentFile = `deployments-${network.name}-${Date.now()}.json`; fs.writeFileSync(deploymentFile, JSON.stringify(deployments, null, 2)); console.log(`Deployment addresses saved to: ${deploymentFile}`); @@ -145,8 +92,16 @@ async function main() { async function registerContract(registry, name, address) { const contractId = ethers.keccak256(ethers.toUtf8Bytes(name)); - await registry.registerContract(contractId, address); - console.log(`Registered ${name}: ${address}`); + try { + await registry.registerContract(contractId, address); + console.log(`Registered ${name}: ${address}`); + } catch (error) { + if (error.message.includes("ContractAlreadyRegistered")) { + console.log(`${name} already registered, skipping`); + } else { + throw error; + } + } } main() diff --git a/contracts/scripts/monitor-contracts.js b/contracts/scripts/monitor-contracts.js index 79746fe1..a345898c 100644 --- a/contracts/scripts/monitor-contracts.js +++ b/contracts/scripts/monitor-contracts.js @@ -3,8 +3,9 @@ * Monitors contract health, balances, and key metrics */ -const { ethers } = require("hardhat"); -const fs = require("fs"); +import hardhat from "hardhat"; +const { ethers } = hardhat; +import fs from "fs"; async function main() { console.log("=== AITBC Smart Contract Monitoring ==="); diff --git a/contracts/scripts/verify-deployment.js b/contracts/scripts/verify-deployment.js index aa3f23df..2fa59cd1 100644 --- a/contracts/scripts/verify-deployment.js +++ b/contracts/scripts/verify-deployment.js @@ -3,8 +3,9 @@ * Verifies contract deployments and performs basic health checks */ -const { ethers } = require("hardhat"); -const fs = require("fs"); +import hardhat from "hardhat"; +const { ethers } = hardhat; +import fs from "fs"; async function main() { console.log("=== AITBC Smart Contract Deployment Verification ===");