From 609feb4179cd9df3f12554eb4b51646bd5cb7d4a Mon Sep 17 00:00:00 2001 From: Ed Zynda Date: Sat, 11 Jan 2025 15:14:09 +0300 Subject: [PATCH] update healthcheck and fix some logs (#907) --- deployments/_deployments_log_file.json | 14 +++++++ deployments/zksync.json | 4 ++ script/deploy/healthCheck.ts | 55 ++++++++++++++++++++++---- script/tasks/updateERC20Proxy.sh | 2 - 4 files changed, 66 insertions(+), 9 deletions(-) diff --git a/deployments/_deployments_log_file.json b/deployments/_deployments_log_file.json index 168612b52..a3d183b50 100644 --- a/deployments/_deployments_log_file.json +++ b/deployments/_deployments_log_file.json @@ -3128,6 +3128,20 @@ } ] } + }, + "zksync": { + "production": { + "1.0.0": [ + { + "ADDRESS": "0xeADAc9502b083625bF76Ce606Bde7d94AD8BD7aB", + "OPTIMIZER_RUNS": "200", + "TIMESTAMP": "2024-12-17T10:31:56.698Z", + "CONSTRUCTOR_ARGS": "0x", + "SALT": "", + "VERIFIED": true + } + ] + } } }, "AccessManagerFacet": { diff --git a/deployments/zksync.json b/deployments/zksync.json index 886756b31..3b4b37d13 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -26,5 +26,9 @@ "GasZipFacet": "0x313c27Aad40c7e0A0b923b539F05617D8114566D", "GasZipPeriphery": "0x4000f76450d9d40558fd60F66863F583B7A5BCCb", "Permit2Proxy": "0x6275f6631c955DC5dA9fBe8Dc7f24a3A5919443A", + "GenericSwapFacet": "0x587B5B33D935F06a41D9fb7197C36c4411D05a96", + "WithdrawFacet": "0x2044596daE662582178C37977826032513B32327", + "DexManagerFacet": "0xeADAc9502b083625bF76Ce606Bde7d94AD8BD7aB", + "StandardizedCallFacet": "0xF7366b604a5529e2903FAEB989DCF3395C8F23CF", "RelayFacet": "0xC020779Bd2618584d77a47Ad54A8C5305b83A4d6" } \ No newline at end of file diff --git a/script/deploy/healthCheck.ts b/script/deploy/healthCheck.ts index 77dbd1c7d..7bbdc6bf4 100644 --- a/script/deploy/healthCheck.ts +++ b/script/deploy/healthCheck.ts @@ -176,12 +176,19 @@ const main = defineCommand({ consola.box('Checking facets registered in diamond...') $.quiet = true - const facetsResult = - await $`${louperCmd} inspect diamond -a ${diamondAddress} -n ${network} --json` - - const registeredFacets = JSON.parse(facetsResult.stdout).facets.map( - (f: { name: string }) => f.name - ) + let registeredFacets: string[] = [] + try { + const facetsResult = + await $`${louperCmd} inspect diamond -a ${diamondAddress} -n ${network} --json` + registeredFacets = JSON.parse(facetsResult.stdout).facets.map( + (f: { name: string }) => f.name + ) + } catch (error) { + consola.warn( + 'Unable to parse louper output - skipping facet registration check' + ) + consola.debug('Error:', error) + } for (const facet of [...coreFacets, ...nonCoreFacets]) { if (!registeredFacets.includes(facet)) { @@ -210,6 +217,29 @@ const main = defineCommand({ consola.success(`Periphery contract ${contract} deployed`) } + const deployerWallet = getAddress(globalConfig.deployerWallet) + + // Check Executor authorization in ERC20Proxy + const erc20Proxy = getContract({ + address: deployedContracts['ERC20Proxy'], + abi: parseAbi([ + 'function authorizedCallers(address) external view returns (bool)', + 'function owner() external view returns (address)', + ]), + client: publicClient, + }) + + const executorAddress = deployedContracts['Executor'] + const isExecutorAuthorized = await erc20Proxy.read.authorizedCallers([ + executorAddress, + ]) + + if (!isExecutorAuthorized) { + logError('Executor is not authorized in ERC20Proxy') + } else { + consola.success('Executor is authorized in ERC20Proxy') + } + // ╭─────────────────────────────────────────────────────────╮ // │ Check registered periphery contracts │ // ╰─────────────────────────────────────────────────────────╯ @@ -335,6 +365,18 @@ const main = defineCommand({ const rebalanceWallet = getAddress(globalConfig.lifuelRebalanceWallet) const refundWallet = getAddress(globalConfig.refundWallet) + // Check ERC20Proxy ownership + const erc20ProxyOwner = await erc20Proxy.read.owner() + if (getAddress(erc20ProxyOwner) !== getAddress(deployerWallet)) { + logError( + `ERC20Proxy owner is ${getAddress( + erc20ProxyOwner + )}, expected ${getAddress(deployerWallet)}` + ) + } else { + consola.success('ERC20Proxy owner is correct') + } + // Check that Diamond is owned by SAFE if (globalConfig.safeAddresses[network.toLowerCase()]) { const safeAddress = globalConfig.safeAddresses[network.toLowerCase()] @@ -410,7 +452,6 @@ const main = defineCommand({ }) // Deployer wallet - const deployerWallet = getAddress(globalConfig.deployerWallet) const approveSigs = globalConfig.approvedSigsForDeployerWallet as { sig: Hex name: string diff --git a/script/tasks/updateERC20Proxy.sh b/script/tasks/updateERC20Proxy.sh index 96b92a0a9..1de593f13 100755 --- a/script/tasks/updateERC20Proxy.sh +++ b/script/tasks/updateERC20Proxy.sh @@ -8,8 +8,6 @@ updateERC20Proxy() { source .env - echo "here" - read if [[ -z "$PRODUCTION" ]]; then FILE_SUFFIX="staging." fi