87 lines
3.0 KiB
JavaScript
87 lines
3.0 KiB
JavaScript
import { ethers } from 'ethers';
|
|
import fs from 'fs';
|
|
|
|
// Same deployer account as dUSDT
|
|
const PRIVATE_KEY = '0x886ea4cffe76c386fecf3ff321ac9ae913737c46c17bc6ce2413752144668a2a';
|
|
const RPC_URL = 'https://evm.kava.io';
|
|
|
|
// Contract bytecode
|
|
const BYTECODE = '0x' + fs.readFileSync('build/EnergyUSDT.bin', 'utf8');
|
|
const ABI = JSON.parse(fs.readFileSync('build/EnergyUSDT.abi', 'utf8'));
|
|
|
|
async function deploy() {
|
|
// Connect to Kava mainnet
|
|
const provider = new ethers.JsonRpcProvider(RPC_URL);
|
|
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
|
|
|
|
console.log('Deployer address:', wallet.address);
|
|
|
|
// Check balance
|
|
const balance = await provider.getBalance(wallet.address);
|
|
console.log('Balance:', ethers.formatEther(balance), 'KAVA');
|
|
|
|
if (parseFloat(ethers.formatEther(balance)) < 0.01) {
|
|
console.error('Insufficient KAVA balance for deployment!');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Get network info
|
|
const network = await provider.getNetwork();
|
|
console.log('Chain ID:', network.chainId.toString());
|
|
|
|
// Create contract factory
|
|
const factory = new ethers.ContractFactory(ABI, BYTECODE, wallet);
|
|
|
|
console.log('Deploying EnergyUSDT (eUSDT) contract...');
|
|
|
|
// Deploy
|
|
const contract = await factory.deploy();
|
|
console.log('Transaction hash:', contract.deploymentTransaction().hash);
|
|
|
|
// Wait for deployment
|
|
console.log('Waiting for confirmation...');
|
|
await contract.waitForDeployment();
|
|
|
|
const contractAddress = await contract.getAddress();
|
|
console.log('Contract deployed at:', contractAddress);
|
|
|
|
// Verify deployment
|
|
console.log('\nVerifying deployment...');
|
|
const name = await contract.name();
|
|
const symbol = await contract.symbol();
|
|
const decimals = await contract.decimals();
|
|
const totalSupply = await contract.totalSupply();
|
|
const ownerBalance = await contract.balanceOf(wallet.address);
|
|
|
|
console.log('Token name:', name);
|
|
console.log('Token symbol:', symbol);
|
|
console.log('Decimals:', decimals.toString());
|
|
console.log('Total supply:', ethers.formatUnits(totalSupply, 6), 'eUSDT');
|
|
console.log('Owner balance:', ethers.formatUnits(ownerBalance, 6), 'eUSDT');
|
|
|
|
console.log('\n=== DEPLOYMENT COMPLETE ===');
|
|
console.log('Contract Address:', contractAddress);
|
|
console.log('Explorer:', `https://kavascan.com/address/${contractAddress}`);
|
|
|
|
// Save deployment info
|
|
const deploymentInfo = {
|
|
network: 'KAVA Mainnet',
|
|
chainId: 2222,
|
|
contractAddress,
|
|
deployer: wallet.address,
|
|
transactionHash: contract.deploymentTransaction().hash,
|
|
deployedAt: new Date().toISOString(),
|
|
token: {
|
|
name,
|
|
symbol,
|
|
decimals: decimals.toString(),
|
|
totalSupply: totalSupply.toString()
|
|
}
|
|
};
|
|
|
|
fs.writeFileSync('deployment.json', JSON.stringify(deploymentInfo, null, 2));
|
|
console.log('\nDeployment info saved to deployment.json');
|
|
}
|
|
|
|
deploy().catch(console.error);
|