From c65436a7bdd8757076dcd0ddc105fc06fa9f89c7 Mon Sep 17 00:00:00 2001 From: Harsh Pandey Date: Fri, 30 Aug 2024 23:49:02 +0530 Subject: [PATCH] chore: some cleanup --- generator/templates/proposal.template.ts | 2 +- generator/templates/script.template.ts | 120 ------------------ generator/templates/zksync.script.template.ts | 97 -------------- 3 files changed, 1 insertion(+), 218 deletions(-) delete mode 100644 generator/templates/script.template.ts delete mode 100644 generator/templates/zksync.script.template.ts diff --git a/generator/templates/proposal.template.ts b/generator/templates/proposal.template.ts index 7b674c9..03b66fe 100644 --- a/generator/templates/proposal.template.ts +++ b/generator/templates/proposal.template.ts @@ -1,4 +1,4 @@ -import {generateContractName, getPoolChain, getVersion, generateFolderName, getChainAlias} from '../common'; +import {generateContractName, getPoolChain, generateFolderName, getChainAlias} from '../common'; import {Options, PoolConfig, PoolIdentifier} from '../types'; import {prefixWithImports} from '../utils/importsResolver'; import {prefixWithPragma} from '../utils/constants'; diff --git a/generator/templates/script.template.ts b/generator/templates/script.template.ts deleted file mode 100644 index 600e50c..0000000 --- a/generator/templates/script.template.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { - CHAIN_TO_CHAIN_ID, - generateContractName, - generateFolderName, - getChainAlias, - getPoolChain, - getVotingPortal, -} from '../common'; -import {Options} from '../types'; -import {prefixWithImports} from '../utils/importsResolver'; -import {prefixWithPragma} from '../utils/constants'; - -export function generateScript(options: Options) { - const folderName = generateFolderName(options); - const fileName = generateContractName(options); - const votingPortal = getVotingPortal(options.votingNetwork); - let template = ''; - const chains = [...new Set(options.pools.map((pool) => getPoolChain(pool)!))]; - - // generate imports - template += `import {${['Ethereum', ...chains.filter((c) => c !== 'Ethereum' && c !== 'ZkSync')] - .map((chain) => `${chain}Script`) - .join(', ')}} from 'solidity-utils/contracts/utils/ScriptUtils.sol';\n`; - template += options.pools - .filter((c) => c !== 'AaveV3ZkSync') - .map((pool) => { - const name = generateContractName(options, pool); - return `import {${name}} from './${name}.sol';`; - }) - .join('\n'); - template += '\n\n'; - - const poolsToChainsMap = options.pools.reduce((acc, pool) => { - const chain = getPoolChain(pool); - const contractName = generateContractName(options, pool); - if (!acc[chain]) acc[chain] = []; - acc[chain].push({contractName, pool}); - return acc; - }, {}); - - // generate chain scripts - template += Object.keys(poolsToChainsMap) - .filter((c) => c !== 'ZkSync') - .map((chain) => { - return `/** - * @dev Deploy ${chain} - * deploy-command: make deploy-ledger contract=src/${folderName}/${fileName}.s.sol:Deploy${chain} chain=${getChainAlias( - chain, - )} - * verify-command: FOUNDRY_PROFILE=${getChainAlias(chain)} npx catapulta-verify -b broadcast/${fileName}.s.sol/${ - CHAIN_TO_CHAIN_ID[chain] - }/run-latest.json - */ - contract Deploy${chain} is ${chain}Script { - function run() external broadcast { - // deploy payloads - ${poolsToChainsMap[chain] - .map( - ({contractName, pool}, ix) => - `address payload${ix} = GovV3Helpers.deployDeterministic(type(${contractName}).creationCode);`, - ) - .join('\n')} - - // compose action - IPayloadsControllerCore.ExecutionAction[] memory actions = new IPayloadsControllerCore.ExecutionAction[](${ - poolsToChainsMap[chain].length - }); - ${poolsToChainsMap[chain] - .map( - ({contractName, pool}, ix) => `actions[${ix}] = GovV3Helpers.buildAction(payload${ix});`, - ) - .join('\n')} - - // register action at payloadsController - GovV3Helpers.createPayload(actions); - } - }`; - }) - .join('\n\n'); - template += '\n\n'; - - // generate proposal creation script - template += `/** - * @dev Create Proposal - * command: make deploy-ledger contract=src/${folderName}/${fileName}.s.sol:CreateProposal chain=mainnet - */ -contract CreateProposal is EthereumScript { - function run() external { - // create payloads - PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](${ - Object.keys(poolsToChainsMap).length - }); - - // compose actions for validation - ${Object.keys(poolsToChainsMap) - .map((chain, ix) => { - let template = `IPayloadsControllerCore.ExecutionAction[] memory actions${chain} = new IPayloadsControllerCore.ExecutionAction[](${poolsToChainsMap[chain].length});\n`; - template += poolsToChainsMap[chain] - .map(({contractName, pool}, ix) => { - return pool == 'AaveV3ZkSync' - ? `actions${chain}[${ix}] = GovV3Helpers.buildActionZkSync(vm, '${contractName}');` - : `actions${chain}[${ix}] = GovV3Helpers.buildAction(type(${contractName}).creationCode);`; - }) - .join('\n'); - template += `payloads[${ix}] = GovV3Helpers.build${ - chain == 'Ethereum' ? 'Mainnet' : chain - }Payload(vm, actions${chain});\n`; - return template; - }) - .join('\n')} - - // create proposal - vm.startBroadcast(); - GovV3Helpers.createProposal(vm, payloads, ${votingPortal}, GovV3Helpers.ipfsHashFile(vm, 'src/${folderName}/${ - options.shortName - }.md')); - } -}`; - return prefixWithPragma(prefixWithImports(template)); -} diff --git a/generator/templates/zksync.script.template.ts b/generator/templates/zksync.script.template.ts deleted file mode 100644 index a6bb2a5..0000000 --- a/generator/templates/zksync.script.template.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - CHAIN_TO_CHAIN_ID, - generateContractName, - generateFolderName, - getChainAlias, - getPoolChain, -} from '../common'; -import {Options} from '../types'; -import {prefixWithImports} from '../utils/importsResolver'; -import {prefixWithPragma} from '../utils/constants'; - -export function generateZkSyncScript(options: Options) { - const folderName = generateFolderName(options); - const fileName = generateContractName(options); - const zkSyncPools = options.pools.filter((c) => c == 'AaveV3ZkSync'); - - const chain = 'ZkSync'; - let template = ''; - - // generate imports - template += `import {ZkSyncScript} from 'aave-helpers/src/ScriptUtils.sol';\n`; - - template += zkSyncPools - .map((pool) => { - const name = generateContractName(options, pool); - return `import {${name}} from './${name}.sol';`; - }) - .join('\n'); - template += '\n\n'; - - const poolsToChainsMap = zkSyncPools.reduce((acc, pool) => { - const chain = getPoolChain(pool); - const contractName = generateContractName(options, pool); - if (!acc[chain]) acc[chain] = []; - acc[chain].push({contractName, pool}); - return acc; - }, {}); - - // generate zksync wrapper contract for deploying payloads - template += ` - ${poolsToChainsMap[chain] - .map( - ({contractName}) => - ` - // @dev wrapper factory contract for deploying the payload - contract Deploy_${contractName} { - address public immutable PAYLOAD; - - constructor() { - PAYLOAD = GovV3Helpers.deployDeterministicZkSync( - type(${contractName}).creationCode - ); - } - }`, - ) - .join('\n')} - `; - template += '\n\n'; - - // generate chain scripts - template += `/** - * @dev Deploy ${chain} - * deploy-command: make deploy-ledger contract=zksync/src/${folderName}/${fileName}.s.sol:Deploy${chain} chain=${getChainAlias( - chain, - )} - * verify-command: FOUNDRY_PROFILE=${getChainAlias(chain)} npx catapulta-verify -b broadcast/${fileName}.s.sol/${ - CHAIN_TO_CHAIN_ID[chain] - }/run-latest.json - */ - contract Deploy${chain} is ${chain}Script { - function run() external broadcast { - // deploy payloads - ${poolsToChainsMap[chain] - .map( - ({contractName, pool}, ix) => - `address payload${ix} = new Deploy_${contractName}().PAYLOAD();`, - ) - .join('\n')} - - // compose action - IPayloadsControllerCore.ExecutionAction[] memory actions = new IPayloadsControllerCore.ExecutionAction[](${ - poolsToChainsMap[chain].length - }); - ${poolsToChainsMap[chain] - .map( - ({contractName, pool}, ix) => `actions[${ix}] = GovV3Helpers.buildAction(payload${ix});`, - ) - .join('\n')} - - // register action at payloadsController - GovV3Helpers.createPayload(actions); - } - }`; - template += '\n\n'; - - return prefixWithPragma(prefixWithImports(template)); -}