Files
wtf-contract/scripts/deploy_vault.js
T

42 lines
1.8 KiB
JavaScript

const hre = require("hardhat");
const fs = require("fs");
const path = require("path");
async function main() {
const [deployer] = await hre.ethers.getSigners();
console.log("Deploying VaultFactory with account:", deployer.address);
const Factory = await hre.ethers.getContractFactory("main/src/vault/WTFVaultFactory.sol:WTFVaultFactory");
const factory = await Factory.deploy();
await factory.waitForDeployment();
const factoryAddress = await factory.getAddress();
console.log("WTFVaultFactory deployed at:", factoryAddress);
// Update robinhoodTestnet.json
const deployFile = path.join(__dirname, "../deployments/robinhoodTestnet.json");
const data = JSON.parse(fs.readFileSync(deployFile, "utf-8"));
data.contracts.vaultFactory = factoryAddress;
fs.writeFileSync(deployFile, JSON.stringify(data, null, 2));
// Sync to frontend packages/contracts
const frontendDeployFile = path.join(__dirname, "../../wtf-frontend/packages/contracts/src/robinhoodTestnet.json");
if (fs.existsSync(frontendDeployFile)) {
fs.writeFileSync(frontendDeployFile, JSON.stringify(data, null, 2));
}
// Export ABIs
const factoryArtifact = await hre.artifacts.readArtifact("main/src/vault/WTFVaultFactory.sol:WTFVaultFactory");
const vaultArtifact = await hre.artifacts.readArtifact("main/src/vault/WTFUserVault.sol:WTFUserVault");
const frontendAbiDir = path.join(__dirname, "../../wtf-frontend/packages/contracts/src/abis");
fs.writeFileSync(path.join(frontendAbiDir, "WTFVaultFactory.json"), JSON.stringify(factoryArtifact.abi, null, 2));
fs.writeFileSync(path.join(frontendAbiDir, "WTFUserVault.json"), JSON.stringify(vaultArtifact.abi, null, 2));
console.log("VaultFactory successfully deployed & synced!");
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});