Download scripts/deploy.js from Snapkitty/forge-token: direct link, hf CLI and curl.
- Browser
- Download file 2.38 kB
-
https://huggingface.co/Snapkitty/forge-token/resolve/main/scripts/deploy.js
- Command line
-
hf download hf://Snapkitty/forge-token/scripts/deploy.js
-
curl -L -o deploy.js https://huggingface.co/Snapkitty/forge-token/resolve/main/scripts/deploy.js
2.38 kB
| const { ethers, run, network } = require("hardhat") | |
| const fs = require("fs") | |
| const path = require("path") | |
| async function main() { | |
| const architect = process.env.ARCHITECT_ADDRESS | |
| const treasury = process.env.TREASURY_ADDRESS | |
| if (!architect || !treasury) throw new Error("Set ARCHITECT_ADDRESS and TREASURY_ADDRESS in .env") | |
| const [deployer] = await ethers.getSigners() | |
| console.log("[FORGE] Deployer: ", deployer.address) | |
| console.log("[FORGE] Architect: ", architect) | |
| console.log("[FORGE] Treasury: ", treasury) | |
| console.log("[FORGE] Network: ", network.name) | |
| const FORGE = await ethers.getContractFactory("FORGE") | |
| const forge = await FORGE.deploy(architect, treasury) | |
| await forge.waitForDeployment() | |
| const address = await forge.getAddress() | |
| const deployTx = forge.deploymentTransaction() | |
| const receipt = await deployTx.wait() | |
| console.log("[FORGE] Contract address:", address) | |
| console.log("[FORGE] TX hash: ", deployTx.hash) | |
| console.log("[FORGE] Block: ", receipt.blockNumber) | |
| // Save deployment record | |
| const deploymentsDir = path.join(__dirname, "../deployments") | |
| if (!fs.existsSync(deploymentsDir)) fs.mkdirSync(deploymentsDir, { recursive: true }) | |
| const record = { | |
| network: network.name, | |
| address, | |
| deployer: deployer.address, | |
| architect, | |
| treasury, | |
| txHash: deployTx.hash, | |
| blockNumber: receipt.blockNumber, | |
| timestamp: new Date().toISOString(), | |
| maxSupply: "21000000", | |
| symbol: "FRG", | |
| note: "UTILITY TOKEN ONLY — legal sign-off required before public distribution — Jessica Lee Westerhoff CPA" | |
| } | |
| const outFile = path.join(deploymentsDir, `${network.name}.json`) | |
| fs.writeFileSync(outFile, JSON.stringify(record, null, 2)) | |
| console.log("[FORGE] Deployment record saved to", outFile) | |
| // Verify on Basescan (skip on hardhat/localhost) | |
| if (network.name !== "hardhat" && network.name !== "localhost") { | |
| console.log("[FORGE] Waiting 30s for Basescan indexing...") | |
| await new Promise(r => setTimeout(r, 30000)) | |
| try { | |
| await run("verify:verify", { | |
| address, | |
| constructorArguments: [architect, treasury], | |
| }) | |
| console.log("[FORGE] Verified on Basescan") | |
| } catch (e) { | |
| console.warn("[FORGE] Verification failed (may already be verified):", e.message) | |
| } | |
| } | |
| } | |
| main().catch(e => { console.error(e); process.exit(1) }) | |