const { ethers } = require("hardhat"); async function main() { const [deployer] = await ethers.getSigners(); console.log("使用账户部署合约:", deployer.address); console.log("账户余额:", (await deployer.provider.getBalance(deployer.address)).toString()); // 部署 TokenA console.log("\n部署 TokenA..."); const TokenA = await ethers.getContractFactory("TokenA"); const tokenA = await TokenA.deploy(); await tokenA.waitForDeployment(); console.log("TokenA 部署到:", await tokenA.getAddress()); // 部署 TokenB console.log("\n部署 TokenB..."); const TokenB = await ethers.getContractFactory("TokenB"); const tokenB = await TokenB.deploy(); await tokenB.waitForDeployment(); console.log("TokenB 部署到:", await tokenB.getAddress()); // 部署 MiniSwapAMM console.log("\n部署 MiniSwapAMM..."); const MiniSwapAMM = await ethers.getContractFactory("MiniSwapAMM"); const miniSwapAMM = await MiniSwapAMM.deploy( await tokenA.getAddress(), await tokenB.getAddress() ); await miniSwapAMM.waitForDeployment(); console.log("MiniSwapAMM 部署到:", await miniSwapAMM.getAddress()); // 给部署者和其他账户铸造一些代币用于测试 console.log("\n铸造测试代币..."); const signers = await ethers.getSigners(); const testAccounts = signers.slice(0, 3); // 获取前 3 个账户 for (let i = 0; i < testAccounts.length; i++) { const account = testAccounts[i]; // 给每个账户铸造 10,000 个 TokenA 和 TokenB await tokenA.connect(account).faucet(ethers.parseEther("10000")); await tokenB.connect(account).faucet(ethers.parseEther("10000")); console.log(`给账户 ${account.address} 铸造了 10,000 TKA 和 10,000 TKB`); } // 保存合约地址到文件 const fs = require("fs"); const contractAddresses = { TokenA: await tokenA.getAddress(), TokenB: await tokenB.getAddress(), MiniSwapAMM: await miniSwapAMM.getAddress(), deployer: deployer.address }; fs.writeFileSync( "contract-addresses.json", JSON.stringify(contractAddresses, null, 2) ); console.log("\n部署完成!"); console.log("合约地址已保存到 contract-addresses.json"); console.log("\n合约地址:"); console.log("TokenA:", await tokenA.getAddress()); console.log("TokenB:", await tokenB.getAddress()); console.log("MiniSwapAMM:", await miniSwapAMM.getAddress()); } main() .then(() => process.exit(0)) .catch((error) => { console.error(error); process.exit(1); });