From 8001dc986b9d90025b818bc0fc0b119299895255 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 22 Jul 2025 12:44:22 +0300 Subject: [PATCH 1/4] chore: update packages --- packages/hardhat/package.json | 4 +- yarn.lock | 384 +++++++++++++++------------------- 2 files changed, 168 insertions(+), 220 deletions(-) diff --git a/packages/hardhat/package.json b/packages/hardhat/package.json index 03c5334..3abea9c 100644 --- a/packages/hardhat/package.json +++ b/packages/hardhat/package.json @@ -35,8 +35,8 @@ "@types/mocha": ">=9.1.0", "chai": "^4.3.6", "ethers": "^6.13.2", - "hardhat": "^2.3.3", - "hardhat-deploy": "^0.11.45", + "hardhat": "^2.26.0", + "hardhat-deploy": "^0.12.0", "hardhat-deploy-ethers": "^0.4.1", "hardhat-gas-reporter": "^1.0.8", "solidity-coverage": "^0.8.1", diff --git a/yarn.lock b/yarn.lock index 5cbb935..b58b8e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -316,6 +316,11 @@ resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + "@ethereumjs/tx@3.3.2": version "3.3.2" resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz" @@ -351,6 +356,14 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" +"@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.1.0.tgz#75e3898a3116d21c135fa9e29886565609129bce" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.2.1" + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" @@ -940,17 +953,6 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^5.0.1" -"@metamask/eth-sig-util@^4.0.0": - version "4.0.1" - resolved "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz" - integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^6.2.1" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - "@metamask/json-rpc-engine@^7.0.0": version "7.3.3" resolved "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz" @@ -1314,6 +1316,13 @@ dependencies: "@noble/hashes" "1.5.0" +"@noble/curves@~1.8.1": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.2.tgz#8f24c037795e22b90ae29e222a856294c1d9ffc7" + integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== + dependencies: + "@noble/hashes" "1.7.2" + "@noble/ed25519@^1.5.1": version "1.7.3" resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz" @@ -1339,6 +1348,11 @@ resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz" integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== +"@noble/hashes@1.7.2", "@noble/hashes@~1.7.1": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.2.tgz#d53c65a21658fb02f3303e7ee3ba89d6754c64b4" + integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== + "@noble/hashes@^1.6.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" @@ -1380,83 +1394,53 @@ resolved "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz" integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== -"@nomicfoundation/edr-darwin-arm64@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.5.2.tgz" - integrity sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A== - -"@nomicfoundation/edr-darwin-x64@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.5.2.tgz" - integrity sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg== - -"@nomicfoundation/edr-linux-arm64-gnu@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.5.2.tgz" - integrity sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA== - -"@nomicfoundation/edr-linux-arm64-musl@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.5.2.tgz" - integrity sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg== - -"@nomicfoundation/edr-linux-x64-gnu@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.5.2.tgz" - integrity sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A== - -"@nomicfoundation/edr-linux-x64-musl@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.5.2.tgz" - integrity sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA== - -"@nomicfoundation/edr-win32-x64-msvc@0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.5.2.tgz" - integrity sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w== - -"@nomicfoundation/edr@^0.5.2": - version "0.5.2" - resolved "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.5.2.tgz" - integrity sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw== - dependencies: - "@nomicfoundation/edr-darwin-arm64" "0.5.2" - "@nomicfoundation/edr-darwin-x64" "0.5.2" - "@nomicfoundation/edr-linux-arm64-gnu" "0.5.2" - "@nomicfoundation/edr-linux-arm64-musl" "0.5.2" - "@nomicfoundation/edr-linux-x64-gnu" "0.5.2" - "@nomicfoundation/edr-linux-x64-musl" "0.5.2" - "@nomicfoundation/edr-win32-x64-msvc" "0.5.2" - -"@nomicfoundation/ethereumjs-common@4.0.4": - version "4.0.4" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz" - integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== - dependencies: - "@nomicfoundation/ethereumjs-util" "9.0.4" - -"@nomicfoundation/ethereumjs-rlp@5.0.4": - version "5.0.4" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz" - integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== - -"@nomicfoundation/ethereumjs-tx@5.0.4": - version "5.0.4" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz" - integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== - dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.4" - "@nomicfoundation/ethereumjs-rlp" "5.0.4" - "@nomicfoundation/ethereumjs-util" "9.0.4" - ethereum-cryptography "0.1.3" - -"@nomicfoundation/ethereumjs-util@9.0.4": - version "9.0.4" - resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz" - integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== - dependencies: - "@nomicfoundation/ethereumjs-rlp" "5.0.4" - ethereum-cryptography "0.1.3" +"@nomicfoundation/edr-darwin-arm64@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.11.3.tgz#d8e2609fc24cf20e75c3782e39cd5a95f7488075" + integrity sha512-w0tksbdtSxz9nuzHKsfx4c2mwaD0+l5qKL2R290QdnN9gi9AV62p9DHkOgfBdyg6/a6ZlnQqnISi7C9avk/6VA== + +"@nomicfoundation/edr-darwin-x64@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.11.3.tgz#7a9e94cee330269a33c7f1dce267560c7e12dbd3" + integrity sha512-QR4jAFrPbOcrO7O2z2ESg+eUeIZPe2bPIlQYgiJ04ltbSGW27FblOzdd5+S3RoOD/dsZGKAvvy6dadBEl0NgoA== + +"@nomicfoundation/edr-linux-arm64-gnu@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.11.3.tgz#cd5ec90c7263045c3dfd0b109c73206e488edc27" + integrity sha512-Ktjv89RZZiUmOFPspuSBVJ61mBZQ2+HuLmV67InNlh9TSUec/iDjGIwAn59dx0bF/LOSrM7qg5od3KKac4LJDQ== + +"@nomicfoundation/edr-linux-arm64-musl@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.11.3.tgz#ed23df2d9844470f5661716da27d99a72a69e99e" + integrity sha512-B3sLJx1rL2E9pfdD4mApiwOZSrX0a/KQSBWdlq1uAhFKqkl00yZaY4LejgZndsJAa4iKGQJlGnw4HCGeVt0+jA== + +"@nomicfoundation/edr-linux-x64-gnu@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.11.3.tgz#87a62496c2c4b808bc4a9ae96cca1642a21c2b51" + integrity sha512-D/4cFKDXH6UYyKPu6J3Y8TzW11UzeQI0+wS9QcJzjlrrfKj0ENW7g9VihD1O2FvXkdkTjcCZYb6ai8MMTCsaVw== + +"@nomicfoundation/edr-linux-x64-musl@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.11.3.tgz#8cfe408c73bcb9ed5e263910c313866d442f4b48" + integrity sha512-ergXuIb4nIvmf+TqyiDX5tsE49311DrBky6+jNLgsGDTBaN1GS3OFwFS8I6Ri/GGn6xOaT8sKu3q7/m+WdlFzg== + +"@nomicfoundation/edr-win32-x64-msvc@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.11.3.tgz#fb208b94553c7eb22246d73a1ac4de5bfdb97d01" + integrity sha512-snvEf+WB3OV0wj2A7kQ+ZQqBquMcrozSLXcdnMdEl7Tmn+KDCbmFKBt3Tk0X3qOU4RKQpLPnTxdM07TJNVtung== + +"@nomicfoundation/edr@^0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.11.3.tgz#e8b30b868788e45d7a2ee2359a021ef7dcb96952" + integrity sha512-kqILRkAd455Sd6v8mfP3C1/0tCOynJWY+Ir+k/9Boocu2kObCrsFgG+ZWB7fSBVdd9cPVSNrnhWS+V+PEo637g== + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.11.3" + "@nomicfoundation/edr-darwin-x64" "0.11.3" + "@nomicfoundation/edr-linux-arm64-gnu" "0.11.3" + "@nomicfoundation/edr-linux-arm64-musl" "0.11.3" + "@nomicfoundation/edr-linux-x64-gnu" "0.11.3" + "@nomicfoundation/edr-linux-x64-musl" "0.11.3" + "@nomicfoundation/edr-win32-x64-msvc" "0.11.3" "@nomicfoundation/hardhat-chai-matchers@^2.0.8": version "2.0.8" @@ -1835,6 +1819,11 @@ resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz" integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + "@scure/bip32@1.1.5": version "1.1.5" resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" @@ -2332,13 +2321,6 @@ dependencies: fs-extra "^9.1.0" -"@types/bn.js@^4.11.3": - version "4.11.6" - resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - "@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": version "5.1.6" resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz" @@ -2434,11 +2416,6 @@ resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== - "@types/minimatch@*": version "5.1.2" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" @@ -4065,7 +4042,7 @@ bn.js@4.11.6: resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: +bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== @@ -5573,7 +5550,7 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4, elliptic@^6.5.7: +elliptic@^6.4.0, elliptic@^6.5.4, elliptic@^6.5.7: version "6.5.7" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz" integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== @@ -6394,7 +6371,7 @@ ethereum-bloom-filters@^1.0.6: dependencies: "@noble/hashes" "^1.4.0" -ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: +ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== @@ -6425,7 +6402,7 @@ ethereum-cryptography@^1.0.3: "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" -ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz" integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== @@ -6447,27 +6424,6 @@ ethereum-ens@^0.8.0: underscore "^1.8.3" web3 "^1.0.0-beta.34" -ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" @@ -6479,7 +6435,7 @@ ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereum ethereum-cryptography "^0.1.3" rlp "^2.2.4" -ethers@5.7.2, ethers@^5.0.13, ethers@^5.7.0, ethers@^5.7.2: +ethers@5.7.2, ethers@^5.0.13, ethers@^5.7.0, ethers@^5.7.2, ethers@~5.7.0: version "5.7.2" resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -6551,14 +6507,6 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" @@ -6795,6 +6743,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fdir@^6.4.4: + version "6.4.6" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" + integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" @@ -6871,13 +6824,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" @@ -7294,18 +7240,6 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^10.3.10: version "10.4.5" resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" @@ -7547,10 +7481,10 @@ hardhat-deploy-ethers@^0.4.1: resolved "https://registry.npmjs.org/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.4.2.tgz" integrity sha512-AskNH/XRYYYqPT94MvO5s1yMi+/QvoNjS4oU5VcVqfDU99kgpGETl+uIYHIrSXtH5sy7J6gyVjpRMf4x0tjLSQ== -hardhat-deploy@^0.11.45: - version "0.11.45" - resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.45.tgz" - integrity sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w== +hardhat-deploy@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.12.4.tgz#5ebef37f1004f52a74987213b0465ad7c9433fb2" + integrity sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" @@ -7575,7 +7509,7 @@ hardhat-deploy@^0.11.45: match-all "^1.2.6" murmur-128 "^0.2.1" qs "^6.9.4" - zksync-web3 "^0.14.3" + zksync-ethers "^5.0.0" hardhat-gas-reporter@^1.0.8: version "1.0.10" @@ -7586,51 +7520,46 @@ hardhat-gas-reporter@^1.0.8: eth-gas-reporter "^0.2.25" sha1 "^1.1.1" -hardhat@^2.3.3: - version "2.22.11" - resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.22.11.tgz" - integrity sha512-g9xr6BGXbzj2sqG9AjHwqeUOS9v2NwLbuq7rsdjMB2RLWmYp8IFdZnzq8UewwLJisuWgiygB+dwLktjqAbRuOw== +hardhat@^2.26.0: + version "2.26.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.26.1.tgz#c5f7418be0cba5224c6ac42eae3e24db113e55f6" + integrity sha512-CXWuUaTtehxiHPCdlitntctfeYRgujmXkNX5gnrD5jdA6HhRQt+WWBZE/gHXbE29y/wDmmUL2d652rI0ctjqjw== dependencies: + "@ethereumjs/util" "^9.1.0" "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/edr" "^0.5.2" - "@nomicfoundation/ethereumjs-common" "4.0.4" - "@nomicfoundation/ethereumjs-tx" "5.0.4" - "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/edr" "^0.11.3" "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "^5.1.0" adm-zip "^0.4.16" aggregate-error "^3.0.0" ansi-escapes "^4.3.0" boxen "^5.1.2" - chalk "^2.4.2" chokidar "^4.0.0" ci-info "^2.0.0" debug "^4.1.1" enquirer "^2.3.0" env-paths "^2.2.0" ethereum-cryptography "^1.0.3" - ethereumjs-abi "^0.6.8" - find-up "^2.1.0" + find-up "^5.0.0" fp-ts "1.19.3" fs-extra "^7.0.1" - glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" json-stream-stringify "^3.1.4" keccak "^3.0.2" lodash "^4.17.11" + micro-eth-signer "^0.14.0" mnemonist "^0.38.0" mocha "^10.0.0" p-map "^4.0.0" + picocolors "^1.1.0" raw-body "^2.4.1" resolve "1.17.0" semver "^6.3.0" solc "0.8.26" source-map-support "^0.5.13" stacktrace-parser "^0.1.10" + tinyglobby "^0.2.6" tsort "0.0.1" undici "^5.14.0" uuid "^8.3.2" @@ -9257,14 +9186,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" @@ -9512,11 +9433,27 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro-eth-signer@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz#8aa1fe997d98d6bdf42f2071cef7eb01a66ecb22" + integrity sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw== + dependencies: + "@noble/curves" "~1.8.1" + "@noble/hashes" "~1.7.1" + micro-packed "~0.7.2" + micro-ftch@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== +micro-packed@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/micro-packed/-/micro-packed-0.7.3.tgz#59e96b139dffeda22705c7a041476f24cabb12b6" + integrity sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg== + dependencies: + "@scure/base" "~1.2.5" + micro@9.3.5-canary.3: version "9.3.5-canary.3" resolved "https://registry.npmjs.org/micro/-/micro-9.3.5-canary.3.tgz" @@ -10471,13 +10408,6 @@ p-finally@^2.0.0: resolved "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -10492,13 +10422,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" @@ -10548,11 +10471,6 @@ p-timeout@^6.1.2: resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz" integrity sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw== -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" @@ -10812,6 +10730,11 @@ picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1, picomatch@^2.2.2, picomatc resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pidtree@0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" @@ -11757,7 +11680,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.2.3, rlp@^2.2.4: +rlp@^2.2.4: version "2.2.7" resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== @@ -12387,7 +12310,7 @@ string-format@^2.0.0: resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12405,6 +12328,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" @@ -12498,7 +12430,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12519,6 +12451,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" @@ -12856,6 +12795,14 @@ tiny-warning@^1.0.3: resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinyglobby@^0.2.6: + version "0.2.14" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" + integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== + dependencies: + fdir "^6.4.4" + picomatch "^4.0.2" + title-case@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" @@ -13051,21 +12998,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -14340,7 +14277,7 @@ workerpool@^6.5.1: resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -14366,6 +14303,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" @@ -14640,10 +14586,12 @@ yocto-queue@^0.1.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zksync-web3@^0.14.3: - version "0.14.4" - resolved "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz" - integrity sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg== +zksync-ethers@^5.0.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/zksync-ethers/-/zksync-ethers-5.10.0.tgz#3caf25478539a3fd6e170c13555cec6a1dae32e2" + integrity sha512-OAjTGAHF9wbdkRGkj7XZuF/a1Sk/FVbwH4pmLjAKlR7mJ7sQtQhBhrPU2dCc67xLaNvEESPfwil19ES5wooYFg== + dependencies: + ethers "~5.7.0" zustand@4.4.1: version "4.4.1" From 2b992c26f80ac3a398d0ed16f1401939336a1db7 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 22 Jul 2025 12:45:05 +0300 Subject: [PATCH 2/4] feat: enhanced filfox verification --- packages/hardhat/tasks/verify-contract.ts | 151 ++++++++++------------ 1 file changed, 69 insertions(+), 82 deletions(-) diff --git a/packages/hardhat/tasks/verify-contract.ts b/packages/hardhat/tasks/verify-contract.ts index f7409a7..4b55e87 100644 --- a/packages/hardhat/tasks/verify-contract.ts +++ b/packages/hardhat/tasks/verify-contract.ts @@ -18,6 +18,12 @@ interface SolhintData { enabled: boolean; runs: number; }; + evmVersion: string; + outputSelection: Record>; + metadata: { + useLiteralContent: boolean; + }; + remappings: string[]; }; } @@ -29,77 +35,73 @@ interface DeploymentData { task("verify-contract", "Verifies a contract on Filfox") .addParam("contractName", "The name of the contract to verify") - .setAction( - async (taskArgs: VerifyContractParams, hre: HardhatRuntimeEnvironment) => { - const networkName = hre.network.name; - - const { contractName } = taskArgs; - - const verificationData = extractVerificationData( - networkName, - contractName - ); - const url = - networkName === "calibration" - ? "https://calibration.filfox.info/api/v1/tools/verifyContract" - : "https://filfox.info/api/v1/tools/verifyContract"; - const headers = { - "Content-Type": "application/json", - }; - - try { - const response = await fetch(url, { - method: "POST", - headers: headers, - body: JSON.stringify(verificationData), - }); - - const result = await response.json(); - - handleVerificationResult({ - result, - network: networkName, - address: verificationData.address, - }); - } catch (error: any) { - console.error("⚠️ Error verifying contract: ", error.cause); - console.log( - "Please contact us on [Telegram](https://t.me/Filfoxofficial) if you encounter this error." - ); - } + .setAction(async (taskArgs: VerifyContractParams, hre: HardhatRuntimeEnvironment) => { + const networkName = hre.network.name; + const chainId = hre.network.config.chainId; + + if (!chainId) { + throw new Error("Chain ID not found"); } - ); - -function extractVerificationData(network: string, contractName: string) { - const customNetworks = ["calibration", "filecoin"]; - if (!customNetworks.includes(network)) { - throw new Error( - "Use regular hardhat verification for networks other than calibration and filecoin" - ); + + const { contractName } = taskArgs; + + const verificationData = extractVerificationData(chainId, networkName, contractName, hre); + const url = + chainId === 314159 + ? "https://calibration.filfox.info/api/v1/tools/verifyContract" + : chainId === 314 + ? "https://filfox.info/api/v1/tools/verifyContract" + : "Not a filfox network"; + const headers = { + "Content-Type": "application/json", + }; + + try { + const response = await fetch(url, { + method: "POST", + headers: headers, + body: JSON.stringify(verificationData), + }); + + const result = await response.json(); + + handleVerificationResult({ + result, + network: networkName, + address: verificationData.address, + }); + } catch (error: any) { + console.error("⚠️ Error verifying contract: ", error.cause); + console.log("Please contact us on [Telegram](https://t.me/Filfoxofficial) if you encounter this error."); + } + }); + +function extractVerificationData( + chainId: number, + network: string, + contractName: string, + hre: HardhatRuntimeEnvironment, +) { + const customNetworks = [314159, 314]; + if (!customNetworks.includes(chainId)) { + throw new Error("Use regular hardhat verification for networks other than calibration and filecoin"); } const deploymentsPath = `./deployments/${network}/${contractName}.json`; - const deployments: DeploymentData = JSON.parse( - fs.readFileSync(deploymentsPath, "utf8") - ); + const deployments: DeploymentData = JSON.parse(fs.readFileSync(deploymentsPath, "utf8")); const solhintPath = `./deployments/${network}/solcInputs/${deployments.solcInputHash}.json`; const solhint: SolhintData = JSON.parse(fs.readFileSync(solhintPath, "utf8")); // Extract the necessary data from the deployments and solhint files - let sourceFiles = Object.keys(solhint.sources).reduce( - (acc: any, key: string) => { - acc[key] = solhint.sources[key]; // Add other sources + let sourceFiles = Object.keys(solhint.sources).reduce((acc: any, key: string) => { + acc[key] = solhint.sources[key]; // Add other sources return acc; }, {}); - const contractToVerify = Object.keys(sourceFiles).find((key) => - key.includes(contractName + ".sol") - ); + const contractToVerify = Object.keys(sourceFiles).find(key => key.includes(contractName + ".sol")); if (!contractToVerify) { - throw new Error( - `Contract ${contractName} not found in the sources provided.` - ); + throw new Error(`Contract ${contractName} not found in the sources provided.`); } // Ensure the contract source is the first entry const contractSource = sourceFiles[contractToVerify]; @@ -121,10 +123,11 @@ function extractVerificationData(network: string, contractName: string) { const optimize = solhint.settings.optimizer.enabled; const optimizeRuns = solhint.settings.optimizer.runs; const license = ""; - const evmVersion = "default"; - const viaIR = false; + const evmVersion = solhint.settings.evmVersion ?? "default"; + const solidityConfig = hre.userConfig.solidity as any; + const viaIR = !!solidityConfig.settings?.viaIR; const libraries = ""; - const metadata = ""; + const metadata = solhint.settings.metadata ?? ""; return { address: deployments.address, @@ -142,15 +145,7 @@ function extractVerificationData(network: string, contractName: string) { }; } -function handleVerificationResult({ - result, - network, - address, -}: { - result: any; - network: string; - address: string; -}) { +function handleVerificationResult({ result, network, address }: { result: any; network: string; address: string }) { const explorerUrls = { calibration: "https://calibration.filfox.info/en/address/", filecoin: "https://filfox.info/en/address/", @@ -171,9 +166,7 @@ function handleVerificationResult({ case 2: console.log("⚠️ Error: Contract initCode not found."); - console.log( - "Please contact us on [Telegram](https://t.me/Filfoxofficial) if you encounter this error." - ); + console.log("Please contact us on [Telegram](https://t.me/Filfoxofficial) if you encounter this error."); break; case 3: @@ -184,13 +177,9 @@ function handleVerificationResult({ break; case 4: - console.log( - `⚠️ Error: Verify failed for contract "${result.contractName}".` - ); + console.log(`⚠️ Error: Verify failed for contract "${result.contractName}".`); console.log("Compiled bytecode doesn't match the contract's initCode."); - console.log( - "Please make sure all source files and compiler configurations are correct." - ); + console.log("Please make sure all source files and compiler configurations are correct."); break; case 5: @@ -204,9 +193,7 @@ function handleVerificationResult({ break; case 7: - console.log( - "⚠️ Compilation error: Something is wrong with your source files." - ); + console.log("⚠️ Compilation error: Something is wrong with your source files."); console.log(`Error message: ${result.errorMsg}`); console.log("Please fix the issue and try again."); break; From 7e6447dde1abc251b163053ccb1a4a66a29af1e4 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 22 Jul 2025 12:45:37 +0300 Subject: [PATCH 3/4] feat: added blockscout verification --- packages/hardhat/.env.example | 4 ++ packages/hardhat/README.md | 6 +++ packages/hardhat/deploy/00_deal_client.ts | 42 +++++++++++++----- packages/hardhat/deploy/01_deal_info.ts | 45 ++++++++++++------- packages/hardhat/hardhat.config.ts | 54 ++++++++++++----------- 5 files changed, 98 insertions(+), 53 deletions(-) diff --git a/packages/hardhat/.env.example b/packages/hardhat/.env.example index 4ad1dab..68b677d 100644 --- a/packages/hardhat/.env.example +++ b/packages/hardhat/.env.example @@ -1 +1,5 @@ DEPLOYER_PRIVATE_KEY=FILL_IN_PRIVATE_KEY + +VERIFY=true +IGNORE_FILFOX=false +IGNORE_BLOCKSCOUT=false \ No newline at end of file diff --git a/packages/hardhat/README.md b/packages/hardhat/README.md index 5c4b1d9..a40f499 100644 --- a/packages/hardhat/README.md +++ b/packages/hardhat/README.md @@ -19,3 +19,9 @@ For contracts deployed on Filecoin mainnet or Filecoin testnet (calibration) usi ```shell npx hardhat verify-contract --network $networkName --contract-name $contractName ``` + +### enviroment variables + +VERIFY=true // Allows the deployment script to verify +IGNORE_FILFOX=true // Ignores the verification in the filfox explorer +IGNORE_BLOCKSCOUT=true // Ignores the verification on the Blockscout explorer diff --git a/packages/hardhat/deploy/00_deal_client.ts b/packages/hardhat/deploy/00_deal_client.ts index c1e4197..9829f86 100644 --- a/packages/hardhat/deploy/00_deal_client.ts +++ b/packages/hardhat/deploy/00_deal_client.ts @@ -7,9 +7,7 @@ import { HardhatRuntimeEnvironment } from "hardhat/types"; * * @param hre HardhatRuntimeEnvironment object. */ -const deployDealClient: DeployFunction = async function ( - hre: HardhatRuntimeEnvironment -) { +const deployDealClient: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { /* On localhost, the deployer account is the one that comes with Hardhat, which is already funded. @@ -25,10 +23,12 @@ const deployDealClient: DeployFunction = async function ( const { deploy } = hre.deployments; + const args = [] as any; + const DealClient = await deploy("DealClient", { from: deployer, // Contract constructor arguments - args: [], + args, log: true, // autoMine: can be passed to the deploy function to make the deployment process faster on local networks by // automatically mining the contract deployment transaction. There is no effect on live networks. @@ -41,21 +41,39 @@ const deployDealClient: DeployFunction = async function ( // Check if the --verify flag is present const shouldVerify = process.env.VERIFY === "true"; + const ignoreFilfox = process.env.IGNORE_FILFOX === "true"; + const ignoreBlockscout = process.env.IGNORE_BLOCKSCOUT === "true"; if (shouldVerify) { + // Wait for 15 seconds to make sure the contract is deployed + console.log("🕵️‍♂️ Waiting for 15 seconds to make sure the contract deployment is reflected on the explorer..."); + await new Promise(resolve => setTimeout(resolve, 15000)); console.log("🕵️‍♂️ Verifying the contract on the explorer..."); const filecoinNetworks = ["calibration", "filecoin"]; if (filecoinNetworks.includes(hre.network.name)) { // Verify the contract on the filfox explorer - await hre.run("verify-contract", { - contractName: "DealClient", - }); - } else { - await hre.run("verify:verify", { - address: DealClientAddress, - constructorArguments: [deployer], - }); + if (!ignoreFilfox) { + await hre.run("verify-contract", { + contractName: "DealClient", + }); + } + } + if (!ignoreBlockscout) { + try { + await hre.run("verify:verify", { + address: DealClientAddress, + constructorArguments: args, + force: true, + }); + } catch (error) { + console.error("Error verifying contract with force:", error); + console.log("🕵️‍♂️ Verifying the contract on the explorer without forcing verification..."); + await hre.run("verify:verify", { + address: DealClientAddress, + constructorArguments: args, + }); + } } } }; diff --git a/packages/hardhat/deploy/01_deal_info.ts b/packages/hardhat/deploy/01_deal_info.ts index 68215a6..b2ece4e 100644 --- a/packages/hardhat/deploy/01_deal_info.ts +++ b/packages/hardhat/deploy/01_deal_info.ts @@ -7,9 +7,7 @@ import { HardhatRuntimeEnvironment } from "hardhat/types"; * * @param hre HardhatRuntimeEnvironment object. */ -const deployDealInfo: DeployFunction = async function ( - hre: HardhatRuntimeEnvironment -) { +const deployDealInfo: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { /* On localhost, the deployer account is the one that comes with Hardhat, which is already funded. @@ -25,10 +23,12 @@ const deployDealInfo: DeployFunction = async function ( const { deploy } = hre.deployments; + const args = [] as any; + const DealInfo = await deploy("DealInfo", { from: deployer, // Contract constructor arguments - args: [], + args, log: true, // autoMine: can be passed to the deploy function to make the deployment process faster on local networks by // automatically mining the contract deployment transaction. There is no effect on live networks. @@ -40,27 +40,40 @@ const deployDealInfo: DeployFunction = async function ( // Check if the --verify flag is present const shouldVerify = process.env.VERIFY === "true"; + const ignoreFilfox = process.env.IGNORE_FILFOX === "true"; + const ignoreBlockscout = process.env.IGNORE_BLOCKSCOUT === "true"; if (shouldVerify) { // Timeout for 10 Seconds to wait for the contract to be indexed on explorer - console.log( - "⏳ Waiting for 10 seconds for the contract to be indexed on the explorer..." - ); - await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("⏳ Waiting for 15 seconds for the contract to be indexed on the explorer..."); + await new Promise(resolve => setTimeout(resolve, 15000)); console.log("🕵️‍♂️ Verifying the contract on the explorer..."); const filecoinNetworks = ["calibration", "filecoin"]; if (filecoinNetworks.includes(hre.network.name)) { // Verify the contract on the filfox explorer - await hre.run("verify-contract", { - contractName: "DealInfo", - }); - } else { - await hre.run("verify:verify", { - address: DealInfoAddress, - constructorArguments: [deployer], - }); + if (!ignoreFilfox) { + await hre.run("verify-contract", { + contractName: "DealInfo", + }); + } + } + if (!ignoreBlockscout) { + try { + await hre.run("verify:verify", { + address: DealInfoAddress, + constructorArguments: args, + force: true, + }); + } catch (error) { + console.error("Error verifying contract with force:", error); + console.log("🕵️‍♂️ Verifying the contract on the explorer without forcing verification..."); + await hre.run("verify:verify", { + address: DealInfoAddress, + constructorArguments: args, + }); + } } } }; diff --git a/packages/hardhat/hardhat.config.ts b/packages/hardhat/hardhat.config.ts index 0ce05bb..b56481c 100644 --- a/packages/hardhat/hardhat.config.ts +++ b/packages/hardhat/hardhat.config.ts @@ -12,8 +12,6 @@ import { HardhatUserConfig } from "hardhat/config"; import "solidity-coverage"; dotenvConfig(); -const providerApiKey = - process.env.ALCHEMY_API_KEY || "oKxs-03sij-U_N0iOlrSsZFr29-IqbuF"; // If not set, it uses the hardhat account 0 private key. const deployerPrivateKey = process.env.DEPLOYER_PRIVATE_KEY ?? @@ -31,6 +29,7 @@ const config: HardhatUserConfig = { // https://docs.soliditylang.org/en/latest/using-the-compiler.html#optimizer-options runs: 1000, }, + viaIR: true, }, }, defaultNetwork: "calibration", @@ -41,14 +40,6 @@ const config: HardhatUserConfig = { }, }, networks: { - // View the networks that are pre-configured. - // If the network you are looking for is not here you can add new network settings - hardhat: { - forking: { - url: `https://eth-mainnet.alchemyapi.io/v2/${providerApiKey}`, - enabled: process.env.MAINNET_FORKING_ENABLED === "true", - }, - }, filecoin: { url: "https://rpc.ankr.com/filecoin", accounts: [deployerPrivateKey], @@ -56,32 +47,45 @@ const config: HardhatUserConfig = { calibration: { url: "https://rpc.ankr.com/filecoin_testnet", accounts: [deployerPrivateKey], - }, - sepolia: { - url: `https://eth-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - arbitrumSepolia: { - url: `https://arb-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], - }, - optimismSepolia: { - url: `https://opt-sepolia.g.alchemy.com/v2/${providerApiKey}`, - accounts: [deployerPrivateKey], + chainId: 314159, }, }, // configuration for harhdat-verify plugin etherscan: { - apiKey: `${etherscanApiKey}`, + apiKey: { + filecoin: `${"empty"}`, + calibration: `${"empty"}`, + }, + customChains: [ + { + network: "filecoin", + chainId: 314, + urls: { + apiURL: "https://filecoin.blockscout.com/api", + browserURL: "https://filecoin.blockscout.com", + }, + }, + { + network: "calibration", + chainId: 314159, + urls: { + apiURL: "https://filecoin-testnet.blockscout.com/api", + browserURL: "https://filecoin-testnet.blockscout.com", + }, + }, + ], }, - // configuration for etherscan-verify from hardhat-deploy plugin verify: { etherscan: { apiKey: `${etherscanApiKey}`, }, }, sourcify: { - enabled: false, + enabled: true, // verifies both on Sourcify and on Blockscout + // Optional: specify a different Sourcify server + apiUrl: "https://sourcify.dev/server", + // Optional: specify a different Sourcify repository + browserUrl: "https://repo.sourcify.dev", }, }; From 50c038123cd9ce16a655e6c480d9ca9875de56a6 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 22 Jul 2025 12:45:53 +0300 Subject: [PATCH 4/4] chore: formatting --- packages/hardhat/deploy/99_generateTsAbis.ts | 76 ++++++-------------- 1 file changed, 21 insertions(+), 55 deletions(-) diff --git a/packages/hardhat/deploy/99_generateTsAbis.ts b/packages/hardhat/deploy/99_generateTsAbis.ts index 3cd0cd9..1f3e208 100644 --- a/packages/hardhat/deploy/99_generateTsAbis.ts +++ b/packages/hardhat/deploy/99_generateTsAbis.ts @@ -7,8 +7,8 @@ */ import * as fs from "fs"; -import prettier from "prettier"; import { DeployFunction } from "hardhat-deploy/types"; +import prettier from "prettier"; const generatedContractComment = ` /** @@ -23,21 +23,18 @@ const ARTIFACTS_DIR = "./artifacts"; function getDirectories(path: string) { return fs .readdirSync(path, { withFileTypes: true }) - .filter((dirent) => dirent.isDirectory()) - .map((dirent) => dirent.name); + .filter(dirent => dirent.isDirectory()) + .map(dirent => dirent.name); } function getContractNames(path: string) { return fs .readdirSync(path, { withFileTypes: true }) - .filter((dirent) => dirent.isFile() && dirent.name.endsWith(".json")) - .map((dirent) => dirent.name.split(".")[0]); + .filter(dirent => dirent.isFile() && dirent.name.endsWith(".json")) + .map(dirent => dirent.name.split(".")[0]); } -function getActualSourcesForContract( - sources: Record, - contractName: string -) { +function getActualSourcesForContract(sources: Record, contractName: string) { for (const sourcePath of Object.keys(sources)) { const sourceName = sourcePath.split("/").pop()?.split(".sol")[0]; if (sourceName === contractName) { @@ -48,9 +45,7 @@ function getActualSourcesForContract( if (match) { const inheritancePart = match[2]; // Split the inherited contracts by commas to get the list of inherited contracts - const inheritedContracts = inheritancePart - .split(",") - .map((contract) => `${contract.trim()}.sol`); + const inheritedContracts = inheritancePart.split(",").map(contract => `${contract.trim()}.sol`); return inheritedContracts; } @@ -60,24 +55,15 @@ function getActualSourcesForContract( return []; } -function getInheritedFunctions( - sources: Record, - contractName: string -) { +function getInheritedFunctions(sources: Record, contractName: string) { const actualSources = getActualSourcesForContract(sources, contractName); const inheritedFunctions = {} as Record; for (const sourceContractName of actualSources) { - const sourcePath = Object.keys(sources).find((key) => - key.includes(`/${sourceContractName}`) - ); + const sourcePath = Object.keys(sources).find(key => key.includes(`/${sourceContractName}`)); if (sourcePath) { const sourceName = sourcePath?.split("/").pop()?.split(".sol")[0]; - const { abi } = JSON.parse( - fs - .readFileSync(`${ARTIFACTS_DIR}/${sourcePath}/${sourceName}.json`) - .toString() - ); + const { abi } = JSON.parse(fs.readFileSync(`${ARTIFACTS_DIR}/${sourcePath}/${sourceName}.json`).toString()); for (const functionAbi of abi) { if (functionAbi.type === "function") { inheritedFunctions[functionAbi.name] = sourcePath; @@ -91,28 +77,17 @@ function getInheritedFunctions( function getContractDataFromDeployments() { if (!fs.existsSync(DEPLOYMENTS_DIR)) { - throw Error( - "At least one other deployment script should exist to generate an actual contract." - ); + throw Error("At least one other deployment script should exist to generate an actual contract."); } const output = {} as Record; for (const chainName of getDirectories(DEPLOYMENTS_DIR)) { - const chainId = fs - .readFileSync(`${DEPLOYMENTS_DIR}/${chainName}/.chainId`) - .toString(); + const chainId = fs.readFileSync(`${DEPLOYMENTS_DIR}/${chainName}/.chainId`).toString(); const contracts = {} as Record; - for (const contractName of getContractNames( - `${DEPLOYMENTS_DIR}/${chainName}` - )) { + for (const contractName of getContractNames(`${DEPLOYMENTS_DIR}/${chainName}`)) { const { abi, address, metadata } = JSON.parse( - fs - .readFileSync(`${DEPLOYMENTS_DIR}/${chainName}/${contractName}.json`) - .toString() - ); - const inheritedFunctions = getInheritedFunctions( - JSON.parse(metadata).sources, - contractName + fs.readFileSync(`${DEPLOYMENTS_DIR}/${chainName}/${contractName}.json`).toString(), ); + const inheritedFunctions = getInheritedFunctions(JSON.parse(metadata).sources, contractName); contracts[contractName] = { address, abi, inheritedFunctions }; } output[chainId] = contracts; @@ -128,16 +103,9 @@ const generateTsAbis: DeployFunction = async function () { const TARGET_DIR = "../nextjs/contracts/"; const allContractsData = getContractDataFromDeployments(); - const fileContent = Object.entries(allContractsData).reduce( - (content, [chainId, chainConfig]) => { - return `${content}${parseInt(chainId).toFixed(0)}:${JSON.stringify( - chainConfig, - null, - 2 - )},`; - }, - "" - ); + const fileContent = Object.entries(allContractsData).reduce((content, [chainId, chainConfig]) => { + return `${content}${parseInt(chainId).toFixed(0)}:${JSON.stringify(chainConfig, null, 2)},`; + }, ""); if (!fs.existsSync(TARGET_DIR)) { fs.mkdirSync(TARGET_DIR); @@ -149,13 +117,11 @@ const generateTsAbis: DeployFunction = async function () { const deployedContracts = {${fileContent}} as const; \n\n export default deployedContracts satisfies GenericContractsDeclaration`, { parser: "typescript", - } - ) + }, + ), ); - console.log( - `📝 Updated TypeScript contract definition file on ${TARGET_DIR}deployedContracts.ts` - ); + console.log(`📝 Updated TypeScript contract definition file on ${TARGET_DIR}deployedContracts.ts`); }; export default generateTsAbis;