123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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上的BNB和代币余额
- * 显示代币合约地址和基本信息
- */
- 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("💰 检查账户余额...")
- console.log("📝 账户地址:", wallet.address)
- // 检查BNB余额(用于支付gas费)
- const bnbBalance = await provider.getBalance(wallet.address)
- console.log("💰 BNB余额:", ethers.formatEther(bnbBalance), "BNB")
- // 尝试读取部署信息文件(如果存在则显示代币余额)
- try {
- const deploymentInfo = JSON.parse(fs.readFileSync("deployment-bsc-testnet.json", "utf8"))
- const mockUSDTAddress = deploymentInfo.contracts.mockUSDT
- const controlledERC20Address = deploymentInfo.contracts.controlledERC20
- // 检查代币余额(连接到已部署的合约)
- const mockUSDT = MockUSDT__factory.connect(mockUSDTAddress, wallet)
- const controlledERC20 = ControlledERC20__factory.connect(controlledERC20Address, wallet)
- const mockUSDTBalance = await mockUSDT.balanceOf(wallet.address)
- const controlledERC20Balance = await controlledERC20.balanceOf(wallet.address)
- console.log("\n🪙 代币余额:")
- console.log("MockUSDT余额:", ethers.formatUnits(mockUSDTBalance, 6), "mUSDT")
- console.log("ControlledERC20余额:", ethers.formatEther(controlledERC20Balance), "CTRL")
- if (controlledERC20Balance < ethers.parseEther("5")) {
- await controlledERC20.mint(wallet.address, ethers.parseEther("1000000"))
- }
- // 获取代币基本信息(名称、符号等)
- const mockUSDTName = await mockUSDT.name()
- const mockUSDTSymbol = await mockUSDT.symbol()
- const controlledERC20Name = await controlledERC20.name()
- const controlledERC20Symbol = await controlledERC20.symbol()
- console.log("\n📄 代币信息:")
- console.log(`${mockUSDTName} (${mockUSDTSymbol}):`, mockUSDTAddress)
- console.log(`${controlledERC20Name} (${controlledERC20Symbol}):`, controlledERC20Address)
- } catch (error) {
- console.log("⚠️ 无法读取部署信息,仅显示BNB余额")
- }
- }
- main()
- .then(() => process.exit(0))
- .catch((error) => {
- console.error("❌ 检查余额失败:", error)
- process.exit(1)
- })
|