Files
mini-swap/scripts/deploy.js
NoBey 3faf89e0a1 feat: 完成 Mini Swap DEX AMM 项目开发
- 添加智能合约: TokenA, TokenB, MiniSwapAMM
- 实现 AMM 流动性池功能 (x * y = k 公式)
- 支持添加/移除流动性和代币交换
- 包含完整的测试套件
- 创建 React 前端界面,支持钱包连接
- 添加 Web3 集成和现代化 UI 设计
- 包含部署脚本和完整的项目配置
2025-07-10 01:39:43 +08:00

76 lines
2.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
});