1
0
forked from mico/idle_moloch
idle_moloch/lib/Baal/scripts/deployHOFactory.js
2024-11-01 11:55:27 +01:00

129 lines
3.8 KiB
JavaScript

const { ethers, upgrades } = require('hardhat');
const { deployments } = require('../src/addresses/deployed');
const _shamans = {
4: [''],
1: [''],
137: [''],
42: [''],
100: [''],
}
// same default for all networks, but different sometimes
// https://github.com/gnosis/zodiac/blob/master/src/factory/constants.ts#L20
// https://github.com/safe-global/safe-deployments/tree/main/src/assets
// moduleProxyFactory https://github.com/gnosis/zodiac/blob/master/src/factory/constants.ts#L21
const _addresses = {
gnosisSingleton: "0xd9db270c1b5e3bd161e8c8503c55ceabee709552",
gnosisFallbackLibrary: "0xf48f2b2d2a534e402487b3ee7c18c33aec0fe5e4",
gnosisMultisendLibrary: "0xa238cbeb142c10ef7ad8442c6d1f9e89e07e7761",
poster: "0x000000000000cd17345801aa8147b8D3950260FF",
gnosisSafeProxyFactory: "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2",
moduleProxyFactory: "0x00000000000DC7F163742Eb4aBEf650037b1f588",
DAO: "0x4A9a27d614a74Ee5524909cA27bdBcBB7eD3b315" // Change to Daohaus protocol zodiac baal avatar
}
// optimism
// Safe singleton: 0x69f4D1788e39c87893C980c06EdF4b7f686e2938
// fall back: 0x017062a1dE2FE6b99BE3d9d37841FeD19F573804
// multisend: 0x998739BFdAAdde7C933B942a68053933098f9EDa
// GnosisSafeProxyFactory: 0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC
// DAO: "0x1aCFF11474B9C6D15966Da7A08eD23438CDE23D4"
const _shares = ['1'];
const _loot = ['1'];
const _minVoting = 60;
const _maxVoting = 600;
const _proposalOffering = 1;
const _name = "TestBaal";
const _symbol = "BAALTO";
const networkName = {
4: 'Rinkeby',
5: 'goerli',
1: 'mainnet',
137: 'polygon',
80001: 'polygonMumbai',
42: 'kovan',
100: 'gnosisChain',
42161: 'arbitrumOne',
10: 'optimisticEthereum'
};
const networkCurrency = {
4: 'ETH',
5: 'ETH',
1: 'ETH',
137: 'matic',
80001: 'matic',
42: 'ETH',
100: 'xDai',
42161: 'ETH',
10: 'ETH'
};
async function main() {
const [deployer] = await ethers.getSigners();
const address = await deployer.getAddress();
const { chainId } = await deployer.provider.getNetwork();
console.log('Summoning Baal factories on network:', networkName[chainId]);
console.log('Account address:', address);
console.log(
'Account balance:',
ethers.utils.formatEther(await deployer.provider.getBalance(address)),
networkCurrency[chainId]
);
// const tx = await deployer.sendTransaction({
// to:_addresses.DAO,
// value: ethers.utils.parseEther("0.3")
// }
// )
// console.log('return funds', tx);
console.log('start deploy');
const baalSummonerAddress = deployments[0]["v103"][networkName[chainId]].addresses.factory;
console.log('Summoner Address:', baalSummonerAddress);
const BaalAdvTokenSummoner = await ethers.getContractFactory('BaalAdvTokenSummoner')
// deploy proxy upgrades
baalSummoner = await upgrades.deployProxy(BaalAdvTokenSummoner);
await baalSummoner.deployed();
console.log('Factory Contract Address:', baalSummoner.address);
console.log('imp:', await upgrades.erc1967.getImplementationAddress(baalSummoner.address));
// baalSummoner = BaalAdvTokenSummoner.attach("0x8a4A9E36106Ee290811B89e06e2faFE913507965");
// set addresses of templates and libraries
await baalSummoner.setSummonerAddr(baalSummonerAddress);
// transfer ownership to DAO
if(_addresses.DAO=="0x0000000000000000000000000000000000000000"){
console.log("You need to transfer ownership of summoner");
} else {
console.log("transffering ownership too: ", _addresses.DAO);
await baalSummoner.transferOwnership(_addresses.DAO);
}
const txHash = baalSummoner.deployTransaction.hash;
const receipt = await deployer.provider.getTransactionReceipt(txHash);
console.log('Transaction Hash:', txHash);
console.log('Block Number:', receipt.blockNumber);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});