12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { MockUSDT__factory, ControlledERC20__factory } from "../typechain-types"
- import { config as dotenvConfig } from "dotenv"
- import { ethers } from "ethers"
- import fs from "fs"
- /**
- * @dev BSC Testnet部署脚本
- * 部署MockUSDT和ControlledERC20合约到BSC Testnet
- * 包含合约验证和信息保存功能
- */
- async function main() {
- dotenvConfig()
- const rpcUrl = process.env.BSC_TESTNET_RPC_URL
- const privateKey = process.env.PRIVATE_KEY
- if (!rpcUrl || !privateKey) {
- throw new Error("请在.env中配置BSC_TESTNET_RPC_URL和PRIVATE_KEY")
- }
- const provider = new ethers.JsonRpcProvider(rpcUrl)
- const wallet = new ethers.Wallet(privateKey, provider)
- console.log("🚀 开始部署到BSC Testnet...")
- console.log("📝 部署账户:", wallet.address)
- console.log("💰 账户余额:", ethers.formatEther(await provider.getBalance(wallet.address)), "BNB")
- // 部署MockUSDT合约(标准ERC20代币,用作Mock USDT)
- console.log("\n📦 部署MockUSDT合约...")
- const MockUSDT = new MockUSDT__factory(wallet)
- const mockUSDT = await MockUSDT.deploy("Mock USDT", "mUSDT", wallet.address)
- await mockUSDT.waitForDeployment()
- const mockUSDTAddress = await mockUSDT.getAddress()
- console.log("✅ MockUSDT已部署到:", mockUSDTAddress)
- // 部署ControlledERC20合约(带有转账开关和权限管理的ERC20代币)
- console.log("\n📦 部署ControlledERC20合约...")
- const ControlledERC20 = new ControlledERC20__factory(wallet)
- const controlledERC20 = await ControlledERC20.deploy("Controlled Token", "CTRL", wallet.address)
- await controlledERC20.waitForDeployment()
- const controlledERC20Address = await controlledERC20.getAddress()
- console.log("✅ ControlledERC20已部署到:", controlledERC20Address)
- // 输出部署信息到控制台
- console.log("\n📋 部署信息:")
- console.log("🌐 网络: BSC Testnet")
- console.log("👤 部署者:", wallet.address)
- console.log("📄 MockUSDT地址:", mockUSDTAddress)
- console.log("📄 ControlledERC20地址:", controlledERC20Address)
- // 保存部署信息到JSON文件(用于其他脚本读取)
- const deploymentInfo = {
- network: "BSC Testnet",
- deployer: wallet.address,
- contracts: {
- mockUSDT: mockUSDTAddress,
- controlledERC20: controlledERC20Address,
- },
- timestamp: new Date().toISOString(),
- }
- fs.writeFileSync("deployment-bsc-testnet.json", JSON.stringify(deploymentInfo, null, 2))
- console.log("\n💾 部署信息已保存到 deployment-bsc-testnet.json")
- console.log("\n🎉 部署完成!")
- }
- main()
- .then(() => process.exit(0))
- .catch((error) => {
- console.error("❌ 部署失败:", error)
- process.exit(1)
- })
|