diff --git a/.env.example b/.env.example index 7494bfa935..97d97a8f04 100644 --- a/.env.example +++ b/.env.example @@ -19,10 +19,8 @@ ARBITRUM_SEPOLIA_RPC_URL="https://arb-sepolia.g.alchemy.com/v2/your_arbitrum_sep # Mnemonic, first address will be used for deployments MNEMONIC='copy here your mnemonic words' -# Etherscan API - for contract verification +# Etherscan API - for contract verification (multichain) ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 -BASESCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 -ARBISCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 # WARNING: all of the following will make SLOW a truthy value: # SLOW=0 diff --git a/hardhat.config.ts b/hardhat.config.ts index 10d276de84..953cf97b96 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,8 +1,7 @@ import 'tsconfig-paths/register' -import '@nomicfoundation/hardhat-toolbox' import '@nomicfoundation/hardhat-chai-matchers' +import '@nomicfoundation/hardhat-verify' import '@nomiclabs/hardhat-ethers' -import '@nomiclabs/hardhat-etherscan' import '@openzeppelin/hardhat-upgrades' import '@typechain/hardhat' import 'hardhat-contract-sizer' @@ -170,46 +169,8 @@ const config: HardhatUserConfig = { enabled: !!useEnv('REPORT_GAS'), }, etherscan: { - apiKey: { - mainnet: useEnv('ETHERSCAN_API_KEY'), - base: useEnv('BASESCAN_API_KEY'), - arbitrum: useEnv('ARBISCAN_API_KEY'), - 'arbitrum-sepolia': useEnv('ARBISCAN_API_KEY'), - }, - customChains: [ - { - network: 'base', - chainId: 8453, - urls: { - apiURL: 'https://api.basescan.org/api', - browserURL: 'https://basescan.org', - }, - }, - { - network: 'base-goerli', - chainId: 84531, - urls: { - apiURL: 'https://api-goerli.basescan.org/api', - browserURL: 'https://goerli.basescan.org', - }, - }, - { - network: 'arbitrum', - chainId: 42161, - urls: { - apiURL: 'https://api.arbiscan.io/api', - browserURL: 'https://arbiscan.io', - }, - }, - { - network: 'arbitrum-sepolia', - chainId: 421614, - urls: { - apiURL: 'https://api-sepolia.arbiscan.io/api', - browserURL: 'https://sepolia.arbiscan.io', - }, - }, - ], + enabled: true, + apiKey: useEnv('ETHERSCAN_API_KEY'), }, // tenderly: { // // see https://github.com/Tenderly/hardhat-tenderly/tree/master/packages/tenderly-hardhat for details diff --git a/package.json b/package.json index 52b80c4392..1383166298 100644 --- a/package.json +++ b/package.json @@ -56,10 +56,10 @@ "@chainlink/contracts": "^0.5.1", "@ethersproject/providers": "^5.7.2", "@nomicfoundation/hardhat-chai-matchers": "^1.0.6", + "@nomicfoundation/hardhat-ethers": "^3.1.0", "@nomicfoundation/hardhat-network-helpers": "^1.0.8", "@nomicfoundation/hardhat-toolbox": "^2.0.1", - "@nomiclabs/hardhat-ethers": "^2.2.3", - "@nomiclabs/hardhat-etherscan": "^3.1.0", + "@nomicfoundation/hardhat-verify": "^2.1.1", "@openzeppelin/contracts": "4.9.6", "@openzeppelin/contracts-upgradeable": "4.9.6", "@openzeppelin/hardhat-upgrades": "^1.23.0", @@ -92,7 +92,7 @@ "fast-check": "^2.24.0", "graphql": "^16.6.0", "graphql-request": "^5.2.0", - "hardhat": "^2.22.19", + "hardhat": "^2.26.0", "hardhat-contract-sizer": "^2.4.0", "hardhat-gas-reporter": "^1.0.8", "husky": "^7.0.0", diff --git a/scripts/addresses/1-tmp-assets-collateral.json b/scripts/addresses/1-tmp-assets-collateral.json index 3979589a75..55fc514a49 100644 --- a/scripts/addresses/1-tmp-assets-collateral.json +++ b/scripts/addresses/1-tmp-assets-collateral.json @@ -35,7 +35,7 @@ "cvxPayPool": "0x5315Fbe0CEB299F53aE375f65fd9376767C8224c", "cvxeUSDFRAXBP": "0x994455cE66Fd984e2A0A0aca453e637810a8f032", "cvxMIM3Pool": "0x3d21f841C0Fb125176C1DBDF0DE196b071323A75", - "cvxETHPlusETH": "0x05F164E71C46a8f8FB2ba71550a00eeC9FCd85cd", + "cvxETHPlusETH": "0xcB275C9D871f21Be67a4E4a25dc2781BfFD627c4", "crveUSDFRAXBP": "0xCDC5f5E041b49Cad373E94930E2b3bE30be70535", "crvMIM3Pool": "0x692cf8CE08d03eF1f8C3dCa82F67935fa9417B62", "crv3Pool": "0xf59a7987EDd5380cbAb30c37D1c808686f9b67B9", @@ -100,7 +100,7 @@ "cvxPayPool": "0x511daB8150966aFfE15F0a5bFfBa7F4d2b62DEd4", "cvxeUSDFRAXBP": "0x81697e25DFf8564d9E0bC6D27edb40006b34ea2A", "cvxMIM3Pool": "0x3e8f7EDc03E0133b95EcB4dD2f72B5027E695413", - "cvxETHPlusETH": "0xDbC0cE2321B76D3956412B36e9c0FA9B0fD176E7", + "cvxETHPlusETH": "0x767F8655cb8e81064954C65e126028C4a733dCd8", "crv3Pool": "0x8A6029C6D921dCa4fAbf6F5b2F6D14606F8Fd0aB", "crveUSDFRAXBP": "0x3D07B9b2Aa60843470e6dAb09a0c3a31DE42E7Ea", "crvMIM3Pool": "0xB1d0076d156D83B117De3bc63E7CE8031AB117fD", diff --git a/scripts/addresses/mainnet-4.0.0/1-tmp-assets-collateral.json b/scripts/addresses/mainnet-4.0.0/1-tmp-assets-collateral.json index 7b5964e7be..8b6655e543 100644 --- a/scripts/addresses/mainnet-4.0.0/1-tmp-assets-collateral.json +++ b/scripts/addresses/mainnet-4.0.0/1-tmp-assets-collateral.json @@ -5,13 +5,15 @@ "cUSDTv3": "0x1B2256a88Bb9F2E54cC8D355D3161a2F069a320B", "sUSDS": "0xaFf578165bEA370D16d8AC61A4C8c6D435785d58", "saEthUSDT": "0x18A8D9088433aE749cE6c33070b2Fe95e8a263d9", - "wOETH": "0xD9Ee6fEb2a277E5948B6Fd6B93d125B3225339aA" + "wOETH": "0xD9Ee6fEb2a277E5948B6Fd6B93d125B3225339aA", + "cvxETHPlusETH": "0xcB275C9D871f21Be67a4E4a25dc2781BfFD627c4" }, "erc20s": { "ETHx": "0xA35b1B31Ce002FBF2058D22F30f95D405200A15b", "cUSDTv3": "0xEB74EC1d4C1DAB412D5d6674F6833FD19d3118Ce", "sUSDS": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", "saEthUSDT": "0x7133EbCb1a23e3d8Be7Ff09362b02b2A2e4c3dA4", - "wOETH": "0xDcEe70654261AF21C44c093C300eD3Bb97b78192" + "wOETH": "0xDcEe70654261AF21C44c093C300eD3Bb97b78192", + "cvxETHPlusETH": "0x767F8655cb8e81064954C65e126028C4a733dCd8" } } diff --git a/scripts/deployment/utils.ts b/scripts/deployment/utils.ts index 82946ea1cb..2b15b34d97 100644 --- a/scripts/deployment/utils.ts +++ b/scripts/deployment/utils.ts @@ -109,27 +109,13 @@ export async function verifyContract( // Sleep 0.5s to not overwhelm API await new Promise((r) => setTimeout(r, 500)) + // Etherscan v2 Multichain API KEY const ETHERSCAN_API_KEY = useEnv('ETHERSCAN_API_KEY') let url: string - if (baseL2Chains.includes(hre.network.name)) { - const BASESCAN_API_KEY = useEnv('BASESCAN_API_KEY') - // Base L2 - url = `${getVerificationURL( - chainId - )}?module=contract&action=getsourcecode&address=${address}&apikey=${BASESCAN_API_KEY}` - } else if (arbitrumL2Chains.includes(hre.network.name)) { - const ARBISCAN_API_KEY = useEnv('ARBISCAN_API_KEY') - // Arbitrum L2 - url = `${getVerificationURL( - chainId - )}?module=contract&action=getsourcecode&address=${address}&apikey=${ARBISCAN_API_KEY}` - } else { - // Ethereum - url = `${getVerificationURL( - chainId - )}/api?module=contract&action=getsourcecode&address=${address}&apikey=${ETHERSCAN_API_KEY}` - } + url = `${getVerificationURL( + chainId + )}/api?chainid=${chainId}&module=contract&action=getsourcecode&address=${address}&apikey=${ETHERSCAN_API_KEY}` // Check to see if already verified const { data, status } = await axios.get(url, { headers: { Accept: 'application/json' } }) @@ -153,7 +139,7 @@ export async function verifyContract( } catch (e) { console.log( `IMPORTANT: failed to verify ${contract}. - ${getVerificationURL(chainId)}/address/${address}#code`, + ${getExplorerURL(chainId)}/address/${address}#code`, e ) } @@ -163,9 +149,14 @@ export async function verifyContract( } export const getVerificationURL = (chainId: number) => { - if (chainId == 1) return 'https://api.etherscan.io' + const supportedChains = [1, 56, 8453, 84531, 42161, 421614] + + // Use Etherscan V2 for all supported chains + if (supportedChains.includes(Number(chainId))) { + return 'https://api.etherscan.io/v2' + } - // For Base, get URL from HH config + // For other chains, get URL from HH config (if defined) const chainConfig = hre.config.etherscan.customChains.find((chain) => chain.chainId == chainId) if (!chainConfig || !chainConfig.urls) { throw new Error(`Missing custom chain configuration for ${hre.network.name}`) @@ -173,6 +164,28 @@ export const getVerificationURL = (chainId: number) => { return `${chainConfig.urls.apiURL}` } +export const getExplorerURL = (chainId: number) => { + const explorers: Record = { + 1: 'https://etherscan.io/', // Ethereum Mainnet + 56: 'https://bscscan.com/', // BNB Smart Chain Mainnet + 8453: 'https://basescan.org/', // Base Mainnet + 84531: 'https://sepolia.basescan.org/', // Base Sepolia Testnet + 42161: 'https://arbiscan.io/', // Arbitrum One Mainnet + 421614: 'https://sepolia.arbiscan.io/', // Arbitrum Sepolia Testnet + } + + // Return explorer URL if defined + const explorer = explorers[chainId] + if (explorer) return explorer + + // For other chains, get URL from HH config (if defined) + const chainConfig = hre.config.etherscan.customChains.find((chain) => chain.chainId == chainId) + if (!chainConfig || !chainConfig.urls) { + throw new Error(`Missing custom chain configuration for ${hre.network.name}`) + } + return `${chainConfig.urls.browserURL}` +} + export const getEmptyDeployment = (): IDeployments => { return { prerequisites: { diff --git a/scripts/refresh-whales.ts b/scripts/refresh-whales.ts index 373da8ea6d..0da6e2aff5 100644 --- a/scripts/refresh-whales.ts +++ b/scripts/refresh-whales.ts @@ -10,7 +10,6 @@ import { useEnv } from '#/utils/env' // set to true to force a refresh of all whales const FORCE_REFRESH = useEnv('FORCE_WHALE_REFRESH') -const BASESCAN_API_KEY = useEnv('BASESCAN_API_KEY') const FORK_NETWORK = useEnv('FORK_NETWORK') const SCANNER_URLS: { [key: string]: string } = { diff --git a/tasks/deployment/get-addresses.ts b/tasks/deployment/get-addresses.ts index 63713311b0..699b1c6fd8 100644 --- a/tasks/deployment/get-addresses.ts +++ b/tasks/deployment/get-addresses.ts @@ -34,15 +34,14 @@ task('get-addys', 'Compile the deployed addresses of an RToken deployment') const chainId = await getChainId(hre) const network: Network = hre.network.name as Network let scannerUrl: string - let scannerApiUrl: string + let scannerApiUrl = `https://api.etherscan.io/v2/api?chainid=${chainId}` + switch (network) { case 'mainnet': scannerUrl = 'https://etherscan.io/address/' - scannerApiUrl = `https://api.etherscan.io/api` break case 'base': scannerUrl = 'https://basescan.org/address/' - scannerApiUrl = `https://api.basescan.org/api` break default: throw new Error(`Unsupported network: ${network}`) @@ -57,7 +56,7 @@ task('get-addys', 'Compile the deployed addresses of an RToken deployment') } const createRTokenTableRow = async (name: string, address: string) => { - const url = `${scannerApiUrl}?module=contract&action=getsourcecode&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}` + const url = `${scannerApiUrl}&module=contract&action=getsourcecode&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}` await delay(200) const response = await fetch(url) const data = await response.json() @@ -73,7 +72,7 @@ task('get-addys', 'Compile the deployed addresses of an RToken deployment') } const createComponentTableRow = async (name: string, address: string) => { - const url = `${scannerApiUrl}?module=contract&action=getsourcecode&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}` + const url = `${scannerApiUrl}&module=contract&action=getsourcecode&address=${address}&apikey=${process.env.ETHERSCAN_API_KEY}` await delay(200) const response = await fetch(url) const data = await response.json() diff --git a/utils/env.ts b/utils/env.ts index 8af0009843..40760cee67 100644 --- a/utils/env.ts +++ b/utils/env.ts @@ -13,8 +13,6 @@ type IEnvVars = | 'PROTO' | 'PROTO_IMPL' | 'ETHERSCAN_API_KEY' - | 'BASESCAN_API_KEY' - | 'ARBISCAN_API_KEY' | 'NO_OPT' | 'ONLY_FAST' | 'JOBS' diff --git a/yarn.lock b/yarn.lock index c05a578401..0aebb0071f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -552,6 +552,25 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/rlp@npm:^5.0.2": + version: 5.0.2 + resolution: "@ethereumjs/rlp@npm:5.0.2" + bin: + rlp: bin/rlp.cjs + checksum: 10c0/56162eaee96dd429f0528a9e51b453398546d57f26057b3e188f2aa09efe8bd430502971c54238ca9cc42af41b0a3f137cf67b9e020d52bc83caca043d64911b + languageName: node + linkType: hard + +"@ethereumjs/util@npm:^9.1.0": + version: 9.1.0 + resolution: "@ethereumjs/util@npm:9.1.0" + dependencies: + "@ethereumjs/rlp": "npm:^5.0.2" + ethereum-cryptography: "npm:^2.2.1" + checksum: 10c0/7b55c79d90e55da873037b8283c37b61164f1712b194e2783bdb0a3401ff0999dc9d1404c7051589f71fb79e8aeb6952ec43ede21dd0028d7d9b1c07abcfff27 + languageName: node + linkType: hard + "@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.0-beta.146, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" @@ -1162,19 +1181,6 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-sig-util@npm:^4.0.0": - version: 4.0.1 - resolution: "@metamask/eth-sig-util@npm:4.0.1" - dependencies: - ethereumjs-abi: "npm:^0.6.8" - ethereumjs-util: "npm:^6.2.1" - ethjs-util: "npm:^0.1.6" - tweetnacl: "npm:^1.0.3" - tweetnacl-util: "npm:^0.15.1" - checksum: 10c0/957fa16e8f0454ad45203a8416e77181853de1c9e33697f1a1582d46f18da1cca26c803a4e08bee7091a697609fc8916f399210fd5d3d2fccc34bfd0a58715f0 - languageName: node - linkType: hard - "@noble/curves@npm:1.2.0": version: 1.2.0 resolution: "@noble/curves@npm:1.2.0" @@ -1184,6 +1190,24 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": + version: 1.4.2 + resolution: "@noble/curves@npm:1.4.2" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: 10c0/65620c895b15d46e8087939db6657b46a1a15cd4e0e4de5cd84b97a0dfe0af85f33a431bb21ac88267e3dc508618245d4cb564213959d66a84d690fe18a63419 + languageName: node + linkType: hard + +"@noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" + dependencies: + "@noble/hashes": "npm:1.7.2" + checksum: 10c0/e7ef119b114681d6b7530b29a21f9bbea6fa6973bc369167da2158d05054cc6e6dbfb636ba89fad7707abacc150de30188b33192f94513911b24bdb87af50bbd + languageName: node + linkType: hard + "@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0": version: 1.2.0 resolution: "@noble/hashes@npm:1.2.0" @@ -1198,6 +1222,20 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.7.2, @noble/hashes@npm:~1.7.1": + version: 1.7.2 + resolution: "@noble/hashes@npm:1.7.2" + checksum: 10c0/b1411eab3c0b6691d847e9394fe7f1fcd45eeb037547c8f97e7d03c5068a499b4aef188e8e717eee67389dca4fee17d69d7e0f58af6c092567b0b76359b114b2 + languageName: node + linkType: hard + "@noble/hashes@npm:^1.3.3": version: 1.5.0 resolution: "@noble/hashes@npm:1.5.0" @@ -1239,117 +1277,67 @@ __metadata: languageName: node linkType: hard -"@nomicfoundation/edr-darwin-arm64@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.8.0" - checksum: 10c0/f8bdede09ba5db53f0e55b9fde132c188e09c15faef473675465e0ead97ae0c5c562d820415bb1fe4a46cb29f28cfd2a5bf492229a2f64815f9d000b85e26f84 +"@nomicfoundation/edr-darwin-arm64@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.11.3" + checksum: 10c0/f5923e05a9409a9e3956b95db7e6bbd4345c3cd8de617406a308e257bd4706d59d6f6f8d6ec774d6473d956634ba5c322ec903b66830844683809eb102ec510e languageName: node linkType: hard -"@nomicfoundation/edr-darwin-x64@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-darwin-x64@npm:0.8.0" - checksum: 10c0/2601d21267d18421f5ded3ca673064bd7ee680fa3340ecfb868ed4b21566eb61f6eed1cc684e3c5df4ade9ec2bc218df19c7e50b8882c17ab2f27fede241881c +"@nomicfoundation/edr-darwin-x64@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-darwin-x64@npm:0.11.3" + checksum: 10c0/f529d2ef57a54bb34fb7888b545f19675624086bd93383e8d91c8dee1555532d2d28e72363b6a3b84e3920911bd550333898636873922cb5899c74b496f847aa languageName: node linkType: hard -"@nomicfoundation/edr-linux-arm64-gnu@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.8.0" - checksum: 10c0/8e20e330d2b812a47ee9634eeab494b2730dee9f4cc663dea543fd905d7fcedae4b9ac60cd62a0f8f13311e43d97d8201872177a997cd7e01bf41b8ebcac355a +"@nomicfoundation/edr-linux-arm64-gnu@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.11.3" + checksum: 10c0/4a8b4674d2e975434a1eab607f77947aa7dd501896ddb0b24f6f09e497776d197617dcac36076f4e274ac55ce0f1c85de228dff432d470459df6aa35b97176f2 languageName: node linkType: hard -"@nomicfoundation/edr-linux-arm64-musl@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.8.0" - checksum: 10c0/3065ef7e47e8518fa052fd6f263cd314b0b077248beb79734d35e8896a071313ddf8111a081275fca6d9be3d4c9d709dd643e2aa6b870ba52b85c0dbb255898c +"@nomicfoundation/edr-linux-arm64-musl@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.11.3" + checksum: 10c0/e0bf840cf209db1a8c7bb6dcd35af5c751921c2125ccf11457dbf5f66ef3c306d060933e5cbe9469ac8b440b8fcc19fa13fae8e919b5a03087c70d688cce461f languageName: node linkType: hard -"@nomicfoundation/edr-linux-x64-gnu@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.8.0" - checksum: 10c0/eedbf9b751264dccdcd9817d8b592facf32c6fc7036b8c0736fce8dffba86c32eddde5f3354aa7692224f2e9d1f9b6a594ad16d428887517b8325e4d0982c0ed +"@nomicfoundation/edr-linux-x64-gnu@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.11.3" + checksum: 10c0/c7617c11029223998cf177d49fb4979b7dcfcc9369cadaa82d2f9fb58c7f8091a33c4c46416e3fb71d9ff2276075d69fd076917841e3912466896ba1ca45cb94 languageName: node linkType: hard -"@nomicfoundation/edr-linux-x64-musl@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.8.0" - checksum: 10c0/748e674b95e4b5ef354ea86f712520a3a81d58ff69c03467051a3f3e8c4ba3e830e5581af54be8c4d0c3790565a15c04b9a1efe1a2179d9f9416a5e093f3fbc9 +"@nomicfoundation/edr-linux-x64-musl@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.11.3" + checksum: 10c0/ef1623581a1d7072c88c0dc342480bed1253131d8775827ae8dddda26b2ecc4f4def3d8ec83ee60ac33e70539a58ed0b7a200040a06f31f9b3eccc3003c3af8d languageName: node linkType: hard -"@nomicfoundation/edr-win32-x64-msvc@npm:0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.8.0" - checksum: 10c0/0cecbe7093b4f4f4215db4944191a6199105da30edc87427d0eede70b2139b77748664cd3a94d0c87b7658532b8bd5e0b37f3e0f7bc0e894650b16d82b289125 +"@nomicfoundation/edr-win32-x64-msvc@npm:0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.11.3" + checksum: 10c0/0b3975a22fe31cea5799a3b4020acdf01627508e5f617545ad9f5f5f6739b1a954e1cd397e6d00a56eddd2c88b24d290b8e76f871eab7a847d97ee740e825249 languageName: node linkType: hard -"@nomicfoundation/edr@npm:^0.8.0": - version: 0.8.0 - resolution: "@nomicfoundation/edr@npm:0.8.0" +"@nomicfoundation/edr@npm:^0.11.3": + version: 0.11.3 + resolution: "@nomicfoundation/edr@npm:0.11.3" dependencies: - "@nomicfoundation/edr-darwin-arm64": "npm:0.8.0" - "@nomicfoundation/edr-darwin-x64": "npm:0.8.0" - "@nomicfoundation/edr-linux-arm64-gnu": "npm:0.8.0" - "@nomicfoundation/edr-linux-arm64-musl": "npm:0.8.0" - "@nomicfoundation/edr-linux-x64-gnu": "npm:0.8.0" - "@nomicfoundation/edr-linux-x64-musl": "npm:0.8.0" - "@nomicfoundation/edr-win32-x64-msvc": "npm:0.8.0" - checksum: 10c0/da24b58d30b8438739124087e8c13d44e516e1526bfce46d10ea12a25dd527d458f1818f2aa3fcbb75ffc3bdd93e9bba7eb12a77f876002a347a6eb20cd871fa - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-common@npm:4.0.4": - version: 4.0.4 - resolution: "@nomicfoundation/ethereumjs-common@npm:4.0.4" - dependencies: - "@nomicfoundation/ethereumjs-util": "npm:9.0.4" - checksum: 10c0/efaaebe41c2a3fe8b50bf12d9d134dc7611907f6eb2118f7822eaa375c54bc71bf6f6a3b2e22c754867f2cd28d619afd892b1eaa26cf1c886e0f793bda481070 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-rlp@npm:5.0.4": - version: 5.0.4 - resolution: "@nomicfoundation/ethereumjs-rlp@npm:5.0.4" - bin: - rlp: bin/rlp.cjs - checksum: 10c0/58e276c190f5f33e12ff4a2c7fe4c3c71cb139029eddd9b46488e23e168c422bc0b55368c0b7805ca8b09e9ea6b8298cd74c63f5c2ed4b6fb447635ed7a317f7 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-tx@npm:5.0.4": - version: 5.0.4 - resolution: "@nomicfoundation/ethereumjs-tx@npm:5.0.4" - dependencies: - "@nomicfoundation/ethereumjs-common": "npm:4.0.4" - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" - "@nomicfoundation/ethereumjs-util": "npm:9.0.4" - ethereum-cryptography: "npm:0.1.3" - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - checksum: 10c0/1e4ba6d7d6aa8d44a807e3332e98e8fbea70c1aa91be3b39b581c4b498554ee380eec21442d737d2b646c722da306dd1179a5e37747b285b93690aab041d52a7 - languageName: node - linkType: hard - -"@nomicfoundation/ethereumjs-util@npm:9.0.4": - version: 9.0.4 - resolution: "@nomicfoundation/ethereumjs-util@npm:9.0.4" - dependencies: - "@nomicfoundation/ethereumjs-rlp": "npm:5.0.4" - ethereum-cryptography: "npm:0.1.3" - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - checksum: 10c0/228e8cb018ce6b487a0eb65c585d692b56bb306a26df3f6f063cdf87feea6174b005b25f2dc4547b940f76d0d6c4bcaa8ffbbcce482091168cdf3c6fe2f8b5da + "@nomicfoundation/edr-darwin-arm64": "npm:0.11.3" + "@nomicfoundation/edr-darwin-x64": "npm:0.11.3" + "@nomicfoundation/edr-linux-arm64-gnu": "npm:0.11.3" + "@nomicfoundation/edr-linux-arm64-musl": "npm:0.11.3" + "@nomicfoundation/edr-linux-x64-gnu": "npm:0.11.3" + "@nomicfoundation/edr-linux-x64-musl": "npm:0.11.3" + "@nomicfoundation/edr-win32-x64-msvc": "npm:0.11.3" + checksum: 10c0/48280ca1ae6913e92a34abf8f70656bc09c217094326b5e81e9d299924a24b7041240109d0f024a3c33706f542e0668f7e320a2eb02657f9bf7bbf29cd7b8f5d languageName: node linkType: hard @@ -1371,6 +1359,19 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/hardhat-ethers@npm:^3.1.0": + version: 3.1.0 + resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.0" + dependencies: + debug: "npm:^4.1.1" + lodash.isequal: "npm:^4.5.0" + peerDependencies: + ethers: ^6.14.0 + hardhat: ^2.26.0 + checksum: 10c0/66c5c9f9dd56f1cea25f5c9890f99251fd3179090bb0ad3f73fc1184e4a8ceaba544b5165d3f67e500cf0047d1550350e80df10e28cbabae3d61a659826163ae + languageName: node + linkType: hard + "@nomicfoundation/hardhat-network-helpers@npm:^1.0.8": version: 1.0.8 resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.0.8" @@ -1409,6 +1410,25 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/hardhat-verify@npm:^2.1.1": + version: 2.1.1 + resolution: "@nomicfoundation/hardhat-verify@npm:2.1.1" + dependencies: + "@ethersproject/abi": "npm:^5.1.2" + "@ethersproject/address": "npm:^5.0.2" + cbor: "npm:^8.1.0" + debug: "npm:^4.1.1" + lodash.clonedeep: "npm:^4.5.0" + picocolors: "npm:^1.1.0" + semver: "npm:^6.3.0" + table: "npm:^6.8.0" + undici: "npm:^5.14.0" + peerDependencies: + hardhat: ^2.26.0 + checksum: 10c0/d21ca6db816509972deb6603e087381644ca17c5fb07a02a3fbe2148b483ac26f41b34fce64222b90a52e93de1d2920e9d879a333b96ad33cc8e3f6d16ac4558 + languageName: node + linkType: hard + "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1": version: 0.1.1 resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1" @@ -1518,7 +1538,7 @@ __metadata: languageName: node linkType: hard -"@nomiclabs/hardhat-ethers@npm:^2.1.1, @nomiclabs/hardhat-ethers@npm:^2.2.3": +"@nomiclabs/hardhat-ethers@npm:^2.1.1": version: 2.2.3 resolution: "@nomiclabs/hardhat-ethers@npm:2.2.3" peerDependencies: @@ -1528,26 +1548,6 @@ __metadata: languageName: node linkType: hard -"@nomiclabs/hardhat-etherscan@npm:^3.1.0": - version: 3.1.7 - resolution: "@nomiclabs/hardhat-etherscan@npm:3.1.7" - dependencies: - "@ethersproject/abi": "npm:^5.1.2" - "@ethersproject/address": "npm:^5.0.2" - cbor: "npm:^8.1.0" - chalk: "npm:^2.4.2" - debug: "npm:^4.1.1" - fs-extra: "npm:^7.0.1" - lodash: "npm:^4.17.11" - semver: "npm:^6.3.0" - table: "npm:^6.8.0" - undici: "npm:^5.14.0" - peerDependencies: - hardhat: ^2.0.4 - checksum: 10c0/3302820ac823fcb07a5ba278f3e2f07a7f6ba5e0679f0694860a2a189e91188993cc51a0001ec38c532381d3367da72dfcc9820c08ed6e5e0337651bf351dd9e - languageName: node - linkType: hard - "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" @@ -1713,6 +1713,20 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:~1.1.6": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 10c0/77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 + languageName: node + linkType: hard + +"@scure/base@npm:~1.2.5": + version: 1.2.6 + resolution: "@scure/base@npm:1.2.6" + checksum: 10c0/49bd5293371c4e062cb6ba689c8fe3ea3981b7bb9c000400dc4eafa29f56814cdcdd27c04311c2fec34de26bc373c593a1d6ca6d754398a488d587943b7c128a + languageName: node + linkType: hard + "@scure/bip32@npm:1.1.5": version: 1.1.5 resolution: "@scure/bip32@npm:1.1.5" @@ -1724,6 +1738,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip32@npm:1.4.0" + dependencies: + "@noble/curves": "npm:~1.4.0" + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/6849690d49a3bf1d0ffde9452eb16ab83478c1bc0da7b914f873e2930cd5acf972ee81320e3df1963eb247cf57e76d2d975b5f97093d37c0e3f7326581bf41bd + languageName: node + linkType: hard + "@scure/bip39@npm:1.1.1": version: 1.1.1 resolution: "@scure/bip39@npm:1.1.1" @@ -1734,6 +1759,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.3.0": + version: 1.3.0 + resolution: "@scure/bip39@npm:1.3.0" + dependencies: + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/1ae1545a7384a4d9e33e12d9e9f8824f29b0279eb175b0f0657c0a782c217920054f9a1d28eb316a417dfc6c4e0b700d6fbdc6da160670107426d52fcbe017a8 + languageName: node + linkType: hard + "@sentry/core@npm:5.30.0": version: 5.30.0 resolution: "@sentry/core@npm:5.30.0" @@ -1934,15 +1969,6 @@ __metadata: languageName: node linkType: hard -"@types/bn.js@npm:^4.11.3": - version: 4.11.6 - resolution: "@types/bn.js@npm:4.11.6" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/a5a19dafc106b1b2ab35c2024ca37b9d0938dced11cb1cca7d119de5a0dd5f54db525c82cb1392843fc921677452efcbbdce3aa96ecc1457d3de6e266915ebd0 - languageName: node - linkType: hard - "@types/bn.js@npm:^5.1.0": version: 5.1.1 resolution: "@types/bn.js@npm:5.1.1" @@ -2058,13 +2084,6 @@ __metadata: languageName: node linkType: hard -"@types/lru-cache@npm:^5.1.0": - version: 5.1.1 - resolution: "@types/lru-cache@npm:5.1.1" - checksum: 10c0/1f17ec9b202c01a89337cc5528198a690be6b61a6688242125fbfb7fa17770e453e00e4685021abf5ae605860ca0722209faac5c254b780d0104730bb0b9e354 - languageName: node - linkType: hard - "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" @@ -2979,7 +2998,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^4.11.0, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9": +"bn.js@npm:^4.11.9": version: 4.12.0 resolution: "bn.js@npm:4.12.0" checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 @@ -4146,7 +4165,7 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:6.5.4, elliptic@npm:^6.5.2, elliptic@npm:^6.5.4": +"elliptic@npm:6.5.4, elliptic@npm:^6.5.4": version: 6.5.4 resolution: "elliptic@npm:6.5.4" dependencies: @@ -4817,7 +4836,7 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:0.1.3, ethereum-cryptography@npm:^0.1.3": +"ethereum-cryptography@npm:^0.1.3": version: 0.1.3 resolution: "ethereum-cryptography@npm:0.1.3" dependencies: @@ -4852,28 +4871,15 @@ __metadata: languageName: node linkType: hard -"ethereumjs-abi@npm:^0.6.8": - version: 0.6.8 - resolution: "ethereumjs-abi@npm:0.6.8" - dependencies: - bn.js: "npm:^4.11.8" - ethereumjs-util: "npm:^6.0.0" - checksum: 10c0/a7ff1917625e3c812cb3bca6c1231fc0ece282cc7d202d60545a9c31cd379fd751bfed5ff78dae4279cb1ba4d0e8967f9fdd4f135a334a38dbf04e7afd0c4bcf - languageName: node - linkType: hard - -"ethereumjs-util@npm:^6.0.0, ethereumjs-util@npm:^6.2.1": - version: 6.2.1 - resolution: "ethereumjs-util@npm:6.2.1" +"ethereum-cryptography@npm:^2.2.1": + version: 2.2.1 + resolution: "ethereum-cryptography@npm:2.2.1" dependencies: - "@types/bn.js": "npm:^4.11.3" - bn.js: "npm:^4.11.0" - create-hash: "npm:^1.1.2" - elliptic: "npm:^6.5.2" - ethereum-cryptography: "npm:^0.1.3" - ethjs-util: "npm:0.1.6" - rlp: "npm:^2.2.3" - checksum: 10c0/64aa7e6d591a0b890eb147c5d81f80a6456e87b3056e6bbafb54dff63f6ae9e646406763e8bd546c3b0b0162d027aecb3844873e894681826b03e0298f57e7a4 + "@noble/curves": "npm:1.4.2" + "@noble/hashes": "npm:1.4.0" + "@scure/bip32": "npm:1.4.0" + "@scure/bip39": "npm:1.3.0" + checksum: 10c0/c6c7626d393980577b57f709878b2eb91f270fe56116044b1d7afb70d5c519cddc0c072e8c05e4a335e05342eb64d9c3ab39d52f78bb75f76ad70817da9645ef languageName: node linkType: hard @@ -4970,16 +4976,6 @@ __metadata: languageName: node linkType: hard -"ethjs-util@npm:0.1.6, ethjs-util@npm:^0.1.6": - version: 0.1.6 - resolution: "ethjs-util@npm:0.1.6" - dependencies: - is-hex-prefixed: "npm:1.0.0" - strip-hex-prefix: "npm:1.0.0" - checksum: 10c0/9b4d6268705fd0620e73a56d2fa7b8a7c6b9770b2cf7f8ffe3a9c46b8bd1c5a08fff3d1181bb18cf85cf12b6fdbb6dca6d9aff6506005f3f565e742f026e6339 - languageName: node - linkType: hard - "evp_bytestokey@npm:^1.0.3": version: 1.0.3 resolution: "evp_bytestokey@npm:1.0.3" @@ -5987,20 +5983,15 @@ __metadata: languageName: node linkType: hard -"hardhat@npm:^2.22.19": - version: 2.22.19 - resolution: "hardhat@npm:2.22.19" +"hardhat@npm:^2.26.0": + version: 2.26.3 + resolution: "hardhat@npm:2.26.3" dependencies: + "@ethereumjs/util": "npm:^9.1.0" "@ethersproject/abi": "npm:^5.1.2" - "@metamask/eth-sig-util": "npm:^4.0.0" - "@nomicfoundation/edr": "npm:^0.8.0" - "@nomicfoundation/ethereumjs-common": "npm:4.0.4" - "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" - "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + "@nomicfoundation/edr": "npm:^0.11.3" "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" "@sentry/node": "npm:^5.18.1" - "@types/bn.js": "npm:^5.1.0" - "@types/lru-cache": "npm:^5.1.0" adm-zip: "npm:^0.4.16" aggregate-error: "npm:^3.0.0" ansi-escapes: "npm:^4.3.0" @@ -6011,7 +6002,6 @@ __metadata: enquirer: "npm:^2.3.0" env-paths: "npm:^2.2.0" ethereum-cryptography: "npm:^1.0.3" - ethereumjs-abi: "npm:^0.6.8" find-up: "npm:^5.0.0" fp-ts: "npm:1.19.3" fs-extra: "npm:^7.0.1" @@ -6020,6 +6010,7 @@ __metadata: json-stream-stringify: "npm:^3.1.4" keccak: "npm:^3.0.2" lodash: "npm:^4.17.11" + micro-eth-signer: "npm:^0.14.0" mnemonist: "npm:^0.38.0" mocha: "npm:^10.0.0" p-map: "npm:^4.0.0" @@ -6045,7 +6036,7 @@ __metadata: optional: true bin: hardhat: internal/cli/bootstrap.js - checksum: 10c0/bd0024f322787abd62aad6847e06d9988f861fd9bf2620bddd04cfeafada6925e97cc210034d7d00ba6cd9463608467fbf1b98bef380940f2e5c8e8d63bfc8e5 + checksum: 10c0/e539e5a4dc02b8ac0b055b71723ef7da2848e3495da61d2538d2c0a56df60128d8a8c62b714b97dab13274c5fb0842aba92ab5281b05c2cdeb9a56cac317a7d3 languageName: node linkType: hard @@ -7200,6 +7191,13 @@ __metadata: languageName: node linkType: hard +"lodash.clonedeep@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeep@npm:4.5.0" + checksum: 10c0/2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 + languageName: node + linkType: hard + "lodash.get@npm:^4.4.2": version: 4.4.2 resolution: "lodash.get@npm:4.4.2" @@ -7207,6 +7205,13 @@ __metadata: languageName: node linkType: hard +"lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" @@ -7392,6 +7397,26 @@ __metadata: languageName: node linkType: hard +"micro-eth-signer@npm:^0.14.0": + version: 0.14.0 + resolution: "micro-eth-signer@npm:0.14.0" + dependencies: + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + micro-packed: "npm:~0.7.2" + checksum: 10c0/62c90d54d2b97cb4eaf713c69bc4ceb5903012d0237c26f0966076cfb89c4527de68b395e1bc29e6f237152ce08f7b551fb57b332003518a1331c2c0890fb164 + languageName: node + linkType: hard + +"micro-packed@npm:~0.7.2": + version: 0.7.3 + resolution: "micro-packed@npm:0.7.3" + dependencies: + "@scure/base": "npm:~1.2.5" + checksum: 10c0/1fde48a96d8d5606d3298ff36717bf7483d6d59e2d96f50cb88727379127a4d52881f48e7e1ce0d4906b2711b1902fb04d2128576326ce4d07e171ac022a4c2d + languageName: node + linkType: hard + "micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" @@ -8827,10 +8852,10 @@ __metadata: "@chainlink/contracts": "npm:^0.5.1" "@ethersproject/providers": "npm:^5.7.2" "@nomicfoundation/hardhat-chai-matchers": "npm:^1.0.6" + "@nomicfoundation/hardhat-ethers": "npm:^3.1.0" "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.8" "@nomicfoundation/hardhat-toolbox": "npm:^2.0.1" - "@nomiclabs/hardhat-ethers": "npm:^2.2.3" - "@nomiclabs/hardhat-etherscan": "npm:^3.1.0" + "@nomicfoundation/hardhat-verify": "npm:^2.1.1" "@openzeppelin/contracts": "npm:4.9.6" "@openzeppelin/contracts-upgradeable": "npm:4.9.6" "@openzeppelin/hardhat-upgrades": "npm:^1.23.0" @@ -8866,7 +8891,7 @@ __metadata: fast-check: "npm:^2.24.0" graphql: "npm:^16.6.0" graphql-request: "npm:^5.2.0" - hardhat: "npm:^2.22.19" + hardhat: "npm:^2.26.0" hardhat-contract-sizer: "npm:^2.4.0" hardhat-gas-reporter: "npm:^1.0.8" husky: "npm:^7.0.0" @@ -9029,7 +9054,7 @@ __metadata: languageName: node linkType: hard -"rlp@npm:^2.2.3, rlp@npm:^2.2.4": +"rlp@npm:^2.2.4": version: 2.2.7 resolution: "rlp@npm:2.2.7" dependencies: @@ -10176,13 +10201,6 @@ __metadata: languageName: node linkType: hard -"tweetnacl-util@npm:^0.15.1": - version: 0.15.1 - resolution: "tweetnacl-util@npm:0.15.1" - checksum: 10c0/796fad76238e40e853dff79516406a27b41549bfd6fabf4ba89d87ca31acf232122f825daf955db8c8573cc98190d7a6d39ece9ed8ae0163370878c310650a80 - languageName: node - linkType: hard - "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -10190,13 +10208,6 @@ __metadata: languageName: node linkType: hard -"tweetnacl@npm:^1.0.3": - version: 1.0.3 - resolution: "tweetnacl@npm:1.0.3" - checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0"