diff --git a/scripts/4bytes-syncced.json b/scripts/4bytes-syncced.json index dfcff7fe3..ccb75c42d 100644 --- a/scripts/4bytes-syncced.json +++ b/scripts/4bytes-syncced.json @@ -1123,4 +1123,4 @@ "NoToken(uint8)", "WrongIndex(uint8)" ] -} \ No newline at end of file +} diff --git a/scripts/4bytes.ts b/scripts/4bytes.ts index d8bead0fd..e0bdc7442 100644 --- a/scripts/4bytes.ts +++ b/scripts/4bytes.ts @@ -1,98 +1,105 @@ import hre from 'hardhat' import fs from 'fs' -import fetch from "isomorphic-fetch" -import previousSync from "./4bytes-syncced.json" +import fetch from 'isomorphic-fetch' +import previousSync from './4bytes-syncced.json' /** * This script will sync any event and function we have with www.4byte.directory * The script saves all processed signatures with 4bytes-syncced.json as it succcesses * this way we avoid syncing the same signature twice. * */ -const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); +const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) async function main() { - const artifacts = await hre.artifacts.getAllFullyQualifiedNames(); - const artifactsWithAbi = (await Promise.all(artifacts.map(name => hre.artifacts.readArtifact(name)))).filter(artifact => artifact.abi.length !== 0); - const prevFunctions = new Set(previousSync.functions) - const prevEvents = new Set(previousSync.events) - const newErrorSignatures = new Set() - const newFunctionSignatures = new Set() - const newEventSignatures = new Set() - for (const { abi } of artifactsWithAbi) { - const abiInterface = new hre.ethers.utils.Interface(abi) - // Events and Errors seem to be the same thing for 4bytes - Object.keys(abiInterface.events).filter(e => !prevEvents.has(e)).forEach(e => newEventSignatures.add(e)) - Object.keys(abiInterface.errors).filter(e => !prevEvents.has(e)).forEach(e => newEventSignatures.add(e)) - - Object.keys(abiInterface.functions).filter(e => !prevFunctions.has(e)).forEach(e => newFunctionSignatures.add(e)) - } - const total = newErrorSignatures.size + newFunctionSignatures.size + newEventSignatures.size - if (total === 0) { - console.log("All up to date!") - return; - } + const artifacts = await hre.artifacts.getAllFullyQualifiedNames() + const artifactsWithAbi = ( + await Promise.all(artifacts.map((name) => hre.artifacts.readArtifact(name))) + ).filter((artifact) => artifact.abi.length !== 0) + const prevFunctions = new Set(previousSync.functions) + const prevEvents = new Set(previousSync.events) + const newErrorSignatures = new Set() + const newFunctionSignatures = new Set() + const newEventSignatures = new Set() + for (const { abi } of artifactsWithAbi) { + const abiInterface = new hre.ethers.utils.Interface(abi) + // Events and Errors seem to be the same thing for 4bytes + Object.keys(abiInterface.events) + .filter((e) => !prevEvents.has(e)) + .forEach((e) => newEventSignatures.add(e)) + Object.keys(abiInterface.errors) + .filter((e) => !prevEvents.has(e)) + .forEach((e) => newEventSignatures.add(e)) - console.log("Will sync " + total + " signatures with 4bytes...") + Object.keys(abiInterface.functions) + .filter((e) => !prevFunctions.has(e)) + .forEach((e) => newFunctionSignatures.add(e)) + } + const total = newErrorSignatures.size + newFunctionSignatures.size + newEventSignatures.size + if (total === 0) { + console.log('All up to date!') + return + } - const save = () => { - fs.writeFileSync("./scripts/4bytes-syncced.json", JSON.stringify(previousSync, null, 2)); - } - console.log("----- Synccing functions ----- ") - for (const sig of newFunctionSignatures) { - for (let i = 0; i < 3; i++) { - const resp = await fetch("https://www.4byte.directory/api/v1/signatures/", { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - "text_signature": sig, - }) - }) - if (resp.status === 400 || resp.status === 201) { - console.log("function", sig, resp.status, await resp.text()) - previousSync.functions.push(sig); - save() - break - } - if (i === 2) { - console.log("Failed to sync function", sig, "after 3 attempts") - } else { - await sleep(1000) - } - } + console.log('Will sync ' + total + ' signatures with 4bytes...') - } - console.log("----- Synccing events ----- ") - for (const sig of newEventSignatures) { - for (let i = 0; i < 3; i++) { - const resp = await fetch("https://www.4byte.directory/api/v1/event-signatures/", { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - body: JSON.stringify({ - "text_signature": sig, - }) - }) - if (resp.status === 400 || resp.status === 201) { - console.log("event", sig, resp.status, await resp.text()) - previousSync.events.push(sig); - save() - break - } + const save = () => { + fs.writeFileSync('./scripts/4bytes-syncced.json', JSON.stringify(previousSync, null, 2)) + } + console.log('----- Synccing functions ----- ') + for (const sig of newFunctionSignatures) { + for (let i = 0; i < 3; i++) { + const resp = await fetch('https://www.4byte.directory/api/v1/signatures/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + text_signature: sig, + }), + }) + if (resp.status === 400 || resp.status === 201) { + console.log('function', sig, resp.status, await resp.text()) + previousSync.functions.push(sig) + save() + break + } + if (i === 2) { + console.log('Failed to sync function', sig, 'after 3 attempts') + } else { + await sleep(1000) + } + } + } + console.log('----- Synccing events ----- ') + for (const sig of newEventSignatures) { + for (let i = 0; i < 3; i++) { + const resp = await fetch('https://www.4byte.directory/api/v1/event-signatures/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + text_signature: sig, + }), + }) + if (resp.status === 400 || resp.status === 201) { + console.log('event', sig, resp.status, await resp.text()) + previousSync.events.push(sig) + save() + break + } - if (i === 2) { - console.log("Failed to sync event", sig, "after 3 attempts") - } else { - await sleep(1000) - } - } - } - console.log("Done!") + if (i === 2) { + console.log('Failed to sync event', sig, 'after 3 attempts') + } else { + await sleep(1000) + } + } + } + console.log('Done!') } main().catch((error) => { - console.error(error) - process.exitCode = 1 + console.error(error) + process.exitCode = 1 }) diff --git a/scripts/ci_backtest_plugin.ts b/scripts/ci_backtest_plugin.ts index 568e487f2..f99c5ca63 100644 --- a/scripts/ci_backtest_plugin.ts +++ b/scripts/ci_backtest_plugin.ts @@ -3,7 +3,7 @@ import { ethers } from 'hardhat' import fs from 'fs' import { backTestPlugin } from './backtester/backtester' -const htmlReportTemplate = fs.readFileSync("./scripts/backtester/report-template.html", "utf8") +const htmlReportTemplate = fs.readFileSync('./scripts/backtester/report-template.html', 'utf8') export const main = async () => { const provider = new providers.JsonRpcProvider(process.env.MAINNET_RPC_URL) @@ -11,9 +11,9 @@ export const main = async () => { const currentBlock = await provider.getBlockNumber() const stride = parseInt(process.env.STRIDE ?? '300', 10) const numberOfSamples = parseInt(process.env.SAMPLES ?? '1000', 10) - const contractToTest = (await ethers.getContractFactory(process.env.CONTRACT_NAME!)).getDeployTransaction( - ...JSON.parse(process.env.CONSTRUCTOR_PARAMETERS!) - ) + const contractToTest = ( + await ethers.getContractFactory(process.env.CONTRACT_NAME!) + ).getDeployTransaction(...JSON.parse(process.env.CONSTRUCTOR_PARAMETERS!)) if (process.env.BACKTEST_RESULT_DIR != null) { console.log('Will save results to ', process.env.BACKTEST_RESULT_DIR) @@ -24,20 +24,16 @@ export const main = async () => { const start = currentBlock - stride * numberOfSamples const result = { - ...(await backTestPlugin( - [ - contractToTest.data! - ], - { + ...( + await backTestPlugin([contractToTest.data!], { start, stride, numberOfSamples, backtestServiceUrl: process.env.BACKTEST_SERVICE_URL!, - } - ))[0], - backtestName: process.env.CONTRACT_NAME! - }; - + }) + )[0], + backtestName: process.env.CONTRACT_NAME!, + } if (process.env.BACKTEST_RESULT_DIR != null) { console.log('Backtest done, saving results') @@ -47,11 +43,11 @@ export const main = async () => { JSON.stringify(result, null, 2) ) - const htmlReport = htmlReportTemplate.replace("const data = []", "const data = " + JSON.stringify([result], null, 2)) - fs.writeFileSync( - `${process.env.BACKTEST_RESULT_DIR}/report.html`, - htmlReport + const htmlReport = htmlReportTemplate.replace( + 'const data = []', + 'const data = ' + JSON.stringify([result], null, 2) ) + fs.writeFileSync(`${process.env.BACKTEST_RESULT_DIR}/report.html`, htmlReport) } else { console.log(JSON.stringify(result, null, 2)) } diff --git a/scripts/deployment/phase1-common/2_deploy_implementations.ts b/scripts/deployment/phase1-common/2_deploy_implementations.ts index eff5eac9f..b8a5098d6 100644 --- a/scripts/deployment/phase1-common/2_deploy_implementations.ts +++ b/scripts/deployment/phase1-common/2_deploy_implementations.ts @@ -103,17 +103,17 @@ async function main() { const MainImplFactory = await ethers.getContractFactory('MainP1') let mainImplAddr = '' if (!upgrade) { - mainImplAddr = await upgrades.deployImplementation(MainImplFactory, { + mainImplAddr = (await upgrades.deployImplementation(MainImplFactory, { kind: 'uups', - }) as string + })) as string } else { - mainImplAddr = await upgrades.prepareUpgrade( + mainImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.main, MainImplFactory, { kind: 'uups', } - ) as string + )) as string } mainImpl = await ethers.getContractAt('MainP1', mainImplAddr) @@ -156,17 +156,17 @@ async function main() { const AssetRegImplFactory = await ethers.getContractFactory('AssetRegistryP1') let assetRegImplAddr = '' if (!upgrade) { - assetRegImplAddr = await upgrades.deployImplementation(AssetRegImplFactory, { + assetRegImplAddr = (await upgrades.deployImplementation(AssetRegImplFactory, { kind: 'uups', - }) as string + })) as string } else { - assetRegImplAddr = await upgrades.prepareUpgrade( + assetRegImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.assetRegistry, AssetRegImplFactory, { kind: 'uups', } - ) as string + )) as string } assetRegImpl = await ethers.getContractAt('AssetRegistryP1', assetRegImplAddr) @@ -188,19 +188,19 @@ async function main() { }) let backingMgrImplAddr = '' if (!upgrade) { - backingMgrImplAddr = await upgrades.deployImplementation(BackingMgrImplFactory, { + backingMgrImplAddr = (await upgrades.deployImplementation(BackingMgrImplFactory, { kind: 'uups', unsafeAllow: ['external-library-linking', 'delegatecall'], - }) as string + })) as string } else { - backingMgrImplAddr = await upgrades.prepareUpgrade( + backingMgrImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.backingManager, BackingMgrImplFactory, { kind: 'uups', unsafeAllow: ['external-library-linking', 'delegatecall'], } - ) as string + )) as string } backingMgrImpl = ( @@ -222,19 +222,19 @@ async function main() { }) let bskHndlrImplAddr = '' if (!upgrade) { - bskHndlrImplAddr = await upgrades.deployImplementation(BskHandlerImplFactory, { + bskHndlrImplAddr = (await upgrades.deployImplementation(BskHandlerImplFactory, { kind: 'uups', unsafeAllow: ['external-library-linking'], - }) as string + })) as string } else { - bskHndlrImplAddr = await upgrades.prepareUpgrade( + bskHndlrImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.basketHandler, BskHandlerImplFactory, { kind: 'uups', unsafeAllow: ['external-library-linking'], } - ) as string + )) as string } bskHndlrImpl = await ethers.getContractAt('BasketHandlerP1', bskHndlrImplAddr) @@ -252,17 +252,17 @@ async function main() { const BrokerImplFactory = await ethers.getContractFactory('BrokerP1') let brokerImplAddr = '' if (!upgrade) { - brokerImplAddr = await upgrades.deployImplementation(BrokerImplFactory, { + brokerImplAddr = (await upgrades.deployImplementation(BrokerImplFactory, { kind: 'uups', - }) as string + })) as string } else { - brokerImplAddr = await upgrades.prepareUpgrade( + brokerImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.broker, BrokerImplFactory, { kind: 'uups', } - ) as string + )) as string } brokerImpl = await ethers.getContractAt('BrokerP1', brokerImplAddr) @@ -280,17 +280,17 @@ async function main() { const DistribImplFactory = await ethers.getContractFactory('DistributorP1') let distribImplAddr = '' if (!upgrade) { - distribImplAddr = await upgrades.deployImplementation(DistribImplFactory, { + distribImplAddr = (await upgrades.deployImplementation(DistribImplFactory, { kind: 'uups', - }) as string + })) as string } else { - distribImplAddr = await upgrades.prepareUpgrade( + distribImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.distributor, DistribImplFactory, { kind: 'uups', } - ) as string + )) as string } distribImpl = await ethers.getContractAt('DistributorP1', distribImplAddr) @@ -308,17 +308,17 @@ async function main() { const FurnaceImplFactory = await ethers.getContractFactory('FurnaceP1') let furnaceImplAddr = '' if (!upgrade) { - furnaceImplAddr = await upgrades.deployImplementation(FurnaceImplFactory, { + furnaceImplAddr = (await upgrades.deployImplementation(FurnaceImplFactory, { kind: 'uups', - }) as string + })) as string } else { - furnaceImplAddr = await upgrades.prepareUpgrade( + furnaceImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.furnace, FurnaceImplFactory, { kind: 'uups', } - ) as string + )) as string } furnaceImpl = await ethers.getContractAt('FurnaceP1', furnaceImplAddr) @@ -338,21 +338,21 @@ async function main() { let rsrTraderImplAddr = '' let rTokenTraderImplAddr = '' if (!upgrade) { - rsrTraderImplAddr = await upgrades.deployImplementation(RevTraderImplFactory, { + rsrTraderImplAddr = (await upgrades.deployImplementation(RevTraderImplFactory, { kind: 'uups', unsafeAllow: ['delegatecall'], - }) as string + })) as string rTokenTraderImplAddr = rsrTraderImplAddr // Both equal in initial deployment } else { // RSR Trader - rsrTraderImplAddr = await upgrades.prepareUpgrade( + rsrTraderImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.rsrTrader, RevTraderImplFactory, { kind: 'uups', unsafeAllow: ['delegatecall'], } - ) as string + )) as string // If Traders have different implementations, upgrade separately if ( @@ -360,14 +360,14 @@ async function main() { prevDeployments.implementations.components.rTokenTrader ) { // RToken Trader - rTokenTraderImplAddr = await upgrades.prepareUpgrade( + rTokenTraderImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.rTokenTrader, RevTraderImplFactory, { kind: 'uups', unsafeAllow: ['delegatecall'], } - ) as string + )) as string } else { // Both use the same implementation rTokenTraderImplAddr = rsrTraderImplAddr @@ -400,17 +400,17 @@ async function main() { const RTokenImplFactory = await ethers.getContractFactory('RTokenP1') let rTokenImplAddr = '' if (!upgrade) { - rTokenImplAddr = await upgrades.deployImplementation(RTokenImplFactory, { + rTokenImplAddr = (await upgrades.deployImplementation(RTokenImplFactory, { kind: 'uups', - }) as string + })) as string } else { - rTokenImplAddr = await upgrades.prepareUpgrade( + rTokenImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.rToken, RTokenImplFactory, { kind: 'uups', } - ) as string + )) as string } rTokenImpl = await ethers.getContractAt('RTokenP1', rTokenImplAddr) @@ -429,17 +429,17 @@ async function main() { const StRSRImplFactory = await ethers.getContractFactory('StRSRP1Votes') let stRSRImplAddr = '' if (!upgrade) { - stRSRImplAddr = await upgrades.deployImplementation(StRSRImplFactory, { + stRSRImplAddr = (await upgrades.deployImplementation(StRSRImplFactory, { kind: 'uups', - }) as string + })) as string } else { - stRSRImplAddr = await upgrades.prepareUpgrade( + stRSRImplAddr = (await upgrades.prepareUpgrade( prevDeployments.implementations.components.stRSR, StRSRImplFactory, { kind: 'uups', } - ) as string + )) as string } stRSRImpl = await ethers.getContractAt('StRSRP1Votes', stRSRImplAddr) diff --git a/scripts/deployment/utils.ts b/scripts/deployment/utils.ts index 8b39f6a2e..3b847da0b 100644 --- a/scripts/deployment/utils.ts +++ b/scripts/deployment/utils.ts @@ -110,14 +110,14 @@ export async function verifyContract( await tenderly.verify({ name: contract, address: address!, - libraries - }); + libraries, + }) } else { // Sleep 0.5s to not overwhelm API await new Promise((r) => setTimeout(r, 500)) - + const ETHERSCAN_API_KEY = useEnv('ETHERSCAN_API_KEY') - + // Check to see if already verified const url = `${getEtherscanBaseURL( chainId, @@ -127,7 +127,7 @@ export async function verifyContract( if (status != 200 || data['status'] != '1') { throw new Error("Can't communicate with Etherscan API") } - + // Only run verification script if not verified if (data['result'][0]['SourceCode']?.length > 0) { console.log('Already verified. Continuing') diff --git a/scripts/verification/1_verify_implementations.ts b/scripts/verification/1_verify_implementations.ts index 8d2f853f9..c135a644c 100644 --- a/scripts/verification/1_verify_implementations.ts +++ b/scripts/verification/1_verify_implementations.ts @@ -65,16 +65,16 @@ async function main() { desc: 'BackingManager', contract: 'contracts/p1/BackingManager.sol:BackingManagerP1', libraries: { - 'RecollateralizationLibP1': deployments.tradingLib, - } + RecollateralizationLibP1: deployments.tradingLib, + }, }, { name: 'basketHandler', desc: 'BasketHandler', contract: 'contracts/p1/BasketHandler.sol:BasketHandlerP1', libraries: { - 'BasketLibP1': deployments.basketLib, - } + BasketLibP1: deployments.basketLib, + }, }, { name: 'broker', diff --git a/scripts/verification/5_verify_facadeWrite.ts b/scripts/verification/5_verify_facadeWrite.ts index e6d569ac4..76411028d 100644 --- a/scripts/verification/5_verify_facadeWrite.ts +++ b/scripts/verification/5_verify_facadeWrite.ts @@ -34,7 +34,7 @@ async function main() { deployments.facadeWrite, [deployments.deployer], 'contracts/facade/FacadeWrite.sol:FacadeWrite', - { FacadeWriteLib: deployments.facadeWriteLib} + { FacadeWriteLib: deployments.facadeWriteLib } ) } diff --git a/scripts/verification/6_verify_collateral.ts b/scripts/verification/6_verify_collateral.ts index 347c5fd2a..a5377340a 100644 --- a/scripts/verification/6_verify_collateral.ts +++ b/scripts/verification/6_verify_collateral.ts @@ -127,7 +127,7 @@ async function main() { defaultThreshold: fp('0.0125').toString(), // 1.25% delayUntilDefault: bn('86400').toString(), // 24h }, - revenueHiding.toString() + revenueHiding.toString(), ], 'contracts/plugins/assets/compoundv2/CTokenFiatCollateral.sol:CTokenFiatCollateral' ) @@ -154,7 +154,7 @@ async function main() { }, networkConfig[chainId].chainlinkFeeds.BTC, oracleTimeout(chainId, '3600').toString(), - revenueHiding.toString() + revenueHiding.toString(), ], 'contracts/plugins/assets/compoundv2/CTokenNonFiatCollateral.sol:CTokenNonFiatCollateral' ) @@ -175,7 +175,7 @@ async function main() { delayUntilDefault: '0', }, revenueHiding.toString(), - '18' + '18', ], 'contracts/plugins/assets/compoundv2/CTokenSelfReferentialCollateral.sol:CTokenSelfReferentialCollateral' ) diff --git a/scripts/verification/collateral-plugins/verify_convex_stable.ts b/scripts/verification/collateral-plugins/verify_convex_stable.ts index 4a1a4b7bb..b26f111b3 100644 --- a/scripts/verification/collateral-plugins/verify_convex_stable.ts +++ b/scripts/verification/collateral-plugins/verify_convex_stable.ts @@ -62,7 +62,7 @@ async function main() { await w3PoolCollateral.erc20(), [], 'contracts/plugins/assets/convex/vendor/ConvexStakingWrapper.sol:ConvexStakingWrapper', - {CvxMining: coreDeployments.cvxMiningLib} + { CvxMining: coreDeployments.cvxMiningLib } ) /******** Verify CvxMining Lib **************************/ diff --git a/tasks/testing/upgrade-checker-utils/upgrades/2_1_0.ts b/tasks/testing/upgrade-checker-utils/upgrades/2_1_0.ts index b0e60f566..c5398e574 100644 --- a/tasks/testing/upgrade-checker-utils/upgrades/2_1_0.ts +++ b/tasks/testing/upgrade-checker-utils/upgrades/2_1_0.ts @@ -168,7 +168,7 @@ export default async ( await whileImpersonating(hre, whales[buyTokenAddress.toLowerCase()], async (whale) => { const sellToken = await hre.ethers.getContractAt('ERC20Mock', buyTokenAddress) let repeat = true - while(repeat) { + while (repeat) { try { await sellToken.connect(whale).approve(gnosis.address, 0) await sellToken.connect(whale).approve(gnosis.address, buyAmount)