MorphGuard / ethereum /deploy.js
juanquy's picture
Initial clean commit of modular MorphGuard
2978bba
Raw
History Blame Contribute Delete
2.65 kB
// deploy.js - Script to deploy the MorphGuard Verification smart contract
const Web3 = require('web3');
const fs = require('fs');
const path = require('path');
// Connect to local Ethereum node
const web3 = new Web3('http://localhost:8545');
async function deploy() {
try {
console.log('Connected to Ethereum node:', await web3.eth.getNodeInfo());
// Get accounts
const accounts = await web3.eth.getAccounts();
const deployer = accounts[0]; // Use the first account for deployment
console.log('Deploying from account:', deployer);
console.log('Account balance:', web3.utils.fromWei(await web3.eth.getBalance(deployer), 'ether'), 'ETH');
// Read contract source and compile
const contractPath = path.join(__dirname, 'SmartContract.sol');
const contractSource = fs.readFileSync(contractPath, 'utf8');
// For simplicity, in a real scenario you would use solc for compilation
// Here we'll assume you've already compiled the contract using Remix or Truffle
// and have the ABI and bytecode
// Read compiled contract data
const compiledContract = {
abi: JSON.parse(fs.readFileSync(path.join(__dirname, 'abi.json'), 'utf8')),
bytecode: fs.readFileSync(path.join(__dirname, 'bytecode.bin'), 'utf8')
};
// Create contract instance
const Contract = new web3.eth.Contract(compiledContract.abi);
// Deploy contract
console.log('Deploying MorphGuardVerification contract...');
const deployTx = Contract.deploy({
data: compiledContract.bytecode
});
// Send the transaction
const gas = await deployTx.estimateGas();
const deployedContract = await deployTx.send({
from: deployer,
gas
});
console.log('Contract deployed at address:', deployedContract.options.address);
// Save the contract address to a file
fs.writeFileSync(
path.join(__dirname, 'contract-address.txt'),
deployedContract.options.address
);
// Create environment variable settings file
const envContent = `
# MorphGuard Ethereum settings
ETH_ENDPOINT=http://localhost:8545
ETH_CONTRACT_ADDRESS=${deployedContract.options.address}
ETH_WALLET_ADDRESS=${deployer}
# Warning: Store your private key securely in production!
# ETH_PRIVATE_KEY=your_private_key_here
`.trim();
fs.writeFileSync(path.join(__dirname, '..', '.env.ethereum'), envContent);
console.log('Deployment completed successfully!');
console.log('Environment variables saved to .env.ethereum');
} catch (error) {
console.error('Deployment failed:', error);
}
}
deploy();