contracts/scripts/new-dao.js

40 lines
1.4 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const ethers = require('ethers');
const fileInject = require('./helpers/file_inject.js');
const KreditsKit = require('../lib/kreditskit');
const addressesPath = path.join(__dirname, '..', 'lib/addresses');
module.exports = async function(callback) {
const provider = new ethers.providers.Web3Provider(web3.currentProvider);
const signer = provider.getSigner();
const network = await provider.getNetwork();
const networkId = network.chainId;
console.log(`Deploying to networkId: ${networkId}`)
let kitAddresseFile = path.join(addressesPath, 'KreditsKit.json');
let kitAddresses = JSON.parse(fs.readFileSync(kitAddresseFile));
let kreditsKitAddress = process.env.KREDITS_KIT || kitAddresses[networkId]
if (!kreditsKitAddress) {
callback(new Error("KreditsKit address not found in environment variable KREDITS_KIT"))
}
console.log(`Using KreditsKit at: ${kreditsKitAddress}`);
let kit = await new KreditsKit(provider, signer).init()
// TODO: get rid of the hard coded gas limit
kit.newDAO({ gasLimit: 10000000 }).then(result => {
console.log(result);
fileInject(path.join(addressesPath, 'dao.json'), networkId, result.daoAddress)
console.log(`\n\nCreated new DAO at: ${result.daoAddress}`)
callback();
}).catch((err) => {
console.log('failed to create a new DAO')
callback(err)
})
}