From aa359c745575b1e928827f80d887f2980c542efd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 13:29:09 -0300 Subject: [PATCH 001/174] evm: Adds @types/mocha and @types/chai as devDependencies. --- ethereum/package-lock.json | 28 ++++++++++++++++++++++++++-- ethereum/package.json | 2 ++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index b9e9d40fb3..1c69236f6d 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -22,6 +22,8 @@ "@openzeppelin/cli": "^2.8.2", "@openzeppelin/contracts": "^4.3.1", "@truffle/hdwallet-provider": "^1.7.0", + "@types/chai": "^4.3.5", + "@types/mocha": "^8.2.3", "chai": "^4.3.7", "mocha": "^8.4.0", "truffle": "5.8.4", @@ -7334,6 +7336,12 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, "node_modules/@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -7439,6 +7447,12 @@ "@types/node": "*" } }, + "node_modules/@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, "node_modules/@types/node": { "version": "18.15.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", @@ -13939,7 +13953,6 @@ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", "dev": true, - "hasInstallScript": true, "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -14297,7 +14310,6 @@ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", "dev": true, - "hasInstallScript": true, "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -34070,6 +34082,12 @@ "@types/node": "*" } }, + "@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -34175,6 +34193,12 @@ "@types/node": "*" } }, + "@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, "@types/node": { "version": "18.15.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", diff --git a/ethereum/package.json b/ethereum/package.json index 837710a607..a9cca8a900 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -8,6 +8,8 @@ "@openzeppelin/cli": "^2.8.2", "@openzeppelin/contracts": "^4.3.1", "@truffle/hdwallet-provider": "^1.7.0", + "@types/chai": "^4.3.5", + "@types/mocha": "^8.2.3", "chai": "^4.3.7", "mocha": "^8.4.0", "truffle": "5.8.4", From 4aec174d812fabaa4840fb9eee6a4aa47cfde654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 13:37:57 -0300 Subject: [PATCH 002/174] evm: deployment script improvements. - Adds overrides for polygon and fantom to use legacy tx envelopes to avoid bad gas price feeds in public JSON-RPC endpoints. - Multiplies by a factor of `1.1` the gas estimated to prevent slightly skewed estimations from ruining the pipeline. - Fixes gas price of BSC chains to 3 gwei. - Adds the `LedgerSigner` class to sign with a ledger device. --- ethereum/package-lock.json | 1077 ++++++++++++++++- ethereum/package.json | 1 + .../relayer/config/checkNetworks.ts | 2 +- .../relayer/config/syncContractsJson.ts | 14 +- .../create2Factory/deployCreate2Factory.ts | 6 +- .../configureDeliveryProvider.ts | 31 +- .../deployDeliveryProvider.ts | 12 +- .../readDeliveryProviderContractState.ts | 2 +- .../upgradeDeliveryProvider.ts | 2 +- .../ts-scripts/relayer/helpers/deployments.ts | 214 ++-- ethereum/ts-scripts/relayer/helpers/env.ts | 50 +- .../mockIntegration/deployMockIntegration.ts | 32 +- .../relayer/mockIntegration/messageUtils.ts | 4 +- .../readMockIntegrationState.ts | 4 +- .../wormholeRelayer/deployWormholeRelayer.ts | 3 +- 15 files changed, 1299 insertions(+), 155 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 1c69236f6d..22c50cc26b 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -24,6 +24,7 @@ "@truffle/hdwallet-provider": "^1.7.0", "@types/chai": "^4.3.5", "@types/mocha": "^8.2.3", + "@xlabs-xyz/ledger-signer": "0.0.3", "chai": "^4.3.7", "mocha": "^8.4.0", "truffle": "5.8.4", @@ -3143,6 +3144,257 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@ledgerhq/cryptoassets": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz", + "integrity": "sha512-0ryUC3u50CYXN4bQFMjlXXgID7+v1u/t/rDvmtRETKRxM9zEUDI8bULF5nGyCPR/a4z+I4WAe+GbSzbsGsWAhA==", + "dev": true, + "dependencies": { + "invariant": "2" + } + }, + "node_modules/@ledgerhq/devices": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.3.tgz", + "integrity": "sha512-Q7/vqkGELSBuwFafFoTqlHIRyOjw8JqbSgiQwe2R38xN0RKtKIh+5E6UfMKyoExiq+SrQg0IC8P2LS+XdjOHLw==", + "dev": true, + "dependencies": { + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/devices/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/domain-service": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/domain-service/-/domain-service-1.1.4.tgz", + "integrity": "sha512-jKnKqm/rqyAcDBgI/ZYom9kFDsBQkodxy6E14IEUJ5N8OkbPdHmjRfzn973nc5mTFJIafaifx0Arde0sjrBP9g==", + "dev": true, + "dependencies": { + "@ledgerhq/cryptoassets": "^9.8.0", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/logs": "^6.10.1", + "@ledgerhq/types-live": "^6.35.1", + "axios": "^1.3.4", + "eip55": "^2.1.0", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } + }, + "node_modules/@ledgerhq/domain-service/node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@ledgerhq/domain-service/node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/@ledgerhq/domain-service/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@ledgerhq/errors": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.6.tgz", + "integrity": "sha512-D+r2B09vaRO06wfGoss+rNgwqWSoK0bCtsaJWzlD2hv1zxTtucqVtSztbRFypIqxWTCb3ix5Nh2dWHEJVTp2Xw==", + "dev": true + }, + "node_modules/@ledgerhq/hw-app-eth": { + "version": "6.33.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-6.33.4.tgz", + "integrity": "sha512-87/vW9nZS4AS9j3SwuP7ugd6KOkeSGqIzqGCr3ejWt0o70hgp56/9jK2fcv3oCaESLjjQDyyutrTaKTIds1Y+A==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ledgerhq/cryptoassets": "^9.6.0", + "@ledgerhq/domain-service": "^1.1.2", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/hw-transport-mocker": "^6.27.15", + "@ledgerhq/logs": "^6.10.1", + "axios": "^1.3.4", + "bignumber.js": "^9.1.0", + "crypto-js": "^4.1.1" + } + }, + "node_modules/@ledgerhq/hw-app-eth/node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@ledgerhq/hw-app-eth/node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/@ledgerhq/hw-app-eth/node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/@ledgerhq/hw-app-eth/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "6.28.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.4.tgz", + "integrity": "sha512-fB2H92YQjidmae2GFCmOGPwkZWk0lvTu0tlLlzfiY0wRheAG+DEgjnqhdU8wmydkPLIj0WUjRgldtnJtg/a2iQ==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-mocker": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.15.tgz", + "integrity": "sha512-lE6BioJqkcdeF7ugyIcXVV3QUdXnW8j69u40aK+VTXm5PgGVbpZEW3gtdLsvVUuigX1mu7Hk2pvYFG1nJbni2g==", + "dev": true, + "dependencies": { + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/logs": "^6.10.1" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.15.tgz", + "integrity": "sha512-gycGBlnc8GJPvpbMORJ2kh/Uue8KspBc5sStfc7dY8w9GrUyLUT2XMKuTlljw/qOSBhDBTsjhRXKwxxtHsytuQ==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.15", + "@ledgerhq/logs": "^6.10.1", + "lodash": "^4.17.21", + "node-hid": "^2.1.2", + "usb": "^1.7.0" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.15.tgz", + "integrity": "sha512-cLf/Egp4+WWUlKT5Zi9BZTmlMcdVQKftmnfb/LIeVnoiN2tn6a3vx51+o7voqVzSKWYSQwwwTjVVI4ayf+Av3A==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/logs": "^6.10.1", + "node-hid": "^2.1.2" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==", + "dev": true + }, + "node_modules/@ledgerhq/types-live": { + "version": "6.35.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/types-live/-/types-live-6.35.1.tgz", + "integrity": "sha512-p9xFAV7xKcrUZDO8C0geGPW1CXAWqWogbDrVG8PnCZfmcmH+AVwzHoUcKMi9SzmV3iF8N7IRGe9UVIqqrINthw==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.1.0", + "rxjs": "6" + } + }, + "node_modules/@ledgerhq/types-live/node_modules/bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/@metamask/eth-sig-util": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", @@ -7712,6 +7964,18 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, + "node_modules/@xlabs-xyz/ledger-signer": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@xlabs-xyz/ledger-signer/-/ledger-signer-0.0.3.tgz", + "integrity": "sha512-DSr7YPVTj0mX4lYFmj8PefNcOSTVliUHoWV8BGnWJshEyuqUMgCDKCR+nYw2Hrr0R0xWnDUCacAkPHUw2usVDA==", + "dev": true, + "dependencies": { + "@ledgerhq/hw-app-eth": "6.33.4", + "@ledgerhq/hw-transport": "6.28.4", + "@ledgerhq/hw-transport-node-hid": "6.27.15", + "ethers": "^5.7.0" + } + }, "node_modules/@xpla/xpla.js": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@xpla/xpla.js/-/xpla.js-0.2.3.tgz", @@ -10742,6 +11006,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, "node_modules/crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -11105,6 +11375,15 @@ "node": ">=0.10.0" } }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -11331,6 +11610,15 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "node_modules/eip55": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eip55/-/eip55-2.1.1.tgz", + "integrity": "sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA==", + "dev": true, + "dependencies": { + "keccak": "^3.0.3" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.45", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.45.tgz", @@ -13038,6 +13326,15 @@ "node": ">=0.10.0" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -14401,6 +14698,12 @@ "assert-plus": "^1.0.0" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -15136,6 +15439,15 @@ "node": ">= 0.10" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -17214,6 +17526,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/mkdirp-promise": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", @@ -17722,6 +18040,12 @@ "node": ">=0.10.0" } }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "node_modules/napi-macros": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", @@ -17823,6 +18147,33 @@ "lower-case": "^1.1.1" } }, + "node_modules/node-abi": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", + "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -17854,6 +18205,30 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-hid": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.2.tgz", + "integrity": "sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^3.0.2", + "prebuild-install": "^7.1.1" + }, + "bin": { + "hid-showdevices": "src/show-devices.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-hid/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, "node_modules/node-interval-tree": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz", @@ -19192,6 +19567,84 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prebuild-install/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prebuild-install/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/precond": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", @@ -19338,8 +19791,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "optional": true + "dev": true }, "node_modules/prr": { "version": "1.0.1", @@ -19547,6 +19999,57 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "devOptional": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "devOptional": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -19993,6 +20496,16 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "devOptional": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -21343,6 +21856,59 @@ "node": ">=4.5" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tar-fs/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", @@ -26698,6 +27264,26 @@ "node": ">=0.4.x" } }, + "node_modules/usb": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz", + "integrity": "sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.2.0", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/usb/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -30642,6 +31228,219 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@ledgerhq/cryptoassets": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz", + "integrity": "sha512-0ryUC3u50CYXN4bQFMjlXXgID7+v1u/t/rDvmtRETKRxM9zEUDI8bULF5nGyCPR/a4z+I4WAe+GbSzbsGsWAhA==", + "dev": true, + "requires": { + "invariant": "2" + } + }, + "@ledgerhq/devices": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.3.tgz", + "integrity": "sha512-Q7/vqkGELSBuwFafFoTqlHIRyOjw8JqbSgiQwe2R38xN0RKtKIh+5E6UfMKyoExiq+SrQg0IC8P2LS+XdjOHLw==", + "dev": true, + "requires": { + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/logs": "^6.10.1", + "rxjs": "6", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@ledgerhq/domain-service": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/domain-service/-/domain-service-1.1.4.tgz", + "integrity": "sha512-jKnKqm/rqyAcDBgI/ZYom9kFDsBQkodxy6E14IEUJ5N8OkbPdHmjRfzn973nc5mTFJIafaifx0Arde0sjrBP9g==", + "dev": true, + "requires": { + "@ledgerhq/cryptoassets": "^9.8.0", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/logs": "^6.10.1", + "@ledgerhq/types-live": "^6.35.1", + "axios": "^1.3.4", + "eip55": "^2.1.0", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "dependencies": { + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@ledgerhq/errors": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.12.6.tgz", + "integrity": "sha512-D+r2B09vaRO06wfGoss+rNgwqWSoK0bCtsaJWzlD2hv1zxTtucqVtSztbRFypIqxWTCb3ix5Nh2dWHEJVTp2Xw==", + "dev": true + }, + "@ledgerhq/hw-app-eth": { + "version": "6.33.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-6.33.4.tgz", + "integrity": "sha512-87/vW9nZS4AS9j3SwuP7ugd6KOkeSGqIzqGCr3ejWt0o70hgp56/9jK2fcv3oCaESLjjQDyyutrTaKTIds1Y+A==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/rlp": "^5.5.0", + "@ledgerhq/cryptoassets": "^9.6.0", + "@ledgerhq/domain-service": "^1.1.2", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/hw-transport-mocker": "^6.27.15", + "@ledgerhq/logs": "^6.10.1", + "axios": "^1.3.4", + "bignumber.js": "^9.1.0", + "crypto-js": "^4.1.1" + }, + "dependencies": { + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@ledgerhq/hw-transport": { + "version": "6.28.4", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.4.tgz", + "integrity": "sha512-fB2H92YQjidmae2GFCmOGPwkZWk0lvTu0tlLlzfiY0wRheAG+DEgjnqhdU8wmydkPLIj0WUjRgldtnJtg/a2iQ==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "events": "^3.3.0" + } + }, + "@ledgerhq/hw-transport-mocker": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.15.tgz", + "integrity": "sha512-lE6BioJqkcdeF7ugyIcXVV3QUdXnW8j69u40aK+VTXm5PgGVbpZEW3gtdLsvVUuigX1mu7Hk2pvYFG1nJbni2g==", + "dev": true, + "requires": { + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/logs": "^6.10.1" + } + }, + "@ledgerhq/hw-transport-node-hid": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.15.tgz", + "integrity": "sha512-gycGBlnc8GJPvpbMORJ2kh/Uue8KspBc5sStfc7dY8w9GrUyLUT2XMKuTlljw/qOSBhDBTsjhRXKwxxtHsytuQ==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.15", + "@ledgerhq/logs": "^6.10.1", + "lodash": "^4.17.21", + "node-hid": "^2.1.2", + "usb": "^1.7.0" + } + }, + "@ledgerhq/hw-transport-node-hid-noevents": { + "version": "6.27.15", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.15.tgz", + "integrity": "sha512-cLf/Egp4+WWUlKT5Zi9BZTmlMcdVQKftmnfb/LIeVnoiN2tn6a3vx51+o7voqVzSKWYSQwwwTjVVI4ayf+Av3A==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^8.0.3", + "@ledgerhq/errors": "^6.12.6", + "@ledgerhq/hw-transport": "^6.28.4", + "@ledgerhq/logs": "^6.10.1", + "node-hid": "^2.1.2" + } + }, + "@ledgerhq/logs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", + "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==", + "dev": true + }, + "@ledgerhq/types-live": { + "version": "6.35.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/types-live/-/types-live-6.35.1.tgz", + "integrity": "sha512-p9xFAV7xKcrUZDO8C0geGPW1CXAWqWogbDrVG8PnCZfmcmH+AVwzHoUcKMi9SzmV3iF8N7IRGe9UVIqqrINthw==", + "dev": true, + "requires": { + "bignumber.js": "^9.1.0", + "rxjs": "6" + }, + "dependencies": { + "bignumber.js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "dev": true + } + } + }, "@metamask/eth-sig-util": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", @@ -34459,6 +35258,18 @@ } } }, + "@xlabs-xyz/ledger-signer": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@xlabs-xyz/ledger-signer/-/ledger-signer-0.0.3.tgz", + "integrity": "sha512-DSr7YPVTj0mX4lYFmj8PefNcOSTVliUHoWV8BGnWJshEyuqUMgCDKCR+nYw2Hrr0R0xWnDUCacAkPHUw2usVDA==", + "dev": true, + "requires": { + "@ledgerhq/hw-app-eth": "6.33.4", + "@ledgerhq/hw-transport": "6.28.4", + "@ledgerhq/hw-transport-node-hid": "6.27.15", + "ethers": "^5.7.0" + } + }, "@xpla/xpla.js": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@xpla/xpla.js/-/xpla.js-0.2.3.tgz", @@ -36915,6 +37726,12 @@ "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==" }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -37206,6 +38023,12 @@ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -37399,6 +38222,15 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "eip55": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eip55/-/eip55-2.1.1.tgz", + "integrity": "sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA==", + "dev": true, + "requires": { + "keccak": "^3.0.3" + } + }, "electron-to-chromium": { "version": "1.4.45", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.45.tgz", @@ -38788,6 +39620,12 @@ } } }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -39855,6 +40693,12 @@ "assert-plus": "^1.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -40445,6 +41289,15 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -42107,6 +42960,12 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "mkdirp-promise": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", @@ -42514,6 +43373,12 @@ "to-regex": "^3.0.1" } }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "napi-macros": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", @@ -42600,6 +43465,26 @@ "lower-case": "^1.1.1" } }, + "node-abi": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", + "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", + "dev": true, + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -42626,6 +43511,25 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" }, + "node-hid": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.2.tgz", + "integrity": "sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^3.0.2", + "prebuild-install": "^7.1.1" + }, + "dependencies": { + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + } + } + }, "node-interval-tree": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz", @@ -43762,6 +44666,54 @@ } } }, + "prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + } + } + }, "precond": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", @@ -43870,8 +44822,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "optional": true + "dev": true }, "prr": { "version": "1.0.1", @@ -44030,6 +44981,47 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "devOptional": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "devOptional": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -44401,6 +45393,16 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "devOptional": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -45545,6 +46547,55 @@ } } }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + } + } + }, "tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", @@ -49621,6 +50672,24 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, + "usb": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz", + "integrity": "sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==", + "dev": true, + "requires": { + "node-addon-api": "^4.2.0", + "node-gyp-build": "^4.3.0" + }, + "dependencies": { + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", diff --git a/ethereum/package.json b/ethereum/package.json index a9cca8a900..a4bfef2cfa 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -10,6 +10,7 @@ "@truffle/hdwallet-provider": "^1.7.0", "@types/chai": "^4.3.5", "@types/mocha": "^8.2.3", + "@xlabs-xyz/ledger-signer": "0.0.3", "chai": "^4.3.7", "mocha": "^8.4.0", "truffle": "5.8.4", diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index 3fb504cd8f..57c8bfb574 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -18,7 +18,7 @@ async function main() { console.log("Checking networks before deploying..."); for (const chain of chains) { - const signer = getSigner(chain); + const signer = await getSigner(chain); const network = await signer.provider?.getNetwork(); const balance = await signer.getBalance(); if (!network?.name || !balance) { diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index 7aec58a43a..b734028c07 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -28,14 +28,14 @@ async function main() { const contracts: ContractsJson = JSON.parse(String(blob)); console.log("Old:"); console.log(`${String(blob)}`); - contracts.deliveryProviders = [] as any; - contracts.wormholeRelayers = [] as any; - contracts.mockIntegrations = [] as any; - contracts.create2Factories = [] as any; + contracts.deliveryProviders = []; + contracts.wormholeRelayers = []; + contracts.mockIntegrations = []; + contracts.create2Factories = []; for (const chain of chains) { update(contracts.deliveryProviders, { chainId: chain.chainId, - address: getDeliveryProvider(chain).address, + address: (await getDeliveryProvider(chain)).address, }); update(contracts.wormholeRelayers, { chainId: chain.chainId, @@ -43,11 +43,11 @@ async function main() { }); update(contracts.mockIntegrations, { chainId: chain.chainId, - address: getMockIntegration(chain).address, + address: (await getMockIntegration(chain)).address, }); update(contracts.create2Factories, { chainId: chain.chainId, - address: getCreate2Factory(chain).address, + address: (await getCreate2Factory(chain)).address, }); } const newStr = JSON.stringify(contracts, undefined, 2); diff --git a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts index 0207bd2c96..1928c4138e 100644 --- a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts +++ b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts @@ -1,8 +1,4 @@ -import { - init, - writeOutputFiles, - getOperatingChains, -} from "../helpers/env"; +import { init, writeOutputFiles, getOperatingChains } from "../helpers/env"; import { deployCreate2Factory } from "../helpers/deployments"; const processName = "deployCreate2Factory"; diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 2dfbacc86f..5db1af8bbc 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -10,6 +10,7 @@ import { getDeliveryProviderAddress, getOperatingChains, } from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; import { wait } from "../helpers/utils"; import type { DeliveryProviderStructs } from "../../../ethers-contracts/DeliveryProvider"; @@ -18,12 +19,12 @@ import type { DeliveryProviderStructs } from "../../../ethers-contracts/Delivery * Meant for `config.pricingInfo` */ interface PricingInfo { - chainId: ChainId - deliverGasOverhead: BigNumberish - updatePriceGas: BigNumberish - updatePriceNative: BigNumberish - maximumBudget: BigNumberish -}; + chainId: ChainId; + deliverGasOverhead: BigNumberish; + updatePriceGas: BigNumberish; + updatePriceNative: BigNumberish; + maximumBudget: BigNumberish; +} const processName = "configureDeliveryProvider"; init(); @@ -40,8 +41,10 @@ async function run() { } async function configureChainsDeliveryProvider(chain: ChainInfo) { - console.log("about to perform DeliveryProvider configuration for chain " + chain.chainId); - const deliveryProvider = getDeliveryProvider(chain); + console.log( + "about to perform DeliveryProvider configuration for chain " + chain.chainId + ); + const deliveryProvider = await getDeliveryProvider(chain); const coreRelayer = await getWormholeRelayerAddress(chain); const thisChainsConfigInfo = config.addresses.find( @@ -82,7 +85,7 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { const targetChainProviderAddress = getDeliveryProviderAddress(targetChain); const remoteDeliveryProvider = "0x" + tryNativeToHexString(targetChainProviderAddress, "ethereum"); - const chainConfigUpdate = { + const chainConfigUpdate: DeliveryProviderStructs.UpdateStruct = { chainId: targetChain.chainId, updateAssetConversionBuffer: true, updateDeliverGasOverhead: true, @@ -93,7 +96,6 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { isSupported: true, buffer: 5, bufferDenominator: 100, - newWormholeFee: 0, newGasOverhead: targetChainPriceUpdate.deliverGasOverhead, gasPrice: targetChainPriceUpdate.updatePriceGas, nativeCurrencyPrice: targetChainPriceUpdate.updatePriceNative, @@ -102,7 +104,14 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { }; updates.push(chainConfigUpdate); } - await deliveryProvider.updateConfig(updates, coreConfig).then(wait); + + const overrides = await buildOverrides( + () => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), + chain + ); + await deliveryProvider + .updateConfig(updates, coreConfig, overrides) + .then(wait); console.log("done with DeliveryProvider configuration on " + chain.chainId); } diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index 14fc96e953..e01b2d9da4 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -3,23 +3,15 @@ import { deployDeliveryProviderProxy, deployDeliveryProviderSetup, } from "../helpers/deployments"; -import { - getOperatingChains, - getSigner, - init, - loadChains, - loadPrivateKey, - writeOutputFiles, -} from "../helpers/env"; +import { Deployment, getOperatingChains, init, writeOutputFiles } from "../helpers/env"; const processName = "deployDeliveryProvider"; init(); const chains = getOperatingChains(); -const privateKey = loadPrivateKey(); async function run() { console.log(`Start ${processName}!`); - const output: any = { + const output: Record = { deliveryProviderImplementations: [], deliveryProviderSetups: [], deliveryProviderProxies: [], diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts b/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts index 8311fc4882..a9a26e82c2 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts @@ -50,7 +50,7 @@ async function readState( ); try { - const deliveryProvider = getDeliveryProvider(chain, getProvider(chain)); + const deliveryProvider = await getDeliveryProvider(chain, getProvider(chain)); const contractAddress = getDeliveryProviderAddress(chain); console.log("Querying Relay Provider for code"); const provider = getProvider(chain); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts index 83d35c04e5..8c76da0f1c 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts @@ -32,7 +32,7 @@ async function run() { async function upgradeDeliveryProvider(chain: ChainInfo, newImpl: Deployment) { console.log("About to upgrade relay provider for chain " + chain.chainId); - const provider = getDeliveryProvider(chain); + const provider = await getDeliveryProvider(chain); const tx = await provider.upgrade(chain.chainId, newImpl.address); await tx.wait(); console.log("Successfully upgraded relay provider " + chain.chainId); diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index a0e942ca92..3d218a07de 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -1,8 +1,11 @@ -import { DeliveryProviderProxy__factory } from "../../../ethers-contracts"; -import { DeliveryProviderSetup__factory } from "../../../ethers-contracts"; -import { DeliveryProviderImplementation__factory } from "../../../ethers-contracts"; -import { MockRelayerIntegration__factory } from "../../../ethers-contracts"; -import { WormholeRelayer__factory } from "../../../ethers-contracts"; +import { + DeliveryProviderProxy__factory, + DeliveryProviderSetup__factory, + DeliveryProviderImplementation__factory, + MockRelayerIntegration__factory, + WormholeRelayer__factory, + Create2Factory__factory, +} from "../../../ethers-contracts"; import { ChainInfo, @@ -12,7 +15,6 @@ import { getCreate2Factory, } from "./env"; import { ethers } from "ethers"; -import { Create2Factory__factory } from "../../../ethers-contracts"; import { wait } from "./utils"; export const setupContractSalt = Buffer.from("0xSetup"); @@ -22,42 +24,34 @@ export async function deployDeliveryProviderImplementation( chain: ChainInfo ): Promise { console.log("deployDeliveryProviderImplementation " + chain.chainId); - const signer = getSigner(chain); - - const contractInterface = DeliveryProviderImplementation__factory.createInterface(); - const bytecode = DeliveryProviderImplementation__factory.bytecode; - //@ts-ignore - const factory = new ethers.ContractFactory( - contractInterface, - bytecode, - signer - ); - const contract = await factory.deploy(); - return await contract.deployed().then((result) => { - console.log("Successfully deployed contract at " + result.address); - return { address: result.address, chainId: chain.chainId }; - }); + const signer = await getSigner(chain); + const factory = new DeliveryProviderImplementation__factory(signer); + + const overrides = await buildOverridesDeploy(factory, chain, []); + const contract = await factory.deploy(overrides); + const receipt = await contract.deployTransaction.wait(); + console.log("Successfully deployed contract at " + receipt.contractAddress); + return { address: receipt.contractAddress, chainId: chain.chainId }; } export async function deployDeliveryProviderSetup( chain: ChainInfo ): Promise { console.log("deployDeliveryProviderSetup " + chain.chainId); - const signer = getSigner(chain); - const contractInterface = DeliveryProviderSetup__factory.createInterface(); - const bytecode = DeliveryProviderSetup__factory.bytecode; - //@ts-ignore - const factory = new ethers.ContractFactory( - contractInterface, - bytecode, - signer - ); - const contract = await factory.deploy(); - return await contract.deployed().then((result) => { - console.log("Successfully deployed contract at " + result.address); - return { address: result.address, chainId: chain.chainId }; - }); + + const signer = await getSigner(chain); + const factory = new DeliveryProviderSetup__factory(signer); + + const overrides = await buildOverridesDeploy(factory, chain, []); + const contract = await factory.deploy(overrides); + const receipt = await contract.deployTransaction.wait(); + console.log("Successfully deployed contract at " + receipt.contractAddress); + return { address: receipt.contractAddress, chainId: chain.chainId }; } + +/** + * Deploys `DeliveryProvider` proxy with the old (account, nonce) tuple hashing creation mechanism. + */ export async function deployDeliveryProviderProxy( chain: ChainInfo, deliveryProviderSetupAddress: string, @@ -65,31 +59,27 @@ export async function deployDeliveryProviderProxy( ): Promise { console.log("deployDeliveryProviderProxy " + chain.chainId); - const signer = getSigner(chain); - const contractInterface = DeliveryProviderProxy__factory.createInterface(); - const bytecode = DeliveryProviderProxy__factory.bytecode; - //@ts-ignore - const factory = new ethers.ContractFactory( - contractInterface, - bytecode, - signer - ); + const signer = await getSigner(chain); + const factory = new DeliveryProviderProxy__factory(signer); - let ABI = ["function setup(address,uint16)"]; - let iface = new ethers.utils.Interface(ABI); - let encodedData = iface.encodeFunctionData("setup", [ + const setupInterface = DeliveryProviderSetup__factory.createInterface(); + const encodedData = setupInterface.encodeFunctionData("setup", [ deliveryProviderImplementationAddress, chain.chainId, ]); + const overrides = await buildOverridesDeploy(factory, chain, [ + deliveryProviderSetupAddress, + encodedData, + ]); const contract = await factory.deploy( deliveryProviderSetupAddress, - encodedData + encodedData, + overrides ); - return await contract.deployed().then((result) => { - console.log("Successfully deployed contract at " + result.address); - return { address: result.address, chainId: chain.chainId }; - }); + const receipt = await contract.deployTransaction.wait(); + console.log("Successfully deployed contract at " + receipt.contractAddress); + return { address: receipt.contractAddress, chainId: chain.chainId }; } export async function deployMockIntegration( @@ -97,34 +87,41 @@ export async function deployMockIntegration( ): Promise { console.log("deployMockIntegration " + chain.chainId); - let signer = getSigner(chain); - const contractInterface = MockRelayerIntegration__factory.createInterface(); - const bytecode = MockRelayerIntegration__factory.bytecode; - const factory = new ethers.ContractFactory( - contractInterface, - bytecode, - signer - ); + const signer = await getSigner(chain); + const factory = new MockRelayerIntegration__factory(signer); + + const wormholeRelayerAddress = await getWormholeRelayerAddress(chain); + const overrides = await buildOverridesDeploy(factory, chain, [ + chain.wormholeAddress, + wormholeRelayerAddress, + ]); const contract = await factory.deploy( chain.wormholeAddress, - await getWormholeRelayerAddress(chain) + wormholeRelayerAddress, + overrides ); - return await contract.deployed().then((result) => { - console.log("Successfully deployed contract at " + result.address); - return { address: result.address, chainId: chain.chainId }; - }); + const receipt = await contract.deployTransaction.wait(); + console.log("Successfully deployed contract at " + receipt.contractAddress); + return { address: receipt.contractAddress, chainId: chain.chainId }; } +/** + * Deploys `Create2Factory` with the old (account, nonce) tuple hashing creation mechanism. + * To achieve same address multichain deployments, ensure that the + * same (address, nonce) tx pair creates the factory across all target chains. + */ export async function deployCreate2Factory( chain: ChainInfo ): Promise { console.log("deployCreate2Factory " + chain.chainId); - const result = await new Create2Factory__factory(getSigner(chain)) - .deploy() - .then(deployed); - console.log(`Successfully deployed contract at ${result.address}`); - return { address: result.address, chainId: chain.chainId }; + const signer = await getSigner(chain); + const factory = new Create2Factory__factory(signer); + + const overrides = await buildOverridesDeploy(factory, chain, []); + const contract = await factory.deploy(overrides).then(deployed); + console.log(`Successfully deployed contract at ${contract.address}`); + return { address: contract.address, chainId: chain.chainId }; } export async function deployWormholeRelayerImplementation( @@ -132,14 +129,23 @@ export async function deployWormholeRelayerImplementation( ): Promise { console.log("deployWormholeRelayerImplementation " + chain.chainId); - const result = await new WormholeRelayer__factory(getSigner(chain)) - .deploy(chain.wormholeAddress) + const signer = await getSigner(chain); + const factory = new WormholeRelayer__factory(signer); + + const overrides = await buildOverridesDeploy(factory, chain, [ + chain.wormholeAddress, + ]); + const result = await new WormholeRelayer__factory(signer) + .deploy(chain.wormholeAddress, overrides) .then(deployed); console.log("Successfully deployed contract at " + result.address); return { address: result.address, chainId: chain.chainId }; } +/** + * Deploys `WormholeRelayer` proxy with the CREATE2 factory. + */ export async function deployWormholeRelayerProxy( chain: ChainInfo, coreRelayerImplementationAddress: string, @@ -147,14 +153,28 @@ export async function deployWormholeRelayerProxy( ): Promise { console.log("deployWormholeRelayerProxy " + chain.chainId); - const create2Factory = getCreate2Factory(chain); + const create2Factory = await getCreate2Factory(chain); const initData = WormholeRelayer__factory.createInterface().encodeFunctionData( "initialize", [ethers.utils.getAddress(defaultDeliveryProvider)] ); + const overrides = await buildOverrides( + () => + create2Factory.estimateGas.create2Proxy( + proxyContractSalt, + coreRelayerImplementationAddress, + initData + ), + chain + ); const rx = await create2Factory - .create2Proxy(proxyContractSalt, coreRelayerImplementationAddress, initData) + .create2Proxy( + proxyContractSalt, + coreRelayerImplementationAddress, + initData, + overrides + ) .then(wait); let proxyAddress: string; @@ -166,8 +186,9 @@ export async function deployWormholeRelayerProxy( } } catch (e) {} } + const signer = await getSigner(chain); const computedAddr = await create2Factory.computeProxyAddress( - getSigner(chain).address, + await signer.getAddress(), proxyContractSalt ); if (proxyAddress! !== computedAddr) { @@ -179,3 +200,46 @@ export async function deployWormholeRelayerProxy( } const deployed = (x: ethers.Contract) => x.deployed(); + +const estimateGasDeploy = async ( + factory: ethers.ContractFactory, + args: unknown[] +): Promise => { + const deployTxArgs = factory.getDeployTransaction(...args); + return factory.signer.estimateGas(deployTxArgs); +}; + +const buildOverridesDeploy = async ( + factory: ethers.ContractFactory, + chain: ChainInfo, + args: unknown[] +): Promise => { + return buildOverrides(() => estimateGasDeploy(factory, args), chain); +}; + +async function overshootEstimationGas( + estimate: () => Promise +): Promise { + const gasEstimate = await estimate(); + // we multiply gas estimation by a factor 1.1 to avoid slightly skewed estimations from breaking transactions. + return gasEstimate.mul(1100).div(1000); +} + +export async function buildOverrides( + estimate: () => Promise, + chain: ChainInfo +): Promise { + const overrides: ethers.Overrides = { + gasLimit: await overshootEstimationGas(estimate), + }; + // If this is Polygon or Fantom, use the legacy tx envelope to avoid bad gas price feeds. + if (chain.chainId === 5 || chain.chainId === 10) { + overrides.type = 0; + } else if (chain.chainId === 4) { + // This is normally autodetected in bsc but we want to set the gas price to a fixed value. + // We need to ensure we are using the correct tx envelope in that case. + overrides.type = 0; + overrides.gasPrice = ethers.utils.parseUnits("3", "gwei"); + } + return overrides; +} diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index fc6a11ef8b..c702ef0144 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -13,7 +13,7 @@ import { Create2Factory, Create2Factory__factory, } from "../../../ethers-contracts"; -import { proxyContractSalt, setupContractSalt } from "./deployments"; +import { proxyContractSalt } from "./deployments"; export type ChainInfo = { evmNetworkId: number; @@ -279,7 +279,7 @@ export function loadGuardianKeys(): string[] { return output; } -export function writeOutputFiles(output: any, processName: string) { +export function writeOutputFiles(output: unknown, processName: string) { fs.mkdirSync(`./ts-scripts/relayer/output/${env}/${processName}`, { recursive: true, }); @@ -295,16 +295,27 @@ export function writeOutputFiles(output: any, processName: string) { ); } -export function getSigner(chain: ChainInfo): ethers.Wallet { - let provider = getProvider(chain); - let signer = new ethers.Wallet(loadPrivateKey(), provider); +export async function getSigner(chain: ChainInfo): Promise { + const provider = getProvider(chain); + const privateKey = loadPrivateKey(); + + if (privateKey === "ledger") { + if (process.env.LEDGER_BIP32_PATH === undefined) { + throw new Error(`Missing BIP32 derivation path. +With ledger devices the path needs to be specified in env var 'LEDGER_BIP32_PATH'.`); + } + const { LedgerSigner } = await import("@xlabs-xyz/ledger-signer"); + return LedgerSigner.create(provider, process.env.LEDGER_BIP32_PATH); + } + + const signer = new ethers.Wallet(privateKey, provider); return signer; } export function getProvider( chain: ChainInfo ): ethers.providers.StaticJsonRpcProvider { - let provider = new ethers.providers.StaticJsonRpcProvider( + const provider = new ethers.providers.StaticJsonRpcProvider( loadChains().find((x: any) => x.chainId == chain.chainId)?.rpc || "" ); @@ -335,14 +346,14 @@ export function loadGuardianRpc(): string { return chain.guardianRPC; } -export function getDeliveryProvider( +export async function getDeliveryProvider( chain: ChainInfo, provider?: ethers.providers.StaticJsonRpcProvider -): DeliveryProvider { +): Promise { const thisChainsProvider = getDeliveryProviderAddress(chain); const contract = DeliveryProvider__factory.connect( thisChainsProvider, - provider || getSigner(chain) + provider || await getSigner(chain) ); return contract; } @@ -378,12 +389,13 @@ export async function getWormholeRelayerAddress( } if (!wormholeRelayerAddressesCache[chain.chainId]) { - const create2Factory = getCreate2Factory(chain); - const signer = getSigner(chain).address; + const create2Factory = await getCreate2Factory(chain); + const signer = await getSigner(chain); + const address = await signer.getAddress(); wormholeRelayerAddressesCache[ chain.chainId - ] = await create2Factory.computeProxyAddress(signer, proxyContractSalt); + ] = await create2Factory.computeProxyAddress(address, proxyContractSalt); } return wormholeRelayerAddressesCache[chain.chainId]!; @@ -396,7 +408,7 @@ export async function getWormholeRelayer( const thisChainsRelayer = await getWormholeRelayerAddress(chain); return WormholeRelayer__factory.connect( thisChainsRelayer, - provider || getSigner(chain) + provider || await getSigner(chain) ); } @@ -413,11 +425,13 @@ export function getMockIntegrationAddress(chain: ChainInfo): string { return thisMock; } -export function getMockIntegration(chain: ChainInfo): MockRelayerIntegration { +export async function getMockIntegration( + chain: ChainInfo +): Promise { const thisIntegration = getMockIntegrationAddress(chain); const contract = MockRelayerIntegration__factory.connect( thisIntegration, - getSigner(chain) + await getSigner(chain) ); return contract; } @@ -435,8 +449,10 @@ export function getCreate2FactoryAddress(chain: ChainInfo): string { return address; } -export const getCreate2Factory = (chain: ChainInfo): Create2Factory => +export const getCreate2Factory = async ( + chain: ChainInfo +): Promise => Create2Factory__factory.connect( getCreate2FactoryAddress(chain), - getSigner(chain) + await getSigner(chain) ); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 0ac296d1af..c8e94cf6ae 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -7,13 +7,9 @@ import { getOperatingChains, getMockIntegrationAddress, } from "../helpers/env"; -import { deployMockIntegration } from "../helpers/deployments"; -import { BigNumber, BigNumberish, BytesLike } from "ethers"; -import { - tryNativeToHexString, - tryNativeToUint8Array, -} from "@certusone/wormhole-sdk"; -import { MockRelayerIntegration__factory } from "../../../ethers-contracts"; +import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; +import type { BigNumberish, BytesLike } from "ethers"; +import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { wait } from "../helpers/utils"; const processName = "deployMockIntegration"; @@ -27,21 +23,19 @@ async function run() { mockIntegrations: [] as Deployment[], }; - for (let i = 0; i < operatingChains.length; i++) { - const mockIntegration = await deployMockIntegration(operatingChains[i]); + for (const chain of operatingChains) { + const mockIntegration = await deployMockIntegration(chain); output.mockIntegrations.push(mockIntegration); } writeOutputFiles(output, processName); - for (let i = 0; i < operatingChains.length; i++) { - console.log( - `Registering emitters for chainId ${operatingChains[i].chainId}` - ); + for (const chain of operatingChains) { + console.log(`Registering emitters for chainId ${chain.chainId}`); // note: must use useLastRun = true - const mockIntegration = getMockIntegration(operatingChains[i]); + const mockIntegration = await getMockIntegration(chain); - const arg: { + const emitters: { chainId: BigNumberish; addr: BytesLike; }[] = chains.map((c, j) => ({ @@ -50,9 +44,11 @@ async function run() { "0x" + tryNativeToHexString(getMockIntegrationAddress(c), "ethereum"), })); - await mockIntegration - .registerEmitters(arg, { gasLimit: 500000 }) - .then(wait); + const overrides = await buildOverrides( + () => mockIntegration.estimateGas.registerEmitters(emitters), + chain + ); + await mockIntegration.registerEmitters(emitters, overrides).then(wait); } } diff --git a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts index 7f7e9ae4c9..d77f5546f9 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts @@ -27,7 +27,7 @@ export async function sendMessage( ](targetChain.chainId, 0, 2000000, sourceProvider); console.log("relay quote: " + relayQuote); - const mockIntegration = getMockIntegration(sourceChain); + const mockIntegration = await getMockIntegration(sourceChain); const targetAddress = getMockIntegrationAddress(targetChain); const message = await mockIntegration.getMessage(); @@ -81,7 +81,7 @@ async function queryMessageOnTarget( targetChain: ChainInfo ): Promise { let messageHistory: string[] = []; - const targetIntegration = getMockIntegration(targetChain); + const targetIntegration = await getMockIntegration(targetChain); let notFound = true; for (let i = 0; i < 20 && notFound; i++) { diff --git a/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts b/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts index 534356fcc3..41e0ae9ddc 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts @@ -29,7 +29,7 @@ async function run() { type MockIntegrationContractState = { chainId: number; contractAddress: string; - messageHistory: string[][]; + messageHistory: string[]; registeredContracts: { chainId: number; contract: string }[]; }; @@ -41,7 +41,7 @@ async function readState( ); try { - const mockIntegration = getMockIntegration(chain); + const mockIntegration = await getMockIntegration(chain); const contractAddress = mockIntegration.address; const messageHistory = await mockIntegration.getMessageHistory(); const registeredContracts: { chainId: number; contract: string }[] = []; diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index a690055803..4208e22e8d 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -7,6 +7,7 @@ import { writeOutputFiles, getDeliveryProviderAddress, getOperatingChains, + Deployment, } from "../helpers/env"; const processName = "deployWormholeRelayer"; @@ -16,7 +17,7 @@ const chains = getOperatingChains(); async function run() { console.log("Start! " + processName); - const output: any = { + const output: Record = { wormholeRelayerImplementations: [], wormholeRelayerProxies: [], }; From 1832d4b5f2aa9f27c914f8fb3184e069db6df641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 19:49:17 -0300 Subject: [PATCH 003/174] evm: uses @openzeppelin/contracts v4.9.1 in forge build pipeline. --- ethereum/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/Makefile b/ethereum/Makefile index 91d17b7ffa..701c593fca 100644 --- a/ethereum/Makefile +++ b/ethereum/Makefile @@ -38,7 +38,7 @@ lib/forge-std: forge install foundry-rs/forge-std@v1.5.5 --no-git --no-commit lib/openzeppelin-contracts: - forge install openzeppelin/openzeppelin-contracts@0457042d93d9dfd760dbaa06a4d2f1216fdbe297 --no-git --no-commit + forge install openzeppelin/openzeppelin-contracts@v4.9.1 --no-git --no-commit dependencies: node_modules forge_dependencies From 2fba200b26608c789d91f64ebba2f000164eeb52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 19:51:47 -0300 Subject: [PATCH 004/174] evm: adds tsx as devDependency. --- ethereum/package-lock.json | 746 +++++++++++++++++++++++++++++++++++++ ethereum/package.json | 3 +- 2 files changed, 748 insertions(+), 1 deletion(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 22c50cc26b..812924904a 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -31,6 +31,7 @@ "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "ts-node": "^10.9.1", + "tsx": "^3.12.7", "typescript": "^4.9.5" } }, @@ -1496,6 +1497,388 @@ "node": ">=12" } }, + "node_modules/@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "dev": true, + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "dev": true, + "dependencies": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "dev": true, + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@ethereumjs/common": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", @@ -11929,6 +12312,43 @@ "ext": "^1.1.2" } }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -14017,6 +14437,19 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -14682,6 +15115,18 @@ "node": ">=6" } }, + "node_modules/get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -20342,6 +20787,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -26215,6 +26669,23 @@ "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", "dev": true }, + "node_modules/tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "dev": true, + "dependencies": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5" + }, + "bin": { + "tsx": "dist/cli.js" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -27520,6 +27991,24 @@ "node": ">=0.10.0" } }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/watchpack-chokidar2/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -29915,6 +30404,190 @@ "@jridgewell/trace-mapping": "0.3.9" } }, + "@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "dev": true, + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "dev": true, + "requires": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "dev": true, + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "dev": true, + "optional": true + }, "@ethereumjs/common": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", @@ -38496,6 +39169,36 @@ "ext": "^1.1.2" } }, + "esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -40195,6 +40898,12 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -40680,6 +41389,15 @@ "pump": "^3.0.0" } }, + "get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -45268,6 +45986,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -49798,6 +50522,18 @@ "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", "dev": true }, + "tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "dev": true, + "requires": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5", + "fsevents": "~2.3.2" + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -50888,6 +51624,16 @@ "to-regex-range": "^2.1.0" } }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", diff --git a/ethereum/package.json b/ethereum/package.json index a4bfef2cfa..fe05a04b0f 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -17,6 +17,7 @@ "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "ts-node": "^10.9.1", + "tsx": "^3.12.7", "typescript": "^4.9.5" }, "scripts": { @@ -37,7 +38,7 @@ "deploy-relayers-evm1": "ENV=kubernetes CONTAINER=evm1 bash ./ts-scripts/relayer/shell/deployInContainer.sh", "deploy-relayers-evm2": "ENV=kubernetes CONTAINER=evm2 bash ./ts-scripts/relayer/shell/deployInContainer.sh", "typecheck": "tsc --noEmit --skipLibCheck" - }, + }, "author": "", "license": "ISC", "dependencies": { From 643b664ffd8cce993f2750acdb3d7f3dd0c5ded9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 19:57:38 -0300 Subject: [PATCH 005/174] evm: adds debugging symbols and metadata to production builds. --- ethereum/foundry.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/ethereum/foundry.toml b/ethereum/foundry.toml index 32faa6f4b1..4c846dab4f 100644 --- a/ethereum/foundry.toml +++ b/ethereum/foundry.toml @@ -27,5 +27,6 @@ multiline_func_header = "params_first" [profile.production] via_ir = true +extra_output = ["metadata", "storageLayout", "evm.deployedBytecode.immutableReferences"] # See more config options https://github.com/foundry-rs/foundry/tree/master/config From c5135f09a0ba6fb7424219d68e5a585d26517acd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 15 Jun 2023 23:36:24 -0300 Subject: [PATCH 006/174] evm: adds deployment scripts for generic relayers in mainnet-like envs. --- ethereum/package.json | 3 ++- .../ts-scripts/relayer/shell/deployConfigureMainnet.sh | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh diff --git a/ethereum/package.json b/ethereum/package.json index fe05a04b0f..dcc45eac09 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -22,7 +22,7 @@ }, "scripts": { "build:core": "truffle compile", - "build:forge": "if [ \"$DEV\" = \"True\" ]; then forge build; else forge build --via-ir; fi", + "build:forge": "if [ \"$DEV\" = \"True\" ]; then forge build; else FOUNDRY_PROFILE=production forge build; fi", "build": "npm run build:core && npm run build:forge && typechain --target=ethers-v5 --out-dir=./ethers-contracts \"build-forge/!(test).sol/*.json\"&& npm run erase-types", "erase-types": "ts-node ./ts-scripts/relayer/eraseTypes.ts ./contracts/interfaces/relayer/IDeliveryProviderTyped.sol ./contracts/interfaces/relayer/IWormholeRelayerTyped.sol", "test": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle test --network test --compile-none", @@ -32,6 +32,7 @@ "deploy-read-only": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle migrate --f 1 --to 2 --compile-none", "deploy-bridges-only": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle migrate --f 3 --to 4 --compile-none", "deploy_weth9": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle migrate --f 9 --compile-none", + "deploy-relayers-mainnet": "DEV=False npm run build && ENV=mainnet bash ./ts-scripts/relayer/shell/deployConfigureMainnet.sh", "verify": "patch -u -f node_modules/truffle-plugin-verify/constants.js -i truffle-verify-constants.patch; truffle run verify $npm_config_module@$npm_config_contract_address --network $npm_config_network", "verify-token": "patch -u -f node_modules/truffle-plugin-verify/constants.js -i truffle-verify-constants.patch; truffle run verify BridgeToken@$npm_config_contract_address --forceConstructorArgs string:$npm_config_constructor_args --network $npm_config_network", "abigen": "truffle run abigen", diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh new file mode 100644 index 0000000000..5de1e8e9f8 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -0,0 +1,9 @@ + +# This pipeline doesn't attempt to sign governance VAAs since those need to be signed by the guardians. +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ + && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ + && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts From a9c1d198e4056cdf2483c6080ec90b30672c9371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 16 Jun 2023 13:55:41 -0300 Subject: [PATCH 007/174] gRelayer: separates out create2 factory deploy step. This allows using a separate account easily. --- .../ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh | 3 +++ ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100755 ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh mode change 100644 => 100755 ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh new file mode 100755 index 0000000000..4c0b3090d3 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh @@ -0,0 +1,3 @@ + +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ + && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh old mode 100644 new mode 100755 index 5de1e8e9f8..35f3913a92 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -1,7 +1,6 @@ # This pipeline doesn't attempt to sign governance VAAs since those need to be signed by the guardians. npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ - && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ From 12cf96453ca190bbf06b94b098dfc3b13879bf39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 16 Jun 2023 15:36:06 -0300 Subject: [PATCH 008/174] gRelayer: sets override for Arbitrum gas price. --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 3d218a07de..fc088df153 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -240,6 +240,11 @@ export async function buildOverrides( // We need to ensure we are using the correct tx envelope in that case. overrides.type = 0; overrides.gasPrice = ethers.utils.parseUnits("3", "gwei"); + } else if (chain.chainId === 23) { + // Arbitrum gas price feeds are excessive on public endpoints too apparently. + overrides.type = 2; + overrides.maxFeePerGas = ethers.utils.parseUnits("0.3", "gwei"); + overrides.maxPriorityFeePerGas = 0; } return overrides; } From ec30af26c3ac87394471825031ce5052cb99f11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 16 Jun 2023 15:36:42 -0300 Subject: [PATCH 009/174] gRelayer: adds chain id to check networks console output. --- ethereum/ts-scripts/relayer/config/checkNetworks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index 57c8bfb574..b247e2f6da 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -28,7 +28,7 @@ async function main() { process.exit(1); } console.log(`Balance ${balance.toString()}`); - console.log(`Network ${network.name} checked`); + console.log(`Network ${network.name} (${chain.chainId}) checked`); } console.log(""); console.log("Networks checked"); From 46a7ca333fec2278b5b46f670187d16d6c9f7b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 16 Jun 2023 15:38:02 -0300 Subject: [PATCH 010/174] gRelayer: mainnet config + deployment output. --- .../relayer/config/mainnet/chains.json | 76 ++++++++ .../relayer/config/mainnet/contracts.json | 172 +++++++++++++++++ .../configureDeliveryProvider.json | 176 ++++++++++++++++++ 3 files changed, 424 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/config/mainnet/chains.json create mode 100644 ethereum/ts-scripts/relayer/config/mainnet/contracts.json create mode 100644 ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json new file mode 100644 index 0000000000..6780176956 --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -0,0 +1,76 @@ +{ + "guardianSetIndex": 3, + "description": "This file contains the chains against which all the scripts should run.", + "chains": [ + { + "description": "Ethereum", + "evmNetworkId": 1, + "chainId": 2, + "rpc": "https://rpc.ankr.com/eth", + "wormholeAddress": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B" + }, + { + "description": "BSC", + "evmNetworkId": 56, + "chainId": 4, + "rpc": "https://bsc-dataseed1.binance.org/", + "wormholeAddress": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B" + }, + { + "description": "Polygon", + "evmNetworkId": 137, + "chainId": 5, + "rpc": "https://polygon.llamarpc.com", + "wormholeAddress": "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7" + }, + { + "description": "Avalanche", + "evmNetworkId": 43114, + "chainId": 6, + "rpc": "https://api.avax.network/ext/bc/C/rpc", + "wormholeAddress": "0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c" + }, + { + "description": "Fantom", + "evmNetworkId": 250, + "chainId": 10, + "rpc": "https://rpc3.fantom.network", + "wormholeAddress": "0x126783A6Cb203a3E35344528B26ca3a0489a1485" + }, + { + "description": "Klaytn", + "evmNetworkId": 8217, + "chainId": 13, + "rpc": "https://klaytn.blockpi.network/v1/rpc/public", + "wormholeAddress": "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7" + }, + { + "description": "Celo", + "evmNetworkId": 42220, + "chainId": 14, + "rpc": "https://forno.celo.org", + "wormholeAddress": "0xa321448d90d4e5b0A732867c18eA198e75CAC48E" + }, + { + "description": "Moonbeam", + "evmNetworkId": 1284, + "chainId": 16, + "rpc": "https://rpc.api.moonbeam.network", + "wormholeAddress": "0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3" + }, + { + "description": "Arbitrum", + "evmNetworkId": 42161, + "chainId": 23, + "rpc": "https://rpc.arb1.arbitrum.gateway.fm", + "wormholeAddress": "0xa5f208e072434bC67592E4C49C1B991BA79BCA46" + }, + { + "description": "Optimism", + "evmNetworkId": 10, + "chainId": 24, + "rpc": "https://optimism.api.onfinality.io/public", + "wormholeAddress": "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722" + } + ] +} diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json new file mode 100644 index 0000000000..3217537497 --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -0,0 +1,172 @@ +{ + "description": "This file contains the addresses for the contracts on each chain. If useLastRun is true, this file will be ignored, and the addresses will be taken from the lastrun.json of the deployment scripts.", + "useLastRun": true, + "deliveryProviders": [ + { + "chainId": 2, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 4, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 5, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 6, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 10, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 13, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 14, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 16, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 23, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 24, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + } + ], + "wormholeRelayers": [ + { + "chainId": 2, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 4, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 5, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 6, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 10, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 13, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 14, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 16, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 23, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 24, + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + } + ], + "mockIntegrations": [ + { + "chainId": 2, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 4, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 5, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 6, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 10, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 13, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 14, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 16, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 23, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 24, + "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + } + ], + "create2Factories": [ + { + "chainId": 2, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 4, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 5, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 6, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 10, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 13, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 14, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 16, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 23, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 24, + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + } + ] +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json new file mode 100644 index 0000000000..ddaacfa778 --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -0,0 +1,176 @@ +{ + "addresses": [ + { + "chainId": 2, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 4, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 5, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 6, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 10, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 13, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 14, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 16, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 23, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + }, + { + "chainId": 24, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", + "approvedSenders": [ + { + "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", + "approved": true + } + ] + } + ], + "pricingInfo": [ + { + "chainId": 2, + "deliverGasOverhead": "300000", + "updatePriceGas": "21000000000", + "updatePriceNative": "1667000000", + "maximumBudget": "120000000000000000" + }, + { + "chainId": 4, + "deliverGasOverhead": "300000", + "updatePriceGas": "3000000000", + "updatePriceNative": "235250000", + "maximumBudget": "860000000000000000" + }, + { + "chainId": 5, + "deliverGasOverhead": "300000", + "updatePriceGas": "219000000000", + "updatePriceNative": "571000", + "maximumBudget": "350260000000000000000" + }, + { + "chainId": 6, + "deliverGasOverhead": "300000", + "updatePriceGas": "27000000000", + "updatePriceNative": "11360000", + "maximumBudget": "17600000000000000000" + }, + { + "chainId": 10, + "deliverGasOverhead": "300000", + "updatePriceGas": "54000000000", + "updatePriceNative": "255500", + "maximumBudget": "782780000000000000000" + }, + { + "chainId": 13, + "deliverGasOverhead": "300000", + "updatePriceGas": "25000000000", + "updatePriceNative": "149300", + "maximumBudget": "1339580000000000000000" + }, + { + "chainId": 14, + "deliverGasOverhead": "300000", + "updatePriceGas": "20000000000", + "updatePriceNative": "393100", + "maximumBudget": "508780000000000000000" + }, + { + "chainId": 16, + "deliverGasOverhead": "300000", + "updatePriceGas": "160000000000", + "updatePriceNative": "211500", + "maximumBudget": "945630000000000000000" + }, + { + "chainId": 23, + "deliverGasOverhead": "600000000", + "updatePriceGas": "200000000", + "updatePriceNative": "1667000000", + "maximumBudget": "120000000000000000" + }, + { + "chainId": 24, + "deliverGasOverhead": "600000000", + "updatePriceGas": "200000000", + "updatePriceNative": "1667000000", + "maximumBudget": "120000000000000000" + } + ] +} From 9fc2ba54486efdc3a419c5e06f2d0b63cb1fc340 Mon Sep 17 00:00:00 2001 From: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:07:21 +0000 Subject: [PATCH 011/174] uselastrun false --- ethereum/ts-scripts/relayer/config/mainnet/contracts.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 3217537497..04cea7fc2e 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -1,6 +1,6 @@ { "description": "This file contains the addresses for the contracts on each chain. If useLastRun is true, this file will be ignored, and the addresses will be taken from the lastrun.json of the deployment scripts.", - "useLastRun": true, + "useLastRun": false, "deliveryProviders": [ { "chainId": 2, From 4bcc68cf311835f607f759e297469e6782fd6f5f Mon Sep 17 00:00:00 2001 From: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Date: Mon, 3 Jul 2023 20:18:02 +0000 Subject: [PATCH 012/174] updated addresses --- ethereum/ts-scripts/relayer/config/ci/contracts.json | 4 ++-- ethereum/ts-scripts/relayer/config/kubernetes/contracts.json | 4 ++-- ethereum/ts-scripts/relayer/config/tilt/contracts.json | 4 ++-- sdk/js/src/relayer/consts.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/ci/contracts.json b/ethereum/ts-scripts/relayer/config/ci/contracts.json index cf1c9cb8d7..8a8bfd7fcc 100644 --- a/ethereum/ts-scripts/relayer/config/ci/contracts.json +++ b/ethereum/ts-scripts/relayer/config/ci/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" }, { "chainId": 4, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" } ], "mockIntegrations": [ diff --git a/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json b/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json index 6a4b46f10d..0b4f088066 100644 --- a/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json +++ b/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" }, { "chainId": 4, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" } ], "wormholeRelayersDev": [ diff --git a/ethereum/ts-scripts/relayer/config/tilt/contracts.json b/ethereum/ts-scripts/relayer/config/tilt/contracts.json index 6a4b46f10d..0b4f088066 100644 --- a/ethereum/ts-scripts/relayer/config/tilt/contracts.json +++ b/ethereum/ts-scripts/relayer/config/tilt/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" }, { "chainId": 4, - "address": "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083" + "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" } ], "wormholeRelayersDev": [ diff --git a/sdk/js/src/relayer/consts.ts b/sdk/js/src/relayer/consts.ts index 880c14ecc9..8a4599b268 100644 --- a/sdk/js/src/relayer/consts.ts +++ b/sdk/js/src/relayer/consts.ts @@ -81,12 +81,12 @@ const TESTNET: { [K in ChainName]?: AddressInfo } = { const DEVNET: { [K in ChainName]?: AddressInfo } = { ethereum: { - wormholeRelayerAddress: "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083", + wormholeRelayerAddress: "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd", mockDeliveryProviderAddress: "0x1ef9e15c3bbf0555860b5009B51722027134d53a", mockIntegrationAddress: "0x0eb0dD3aa41bD15C706BC09bC03C002b7B85aeAC", }, bsc: { - wormholeRelayerAddress: "0xE66C1Bc1b369EF4F376b84373E3Aa004E8F4C083", + wormholeRelayerAddress: "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd", mockDeliveryProviderAddress: "0x1ef9e15c3bbf0555860b5009B51722027134d53a", mockIntegrationAddress: "0x0eb0dD3aa41bD15C706BC09bC03C002b7B85aeAC", }, From c2b8d107729716a5e33b1ddd8b288222cfb161e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 7 Jul 2023 13:56:52 -0300 Subject: [PATCH 013/174] gRelayer: removes obsolete `approvedSenders` config field. --- .../configureDeliveryProvider.json | 16 +--- .../configureDeliveryProvider.json | 16 +--- .../configureDeliveryProvider.json | 80 +++---------------- .../configureDeliveryProvider.json | 40 ++-------- .../configureDeliveryProvider.json | 12 +-- 5 files changed, 21 insertions(+), 143 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/ci/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/ci/scriptConfigs/configureDeliveryProvider.json index 6a258c642a..707ced9324 100644 --- a/ethereum/ts-scripts/relayer/config/ci/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/ci/scriptConfigs/configureDeliveryProvider.json @@ -2,23 +2,11 @@ "addresses": [ { "chainId": 2, - "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approvedSenders": [ - { - "address": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approved": true - } - ] + "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b" }, { "chainId": 4, - "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approvedSenders": [ - { - "address": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approved": true - } - ] + "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b" } ], diff --git a/ethereum/ts-scripts/relayer/config/kubernetes/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/kubernetes/scriptConfigs/configureDeliveryProvider.json index 6a258c642a..707ced9324 100644 --- a/ethereum/ts-scripts/relayer/config/kubernetes/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/kubernetes/scriptConfigs/configureDeliveryProvider.json @@ -2,23 +2,11 @@ "addresses": [ { "chainId": 2, - "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approvedSenders": [ - { - "address": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approved": true - } - ] + "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b" }, { "chainId": 4, - "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approvedSenders": [ - { - "address": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b", - "approved": true - } - ] + "rewardAddress": "0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b" } ], diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index ddaacfa778..c264c7ed2a 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -2,103 +2,43 @@ "addresses": [ { "chainId": 2, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 4, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 5, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 6, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 10, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 13, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 14, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 16, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 23, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, { "chainId": 24, - "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46", - "approvedSenders": [ - { - "address": "0xdFE31C0aE49bc9ad7F184977064fBefef5d76ee9", - "approved": true - } - ] + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "pricingInfo": [ diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 550df35816..a47a992d5b 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -2,53 +2,23 @@ "addresses": [ { "chainId": 6, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approvedSenders": [ - { - "address": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approved": true - } - ] + "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" }, { "chainId": 14, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approvedSenders": [ - { - "address": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approved": true - } - ] + "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" }, { "chainId": 5, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approvedSenders": [ - { - "address": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approved": true - } - ] + "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" }, { "chainId": 16, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approvedSenders": [ - { - "address": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approved": true - } - ] + "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" }, { "chainId": 4, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approvedSenders": [ - { - "address": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3", - "approved": true - } - ] + "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" } ], "pricingInfo": [ diff --git a/ethereum/ts-scripts/relayer/config/tilt/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/tilt/scriptConfigs/configureDeliveryProvider.json index ab87604f56..e98a0d5fd1 100644 --- a/ethereum/ts-scripts/relayer/config/tilt/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/tilt/scriptConfigs/configureDeliveryProvider.json @@ -2,19 +2,11 @@ "addresses": [ { "chainId": 2, - "rewardAddress": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", - "approvedSenders": [{ - "address": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", - "approved": true - }] + "rewardAddress": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1" }, { "chainId": 4, - "rewardAddress": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", - "approvedSenders": [{ - "address": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", - "approved": true - }] + "rewardAddress": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1" } ], From 1094c802ca991a189c7e368f8f69d2b7a84e5deb Mon Sep 17 00:00:00 2001 From: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Date: Wed, 12 Jul 2023 22:15:05 +0000 Subject: [PATCH 014/174] Verification changes --- ethereum/foundry.toml | 1 + .../ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100755 ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh diff --git a/ethereum/foundry.toml b/ethereum/foundry.toml index 4c846dab4f..82dafcbd21 100644 --- a/ethereum/foundry.toml +++ b/ethereum/foundry.toml @@ -28,5 +28,6 @@ multiline_func_header = "params_first" [profile.production] via_ir = true extra_output = ["metadata", "storageLayout", "evm.deployedBytecode.immutableReferences"] +evm_version = "paris" # See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh new file mode 100755 index 0000000000..393c9b2173 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -0,0 +1,11 @@ +# For Celo, use '--show-standard-json-input' and submit manually online +# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan + +# Make sure the ETHERSCAN_API_KEY is set +# and the WORMHOLE_ADDRESS is set to the 32-byte wormhole address (no 0x) + +# for testnet, remove 'FOUNDRY_PROFILE=production' and make the addresses correct (current addresses are hardcoded for mainnet - the proxy address, constructor args for proxy, and the implementation address) +# note: the first 5 testnets (avalanche, celo, bsc, mumbai, moonbeam) were deployed with evm_version London + +FOUNDRY_PROFILE=production forge verify-contract 0x27428DD2d3DD32A4D7f7C497eAaa23130d894911 contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --chain-id $CHAIN_ID --watch --constructor-args 00000000000000000000000025688636cec6ce0f1434b1e7dd0a223f3f258336 \ +&& FOUNDRY_PROFILE=production forge verify-contract 0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF WormholeRelayer --chain-id $CHAIN_ID --watch --constructor-args $WORMHOLE_ADDRESS \ No newline at end of file From 83f26b286d79a3f43dff7b8c13e75d54499f7f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 21 Jul 2023 13:49:36 -0300 Subject: [PATCH 015/174] gRelayer: fixes configure delivery provider script. - Actually uses operating chains instead of chains. - Avoids setting obsolete configuration option for the wormhole relayer address. --- .../deliveryProvider/configureDeliveryProvider.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 5db1af8bbc..5151ed51a7 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -35,8 +35,8 @@ const config = loadScriptConfig(processName); async function run() { console.log("Start! " + processName); - for (let i = 0; i < operatingChains.length; i++) { - await configureChainsDeliveryProvider(chains[i]); + for (const chain of operatingChains) { + await configureChainsDeliveryProvider(chain); } } @@ -45,7 +45,6 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { "about to perform DeliveryProvider configuration for chain " + chain.chainId ); const deliveryProvider = await getDeliveryProvider(chain); - const coreRelayer = await getWormholeRelayerAddress(chain); const thisChainsConfigInfo = config.addresses.find( (x: any) => x.chainId == chain.chainId @@ -63,10 +62,10 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { } const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { - updateWormholeRelayer: true, + updateWormholeRelayer: false, updateRewardAddress: true, updateSupportedKeyTypes: true, - coreRelayer, + coreRelayer: "0x0000000000000000000000000000000000000000", rewardAddress: thisChainsConfigInfo.rewardAddress, supportedKeyTypesBitmap: 1 << 1 // VAA_KEY_TYPE }; From 3902f76974d4f2e5f644bdbb7848449c3143269d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 26 Jul 2023 16:28:08 -0300 Subject: [PATCH 016/174] gRelayer: adds contract verification script for `DeliveryProvider`. --- .../relayer/shell/verifyDeliveryProvider.sh | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh new file mode 100755 index 0000000000..9cd43d0887 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env fish + +# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan + +# Equivalent to `set -x` in bash, this prints out commands with variables substituted before executing them +# set fish_trace true + +# TODO: add option to specify one or more chain ids and avoid verifying already verified contracts +set options (string join '' (fish_opt --short t --long scan-tokens --required-val) '!jq . "$_flag_value" > /dev/null') +argparse $options -- $argv + +if test -z $_flag_scan_tokens + echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." + echo 'JSON format: [{"chainId": , "token": }, ...]' + exit 1 +end +set scan_tokens_file $_flag_scan_tokens + +set chains_file "ts-scripts/relayer/config/$ENV/chains.json" +# TODO: add setup and implementation addresses to `contracts.json` to allow using it instead of lastrun.json +set last_run_file "ts-scripts/relayer/output/$ENV/deployDeliveryProvider/lastrun.json" +if not test -e $last_run_file + echo "$last_run_file does not exist. Delivery provider addresses are read from this file." + exit 1 +end + +set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) + +for chain in $chain_ids + # Klaytn, Karura and Acala don't have a verification API yet + if test 11 -le $chain && test $chain -le 13 + continue + end + + # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` + set implementation_address (jq --raw-output ".deliveryProviderImplementations[] | select(.chainId == $chain) | .address" $last_run_file) + set setup_address (jq --raw-output ".deliveryProviderSetups[] | select(.chainId == $chain) | .address" $last_run_file) + set proxy_address (jq --raw-output ".deliveryProviderProxies[] | select(.chainId == $chain) | .address" $last_run_file) + + # We need the token to be unquoted when passed to `forge verify-contract` + set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + + set evm_chain_id (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + + # We're using the production profile for delivery providers on mainnet and testnet + set --export FOUNDRY_PROFILE production + set proxy_constructor_args (cast abi-encode "constructor(address,bytes)" $setup_address (cast calldata "setup(address,uint16)" $implementation_address $chain)) + + # Celo has a verification API but it currently doesn't work with `forge verify-contract` + # We print the compiler input to a file instead for manual verification + if test $chain -eq 14 + forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderImplementation.compiler-input.json + forge verify-contract $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderSetup.compiler-input.json + forge verify-contract $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy --chain-id $evm_chain_id --watch --constructor-args $proxy_constructor_args --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderProxy.compiler-input.json + + echo "Please manually submit the compiler input files at celoscan.io" + echo "- $implementation_address: DeliveryProviderImplementation.compiler-input.json" + echo "- $setup_address: DeliveryProviderSetup.compiler-input.json" + echo "- $proxy_address: DeliveryProviderProxy.compiler-input.json" + else + forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token + forge verify-contract $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token + forge verify-contract $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy --chain-id $evm_chain_id --watch --constructor-args $proxy_constructor_args --etherscan-api-key $scan_token + end +end \ No newline at end of file From b03bd4eac788a1b624ab5fc753b0851748b35522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 11 Aug 2023 19:16:01 -0300 Subject: [PATCH 017/174] gRelayer: Adds addresses for Base mainnet. --- .../relayer/config/mainnet/chains.json | 7 ++ .../relayer/config/mainnet/contracts.json | 16 ++++ .../configureDeliveryProvider.json | 75 +++++++++++-------- 3 files changed, 66 insertions(+), 32 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 6780176956..1f8c7eb340 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -71,6 +71,13 @@ "chainId": 24, "rpc": "https://optimism.api.onfinality.io/public", "wormholeAddress": "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722" + }, + { + "description": "Base", + "evmNetworkId": 8453, + "chainId": 30, + "rpc": "https://base.blockpi.network/v1/rpc/public", + "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" } ] } diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 04cea7fc2e..f40b68cc5d 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -41,6 +41,10 @@ { "chainId": 24, "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 30, + "address": "0x70B4a48f482956983D8C69D3aE18Fe229888638D" } ], "wormholeRelayers": [ @@ -83,6 +87,10 @@ { "chainId": 24, "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911" + }, + { + "chainId": 30, + "address": "0x706F82e9bb5b0813501714Ab5974216704980e31" } ], "mockIntegrations": [ @@ -125,6 +133,10 @@ { "chainId": 24, "address": "0xa507Ff8D183D2BEcc9Ff9F82DFeF4b074e1d0E05" + }, + { + "chainId": 30, + "address": "0x9aF36616cb3B7D3317bB93c9b29Fd76bf7264772" } ], "create2Factories": [ @@ -167,6 +179,10 @@ { "chainId": 24, "address": "0xD7456983aF303D8811D0503631b6197C8a29248F" + }, + { + "chainId": 30, + "address": "0x51fEBFE97190a9825E98E04AF8Df60e269912Dd8" } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index c264c7ed2a..52cdcec5b0 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -39,78 +39,89 @@ { "chainId": 24, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 30, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "pricingInfo": [ { "chainId": 2, - "deliverGasOverhead": "300000", - "updatePriceGas": "21000000000", - "updatePriceNative": "1667000000", - "maximumBudget": "120000000000000000" + "deliverGasOverhead": "500000", + "updatePriceGas": "40000000000", + "updatePriceNative": "1828220000", + "maximumBudget": "200000000000000000" }, { "chainId": 4, "deliverGasOverhead": "300000", "updatePriceGas": "3000000000", - "updatePriceNative": "235250000", - "maximumBudget": "860000000000000000" + "updatePriceNative": "241480000", + "maximumBudget": "828225940000000000" }, { "chainId": 5, "deliverGasOverhead": "300000", "updatePriceGas": "219000000000", - "updatePriceNative": "571000", - "maximumBudget": "350260000000000000000" + "updatePriceNative": "667900", + "maximumBudget": "299446024900000022528" }, { "chainId": 6, - "deliverGasOverhead": "300000", - "updatePriceGas": "27000000000", - "updatePriceNative": "11360000", - "maximumBudget": "17600000000000000000" + "deliverGasOverhead": "500000", + "updatePriceGas": "30000000000", + "updatePriceNative": "12560000", + "maximumBudget": "15923566880000000000" }, { "chainId": 10, - "deliverGasOverhead": "300000", - "updatePriceGas": "54000000000", - "updatePriceNative": "255500", - "maximumBudget": "782780000000000000000" + "deliverGasOverhead": "500000", + "updatePriceGas": "800000000000", + "updatePriceNative": "234100", + "maximumBudget": "854335753999999959040" }, { "chainId": 13, "deliverGasOverhead": "300000", "updatePriceGas": "25000000000", - "updatePriceNative": "149300", - "maximumBudget": "1339580000000000000000" + "updatePriceNative": "156000", + "maximumBudget": "1282051281999999795200" }, { "chainId": 14, - "deliverGasOverhead": "300000", - "updatePriceGas": "20000000000", - "updatePriceNative": "393100", - "maximumBudget": "508780000000000000000" + "deliverGasOverhead": "500000", + "updatePriceGas": "10000000000", + "updatePriceNative": "488000", + "maximumBudget": "409836065599999967232" }, { "chainId": 16, "deliverGasOverhead": "300000", "updatePriceGas": "160000000000", - "updatePriceNative": "211500", - "maximumBudget": "945630000000000000000" + "updatePriceNative": "231900", + "maximumBudget": "862440707200000065536" }, { "chainId": 23, - "deliverGasOverhead": "600000000", - "updatePriceGas": "200000000", - "updatePriceNative": "1667000000", - "maximumBudget": "120000000000000000" + "deliverGasOverhead": "455816769", + "updatePriceGas": "1200000", + "updatePriceNative": "1828220000", + "maximumBudget": "109396024500000000" }, { "chainId": 24, - "deliverGasOverhead": "600000000", - "updatePriceGas": "200000000", - "updatePriceNative": "1667000000", - "maximumBudget": "120000000000000000" + "deliverGasOverhead": "455816769", + "updatePriceGas": "1200000", + "updatePriceNative": "1828220000", + "maximumBudget": "109396024500000000" + }, + { + "chainId": 30, + "deliverGasOverhead": "455816769", + "updatePriceGas": "1200000", + "updatePriceNative": "1828220000", + "maximumBudget": "109396024500000000" } ] } From 4b3e849aee707ac03341789b5d6eaf062acb4a8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 11 Aug 2023 20:43:09 -0300 Subject: [PATCH 018/174] gRelayer: prettier format --- .../deployDeliveryProvider.ts | 7 +- .../ts-scripts/relayer/helpers/deployments.ts | 36 +++++----- ethereum/ts-scripts/relayer/helpers/env.ts | 66 +++++++++---------- ethereum/ts-scripts/relayer/helpers/vaa.ts | 14 ++-- .../mockIntegration/deployMockIntegration.ts | 2 +- .../wormholeRelayer/deployWormholeRelayer.ts | 4 +- 6 files changed, 61 insertions(+), 68 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index e01b2d9da4..054fdcd3c8 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -19,14 +19,13 @@ async function run() { for (const chain of chains) { console.log(`Deploying for chain ${chain.chainId}...`); - const deliveryProviderImplementation = await deployDeliveryProviderImplementation( - chain - ); + const deliveryProviderImplementation = + await deployDeliveryProviderImplementation(chain); const deliveryProviderSetup = await deployDeliveryProviderSetup(chain); const deliveryProviderProxy = await deployDeliveryProviderProxy( chain, deliveryProviderSetup.address, - deliveryProviderImplementation.address + deliveryProviderImplementation.address, ); output.deliveryProviderImplementations.push(deliveryProviderImplementation); output.deliveryProviderSetups.push(deliveryProviderSetup); diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index fc088df153..f2d4e4ac9f 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -21,7 +21,7 @@ export const setupContractSalt = Buffer.from("0xSetup"); export const proxyContractSalt = Buffer.from("0xGenericRelayer"); export async function deployDeliveryProviderImplementation( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log("deployDeliveryProviderImplementation " + chain.chainId); const signer = await getSigner(chain); @@ -35,7 +35,7 @@ export async function deployDeliveryProviderImplementation( } export async function deployDeliveryProviderSetup( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log("deployDeliveryProviderSetup " + chain.chainId); @@ -55,7 +55,7 @@ export async function deployDeliveryProviderSetup( export async function deployDeliveryProviderProxy( chain: ChainInfo, deliveryProviderSetupAddress: string, - deliveryProviderImplementationAddress: string + deliveryProviderImplementationAddress: string, ): Promise { console.log("deployDeliveryProviderProxy " + chain.chainId); @@ -75,7 +75,7 @@ export async function deployDeliveryProviderProxy( const contract = await factory.deploy( deliveryProviderSetupAddress, encodedData, - overrides + overrides, ); const receipt = await contract.deployTransaction.wait(); console.log("Successfully deployed contract at " + receipt.contractAddress); @@ -83,7 +83,7 @@ export async function deployDeliveryProviderProxy( } export async function deployMockIntegration( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log("deployMockIntegration " + chain.chainId); @@ -98,7 +98,7 @@ export async function deployMockIntegration( const contract = await factory.deploy( chain.wormholeAddress, wormholeRelayerAddress, - overrides + overrides, ); const receipt = await contract.deployTransaction.wait(); console.log("Successfully deployed contract at " + receipt.contractAddress); @@ -111,7 +111,7 @@ export async function deployMockIntegration( * same (address, nonce) tx pair creates the factory across all target chains. */ export async function deployCreate2Factory( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log("deployCreate2Factory " + chain.chainId); @@ -125,7 +125,7 @@ export async function deployCreate2Factory( } export async function deployWormholeRelayerImplementation( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log("deployWormholeRelayerImplementation " + chain.chainId); @@ -149,7 +149,7 @@ export async function deployWormholeRelayerImplementation( export async function deployWormholeRelayerProxy( chain: ChainInfo, coreRelayerImplementationAddress: string, - defaultDeliveryProvider: string + defaultDeliveryProvider: string, ): Promise { console.log("deployWormholeRelayerProxy " + chain.chainId); @@ -157,23 +157,23 @@ export async function deployWormholeRelayerProxy( const initData = WormholeRelayer__factory.createInterface().encodeFunctionData( "initialize", - [ethers.utils.getAddress(defaultDeliveryProvider)] + [ethers.utils.getAddress(defaultDeliveryProvider)], ); const overrides = await buildOverrides( () => create2Factory.estimateGas.create2Proxy( proxyContractSalt, coreRelayerImplementationAddress, - initData + initData, ), - chain + chain, ); const rx = await create2Factory .create2Proxy( proxyContractSalt, coreRelayerImplementationAddress, initData, - overrides + overrides, ) .then(wait); @@ -189,7 +189,7 @@ export async function deployWormholeRelayerProxy( const signer = await getSigner(chain); const computedAddr = await create2Factory.computeProxyAddress( await signer.getAddress(), - proxyContractSalt + proxyContractSalt, ); if (proxyAddress! !== computedAddr) { console.error("Computed address does not match desired"); @@ -203,7 +203,7 @@ const deployed = (x: ethers.Contract) => x.deployed(); const estimateGasDeploy = async ( factory: ethers.ContractFactory, - args: unknown[] + args: unknown[], ): Promise => { const deployTxArgs = factory.getDeployTransaction(...args); return factory.signer.estimateGas(deployTxArgs); @@ -212,13 +212,13 @@ const estimateGasDeploy = async ( const buildOverridesDeploy = async ( factory: ethers.ContractFactory, chain: ChainInfo, - args: unknown[] + args: unknown[], ): Promise => { return buildOverrides(() => estimateGasDeploy(factory, args), chain); }; async function overshootEstimationGas( - estimate: () => Promise + estimate: () => Promise, ): Promise { const gasEstimate = await estimate(); // we multiply gas estimation by a factor 1.1 to avoid slightly skewed estimations from breaking transactions. @@ -227,7 +227,7 @@ async function overshootEstimationGas( export async function buildOverrides( estimate: () => Promise, - chain: ChainInfo + chain: ChainInfo, ): Promise { const overrides: ethers.Overrides = { gasLimit: await overshootEstimationGas(estimate), diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index c702ef0144..a836986b9b 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -36,7 +36,7 @@ export function init(overrides: { lastRunOverride?: boolean } = {}): string { env = get_env_var("ENV"); if (!env) { console.log( - "No environment was specified, using default environment files" + "No environment was specified, using default environment files", ); env = DEFAULT_ENV; } @@ -64,7 +64,7 @@ function getContainer(): string | null { export function loadScriptConfig(processName: string): any { const configFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/scriptConfigs/${processName}.json` + `./ts-scripts/relayer/config/${env}/scriptConfigs/${processName}.json`, ); const config = JSON.parse(configFile.toString()); if (!config) { @@ -124,7 +124,7 @@ export function getChain(chain: ChainId): ChainInfo { const chains = loadChains(); const output = chains.find((x) => x.chainId == chain); if (!output) { - throw Error("bad chain ID"); + throw Error("Bad chain ID"); } return output; @@ -159,11 +159,11 @@ export function loadDeliveryProviders(): Deployment[] { const contracts = JSON.parse(contractsFile.toString()); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployDeliveryProvider/lastrun.json` + `./ts-scripts/relayer/output/${env}/deployDeliveryProvider/lastrun.json`, ); if (!lastRunFile) { throw Error( - "Failed to find last run file for the deployDeliveryProvider process!" + "Failed to find last run file for the deployDeliveryProvider process!", ); } const lastRun = JSON.parse(lastRunFile.toString()); @@ -185,7 +185,7 @@ export function loadWormholeRelayers(dev: boolean): Deployment[] { const contracts = JSON.parse(contractsFile.toString()); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployWormholeRelayer/lastrun.json` + `./ts-scripts/relayer/output/${env}/deployWormholeRelayer/lastrun.json`, ); if (!lastRunFile) { throw Error("Failed to find last run file for the Core Relayer process!"); @@ -198,20 +198,14 @@ export function loadWormholeRelayers(dev: boolean): Deployment[] { } export function loadMockIntegrations(): Deployment[] { - const contractsFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/contracts.json` - ); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); + const contracts = readContracts(); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployMockIntegration/lastrun.json` + `./ts-scripts/relayer/output/${env}/deployMockIntegration/lastrun.json`, ); if (!lastRunFile) { throw Error( - "Failed to find last run file for the deploy mock integration process!" + "Failed to find last run file for the deploy mock integration process!", ); } const lastRun = JSON.parse(lastRunFile.toString()); @@ -231,11 +225,11 @@ export function loadCreate2Factories(): Deployment[] { const contracts = JSON.parse(contractsFile.toString()); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployCreate2Factory/lastrun.json` + `./ts-scripts/relayer/output/${env}/deployCreate2Factory/lastrun.json`, ); if (!lastRunFile) { throw Error( - "Failed to find last run file for the deployCreate2Factory process!" + "Failed to find last run file for the deployCreate2Factory process!", ); } const lastRun = JSON.parse(lastRunFile.toString()); @@ -286,12 +280,12 @@ export function writeOutputFiles(output: unknown, processName: string) { fs.writeFileSync( `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, JSON.stringify(output), - { flag: "w" } + { flag: "w" }, ); fs.writeFileSync( `./ts-scripts/relayer/output/${env}/${processName}/${Date.now()}.json`, JSON.stringify(output), - { flag: "w" } + { flag: "w" }, ); } @@ -313,7 +307,7 @@ With ledger devices the path needs to be specified in env var 'LEDGER_BIP32_PATH } export function getProvider( - chain: ChainInfo + chain: ChainInfo, ): ethers.providers.StaticJsonRpcProvider { const provider = new ethers.providers.StaticJsonRpcProvider( loadChains().find((x: any) => x.chainId == chain.chainId)?.rpc || "" @@ -324,12 +318,12 @@ export function getProvider( export function getDeliveryProviderAddress(chain: ChainInfo): string { const thisChainsProvider = loadDeliveryProviders().find( - (x: any) => x.chainId == chain.chainId + (x) => x.chainId == chain.chainId, )?.address; if (!thisChainsProvider) { throw new Error( "Failed to find a DeliveryProvider contract address on chain " + - chain.chainId + chain.chainId, ); } return thisChainsProvider; @@ -348,12 +342,12 @@ export function loadGuardianRpc(): string { export async function getDeliveryProvider( chain: ChainInfo, - provider?: ethers.providers.StaticJsonRpcProvider + provider?: ethers.providers.StaticJsonRpcProvider, ): Promise { const thisChainsProvider = getDeliveryProviderAddress(chain); const contract = DeliveryProvider__factory.connect( thisChainsProvider, - provider || await getSigner(chain) + provider || (await getSigner(chain)), ); return contract; } @@ -361,7 +355,7 @@ export async function getDeliveryProvider( const wormholeRelayerAddressesCache: Partial> = {}; export async function getWormholeRelayerAddress( chain: ChainInfo, - forceCalculate?: boolean + forceCalculate?: boolean, ): Promise { // See if we are in dev mode (i.e. forge contracts compiled without via-ir) const dev = get_env_var("DEV") == "True" ? true : false; @@ -376,14 +370,14 @@ export async function getWormholeRelayerAddress( //If useLastRun is false, then we want to bypass the calculations and just use what the contracts file says. if (!contracts.useLastRun && !lastRunOverride && !forceCalculate) { const thisChainsRelayer = loadWormholeRelayers(dev).find( - (x: any) => x.chainId == chain.chainId + (x) => x.chainId == chain.chainId, )?.address; if (thisChainsRelayer) { return thisChainsRelayer; } else { throw Error( "Failed to find a WormholeRelayer contract address on chain " + - chain.chainId + chain.chainId, ); } } @@ -403,30 +397,30 @@ export async function getWormholeRelayerAddress( export async function getWormholeRelayer( chain: ChainInfo, - provider?: ethers.providers.StaticJsonRpcProvider + provider?: ethers.providers.StaticJsonRpcProvider, ): Promise { const thisChainsRelayer = await getWormholeRelayerAddress(chain); return WormholeRelayer__factory.connect( thisChainsRelayer, - provider || await getSigner(chain) + provider || (await getSigner(chain)), ); } export function getMockIntegrationAddress(chain: ChainInfo): string { const thisMock = loadMockIntegrations().find( - (x: any) => x.chainId == chain.chainId + (x) => x.chainId == chain.chainId, )?.address; if (!thisMock) { throw new Error( "Failed to find a mock integration contract address on chain " + - chain.chainId + chain.chainId, ); } return thisMock; } export async function getMockIntegration( - chain: ChainInfo + chain: ChainInfo, ): Promise { const thisIntegration = getMockIntegrationAddress(chain); const contract = MockRelayerIntegration__factory.connect( @@ -438,21 +432,21 @@ export async function getMockIntegration( export function getCreate2FactoryAddress(chain: ChainInfo): string { const address = loadCreate2Factories().find( - (x: any) => x.chainId == chain.chainId + (x) => x.chainId == chain.chainId, )?.address; if (!address) { throw new Error( "Failed to find a create2Factory contract address on chain " + - chain.chainId + chain.chainId, ); } return address; } export const getCreate2Factory = async ( - chain: ChainInfo + chain: ChainInfo, ): Promise => Create2Factory__factory.connect( getCreate2FactoryAddress(chain), - await getSigner(chain) + await getSigner(chain), ); diff --git a/ethereum/ts-scripts/relayer/helpers/vaa.ts b/ethereum/ts-scripts/relayer/helpers/vaa.ts index 8565708fd9..2ff233e6da 100644 --- a/ethereum/ts-scripts/relayer/helpers/vaa.ts +++ b/ethereum/ts-scripts/relayer/helpers/vaa.ts @@ -18,7 +18,7 @@ const wormholeRelayerModule = export function createWormholeRelayerUpgradeVAA( chain: ChainInfo, - newAddress: string + newAddress: string, ) { /* bytes32 module; @@ -34,7 +34,7 @@ export function createWormholeRelayerUpgradeVAA( 2, chain.chainId, "0x" + tryNativeToHexString(newAddress, "ethereum"), - ] + ], ); return encodeAndSignGovernancePayload(payload); @@ -56,18 +56,18 @@ export function createDefaultDeliveryProviderVAA(chain: ChainInfo) { chain.chainId, "0x" + tryNativeToHexString(getDeliveryProviderAddress(chain), "ethereum"), - ] + ], ); return encodeAndSignGovernancePayload(payload); } export async function createRegisterChainVAA( - chain: ChainInfo + chain: ChainInfo, ): Promise { const coreRelayerAddress = await getWormholeRelayerAddress(chain); console.log( - `Creating registration VAA for Wormhole Relayer ${coreRelayerAddress} (chain ${chain.chainId})` + `Creating registration VAA for Wormhole Relayer ${coreRelayerAddress} (chain ${chain.chainId})`, ); // bytes32 module; @@ -84,7 +84,7 @@ export async function createRegisterChainVAA( 0, chain.chainId, "0x" + tryNativeToHexString(coreRelayerAddress, "ethereum"), - ] + ], ); return encodeAndSignGovernancePayload(payload); @@ -106,7 +106,7 @@ export function encodeAndSignGovernancePayload(payload: string): string { sequence, consistencyLevel, payload, - ] + ], ); const hash = doubleKeccak256(encodedVAABody); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index c8e94cf6ae..c2c0ac8a1c 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -46,7 +46,7 @@ async function run() { const overrides = await buildOverrides( () => mockIntegration.estimateGas.registerEmitters(emitters), - chain + chain, ); await mockIntegration.registerEmitters(emitters, overrides).then(wait); } diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index 4208e22e8d..3e672fd487 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -25,12 +25,12 @@ async function run() { for (const chain of chains) { console.log(`Deploying for chain ${chain.chainId}...`); const coreRelayerImplementation = await deployWormholeRelayerImplementation( - chain + chain, ); const coreRelayerProxy = await deployWormholeRelayerProxy( chain, coreRelayerImplementation.address, - getDeliveryProviderAddress(chain) + getDeliveryProviderAddress(chain), ); output.wormholeRelayerImplementations.push(coreRelayerImplementation); From b674c08668b8f55440789dca2d5afd5a4c0cda99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 11 Aug 2023 23:28:32 -0300 Subject: [PATCH 019/174] gRelayer: deployment scripts now handle adding a new chain. When adding a new chain, old and new deployments are merged before being written to JSON files. --- .../create2Factory/deployCreate2Factory.ts | 25 ++- .../configureDeliveryProvider.ts | 5 +- .../deployDeliveryProvider.ts | 50 ++++-- .../readDeliveryProviderContractState.ts | 30 ++-- .../ts-scripts/relayer/helpers/deployments.ts | 8 +- ethereum/ts-scripts/relayer/helpers/env.ts | 165 +++++++++++------- .../mockIntegration/deployMockIntegration.ts | 27 ++- .../relayer/mockIntegration/messageTest.ts | 2 - .../relayer/mockIntegration/messageUtils.ts | 1 - .../readMockIntegrationState.ts | 4 +- .../wormholeRelayer/deployWormholeRelayer.ts | 35 +++- 11 files changed, 233 insertions(+), 119 deletions(-) diff --git a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts index 1928c4138e..a48b03ce2a 100644 --- a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts +++ b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts @@ -1,17 +1,34 @@ -import { init, writeOutputFiles, getOperatingChains } from "../helpers/env"; +import { + init, + writeOutputFiles, + getOperationDescriptor, + getCreate2FactoryAddress, + Deployment, +} from "../helpers/env"; import { deployCreate2Factory } from "../helpers/deployments"; const processName = "deployCreate2Factory"; init(); -const operatingChains = getOperatingChains(); +const operation = getOperationDescriptor(); async function run() { console.log("Start!"); - const create2Factories = await Promise.all( - operatingChains.map(deployCreate2Factory) + const newDeployments = await Promise.all( + operation.operatingChains.map(deployCreate2Factory), ); + const oldDeployments = operation.supportedChains.map((chain) => { + return { + chainId: chain.chainId, + address: getCreate2FactoryAddress(chain), + }; + }); + + const create2Factories = oldDeployments.concat( + newDeployments, + ) satisfies Deployment[]; + writeOutputFiles({ create2Factories }, processName); } diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 5151ed51a7..d9b0f2f737 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -5,7 +5,6 @@ import { loadChains, ChainInfo, loadScriptConfig, - getWormholeRelayerAddress, getDeliveryProvider, getDeliveryProviderAddress, getOperatingChains, @@ -29,7 +28,7 @@ interface PricingInfo { const processName = "configureDeliveryProvider"; init(); const operatingChains = getOperatingChains(); -const chains = loadChains(); +const allChains = loadChains(); const config = loadScriptConfig(processName); async function run() { @@ -72,7 +71,7 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { const updates: DeliveryProviderStructs.UpdateStruct[] = []; // Set the entire relay provider configuration - for (const targetChain of chains) { + for (const targetChain of allChains) { const targetChainPriceUpdate = (config.pricingInfo as PricingInfo[]).find( (x: any) => x.chainId == targetChain.chainId ); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index 054fdcd3c8..36c5b7e1ea 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -3,21 +3,39 @@ import { deployDeliveryProviderProxy, deployDeliveryProviderSetup, } from "../helpers/deployments"; -import { Deployment, getOperatingChains, init, writeOutputFiles } from "../helpers/env"; +import { + Deployment, + getOperationDescriptor, + init, + writeOutputFiles, + loadLastRun, +} from "../helpers/env"; const processName = "deployDeliveryProvider"; init(); -const chains = getOperatingChains(); +const operation = getOperationDescriptor(); + +interface DeliveryProviderDeployment { + deliveryProviderImplementations: Deployment[]; + deliveryProviderSetups: Deployment[]; + deliveryProviderProxies: Deployment[]; +} async function run() { console.log(`Start ${processName}!`); - const output: Record = { - deliveryProviderImplementations: [], - deliveryProviderSetups: [], - deliveryProviderProxies: [], + + const lastRun: DeliveryProviderDeployment | undefined = + loadLastRun(processName); + const deployments: DeliveryProviderDeployment = { + deliveryProviderImplementations: + lastRun?.deliveryProviderImplementations?.filter(isSupportedChain) || [], + deliveryProviderSetups: + lastRun?.deliveryProviderSetups?.filter(isSupportedChain) || [], + deliveryProviderProxies: + lastRun?.deliveryProviderProxies?.filter(isSupportedChain) || [], }; - for (const chain of chains) { + for (const chain of operation.operatingChains) { console.log(`Deploying for chain ${chain.chainId}...`); const deliveryProviderImplementation = await deployDeliveryProviderImplementation(chain); @@ -27,13 +45,23 @@ async function run() { deliveryProviderSetup.address, deliveryProviderImplementation.address, ); - output.deliveryProviderImplementations.push(deliveryProviderImplementation); - output.deliveryProviderSetups.push(deliveryProviderSetup); - output.deliveryProviderProxies.push(deliveryProviderProxy); + + deployments.deliveryProviderImplementations.push( + deliveryProviderImplementation, + ); + deployments.deliveryProviderSetups.push(deliveryProviderSetup); + deployments.deliveryProviderProxies.push(deliveryProviderProxy); console.log(""); } - writeOutputFiles(output, processName); + writeOutputFiles(deployments, processName); +} + +function isSupportedChain(deploy: Deployment): boolean { + const item = operation.supportedChains.find((chain) => { + return deploy.chainId === chain.chainId; + }); + return item !== undefined; } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts b/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts index a9a26e82c2..9447d88abe 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/readDeliveryProviderContractState.ts @@ -6,12 +6,14 @@ import { getDeliveryProvider, getDeliveryProviderAddress, getProvider, - writeOutputFiles, getOperatingChains, + loadChains, + writeOutputFiles, } from "../helpers/env"; const processName = "readDeliveryProviderContractState"; init(); +const allChains = loadChains(); const chains = getOperatingChains(); async function run() { @@ -19,8 +21,8 @@ async function run() { const states: any = []; - for (let i = 0; i < chains.length; i++) { - const state = await readState(chains[i]); + for (const chain of chains) { + const state = await readState(chain); if (state) { printState(state); states.push(state); @@ -73,33 +75,33 @@ async function readState( const weiPrices: { chainId: number; weiPrice: BigNumber }[] = []; const owner: string = await deliveryProvider.owner(); - for (const chainInfo of chains) { + for (const targetChain of allChains) { supportedChains.push({ - chainId: chainInfo.chainId, - isSupported: await deliveryProvider.isChainSupported(chainInfo.chainId), + chainId: targetChain.chainId, + isSupported: await deliveryProvider.isChainSupported(targetChain.chainId), }); targetChainAddresses.push({ - chainId: chainInfo.chainId, + chainId: targetChain.chainId, whAddress: await deliveryProvider.getTargetChainAddress( - chainInfo.chainId + targetChain.chainId ), }); deliveryOverheads.push({ - chainId: chainInfo.chainId, + chainId: targetChain.chainId, deliveryOverhead: await deliveryProvider.quoteDeliveryOverhead( - chainInfo.chainId + targetChain.chainId ), }); gasPrices.push({ - chainId: chainInfo.chainId, - gasPrice: await deliveryProvider.quoteGasPrice(chainInfo.chainId), + chainId: targetChain.chainId, + gasPrice: await deliveryProvider.quoteGasPrice(targetChain.chainId), }); weiPrices.push({ - chainId: chainInfo.chainId, + chainId: targetChain.chainId, weiPrice: await deliveryProvider.quoteAssetConversion( - chainInfo.chainId, + targetChain.chainId, ethers.utils.parseEther("1") ), }); diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index f2d4e4ac9f..01fc4a9d76 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -135,11 +135,13 @@ export async function deployWormholeRelayerImplementation( const overrides = await buildOverridesDeploy(factory, chain, [ chain.wormholeAddress, ]); - const result = await new WormholeRelayer__factory(signer) + const result = await factory .deploy(chain.wormholeAddress, overrides) .then(deployed); - console.log("Successfully deployed contract at " + result.address); + console.log( + `Successfully deployed WormholeRelayer contract at ${result.address}`, + ); return { address: result.address, chainId: chain.chainId }; } @@ -195,7 +197,7 @@ export async function deployWormholeRelayerProxy( console.error("Computed address does not match desired"); } - console.log("Successfully deployed contract at " + computedAddr); + console.log(`Successfully deployed contract WormholeRelayerProxy at ${computedAddr}`); return { address: computedAddr, chainId: chain.chainId }; } diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index a836986b9b..17ad6c4dd2 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -27,6 +27,19 @@ export type Deployment = { address: string; }; +export interface OperationDescriptor { + /** + * Txs will be signed for these chains + */ + operatingChains: ChainInfo[]; + /** + * Deployment artifacts exist for these chains and may be used to perform + * cross registration or sanity checks. + * Excludes operating chains. + */ + supportedChains: ChainInfo[]; +} + const DEFAULT_ENV = "testnet"; export let env = ""; @@ -49,10 +62,31 @@ export function init(overrides: { lastRunOverride?: boolean } = {}): string { } function get_env_var(env: string): string { - const v = process.env[env]; - return v || ""; + return process.env[env] || ""; +} + +/** + * Beware if deciding to cache the JSON in these two. + * Some scripts may depend on reading updates to the JSON file. + */ + +export function readChains() { + const filepath = `./ts-scripts/relayer/config/${env}/chains.json`; + const chainFile = fs.readFileSync(filepath, "utf8"); + return JSON.parse(chainFile); } +export function readContracts() { + const filepath = `./ts-scripts/relayer/config/${env}/contracts.json`; + const contractsFile = fs.readFileSync(filepath, "utf8"); + if (!contractsFile) { + throw Error(`Failed to find contracts file at ${filepath}!`); + } + return JSON.parse(contractsFile); +} + +/**********************/ + function getContainer(): string | null { const container = get_env_var("CONTAINER"); if (!container) { @@ -73,10 +107,9 @@ export function loadScriptConfig(processName: string): any { return config; } -export function getOperatingChains(): ChainInfo[] { - const allChains = loadChains(); +function getOperatingChainIds() { const container = getContainer(); - let operatingChains = null; + let operatingChains: number[] | undefined = undefined; if (container == "evm1") { operatingChains = [2]; @@ -85,37 +118,61 @@ export function getOperatingChains(): ChainInfo[] { operatingChains = [4]; } - const chainFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/chains.json` - ); - const chains = JSON.parse(chainFile.toString()); - if (chains.operatingChains) { + const chains = readChains(); + if (chains.operatingChains !== undefined) { operatingChains = chains.operatingChains; } - if (!operatingChains) { + return operatingChains +} + +export function getOperatingChains(): ChainInfo[] { + const allChains = loadChains(); + const operatingChains = getOperatingChainIds(); + + if (operatingChains === undefined) { return allChains; } const output: ChainInfo[] = []; - operatingChains.forEach((x: number) => { + for (const chain of operatingChains) { const item = allChains.find((y) => { - return x == y.chainId; + return chain == y.chainId; }); - if (item) { + if (item !== undefined) { output.push(item); } - }); + } return output; } +export function getOperationDescriptor(): OperationDescriptor { + const allChains = loadChains(); + const operatingChains = getOperatingChainIds(); + + if (operatingChains === undefined) { + return { operatingChains: allChains, supportedChains: [] }; + } + + const result: OperationDescriptor = { operatingChains: [], supportedChains: [] }; + for (const chain of allChains) { + const item = operatingChains.find((y) => { + return chain.chainId == y; + }); + if (item !== undefined) { + result.operatingChains.push(chain); + } else { + result.supportedChains.push(chain); + } + } + + return result; +} + export function loadChains(): ChainInfo[] { - const chainFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/chains.json` - ); - const chains = JSON.parse(chainFile.toString()); + const chains = readChains(); if (!chains.chains) { - throw Error("Failed to pull chain config file!"); + throw Error("Couldn't find chain information!"); } return chains.chains; } @@ -139,10 +196,7 @@ export function loadPrivateKey(): string { } export function loadGuardianSetIndex(): number { - const chainFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/chains.json` - ); - const chains = JSON.parse(chainFile.toString()); + const chains = readChains(); if (chains.guardianSetIndex == undefined) { throw Error("Failed to pull guardian set index from the chains file!"); } @@ -150,13 +204,7 @@ export function loadGuardianSetIndex(): number { } export function loadDeliveryProviders(): Deployment[] { - const contractsFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/contracts.json` - ); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); + const contracts = readContracts(); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployDeliveryProvider/lastrun.json`, @@ -176,13 +224,7 @@ export function loadDeliveryProviders(): Deployment[] { } export function loadWormholeRelayers(dev: boolean): Deployment[] { - const contractsFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/contracts.json` - ); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); + const contracts = readContracts(); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployWormholeRelayer/lastrun.json`, @@ -216,13 +258,7 @@ export function loadMockIntegrations(): Deployment[] { } export function loadCreate2Factories(): Deployment[] { - const contractsFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/contracts.json` - ); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); + const contracts = readContracts(); if (contracts.useLastRun || lastRunOverride) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployCreate2Factory/lastrun.json`, @@ -289,6 +325,21 @@ export function writeOutputFiles(output: unknown, processName: string) { ); } +export function loadLastRun(processName: string): any { + try { + return JSON.parse(fs.readFileSync( + `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, + "utf8", + )); + } catch (error: unknown) { + if (error instanceof Error && (error as any).code === 'ENOENT') { + return undefined; + } else { + throw error; + } + } +} + export async function getSigner(chain: ChainInfo): Promise { const provider = getProvider(chain); const privateKey = loadPrivateKey(); @@ -310,7 +361,7 @@ export function getProvider( chain: ChainInfo, ): ethers.providers.StaticJsonRpcProvider { const provider = new ethers.providers.StaticJsonRpcProvider( - loadChains().find((x: any) => x.chainId == chain.chainId)?.rpc || "" + loadChains().find((x) => x.chainId == chain.chainId)?.rpc || "", ); return provider; @@ -329,17 +380,6 @@ export function getDeliveryProviderAddress(chain: ChainInfo): string { return thisChainsProvider; } -export function loadGuardianRpc(): string { - const chainFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/chains.json` - ); - if (!chainFile) { - throw Error("Failed to find contracts file for this process!"); - } - const chain = JSON.parse(chainFile.toString()); - return chain.guardianRPC; -} - export async function getDeliveryProvider( chain: ChainInfo, provider?: ethers.providers.StaticJsonRpcProvider, @@ -360,13 +400,7 @@ export async function getWormholeRelayerAddress( // See if we are in dev mode (i.e. forge contracts compiled without via-ir) const dev = get_env_var("DEV") == "True" ? true : false; - const contractsFile = fs.readFileSync( - `./ts-scripts/relayer/config/${env}/contracts.json` - ); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); + const contracts = readContracts(); //If useLastRun is false, then we want to bypass the calculations and just use what the contracts file says. if (!contracts.useLastRun && !lastRunOverride && !forceCalculate) { const thisChainsRelayer = loadWormholeRelayers(dev).find( @@ -421,11 +455,12 @@ export function getMockIntegrationAddress(chain: ChainInfo): string { export async function getMockIntegration( chain: ChainInfo, + provider?: ethers.providers.StaticJsonRpcProvider, ): Promise { const thisIntegration = getMockIntegrationAddress(chain); const contract = MockRelayerIntegration__factory.connect( thisIntegration, - await getSigner(chain) + provider || await getSigner(chain), ); return contract; } diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index c2c0ac8a1c..67d35291f8 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -4,7 +4,8 @@ import { writeOutputFiles, getMockIntegration, Deployment, - getOperatingChains, + loadLastRun, + getOperationDescriptor, getMockIntegrationAddress, } from "../helpers/env"; import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; @@ -15,22 +16,29 @@ import { wait } from "../helpers/utils"; const processName = "deployMockIntegration"; init(); const chains = loadChains(); -const operatingChains = getOperatingChains(); +const operation = getOperationDescriptor(); + +interface MockIntegrationDeployment { + mockIntegrations: Deployment[]; +} async function run() { console.log("Start!"); + + const lastRun: MockIntegrationDeployment | undefined = + loadLastRun(processName); const output = { - mockIntegrations: [] as Deployment[], + mockIntegrations: lastRun?.mockIntegrations?.filter(isSupportedChain) || [], }; - for (const chain of operatingChains) { + for (const chain of operation.operatingChains) { const mockIntegration = await deployMockIntegration(chain); output.mockIntegrations.push(mockIntegration); } writeOutputFiles(output, processName); - for (const chain of operatingChains) { + for (const chain of operation.operatingChains) { console.log(`Registering emitters for chainId ${chain.chainId}`); // note: must use useLastRun = true const mockIntegration = await getMockIntegration(chain); @@ -38,7 +46,7 @@ async function run() { const emitters: { chainId: BigNumberish; addr: BytesLike; - }[] = chains.map((c, j) => ({ + }[] = chains.map((c) => ({ chainId: c.chainId, addr: "0x" + tryNativeToHexString(getMockIntegrationAddress(c), "ethereum"), @@ -52,4 +60,11 @@ async function run() { } } +function isSupportedChain(deploy: Deployment): boolean { + const item = operation.supportedChains.find((chain) => { + return deploy.chainId === chain.chainId; + }); + return item !== undefined; +} + run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/messageTest.ts b/ethereum/ts-scripts/relayer/mockIntegration/messageTest.ts index fb47f57c66..aa7a6ceedb 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/messageTest.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/messageTest.ts @@ -1,9 +1,7 @@ import { ChainInfo, - getWormholeRelayer, getOperatingChains, init, - loadChains, } from "../helpers/env"; import { sendMessage } from "./messageUtils"; diff --git a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts index d77f5546f9..91913f44b4 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts @@ -28,7 +28,6 @@ export async function sendMessage( console.log("relay quote: " + relayQuote); const mockIntegration = await getMockIntegration(sourceChain); - const targetAddress = getMockIntegrationAddress(targetChain); const message = await mockIntegration.getMessage(); console.log("got message from integration " + message); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts b/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts index 41e0ae9ddc..d2b1cfb835 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/readMockIntegrationState.ts @@ -4,6 +4,7 @@ import { ChainInfo, writeOutputFiles, getMockIntegration, + getProvider, } from "../helpers/env"; const processName = "readMockIntegrationState"; @@ -41,7 +42,8 @@ async function readState( ); try { - const mockIntegration = await getMockIntegration(chain); + const provider = getProvider(chain); + const mockIntegration = await getMockIntegration(chain, provider); const contractAddress = mockIntegration.address; const messageHistory = await mockIntegration.getMessageHistory(); const registeredContracts: { chainId: number; contract: string }[] = []; diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index 3e672fd487..f26555eec4 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -6,23 +6,31 @@ import { init, writeOutputFiles, getDeliveryProviderAddress, - getOperatingChains, Deployment, + getOperationDescriptor, + loadLastRun, } from "../helpers/env"; const processName = "deployWormholeRelayer"; init(); -const chains = getOperatingChains(); +const operation = getOperationDescriptor(); + +interface WormholeRelayerDeployment { + wormholeRelayerImplementations: Deployment[]; + wormholeRelayerProxies: Deployment[]; +} async function run() { console.log("Start! " + processName); - const output: Record = { - wormholeRelayerImplementations: [], - wormholeRelayerProxies: [], + const lastRun: WormholeRelayerDeployment | undefined = + loadLastRun(processName); + const deployments: WormholeRelayerDeployment = { + wormholeRelayerImplementations: lastRun?.wormholeRelayerImplementations?.filter(isSupportedChain) || [], + wormholeRelayerProxies: lastRun?.wormholeRelayerProxies?.filter(isSupportedChain) || [], }; - for (const chain of chains) { + for (const chain of operation.operatingChains) { console.log(`Deploying for chain ${chain.chainId}...`); const coreRelayerImplementation = await deployWormholeRelayerImplementation( chain, @@ -33,12 +41,21 @@ async function run() { getDeliveryProviderAddress(chain), ); - output.wormholeRelayerImplementations.push(coreRelayerImplementation); - output.wormholeRelayerProxies.push(coreRelayerProxy); + deployments.wormholeRelayerImplementations.push( + coreRelayerImplementation, + ); + deployments.wormholeRelayerProxies.push(coreRelayerProxy); console.log(""); } - writeOutputFiles(output, processName); + writeOutputFiles(deployments, processName); +} + +function isSupportedChain(deploy: Deployment): boolean { + const item = operation.supportedChains.find((chain) => { + return deploy.chainId === chain.chainId; + }); + return item !== undefined; } run().then(() => console.log("Done! " + processName)); From 753eb86c6a152e96737395979ba90d30e6d4fb37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 11 Aug 2023 23:50:35 -0300 Subject: [PATCH 020/174] gRelayer: adds a script to register chains to WormholeRelayer in mainnet. --- ethereum/ts-scripts/relayer/helpers/vaa.ts | 97 ++++++++++++++++ .../relayer/shell/deployConfigureMainnet.sh | 1 + .../registerChainsWormholeRelayer.ts | 104 ++++++++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts diff --git a/ethereum/ts-scripts/relayer/helpers/vaa.ts b/ethereum/ts-scripts/relayer/helpers/vaa.ts index 2ff233e6da..4502d5e1dc 100644 --- a/ethereum/ts-scripts/relayer/helpers/vaa.ts +++ b/ethereum/ts-scripts/relayer/helpers/vaa.ts @@ -145,6 +145,103 @@ export function encodeAndSignGovernancePayload(payload: string): string { return "0x" + vm; } +export function extractChainToBeRegisteredFromRegisterChainVaa(vaa: Buffer): number { + // Structure of a register chain Vaa + // version: uint8 <-- should be 1 + // guardianSetIndex: uint32 + // signaturesLength: uint8 + // signatures: bytes66[signaturesLength] + // timestamp: uint32 + // nonce: uint32 + // emitterChainId: uint16 <-- should be wh governance (solana chain id) + // emitterContract: bytes32 <-- should be wh governance + // sequence: uint64 + // consistencyLevel: uint8 + // module: bytes32 <-- should be wormhole relayer + // action: uint8 <-- should be register chain + // chain: uint16 <-- should be broadcast + // emitterChain: uint16 <-- need to extract + // emitterAddress: bytes 32 + const uint8Size = 1; + const uint16Size = uint8Size * 2; + const uint32Size = uint8Size * 4; + const uint64Size = uint8Size * 8; + const bytes32Size = 32; + // Each signature has the guardian index in one byte (uint8) and (r, s, v) tuple in 65 bytes + const signatureSize = 66; + + const governanceChain = 1; + const governanceContract = + "0x0000000000000000000000000000000000000000000000000000000000000004"; + // See WormholeRelayerGovernance.sol + const GOVERNANCE_ACTION_REGISTER_WORMHOLE_RELAYER_CONTRACT = 1; + const TARGET_CHAIN_BROADCAST = 0; + + // We'll do some very basic sanity checks + // We won't verify signatures here + const version = vaa.readUint8(0); + if (version !== 1) { + throw new Error("Unknown VAA version ${version}"); + } + + const signaturesOffset = uint8Size + uint32Size; + const signaturesLength = vaa.readUint8(signaturesOffset); + + const timestampOffset = + signaturesOffset + uint8Size + signaturesLength * signatureSize; + const emitterChainIdOffset = timestampOffset + uint32Size * 2; + const emitterChainId = vaa.readUint16BE(emitterChainIdOffset); + const emitterContractOffset = emitterChainIdOffset + uint16Size; + const emitterContract = vaa.subarray( + emitterContractOffset, + emitterContractOffset + bytes32Size, + ); + if (emitterChainId !== governanceChain) { + throw new Error( + `VAA initiated by incorrect chain. Expected chain ${governanceChain} but found chain ${emitterChainId}`, + ); + } + if ( + !emitterContract.equals(Buffer.from(governanceContract.substring(2), "hex")) + ) { + throw new Error( + `VAA initiated by incorrect contract. Expected contract ${governanceContract} but found contract ${ + "0x" + emitterContract.toString("hex") + }`, + ); + } + + const moduleOffset = + emitterContractOffset + bytes32Size + uint64Size + uint8Size; + const moduleBuf = vaa.subarray(moduleOffset, moduleOffset + bytes32Size); + if ( + !moduleBuf.equals(Buffer.from(wormholeRelayerModule.substring(2), "hex")) + ) { + throw new Error( + `Unexpected governance module ${"0x" + moduleBuf.toString("hex")}`, + ); + } + + const actionOffset = moduleOffset + bytes32Size; + const action = vaa.readUint8(actionOffset); + if (action !== GOVERNANCE_ACTION_REGISTER_WORMHOLE_RELAYER_CONTRACT) { + throw new Error( + `Unexpected wormhole relayer governance action id ${action}`, + ); + } + + const governanceTargetChainOffset = actionOffset + uint8Size; + const governanceTargetChain = vaa.readUint16BE(governanceTargetChainOffset); + if (governanceTargetChain !== TARGET_CHAIN_BROADCAST) { + throw new Error( + `Expected the register chain VAA to be addressed as a broadcast to all chains but it is addressed to chain ${governanceTargetChain} instead`, + ); + } + + const chainToRegisterOffset = governanceTargetChainOffset + uint16Size; + return vaa.readUint16BE(chainToRegisterOffset); +} + export function doubleKeccak256(body: ethers.BytesLike) { return ethers.utils.keccak256(ethers.utils.keccak256(body)); } diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh index 35f3913a92..e94fd930f2 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -5,4 +5,5 @@ npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ + && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts new file mode 100644 index 0000000000..f80e01eb2c --- /dev/null +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts @@ -0,0 +1,104 @@ +import { + init, + getOperatingChains, + getWormholeRelayer, + ChainInfo, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; + +import { extractChainToBeRegisteredFromRegisterChainVaa } from "../helpers/vaa"; + +import { inspect } from "util"; + +interface RegisterChainDescriptor { + vaa: Buffer; + chainToRegister: number; +} + +const processName = "registerWormholeRelayer"; +init(); +const chains = getOperatingChains(); + +const zeroBytes32 = + "0x0000000000000000000000000000000000000000000000000000000000000000"; + +/** + * These are the registration VAAs for mainnet. + */ +const base64RegistrationVaas = [ + "AQAAAAMNAD854pKAyzQP3qbpHeNRVc4R+sSdpZHPfv1h8S9NP0ZmPXxFdeyDDDXBzBkBenniju3B0Q/P/0WVsdu/yQR9VZkBA7uRv48zdi7msHq7MRnEunSNCSv6/ofTYNuWLZnJZGKSCrtObQdunVSur+jexWOxkwpDBeKzlhzTY7wgO+BknycABSRe+D5mP7xunLPyye675E6sL25YRME2EDM9ZDQMfkQHYR9OEdZ26Xc1AvbKbAcJdSl89vNy3OCHXeP4uoC0j1gBBpbqctsY3kMLXAcbsJ1R1T0DGXozsd8HEbX4WRSd3PxzWMhFc6dRizcZtn7AH6BxQN2nJBsIeAfB1FSMGHZVnSgBCG+yBj9JvDPR8l7hOsMcuyoLpUD0Gd8c0DyR0K646X1eb+rj2kNiiXUxQoGQqLRYwyfiVgFqtqxizBsekxIluu4BCYv+nbZtXVDrYXcUPo2xsjIAxncmbwKsLRwEuQ7podG0dqn0+TdSVV6GpU4vW7ZmhmMQ+PWHNWxZQhiq9B0g+84BCrZhIetb+PQy4a4yu5iN18M9SC/k1jq+E4bTjN3a4MA5ZNeS8nBDCbzqrgwbMi5GqmUcbio8JhGQPN28hzY73HUADLIrgXKpCr8Uqu5agLuXOAJ1eY4fiUeb5QtUtFSeL8u/KFr47XMJmMqpNhLaxOgO/zbqgulFZy5GEo16vhLBk2oADU7wpNQuK+ZI62vTfWGEwSOrCjHdgElwQWly5b4/vWoARNnS3WSkMMypURD/NvLzY/qQoM61JPIptGyqhfmxi8QADg3bIzgJU+q6BbjUk/IZOGDxAHmi/2/8AL0R25TiK18OGrO/RReXKgqi1+0YVRIx4IPkjMwH6NZO0g+7bVcVG4IAEIpYXVlg2VpQ+c1sjKS4rnpwtFSaBSdx7f8aDDpAnqXNKG6ubFPrKAA4YFOE0FHgTowsUxwPhxPjalxNcaBEpAsAEfo82Vdl1ku9wHAAjDER/69GradeTcOWB8ZDtUfD9w1CPw9O4q5dftQ2GGmJbcsBI2igqVhogcV5qHdyj9dh9ToBEkR+W5flNBxf8ukcCrqLSMqYXzaZkvAPsX/cnA9ldrk8a+rzpE3+iXLfHyjE7aczanlV5tM6TMHhwyStRd5y1W4AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKggAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAAgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAC4Khc78ncNOrZVxtF6aKWxY2MQ8QnLvXlDI0dA2foKKN7xEBVlgtVQux5tQgcLeIprnpVVdQJI1eS4836w9SVIBAwlBxz/Bc9Lxv6gQoUHbI0Pz1P9CDFb/CTVLJxi1uqSIeSIgjpCX8Z9mB9i3m/x61GnUus0/YK6Vif2tI4qh2VMBBR2ltDAXis/eYJHUz9g2kmCXvihi4wuW2J0D+da5vBqDGcgUyRhtMKVk23kBNuJCKb5sIaEVUY+y4Kfz9QU3ccQBBhbb5RwfEgcX9lItcs+F5CMV1l3QSfzp5pFljRoOPZjIZccdb8XPdoKZHEdrta3kBI1x486Bul+iYy29F6NSJg8BCPvTdyW8MuXpqHLwR3vjRu0wKv1F2bDlckNHrcDNFCwCDxNHcHJ8nVf/+iSZgMNofMmNYhlgZMMN96cUfwfOOvYACfaiG2OzyMGPlrX/cSVtXtD2MN6Q7mXuva9rWRa01v2ydtff2uXgX/UqL3e4gBy8sfuYjGtK3N3Zqu8ueIR1APEBCrwnhFkN5XHwi/MAPs1QpWQwM3bA2noUURgVMCK+RE2UAjgUfKVL9l8sMSOJ9Wi6gLDFR0E6j7UnRS8JMg8jNH8ADOaxfnB/eVg98oN87GzwX10/cLmfBO9sOlTVXncPKspKeNqHRGwRuzn/uuvTJNezaZRASUV7vJclbdewamEScmMBDULIbOMpTiyuUwTZSusw3kxoZhLQkPQZmK+KFHP6tPpgVXkwggEYNRC6VmAvLbujaUlZ4FLg0uyXPxJzCFF4mLoBDhE6OMIZ67mQxb8VybFVu0W8x3O1PbwsP8rIZqsA4PK+YeOWK5niW75f7+Kwr1/eAB41px4YVrNptaF508CoJrIBEOqec42IPcihlMnxgKESPCSWvoJngEfWIgYAZX33eyj9HsU995vEdIevEWBw7USlirhuBQMIksIQc0LbpfdC6zkAEXWcbYwl7T9KYLfDBHPO8S8WUiMe5eLZjvwp/+MpCm7zf77gIbDc3b+/ERBModlFHT7UVYFoIeLAiVOOfWBeCjgAEqB8ci9Em4Y9mW8VGF76H7WwVr5tQEyOeTSS7bVzY3Lyep7mfntJmOgc7l9FYmmE2AG4HvfryYDN4ZWaSLGtV8cAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKkgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAE6Q36mQROR7Vk7srbLGWFgwZKxWba93KGdhaEzGh+nWUXPMqGthiMJ3hHhGaBrhG9vxuWauZRgMfYeP9IE1z6AAA/EAYYyE/1bqSfVjtDK60HY1D658/Ps97JJUCAPYTqk7XaTH+nvX7DY7m2EtzafP7J++vbzlF9wwkD8TwuxcsU4BBc5x0uWU82yvJ+i3aSYeWbkenlf6FiBcbTdQdGFQiJF+BRMPJPG/lIQxvLAlrsvyTc8oYpejACw36+cqy1wkMMYBBoRFxlvvrUVvHMQnyAsiQ7I3AMFSr8YLKYzPXSQmG9nuFie8QKpSe8Z96R3hTMDfstmbnsCNMaeuPhrO8f8irL8ACJkeyW80eyQncOl4pkc9qMgrFNy5pczAXd5LzxEl49lIHCXxiNB+Hk5oqRbNeash9BpUM9d5Zg0VgI5sFyxVrM0ACUJeXz9xrwpuvtG7A3WQMZutJg4uvYuIm8ZPeC5ZR5KlKHTBlzz2m3byCjMxf6jxbpgq/IX+FHunQr4SItlC3PgACssbY/Gk8wcC4riD7syASLqRs4oJ//7TMpmw5a6r4J94Cfyl91/GpAIrkCvnyveToY0Tca7LPZvw19J2QHd7LNcADLbyUAzjUScqHYdOLJUWxWbNhXAocuK4sPoJxUoPA9vNJ8Hss2faHc4Ea07q6pIvn/FyiGrk5QeZJI9Ygh5UP20ADSwwdEPIMpscnkVjNCU8YEtdbB1/Xc1EBtnYxO0Ti3L0ef8vQSpBR089YZpByL8haJi46KF9PNcnXmkpvMIhuEgBDnm1dbR5XG08zK7zecL1M95ibfmoelI4nzj6w/XXe1eqMXqu+kOGqshmOKnhnNDcvZL58If+1UyeKMu363zHW4QBEI1j+IArF9KuA6E4wSOwajvl++09R4Zy3FAJprbNsT3qRnrE3LFnhMzNnKlFnumM7q+gyfREzb02VPA08oiiT+kBEb0+TrlFXAbDr/CINvVa3XsbxdOJoaAtAqvNXVTlwd8cMXlrk7Cw6FMg+ANqOFE7xIAItKzAiQk2vUYWXyWJ1pQAEn9pqSDr4RrXtz6xOosnKdeily72uG7C2bLKX047i5y3AZX1nmK3FXJO0iIeMsT1N4WNElBuxNTL9WaYK/Y7+1oBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKogAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNALv+lDZlR9R2zIDqVdTmLugQxZlRCJyJ8H1ebcCIdhOEF4houQ9284WPt0lXOi6wOk0F+PaAly04zlBVOFAYp78BAwEDXTn4j00HUSaa5OCYu+R/NZE1fBthaz40pcIcTB8sa/0rGagHhBlplAXzjUwws9SXDIp6N3Kd/FwxnymYg6wBBWbsEpv9iR9RD0s1B0PyupwGGwuU2cwg0KdcIN2GNyLYMK0ZbTzZ+1FYM36HWnhI6GU9UP9+fmPEHCmV5X4cA5cBBgSzRQmNoyexzifuSKbSv9JqdECQVABC3B1pikWPcmtzDzmBWrElTMm0W/H7Espi6ptfnzKFl0w1D6fiP+SpyL8BCIGlIhPWXY/Mpsmc6jstE0UYpFGid6C5L88NugaE/FLDclS4ov+0UKHgd3utUJfZB89aSMfXDAN7OjYvGXOxQ9IBCSiyXsE5S/nKr5yV7wdLq+9yLBWwpO3M7aw/29amvYfTasL7SQ5GBesNU9s+2oVSf+XwAXGlpagbKDxAHvA2l5QBCrVHAGEhesS5T8xF/CMpLVHARxlJOieFoMr3brNJekAuE4kL3pFPB7aAuEB5+HvRRI7Y5PKx1qYGYZhqb1FZPWYADChGjEAyisp4d34ZwnIrNwVyUBeNkqLWaqtS2LYL38tAdpa9seLfKwAvqOmWR1QKALWMHR8R6GonTO2PjYsmgIMBDV+ocwnKjLisM8UWo8POhgwsaUEcT1q/7A2O5/CKkXcYNx/C5URdJ/mRXP1yOWqwsPdv3IIPh97fpqEpo3bTlnEADgKLgU6x90+/EKX7LEZaJUsAAoMKrZIBVV1/m1Bhv5n0HL7KD7srbdpR/aQN/PiL4Is8mp7hQQNHoN/w9wp2/VYAEPohckH7ZN+WgSunreqP9He0wDp2wl67P4vIF6/KKnNcfI0MV+As7UxSLcXFwCdY7ukf07v49pBX6TzObtF3ydUAEVzZxD1seRo60FzqfP2X92oe76Jn4TTw2BRLn8Un+T0uAXxExCdnAkiVTR0Rm3EkEuAyrOn0h5uMNkOcEAMY0PAAEnyy5SYJou8oOLJHRCM7oIT3Z0jStVOr78cM748F6xZzHgEwgbKOrgQu9A9zEEuiuRdg6TaRaO2Ru5jZhe3AJfEBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKsgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAAr8dcvvcrz2zDXa/fRUftsAUXiawK+9NMfO+lYaHMLwGZ8xbOO7k9M5+G3ESYbUHjNnfzPZ+XQsYkvv772gWjcBA9PPlaqEA1NY9B1LD13QxZwt6Laa9NuE4ptd9ReB1KRDfLiFBU5iWkrQMyRXPgM77m5Bafp/oWnC+0pcTH5pvuABBR+EOjQP/TpgX9hEgO8U2FlbH//dRafhyRnGhqwb0jS7QlXW/4iZDjPb63UcBv9rpcY0af71D7mSTBNaLoHbD5EABnjl6QJRne9mncGwPTyb5LhFiaYyK83zyMsFYZKhN3RIeklwlWbQzGj92cbR82gVLxwHKLunEDGoZ9v4oXDPaU4ACLJd8E57QUe9OuOWD+fxgZaMCEtjqJyhHCjlV9UW5qw7YjtW6UcgQajOn6sL4U6fZZPK8gMkL1oajADIoj+UcYMACRnEAkeedWFcdn3jTrRjCZ/HUsgqqd73u13KgS3F0aFMJo+Mikxlm+j64OUdLw7RIMzKxYNEyps9+anNIf4ZGfkACnyW4MIet0MQY3yLzPrCS/kRkN/KOnSZuuiFpN7FQcWPJBkzsNVnhUttjC/MKE6Qd/+rFtbJwPmyTNwveHXgqPwBDM2tQaNyLpQxfZnslULjqlnqnPApf0UO3FfAN0CL3F1XcN8AA3WnmuIxr/HrEoxlfQll/o5Pte/vJnIISLbmihQBDUGakaIpm6PZgxcSUL/NoZtGLGzs1saJq0TNBtd7PJvHH1MlIbEzQwi/7QFkCrPI0hLy5p80nHaX+rz5X0Ov3OcBDiI43VD6wj2Cd4aAdo3Fz0/9AruzUUg91iXgNMndC+AKGixJ+VI4p8/X7EUDi0R4pFfpucIX//V0t92dVmPGU0YAEA+vwSXtBEwGWXp1Y/IqXtUHHNoukov0AacVkq96vWz0WxFNHWmrXHhM1K3du/UbRh6FxB9XksXjCfhnhxlvn1YAERQak1FOQjbaZxFR384z8f0k3W6cyI0Wui+44ExmRXaxIs95Vmb1td9gGyJDOCuZhSzSOEDZHG/X37sz4ndTeUoAEogAQf7s6GmPgbtm6YF//qow61i17k9meiT7BQMPov+8NHz8PzC9mhiujl6cAe1A1GRZ0l6WxIbPhJ1fTb6hiEgAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKwgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAACgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAMm50l6vVsWTb2bxR/5FBhcpv60FFMHbwhprPoxB/WacQ/j8LdJ5KtEG2bI9fSFhN0/bJAhOTcRLJGmGJDF35OMAA6c73WsihkS9xIO8iRDDnxILg8MVwzdkwwjZ9zvCswxPJs5rk+PeHM6rRB2xREUxgHW96OFemqd/psMR5AvcBoAABT6I7geeKMbr0s3UfO4ye3upzZhcWwE1LvwlaJ6+yoWET3vGbaMmbb5dW7ppzg88IX6HoFH7LedMJTwRk+UrFxwBBkpGMnw6vA80yqLO8UNBkD4Uo7hOZ9WU9F0BBeLjtOusN5OWfCDaEqo/OBAfrj8HH+hw++V0ZXwCGUnT3zADpqcBCC1cO0i9dEJWye6riEVALlqTdIHIrh/FJdoiyZh5U+NGfhmmoxxmuov/fc0k19I7AtRMeaCdqe+stdm+jw3OJp0BCbw8IX60VXy9W0hs4T5XcyKAjt2tKG/1b4xkA95yF6MqEC5jS+Jqyt0zKySgWgQGj4I6dKakHE4vkasj9iF9isgBCoI7N3PopcIiv1oouV0uuqmSuk+FIjN+jSq6GbvhrXK0Ii5qhql+NGypN0ZAmL9fZJ9ffm4Y5x1bSqvcDBm7UTAADMbSMs/v707BCPvvlZqilAdOrLg7bHqP5faz52ttSzxGeeHmrLMYZlHX/phMH6iVxK+7QhsYB0+RfjIktoTZAG4ADdSTb3y+nLxkqYplTUZz5m3eOlzNUvjz4W+mnAHx5juANiqo9wx3GwSggL+Ee1AVkU4YnJBT5lnJlt+04Sdb1OoADoqxm1LsxFOyIb0js7Q3JD2nasCtiOSecbrqrjAGVNg0Rof3yx1p3yRCbj0Y6QujnBJnxjclcSqxJXSWQvh0LFMBEKuZsOWzfCD3hrKWkjExxd+ClJhVnkbx5cKXH+2TzqsXAKYTVLYPtkDjaXVamXi8V98BpVORy1/HQAxsrtASGokBEchEtRIjsv4TRINmyM0A7ckeaI7EGa7sl71Brpd28xfxdwwXQoJcPMG94sD4ko7cJIdKvyPZTT0S8SG2YdMTkTsAEvRgV/sj6LmU39AWj43OL2Ye4k+5/6C+Iqiwq0Qk8//GVn2eXBJNLc7g09ro63hvDB1LOPqFfhcxC9JeQJLDccIAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czK8gAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAFnqys3Sj0ZG5SCr/H7zPPMTobjwIKJ+GAjwpY3zSl69HYvw6Kyk+w22FFWLEQDIC+fdtNiuUCMtkyQPyTZIh60BAyCF2HrSfqoBnRTN7upXX5JuwdtEGAyxkytv9UtW8KnXO6sOlS+ry6gTX62fGH2xIOpv3yYM+zhp2XPT63JcRXoBBQw37r8alAMrP7f1P/q+7iVhCoBMf1jHq36CuNEDrb4fOvGumWfxBFwECqXzpMjk2NWjgCyoJkg+mhoV+OQjmQUBBviNctAZuDy5sQMJyBRuGXadpyu1miY2kkn+ObUdR11XDlf14ZzYZK+YNcSAmyZor7ZpCyTycdN9nK9wiUAqZxQBCOfslO/WxsBueSw6foiFvzBc1lKnaHbUlpfJnd/JqYt4a8IVUhoDFRcYzYH8RhnHL/7rKebNlo2rnVEvfS0OuogACVtvE45SlnX+M15acva8GjXSDPUYeGUZwkqwFM7vYetxM63LcBp/dcy6zBKrXnTbx8CD6oMY0O7eUfSGKSyQHnQBClOML781tGMPE+aU2hn9Pi+ldDhiKvSQ/TuxmmIPiL42eLXWQIxxd1ddBKZVm8C9GVOPk+bdUojZkxURq4xRLTEADGVj6VJZpT+FTFRBdZgEER5SzkLlMy33ymAcsUCR08bYGjf/uRgpyvwFPhSvJKWf/KvD/XdOE5mQEVTVLWNAV/oADdY5xogi7U8pr73+NJ+zHMNnsGX1o7+3NYfgqvjdCtUWG+X9mdeGKKe9+owH/6pH1sS1jmtHDavs++lds5qWSWoBDrhaIDsYRE9dJr6sOCeQgdYYpQp38Py31/8/UfsnBdmhZ798eiUG3ErJC5Ru5j2Knqa/rYqoSU+Z8q9dFdGQgBsBEBjVo5DQG5jZdiIi2X08uYhXPyVqej1RK7Jtt48uEoS+AgptWpZgqGnc66GZMI20A+BwjHheHCcVgh9poJHznYsBEQdn1vTyf523rp5CVrmoV+eFcekhl8vIIYVR2jMvtBEOB9/Mc0OLhHO5HzqTpL2Wvp26/4a1JOuNwWOdoz8feaAAErADh80hPi5uw5c72Q2Y60xQDJxqqJPLHWB9mEKjJrbnWlZEeF3V/3wu7wEuk4tt8hXtTpe4IjwHj8io26knh3cBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLAgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNABR85p6uz7OK3Pj5U7+X8XGPo9uBwWCeQuzt7+6V9vshbyCl41YuU6gBa0xaxFyT90ntO6k4FoUDdJAoalXl28UAA66iAflTo0x7XLvMvsbELUdBB++jwfXyUTfw9/H480RvU/v5sdR185bNBIeOC/nvWAFL7sOMP7aY04YC+9+18YsBBfuTEmM0KJhXMC6vMnaQoNhFcJj6wJSmgXtJ84hBw4UpWZjfyNUAcfKWBT2PxHJoX+423YmQyCMPPiduG4c6db4ABiQZRfhsGr7z7hKGsUIskrr+17OMPa7CK6YCUmZ1tNNeGTirhEtBa2qAO95bEmSNZum65o403IdFCmmmS70gNLoACE7pCtO6oO5My5h/aGJGlYY0/Yg0eQ+LZk+P9gvx2D4lY2uenM9jIyNM29jlLBOMmPhdStLEChWxNlIK3PNhgAEBCadhBJMujDpzNsps3TOxtpy/dQ63JONo+uFTNOyICSGWPJ9eMX3itte/xjTBz20mVnZi2+kKD3iYnC4J2Gce4AQACktXQzwfVgjkwOePu1lycb23kGCgESbVVdsKAOQWDioOYZTmosgVEJs8ppsUuJlfuLUSPBHnabZYZcDEjVR8FbAADHvgVaFkolTvGo1CP7inQPNl44Tb+x32J57Bqi+OjsM/U1nj28UO0Lam+BzCio31UOCyL0A5GXyTn7CL+a9iB6IADf+iP0G5Fn+7y/+XQl8BX2LWjU9Gnwlzvey4+rQaRMHxMayCDuIjGOojmnRV4WEcd6p9Jng6oaESA7cvRHUZUgwBDj7xFX/i1N8Fmg1NN5Z4O82ay9MLm6gSc4Qab4LFa3EEF9vmBEflwbw2K9ri6xXNzyr00Ldld7GxOSXgqxBbQzQAEEQ+YNjKF7WPd5lt2slSXPrq9QkuvqBPE/3wqrggS7qiPASxmHuVg2021wZZeyQ5rN3SU52fbAu+6pcN6AH56qUAEUoRGurx9pVRXwH7F05gaDUpKpmi2VPbhHUzabf2rsiaTp4S2xW3aogLkpg/KJN+jiVpvTp+7d/nEMj8T84BHtgBEkM6QhVMvbbxsb28z/b9y5DosXRUDmOCWvA5uPxDwb1iEcHLSEnWyoyyqu/txoRxf66+ULERpE+CJN6/mqC75bABAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLEgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAEAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNACp1I3U/xNtmylR/mafS8zaeyAujaU3IAnC3787SH5AEVOWWjj1rMWb5jFPe4RqmLVN7yoAW6rE3HRVd4hRvsHkAA9YLGo7CtM4n4rcpi7PLUDAIuUVIDVN1RtuioLGv3IDia8CwfZ7k8+9ABI4l1y0j3ibSLbvHwj327vA2cRHqRm0ABTVC+o26a2IHI3K/ku9WbxreKpX3q+l2ktIL7InJrSIOSXGOvM0Gl8pZJFjXmnPD9Im6e1v8UdnK/J/TtU5dgvoABrH037fuS7MFnA+fuBxq/Vt3A9fgtUcgBn1/98YnVao/DoBsQmxacjiRf4nP2jC4DnYzz/YAWlllz2E1b1UZZKUACOvnyZoug6dRWSckasCsytl2o4gkWszh9BqxmNN7MtzXJxfhfdczngTQuXqJNW+plOWxoDbsgOtoGpw0csJt+hQACQ6YrMzxLLqDt7tluI9TKvoPhrwGjhMT4Ya0nphQZQx8brrMwC5ie110cO+QNcCMro2HTcSzcZRbKJcG3qx9kAgBCqDye8/GNxWQJEb981JVTqaZ42G449y8V7hA+LX33HReAoR9gzF9ICm3PUfayoiFLxvrKkkATBwenvS1AfQX3MYBDHJKpgwIS8wVmvNanVgHjWZ1NMtnvPyl+VngXrGwlW1KAu+Yq8msZ3t3mx+9dQWxYhsJNdGljXNzw2uWuZ+MwPsADTE5slBpUgpL2cYZBef9g84h61eGsmseW5Z3LkkzpusWPdQDGhvtDMZeOeANCgAMkXtpAVaWyx7tgWvoZLZav7IADnlCYOXXNK4g5T/zR5myqaOfD3kjcfjyfnDNXBSj14GBa33Io9prqIbywhswRkjFHBaJLaa6zRB3YYLLZcnEawEBEA78egjLgSqwR71n5iQZfoJErcahzg2e8wxGm7WRhgblXjrKZQVOD0bm5+yo8gucQSh5G6BElq6XE8UkKIN3emcBETdBam9KkZsrTfr7VcOGabk9ZoEKsMd82Shccf46PjijaxjE+x9uBwC4mvuPdPBW3ViEb7jQREw7QFr7d1X6o5kAEnR/CPumKqN0NzpcNrb7KaNtTjgu+ysKVLA5rrj3b8dkaDsCxSmAIpdCnQ+1MgseblxjrPMJ4D4PFfeh/nTv8w8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLIgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAFwAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAGcGEjeUvoyGwjagQWzB13MOGokq4vX4PNzoyt9C1h/xDO0X8X1uKvTNJom44OvZA8zn9WQ+jYt29VQREpxXU2UBAxHoSKrqcyPN3+nR9FGJrPSQ0xMLmWGFWqAMIOcUk5WhfxM85EzUoWB48viEgG2QHrPFbH+hGmxiiuZZumApE+oBBZ2DC4EQY5KVoGRHtPVO1yWFowJWv2ALfw/KSPcbMLdPAqTmTB8sQVKi87forCjoApwPYP5MkvAPXP+OXa8jlSEABt0IqJuTkgKSuvyjq5Y9Fx6ITNO7ubhXv2+HqyetJ5IVDtW/A4aT5sy4VdI3b8CkCHdH/RFU3MTCC3XfBadYGW8BCAnWoIIXBrL9oOc8TdtVGYHa2dwcLI6FqQIZXOvR2FZeUo/QeABd/tlf25LcrVlxzmj3tfiX9yVEo0agcxKaxqcACY8kt+DlomQQxmsbGUVJTTa5//bazxbFpqIvAanswCGVH9b5ksC6eraItakPzZ+Wp/0ovwRKV21Ysam4X2lk1DAACgMj1GcXIcAmImWjf/njRZGW67kow1aO9LFfWBKuQR8eTPms8Cvg9m04Cr3L0c7eTDVIPmgKDDMNT6BFUeezmmMADE0OMt7LkoUgPsdj7WyrFaH9kfqL+vO/r0SaCOUreb23ahD+KmeXTKV1SYEc6mtR852KvEe3zZlp59bzuGw5SaYADfi4hEoU7QlDkxHPRYh2DoCtKmxGB1moUUXe1mPFA4gqNnqOpHJ+FHgiu2OWEC0M5rkNHmuHts5yfV/cICuDV58ADuoGD3SDMNjDHlILjDtohz5Hptq+m9CInc11JXALkBNLSJK7lz7TrKlTQ2ROXoezYVQJ8qhyvpe5qKqjVmE1RlAAEF98ZUcipnxnhSjo1qZKJvWZnHDPM62s0c+2TQ+LDCb4GBC6hirIiq+qkKtaBmmq0mEN160WsRM/TA3NTUkaRi8BEbaY8v582DTSvf9dTi8CidljG7kQ2z5kuRaJt67gmyc2ecTMQNqD8KV5oGx1arua2dK6FQpNGL40xeiAEMRtzmcAEg/xnYT0nYTK3wwn+RlVs2mAJxpXHBeshdrxIbttBJCFfNeaieteFTK3RDmIfqD2al+a6AT/BjuJayTVAUuOlf8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLMgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAGAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAMNAN+LTdPSQwSBDdv0z0P8RQe1Zyj3bmsdECprpkbQxjsrQUgiPhmuBvQMoHL+FjM6TER0i8N0V4NZZsafNbTSdQEBAkfo9KWh5aT4WERKUPQZpHeGb3rRCvlNYiUf9af0pCqSFQAta1p5OSJNYiHXQ6AQd5K0oe/UJhlzKjTHws3EQBEAA2+275+cUGV9d5G7NEuUjWyBLxtAcDgQA6lCQZsXTE/JTLjWPOx54TmComQteJBU0HRkmIB9oD08WaOe+ikjLb8BBLvwJ7JjE3V46iQFdvEuPcFHDO2mM5Hf6q8Pca8K36dkdyogaEeqEGRq7y69uoyiG2wICIy1iULyFFxRIOD5S4YABnRxmEPJnhLNK5s3+YQx+N2L0tdLB5QpH9jXuLV1vMiWTuLHmC+0kyYhmW1YfrT/SGHh0ObYc+4e6Ln2hPCEJiUBCPM+2WFjnsgsG+BVKLinX2ZXvOvsaIJ+jylYmeQUI+IiBTEuXnu2RTAE3w6tvhHreViO4W9bNfyNsvfcfUV7+qIACeQ55bN9rN7CXRLLoVMe/OsvEwqBLS2Z/LcoKCvOBtvpH6sRIocW6h1DCuigjswkguMLQ5uRK3sNzJXMgOmP5toBClIkUZ8Dz4O2ftbTGlSV7c9mrBDaLZS6xUIQm+LQdfcjC2PBV2ZBrW2aVLH71fp/vjwIzQj2czGEdqr5/O9IxuUBC6J35ppxk4+LEZfLaXWWj35HgP2o5hNtI9LJ9cu7FdKuaCMh64tfaDxYJbdEkueipNGKwgzYww/j+nEr1xyLYDMBDQb7poN1399tdsl9Oi4OocmyQ9j3o3EUQG/GfLdUXHF0Avr1F1kH0czZQ/INU5uBXrk21DD8Pfs1wzFqI0Lbo40BDkyjKbXGH3+qQiNZX+PdTRTXdQbDYBPGzo40g01IOA91U20S46nO9URqM3ZqUApnbD1ZsJ6YTg8xvngL1zaoFQsAEHiNY2IXc3glj5jAoaWoWyKbIxbkOyigjGjgMD/iuuSifPEJ8H7W76a+AjebB7S6AsnYHEeCY+2no8J5ry1Jh/oBEtW09ah2dPjEpoasZ4BqRUQNMIYaQxkexy5fdaczqLUcGJZZ6O2P975z06FHgKRss0pYpTCPc4HWaOjbWBmPGFUBAAAAAGtFoakAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVVcE3NUEbMQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAHgAAAAAAAAAAAAAAAHBvgum7WwgTUBcUq1l0IWcEmA4x", +]; + +async function run() { + console.log(`Start! ${processName}`); + + const registrationVaas = base64RegistrationVaas.map((vaa) => { + const vaaBuf = Buffer.from(vaa, "base64"); + return { + vaa: vaaBuf, + chainToRegister: extractChainToBeRegisteredFromRegisterChainVaa(vaaBuf), + }; + }); + const tasks = await Promise.allSettled( + chains.map((chain) => register(chain, registrationVaas)), + ); + + for (const task of tasks) { + if (task.status === "rejected") { + console.error(`Register failed: ${inspect(task.reason)}`); + } else { + console.log(`Register succeeded for chain ${task.value}`); + } + } +} + +async function register( + chain: ChainInfo, + registrationVaas: RegisterChainDescriptor[], +) { + console.log(`Registering WormholeRelayers in chain ${chain.chainId}...`); + const wormholeRelayer = await getWormholeRelayer(chain); + + // TODO: check for already registered VAAs + for (const { vaa, chainToRegister } of registrationVaas) { + const registrationAddress = + await wormholeRelayer.getRegisteredWormholeRelayerContract( + chainToRegister, + ); + if (registrationAddress !== zeroBytes32) { + // We skip chains that are already registered. + // Note that reregistrations aren't allowed. + continue; + } + + const overrides = await buildOverrides( + () => wormholeRelayer.estimateGas.registerWormholeRelayerContract(vaa), + chain, + ); + const tx = await wormholeRelayer.registerWormholeRelayerContract( + vaa, + overrides, + ); + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error( + `Failed registration for chain ${chain.chainId}, tx ${tx.hash}`, + ); + } + } + + return chain.chainId; +} + +run().then(() => console.log("Done! " + processName)); From 068a7a1cafd193efc271cdc31105c40d8e56447b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 11 Aug 2023 23:53:40 -0300 Subject: [PATCH 021/174] gRelayer: adds verification scripts for other contracts. This lets you verify `Create2Factory` and `DeliveryProvider` contracts. --- .../relayer/shell/verifyCreate2Factory.sh | 61 ++++++++++++++ .../relayer/shell/verifyWormholeRelayer.sh | 84 +++++++++++++++++-- 2 files changed, 138 insertions(+), 7 deletions(-) create mode 100755 ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh diff --git a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh new file mode 100755 index 0000000000..bb9deeeb00 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env fish + +# note: the first 5 testnets (avalanche, celo, bsc, mumbai, moonbeam) were deployed with evm_version London + +# Equivalent to `set -x` in bash, this prints out commands with variables substituted before executing them +# set fish_trace true + +# TODO: add option to specify one or more chain ids and avoid verifying already verified contracts +set options (string join '' (fish_opt --short t --long scan-tokens --required-val) '!jq . "$_flag_value" > /dev/null') +argparse $options -- $argv + +if test -z $_flag_scan_tokens + echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." + echo 'JSON format: [{"chainId": , "token": }, ...]' + exit 1 +end +set scan_tokens_file $_flag_scan_tokens + +set chains_file "ts-scripts/relayer/config/$ENV/chains.json" +set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" + +set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) + +for chain in $chain_ids + # Klaytn, Karura and Acala don't have a verification API yet + if test 11 -le $chain && test $chain -le 13 + continue + end + + # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` + set create2_factory_address (jq --raw-output ".create2Factories[] | select(.chainId == $chain) | .address" $contracts_file) + + # These two are documented in `forge verify-contract` as accepted environment variables. + # We need the token to be unquoted when passed to `forge verify-contract` + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + + # We're using the production profile for delivery providers on mainnet and testnet + set --export FOUNDRY_PROFILE production + + # We need to compute the address of the Init contract since it is used as a constructor argument for the creation of the proxy. + # `Init` is created through CREATE which uses the address + nonce derivation for its address. + # Contract accounts start with their nonce at 1. See https://eips.ethereum.org/EIPS/eip-161#specification. + set init_contract_address (cast compute-address $create2_factory_address --nonce 1) + # `cast compute-address` prints out "Computed Address: 0x..." so we have to split the string here. + set init_contract_address (string split ' ' $init_contract_address)[-1] + + # Celo has a verification API but it currently doesn't work with `forge verify-contract` + # We print the compiler input to a file instead for manual verification + if test $chain -eq 14 + forge verify-contract $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory --watch --show-standard-json-input > Create2Factory.compiler-input.json + forge verify-contract $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init --watch --show-standard-json-input > Init.compiler-input.json + + echo "Please manually submit the compiler input files at celoscan.io" + echo "- $create2_factory_address: Create2Factory.compiler-input.json" + echo "- $init_contract_address: Init.compiler-input.json" + else + forge verify-contract $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory --watch + forge verify-contract $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init --watch + end +end diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index 393c9b2173..edb47e2ad2 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -1,11 +1,81 @@ -# For Celo, use '--show-standard-json-input' and submit manually online -# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan +#!/usr/bin/env fish -# Make sure the ETHERSCAN_API_KEY is set -# and the WORMHOLE_ADDRESS is set to the 32-byte wormhole address (no 0x) +# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan -# for testnet, remove 'FOUNDRY_PROFILE=production' and make the addresses correct (current addresses are hardcoded for mainnet - the proxy address, constructor args for proxy, and the implementation address) # note: the first 5 testnets (avalanche, celo, bsc, mumbai, moonbeam) were deployed with evm_version London -FOUNDRY_PROFILE=production forge verify-contract 0x27428DD2d3DD32A4D7f7C497eAaa23130d894911 contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --chain-id $CHAIN_ID --watch --constructor-args 00000000000000000000000025688636cec6ce0f1434b1e7dd0a223f3f258336 \ -&& FOUNDRY_PROFILE=production forge verify-contract 0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF WormholeRelayer --chain-id $CHAIN_ID --watch --constructor-args $WORMHOLE_ADDRESS \ No newline at end of file +# Equivalent to `set -x` in bash, this prints out commands with variables substituted before executing them +# set fish_trace true + +# TODO: add option to specify one or more chain ids and avoid verifying already verified contracts +set options (string join '' (fish_opt --short t --long scan-tokens --required-val) '!jq . "$_flag_value" > /dev/null') +argparse $options -- $argv + +if test -z $_flag_scan_tokens + echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." + echo 'JSON format: [{"chainId": , "token": }, ...]' + exit 1 +end +set scan_tokens_file $_flag_scan_tokens + +set chains_file "ts-scripts/relayer/config/$ENV/chains.json" +set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" +# TODO: add implementation addresses to `contracts.json` to allow using it instead of lastrun.json +set last_run_file "ts-scripts/relayer/output/$ENV/deployWormholeRelayer/lastrun.json" +if not test -e $last_run_file + echo "$last_run_file does not exist. Delivery provider addresses are read from this file." + exit 1 +end + +set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) + +for chain in $chain_ids + # Klaytn, Karura and Acala don't have a verification API yet + if test 11 -le $chain && test $chain -le 13 + continue + end + + # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` + set implementation_address (jq --raw-output ".wormholeRelayerImplementations[] | select(.chainId == $chain) | .address" $last_run_file) + set proxy_address (jq --raw-output ".wormholeRelayerProxies[] | select(.chainId == $chain) | .address" $last_run_file) + set create2_factory_address (jq --raw-output ".create2Factories[] | select(.chainId == $chain) | .address" $contracts_file) + # TODO: actually consult this from `worm` CLI + # Perhaps the value present in the chains file can be used as a fallback when the current version of the `worm` program doesn't know about + # a particular wormhole deployment + set wormhole_address (jq --raw-output ".create2Factories[] | select(.chainId == $chain) | .address" $chains_file) + + # These two are documented in `forge verify-contract` as accepted environment variables. + # We need the token to be unquoted when passed to `forge verify-contract` + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + + # We're using the production profile for delivery providers on mainnet and testnet + set --export FOUNDRY_PROFILE production + + # We need to compute the address of the Init contract since it is used as a constructor argument for the creation of the proxy. + # `Init` is created through CREATE which uses the address + nonce derivation for its address. + # Contract accounts start with their nonce at 1. See https://eips.ethereum.org/EIPS/eip-161#specification. + set init_contract_address (cast compute-address $create2_factory_address --nonce 1) + # `cast compute-address` prints out "Computed Address: 0x..." so we have to split the string here. + set init_contract_address (string split ' ' $init_contract_address)[-1] + # This actually pads the address to 32 bytes with 12 zero bytes at the start + set init_contract_address (cast to-uint256 $init_contract_address) + # We discard the "0x" + set init_contract_address (string sub --start 3 $init_contract_address) + + # Celo has a verification API but it currently doesn't work with `forge verify-contract` + # We print the compiler input to a file instead for manual verification + if test $chain -eq 14 + forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address --show-standard-json-input > WormholeRelayerProxy.compiler-input.json + forge verify-contract $implementation_address WormholeRelayer --watch --constructor-args $wormhole_address --show-standard-json-input > WormholeRelayerImplementation.compiler-input.json + + echo "Please manually submit the compiler input files at celoscan.io" + echo "- $implementation_address: WormholeRelayerImplementation.compiler-input.json" + echo "- $proxy_address: WormholeRelayerProxy.compiler-input.json" + else + forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address + forge verify-contract $implementation_address WormholeRelayer --watch --constructor-args $wormhole_address + end +end + +# TODO: print proxy contract URLs so it's easy to navigate to them and verify they're proxies From 4c9ad956a3d39ae54e437d9c0e6ab07f19daba85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Sat, 12 Aug 2023 00:20:33 -0300 Subject: [PATCH 022/174] gRelayer: adds script to cross register `MockIntegration` contracts. --- .../registerMockIntegration.ts | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts diff --git a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts new file mode 100644 index 0000000000..04de17f477 --- /dev/null +++ b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts @@ -0,0 +1,78 @@ +import { + init, + loadChains, + getMockIntegration, + getMockIntegrationAddress, + ChainInfo, + getOperatingChains, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; +import { tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; + +const processName = "registerMockIntegration"; +init(); +const allChains = loadChains(); +const operatingChains = getOperatingChains(); + +interface EmitterRegistration { + chainId: number; + addr: string; +} + +async function run() { + console.log(`Start! ${processName}`); + + const emitters: EmitterRegistration[] = allChains.map((chain) => ({ + chainId: chain.chainId, + addr: "0x" + tryNativeToHexString(getMockIntegrationAddress(chain), "ethereum"), + })) satisfies XAddressStruct[]; + + const results = await Promise.allSettled(operatingChains.map(async (chain) => registerMockIntegration(chain, emitters))); + + for (const result of results) { + if (result.status === "rejected") { + console.log( + `Price update failed: ${result.reason?.stack || result.reason}`, + ); + } else { + printUpdate(result.value.updateEmitters, result.value.chain); + } + } +} + +async function registerMockIntegration(chain: ChainInfo, emitters: EmitterRegistration[]) { + console.log(`Registering emitters for chainId ${chain.chainId}`); + const mockIntegration = await getMockIntegration(chain); + + const updateEmitters: EmitterRegistration[] = []; + for (const emitter of emitters) { + const currentEmitter = await mockIntegration.getRegisteredContract(emitter.chainId); + if (currentEmitter.toLowerCase() !== emitter.addr.toLowerCase()) { + updateEmitters.push(emitter); + } + } + + const overrides = await buildOverrides( + () => mockIntegration.estimateGas.registerEmitters(updateEmitters), + chain, + ); + console.log(`About to send emitter registration for chain ${chain.chainId}`); + const tx = await mockIntegration.registerEmitters(updateEmitters, overrides); + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error(`Mock integration emitter registration failed for chain ${chain.chainId}, tx id ${tx.hash}`); + } + + return { chain, updateEmitters }; +} + +function printUpdate(emitters: EmitterRegistration[], chain: ChainInfo) { + console.log(`MockIntegration emitters registered for chain ${chain.chainId}:`); + for (const emitter of emitters) { + console.log(` Target chain ${emitter.chainId}: ${emitter.addr}`); + } +} + +run().then(() => console.log(`Done! ${processName}`)); From cc0af5e2cdc7cf20e197f84b7ad4578e64742346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 18 Aug 2023 14:40:41 -0300 Subject: [PATCH 023/174] evm: updates WormholeRelayer addresses for tiltfile environment. --- ethereum/ts-scripts/relayer/config/kubernetes/contracts.json | 4 ++-- ethereum/ts-scripts/relayer/config/tilt/contracts.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json b/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json index 0b4f088066..70d587bf38 100644 --- a/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json +++ b/ethereum/ts-scripts/relayer/config/kubernetes/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" }, { "chainId": 4, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" } ], "wormholeRelayersDev": [ diff --git a/ethereum/ts-scripts/relayer/config/tilt/contracts.json b/ethereum/ts-scripts/relayer/config/tilt/contracts.json index 0b4f088066..70d587bf38 100644 --- a/ethereum/ts-scripts/relayer/config/tilt/contracts.json +++ b/ethereum/ts-scripts/relayer/config/tilt/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" }, { "chainId": 4, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" } ], "wormholeRelayersDev": [ From 82b8168a0cd37517984458ceb6e42292e01274cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 18 Aug 2023 15:15:07 -0300 Subject: [PATCH 024/174] evm: updates the WormholeRelayer address for the CI env too. --- ethereum/ts-scripts/relayer/config/ci/contracts.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/ci/contracts.json b/ethereum/ts-scripts/relayer/config/ci/contracts.json index 8a8bfd7fcc..3c62903b95 100644 --- a/ethereum/ts-scripts/relayer/config/ci/contracts.json +++ b/ethereum/ts-scripts/relayer/config/ci/contracts.json @@ -14,11 +14,11 @@ "wormholeRelayers": [ { "chainId": 2, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" }, { "chainId": 4, - "address": "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd" + "address": "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0" } ], "mockIntegrations": [ From 6bac5c83e9956bd789b62f07beb43f9dc2fd296e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 18 Aug 2023 16:15:47 -0300 Subject: [PATCH 025/174] evm: updates WormholeRelayer proxy address in SDK. --- sdk/js/src/relayer/consts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/js/src/relayer/consts.ts b/sdk/js/src/relayer/consts.ts index 8a4599b268..d4379a9243 100644 --- a/sdk/js/src/relayer/consts.ts +++ b/sdk/js/src/relayer/consts.ts @@ -81,12 +81,12 @@ const TESTNET: { [K in ChainName]?: AddressInfo } = { const DEVNET: { [K in ChainName]?: AddressInfo } = { ethereum: { - wormholeRelayerAddress: "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd", + wormholeRelayerAddress: "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0", mockDeliveryProviderAddress: "0x1ef9e15c3bbf0555860b5009B51722027134d53a", mockIntegrationAddress: "0x0eb0dD3aa41bD15C706BC09bC03C002b7B85aeAC", }, bsc: { - wormholeRelayerAddress: "0xb0cb4baa9D4a1323d4B44E7521182257E03De4bd", + wormholeRelayerAddress: "0xCe8bEC59f8B828cFd8E33E86976c779AC9Df18C0", mockDeliveryProviderAddress: "0x1ef9e15c3bbf0555860b5009B51722027134d53a", mockIntegrationAddress: "0x0eb0dD3aa41bD15C706BC09bC03C002b7B85aeAC", }, From 3bdde2c7231f6ca632737a14c32e6d7846a5e4b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 1 Sep 2023 12:49:22 -0300 Subject: [PATCH 026/174] evm: Fixes wormhole relayer verification script. --- .../ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index edb47e2ad2..ea95b189e3 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -42,7 +42,10 @@ for chain in $chain_ids # TODO: actually consult this from `worm` CLI # Perhaps the value present in the chains file can be used as a fallback when the current version of the `worm` program doesn't know about # a particular wormhole deployment - set wormhole_address (jq --raw-output ".create2Factories[] | select(.chainId == $chain) | .address" $chains_file) + set wormhole_address (jq --raw-output ".chains[] | select(.chainId == $chain) | .wormholeAddress" $chains_file) + # This actually pads the address to 32 bytes with 12 zero bytes at the start + # And we discard the "0x" + set wormhole_address (cast to-uint256 $wormhole_address | sed 's/^0x//g' -) # These two are documented in `forge verify-contract` as accepted environment variables. # We need the token to be unquoted when passed to `forge verify-contract` @@ -59,9 +62,8 @@ for chain in $chain_ids # `cast compute-address` prints out "Computed Address: 0x..." so we have to split the string here. set init_contract_address (string split ' ' $init_contract_address)[-1] # This actually pads the address to 32 bytes with 12 zero bytes at the start - set init_contract_address (cast to-uint256 $init_contract_address) - # We discard the "0x" - set init_contract_address (string sub --start 3 $init_contract_address) + # And we discard the "0x" + set init_contract_address (cast to-uint256 $init_contract_address | sed 's/^0x//g' -) # Celo has a verification API but it currently doesn't work with `forge verify-contract` # We print the compiler input to a file instead for manual verification From 2afb72674d948ac68f577d6ce49b3552dcdb1a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 1 Sep 2023 12:54:33 -0300 Subject: [PATCH 027/174] gRelayer: removes wormhole relayer address calculation with create2 factory. Performing this calculation requires us to know the deployer of the wormhole relayer contract. This could vary in the current deployment scheme. Thus, we rely on the recorded wormhole relayer address instead. --- ethereum/ts-scripts/relayer/helpers/env.ts | 39 ++++++---------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 17ad6c4dd2..572ad8bd3c 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -13,7 +13,6 @@ import { Create2Factory, Create2Factory__factory, } from "../../../ethers-contracts"; -import { proxyContractSalt } from "./deployments"; export type ChainInfo = { evmNetworkId: number; @@ -392,41 +391,23 @@ export async function getDeliveryProvider( return contract; } -const wormholeRelayerAddressesCache: Partial> = {}; export async function getWormholeRelayerAddress( chain: ChainInfo, - forceCalculate?: boolean, ): Promise { // See if we are in dev mode (i.e. forge contracts compiled without via-ir) const dev = get_env_var("DEV") == "True" ? true : false; - const contracts = readContracts(); - //If useLastRun is false, then we want to bypass the calculations and just use what the contracts file says. - if (!contracts.useLastRun && !lastRunOverride && !forceCalculate) { - const thisChainsRelayer = loadWormholeRelayers(dev).find( - (x) => x.chainId == chain.chainId, - )?.address; - if (thisChainsRelayer) { - return thisChainsRelayer; - } else { - throw Error( - "Failed to find a WormholeRelayer contract address on chain " + - chain.chainId, - ); - } - } - - if (!wormholeRelayerAddressesCache[chain.chainId]) { - const create2Factory = await getCreate2Factory(chain); - const signer = await getSigner(chain); - const address = await signer.getAddress(); - - wormholeRelayerAddressesCache[ - chain.chainId - ] = await create2Factory.computeProxyAddress(address, proxyContractSalt); + const thisChainsRelayer = loadWormholeRelayers(dev).find( + (x) => x.chainId == chain.chainId, + )?.address; + if (thisChainsRelayer) { + return thisChainsRelayer; + } else { + throw Error( + "Failed to find a WormholeRelayer contract address on chain " + + chain.chainId, + ); } - - return wormholeRelayerAddressesCache[chain.chainId]!; } export async function getWormholeRelayer( From 86823566254825f097719ff0ad39013e7580bbb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 12:56:58 -0300 Subject: [PATCH 028/174] gRelayer: Removes `lastRunOverride` flag. --- .../relayer/config/syncContractsJson.ts | 2 +- ethereum/ts-scripts/relayer/helpers/env.ts | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index b734028c07..61432e9887 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -8,7 +8,7 @@ import { loadChains, } from "../helpers/env"; -const env = init({ lastRunOverride: true }); +const env = init(); const chains = loadChains(); interface Address { diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 572ad8bd3c..f1b662f328 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -42,17 +42,14 @@ export interface OperationDescriptor { const DEFAULT_ENV = "testnet"; export let env = ""; -let lastRunOverride: boolean | undefined; -export function init(overrides: { lastRunOverride?: boolean } = {}): string { +export function init(): string { env = get_env_var("ENV"); if (!env) { - console.log( - "No environment was specified, using default environment files", + throw new Error( + "ENV must be defined to the name of the deployment/network that you want to use.", ); - env = DEFAULT_ENV; } - lastRunOverride = overrides?.lastRunOverride; require("dotenv").config({ path: `./ts-scripts/relayer/.env${env != DEFAULT_ENV ? "." + env : ""}`, @@ -204,7 +201,7 @@ export function loadGuardianSetIndex(): number { export function loadDeliveryProviders(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun || lastRunOverride) { + if (contracts.useLastRun) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployDeliveryProvider/lastrun.json`, ); @@ -224,7 +221,7 @@ export function loadDeliveryProviders(): Deployment[] { export function loadWormholeRelayers(dev: boolean): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun || lastRunOverride) { + if (contracts.useLastRun) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployWormholeRelayer/lastrun.json`, ); @@ -240,7 +237,7 @@ export function loadWormholeRelayers(dev: boolean): Deployment[] { export function loadMockIntegrations(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun || lastRunOverride) { + if (contracts.useLastRun) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployMockIntegration/lastrun.json`, ); @@ -258,7 +255,7 @@ export function loadMockIntegrations(): Deployment[] { export function loadCreate2Factories(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun || lastRunOverride) { + if (contracts.useLastRun) { const lastRunFile = fs.readFileSync( `./ts-scripts/relayer/output/${env}/deployCreate2Factory/lastrun.json`, ); From fd661c49e23d0a99db1b1975fc9a60c8a91498e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 12:59:00 -0300 Subject: [PATCH 029/174] gRelayer: fixes readWormholeRelayer script to read all chains. --- .../wormholeRelayer/readWormholeRelayerState.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts index c06969887b..f6423762fe 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts @@ -6,19 +6,21 @@ import { writeOutputFiles, getWormholeRelayer, getOperatingChains, + loadChains, } from "../helpers/env"; const processName = "readWormholeRelayerContractState"; init(); -const chains = getOperatingChains(); +const allChains = loadChains(); +const operatingChains = getOperatingChains(); async function run() { console.log("Start! " + processName); const states: any = []; - for (let i = 0; i < chains.length; i++) { - const state = await readState(chains[i]); + for (const chain of operatingChains) { + const state = await readState(chain); if (state) { printState(state); states.push(state); @@ -55,7 +57,7 @@ async function readState( const registeredContracts: { chainId: number; contract: string }[] = []; - for (const chainInfo of chains) { + for (const chainInfo of allChains) { registeredContracts.push({ chainId: chainInfo.chainId, contract: ( From 83359314d4bbf46183a51750262188ceca1c5a67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 15:06:33 -0300 Subject: [PATCH 030/174] gRelayer: refactor wormhole relayer self sign script. --- .../registerChainsWormholeRelayerSelfSign.ts | 117 ++++++++++++------ 1 file changed, 79 insertions(+), 38 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index 4ec8ebd719..3b0673b66a 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -1,82 +1,123 @@ +import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { init, loadChains, ChainInfo, getWormholeRelayer, - getOperatingChains, + getOperationDescriptor, + getWormholeRelayerAddress, } from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; import { wait } from "../helpers/utils"; import { createRegisterChainVAA } from "../helpers/vaa"; +import type { WormholeRelayer } from "../../../ethers-contracts"; const processName = "registerChainsWormholeRelayerSelfSign"; init(); -const operatingChains = getOperatingChains(); -const chains = loadChains(); +const operation = getOperationDescriptor(); +const allChains = loadChains(); + +const zeroBytes32 = + "0x0000000000000000000000000000000000000000000000000000000000000000"; async function run() { console.log("Start! " + processName); - for (const operatingChain of operatingChains) { + for (const operatingChain of operation.operatingChains) { await registerChainsWormholeRelayer(operatingChain); await registerOnExistingChainsWormholeRelayer(operatingChain); } } -async function registerChainsWormholeRelayer(chain: ChainInfo) { +async function registerChainsWormholeRelayer(operatingChain: ChainInfo) { console.log( "Registering all the wormhole relayers onto Wormhole Relayer " + - chain.chainId + operatingChain.chainId, ); - const coreRelayer = await getWormholeRelayer(chain); - for (const targetChain of chains) { - try { - await coreRelayer - .registerWormholeRelayerContract(createRegisterChainVAA(targetChain)) - .then(wait); - } catch (e) { - console.log( - `Error in registering chain ${targetChain.chainId} onto ${chain.chainId}` - ); - } + const wormholeRelayer = await getWormholeRelayer(operatingChain); + for (const targetChain of allChains) { + await registerWormholeRelayer(wormholeRelayer, operatingChain, targetChain); } console.log( - "Did all contract registrations for the core relayer on " + chain.chainId + "Did all contract registrations for the core relayer on " + + operatingChain.chainId, ); } -async function registerOnExistingChainsWormholeRelayer(chain: ChainInfo) { +async function registerOnExistingChainsWormholeRelayer(targetChain: ChainInfo) { console.log( "Registering Wormhole Relayer " + - chain.chainId + - " onto all the wormhole relayers" + targetChain.chainId + + " onto all the wormhole relayers", ); - const operatingChainIds = operatingChains.map((c) => c.chainId); - for (const targetChain of chains) { - if (operatingChainIds.find((x) => x === targetChain.chainId)) { - continue; - } - const coreRelayer = await getWormholeRelayer(targetChain); - try { - await coreRelayer - .registerWormholeRelayerContract(createRegisterChainVAA(chain)) - .then(wait); - } catch (e) { + const tasks = await Promise.allSettled( + operation.supportedChains.map(async (operatingChain) => { + const coreRelayer = await getWormholeRelayer(operatingChain); + + return registerWormholeRelayer(coreRelayer, operatingChain, targetChain); + }), + ); + for (const task of tasks) { + if (task.status === "rejected") { console.log( - `Error in registering chain ${chain.chainId} onto ${targetChain.chainId}` + `Failed cross registration. ${task.reason?.stack || task.reason}`, ); - if (targetChain.chainId === 5) { - console.log(e); - } } } console.log( "Did all contract registrations of the core relayer on " + - chain.chainId + - " onto the existing (non operating) chains" + targetChain.chainId + + " onto the existing (non operating) chains", ); } +async function registerWormholeRelayer( + wormholeRelayer: WormholeRelayer, + operatingChain: ChainInfo, + targetChain: ChainInfo, +) { + const registration = + await wormholeRelayer.getRegisteredWormholeRelayerContract( + targetChain.chainId, + ); + if (registration !== zeroBytes32) { + const registrationAddress = await getWormholeRelayerAddress(targetChain); + const expectedRegistration = + "0x" + tryNativeToHexString(registrationAddress, "ethereum"); + if (registration !== expectedRegistration) { + throw new Error(`Found an unexpected registration for chain ${targetChain.chainId} on chain ${operatingChain.chainId} +Expected: ${expectedRegistration} +Actual: ${registration}`); + } + + console.log( + `Chain ${targetChain.chainId} on chain ${operatingChain.chainId} is already registered`, + ); + return; + } + + const vaa = await createRegisterChainVAA(targetChain); + + console.log( + `Registering chain ${targetChain.chainId} onto chain ${operatingChain.chainId}`, + ); + try { + const overrides = await buildOverrides( + () => wormholeRelayer.estimateGas.registerWormholeRelayerContract(vaa), + operatingChain, + ); + await wormholeRelayer + .registerWormholeRelayerContract(vaa, overrides) + .then(wait); + } catch (error) { + console.log( + `Error in registering chain ${targetChain.chainId} onto ${operatingChain.chainId}`, + ); + console.log((error as any)?.stack || error); + } +} + run().then(() => console.log("Done! " + processName)); From d09dfe2f92fe6853b37ce25279300737924fd686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 15:07:38 -0300 Subject: [PATCH 031/174] gRelayer: prettier run. --- ethereum/ts-scripts/relayer/helpers/env.ts | 28 +++++++++++-------- .../readWormholeRelayerState.ts | 6 ++-- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index f1b662f328..6e2af13aef 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -118,7 +118,7 @@ function getOperatingChainIds() { if (chains.operatingChains !== undefined) { operatingChains = chains.operatingChains; } - return operatingChains + return operatingChains; } export function getOperatingChains(): ChainInfo[] { @@ -150,7 +150,10 @@ export function getOperationDescriptor(): OperationDescriptor { return { operatingChains: allChains, supportedChains: [] }; } - const result: OperationDescriptor = { operatingChains: [], supportedChains: [] }; + const result: OperationDescriptor = { + operatingChains: [], + supportedChains: [], + }; for (const chain of allChains) { const item = operatingChains.find((y) => { return chain.chainId == y; @@ -323,12 +326,14 @@ export function writeOutputFiles(output: unknown, processName: string) { export function loadLastRun(processName: string): any { try { - return JSON.parse(fs.readFileSync( - `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, - "utf8", - )); + return JSON.parse( + fs.readFileSync( + `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, + "utf8", + ), + ); } catch (error: unknown) { - if (error instanceof Error && (error as any).code === 'ENOENT') { + if (error instanceof Error && (error as any).code === "ENOENT") { return undefined; } else { throw error; @@ -402,7 +407,7 @@ export async function getWormholeRelayerAddress( } else { throw Error( "Failed to find a WormholeRelayer contract address on chain " + - chain.chainId, + chain.chainId, ); } } @@ -438,15 +443,14 @@ export async function getMockIntegration( const thisIntegration = getMockIntegrationAddress(chain); const contract = MockRelayerIntegration__factory.connect( thisIntegration, - provider || await getSigner(chain), + provider || (await getSigner(chain)), ); return contract; } export function getCreate2FactoryAddress(chain: ChainInfo): string { - const address = loadCreate2Factories().find( - (x) => x.chainId == chain.chainId, - )?.address; + const address = loadCreate2Factories().find((x) => x.chainId == chain.chainId) + ?.address; if (!address) { throw new Error( "Failed to find a create2Factory contract address on chain " + diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts index f6423762fe..7153d642fd 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/readWormholeRelayerState.ts @@ -38,10 +38,10 @@ type WormholeRelayerContractState = { }; async function readState( - chain: ChainInfo + chain: ChainInfo, ): Promise { console.log( - "Gathering core relayer contract status for chain " + chain.chainId + "Gathering core relayer contract status for chain " + chain.chainId, ); try { @@ -62,7 +62,7 @@ async function readState( chainId: chainInfo.chainId, contract: ( await coreRelayer.getRegisteredWormholeRelayerContract( - chainInfo.chainId + chainInfo.chainId, ) ).toString(), }); From f1bc2137e9ef8e3f678967adb2f134b13e8a9e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 15:07:57 -0300 Subject: [PATCH 032/174] gRelayer: adds TODO in wormhole relayer register self sign. --- .../wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index 3b0673b66a..ff44b57a06 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -23,6 +23,7 @@ const zeroBytes32 = async function run() { console.log("Start! " + processName); + // TODO: to send txs concurrently, the cross-registrations need to be separated out for (const operatingChain of operation.operatingChains) { await registerChainsWormholeRelayer(operatingChain); await registerOnExistingChainsWormholeRelayer(operatingChain); From 709973b8659befc7adb04242cfec7648defca8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 15:09:22 -0300 Subject: [PATCH 033/174] gRelayer: testnet addresses for Goerli, Arbitrum and Optimism testnet. --- .../relayer/config/testnet/chains.json | 21 ++++++++ .../relayer/config/testnet/contracts.json | 48 ++++++++++++++++++ .../configureDeliveryProvider.json | 50 +++++++++++++++++-- 3 files changed, 114 insertions(+), 5 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index ffcf1efa14..d8024096bb 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -43,6 +43,27 @@ "chainId": 30, "rpc": "https://goerli.base.org", "wormholeAddress": "0x23908A62110e21C04F3A4e011d24F901F911744A" + }, + { + "description": "Optimism Goerli", + "evmNetworkId": 420, + "chainId": 24, + "rpc": "https://goerli.optimism.io", + "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" + }, + { + "description": "Arbitrum Goerli", + "evmNetworkId": 421613, + "chainId": 23, + "rpc": "https://arbitrum-goerli.publicnode.com", + "wormholeAddress": "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e" + }, + { + "description": "Ethereum Goerli", + "evmNetworkId": 5, + "chainId": 2, + "rpc": "https://ethereum-goerli.publicnode.com", + "wormholeAddress": "0x706abc4E45D419950511e474C7B9Ed348A4a716c" } ] } diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index 76b5187b0f..8faa6afa09 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -25,6 +25,18 @@ { "chainId": 30, "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + }, + { + "chainId": 24, + "address": "0xfCe1Df3EF22fe5Cb7e2f5988b7d58fF633a313a7" + }, + { + "chainId": 23, + "address": "0x90995DBd1aae85872451b50A569dE947D34ac4ee" + }, + { + "chainId": 2, + "address": "0xD1463B4fe86166768d2ff51B1A928beBB5c9f375" } ], "wormholeRelayers": [ @@ -51,6 +63,18 @@ { "chainId": 30, "address": "0xea8029CD7FCAEFFcD1F53686430Db0Fc8ed384E1" + }, + { + "chainId": 24, + "address": "0x01A957A525a5b7A72808bA9D10c389674E459891" + }, + { + "chainId": 23, + "address": "0xAd753479354283eEE1b86c9470c84D42f229FF43" + }, + { + "chainId": 2, + "address": "0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a" } ], "mockIntegrations": [ @@ -77,6 +101,18 @@ { "chainId": 30, "address": "0x9Ee656203B0DC40cc1bA3f4738527779220e3998" + }, + { + "chainId": 24, + "address": "0x421e0bb71dDeeC727Af79766423d33D8FD7dB963" + }, + { + "chainId": 23, + "address": "0x0de48f34E14d08934DA1eA2286Be1b2BED5c062a" + }, + { + "chainId": 2, + "address": "0xb81bc199b73AB34c393a4192C163252116a03370" } ], "create2Factories": [ @@ -103,6 +139,18 @@ { "chainId": 30, "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986" + }, + { + "chainId": 24, + "address": "0xe714195F6c5b7C5AAF94Cd1430Ce075f80a81CF6" + }, + { + "chainId": 23, + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD" + }, + { + "chainId": 2, + "address": "0x787220D50B32562b0F71Db786881D5F6322082F2" } ] } diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index a47a992d5b..94fcf93da5 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -2,23 +2,35 @@ "addresses": [ { "chainId": 6, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { "chainId": 14, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { "chainId": 5, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { "chainId": 16, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { "chainId": 4, - "rewardAddress": "0x61a51662f0B30Bf176484cAc5B4a033C497cB2f3" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 23, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 24, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 2, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], "pricingInfo": [ @@ -56,6 +68,34 @@ "updatePriceGas": "10000000000", "updatePriceNative": "100000", "maximumBudget": "1000000000000000000" + }, + { + "chainId": 30, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 23, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 24, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 2, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" } ] } From 2ecd226b27b1dd394c82677e92b3bca1256e3402 Mon Sep 17 00:00:00 2001 From: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:45:58 -0400 Subject: [PATCH 034/174] Perform 3 registrations on testnet, and add script that does all registrations that haven't been done yet for wormhole relayer --- .../relayer/config/mainnet/chains.json | 2 +- .../relayer/config/testnet/chains.json | 2 +- .../registerChainsWormholeRelayerSelfSign.ts | 84 +++++++++++++++---- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 1f8c7eb340..fba8043b5a 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -69,7 +69,7 @@ "description": "Optimism", "evmNetworkId": 10, "chainId": 24, - "rpc": "https://optimism.api.onfinality.io/public", + "rpc": "https://mainnet.optimism.io", "wormholeAddress": "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722" }, { diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index d8024096bb..fd0b1a2d2b 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -27,7 +27,7 @@ "description": "Mumbai", "evmNetworkId": 80001, "chainId": 5, - "rpc": "https://polygon-testnet.public.blastapi.io", + "rpc": "https://rpc.ankr.com/polygon_mumbai", "wormholeAddress": "0x0CBE91CF822c73C2315FB05100C2F714765d5c20" }, { diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index ff44b57a06..ceec6bf9d3 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -24,16 +24,70 @@ async function run() { console.log("Start! " + processName); // TODO: to send txs concurrently, the cross-registrations need to be separated out - for (const operatingChain of operation.operatingChains) { - await registerChainsWormholeRelayer(operatingChain); - await registerOnExistingChainsWormholeRelayer(operatingChain); + // for (const operatingChain of operation.operatingChains) { + // await registerChainsWormholeRelayer(operatingChain); + // await registerOnExistingChainsWormholeRelayer(operatingChain); + //} + for (const myChain of allChains) { + registerChainsWormholeRelayerIfUnregistered(myChain); } } +async function registerChainsWormholeRelayerIfUnregistered( + operatingChain: ChainInfo +) { + console.log( + "[START] Registering all the wormhole relayers onto Wormhole Relayer " + + operatingChain.chainId + ); + + const wormholeRelayer = await getWormholeRelayer(operatingChain); + for (const targetChain of allChains) { + let currentRegisteredContract; + try { + currentRegisteredContract = (await wormholeRelayer.getRegisteredWormholeRelayerContract( + targetChain.chainId + )) + } catch (e) { + console.log(`Error getting the wormhole relayer for chain ${operatingChain.chainId}, rpc ${operatingChain.rpc}`) + } + if ( + currentRegisteredContract === zeroBytes32 + ) { + console.log( + `[start] This chain ${targetChain.chainId} is not registered onto chain ${operatingChain.chainId} yet` + ); + try { + await registerWormholeRelayer( + wormholeRelayer, + operatingChain, + targetChain + ); + } catch(error) { + console.log(`[error] Registering ${targetChain.chainId} onto ${operatingChain.chainId} failed`) + console.log(`The error was ${error}`) + } + console.log( + `[done] Now this chain ${targetChain.chainId} is registered onto chain ${operatingChain.chainId}` + ); + } else { + // This doesn't check that the registered address is correct - only that it exists and is not zero + console.log( + `This chain ${targetChain.chainId} is already registered onto chain ${operatingChain.chainId}` + ); + } + } + + console.log( + "Did all contract registrations for the core relayer on " + + operatingChain.chainId + ); +} + async function registerChainsWormholeRelayer(operatingChain: ChainInfo) { console.log( "Registering all the wormhole relayers onto Wormhole Relayer " + - operatingChain.chainId, + operatingChain.chainId ); const wormholeRelayer = await getWormholeRelayer(operatingChain); @@ -43,7 +97,7 @@ async function registerChainsWormholeRelayer(operatingChain: ChainInfo) { console.log( "Did all contract registrations for the core relayer on " + - operatingChain.chainId, + operatingChain.chainId ); } @@ -51,19 +105,19 @@ async function registerOnExistingChainsWormholeRelayer(targetChain: ChainInfo) { console.log( "Registering Wormhole Relayer " + targetChain.chainId + - " onto all the wormhole relayers", + " onto all the wormhole relayers" ); const tasks = await Promise.allSettled( operation.supportedChains.map(async (operatingChain) => { const coreRelayer = await getWormholeRelayer(operatingChain); return registerWormholeRelayer(coreRelayer, operatingChain, targetChain); - }), + }) ); for (const task of tasks) { if (task.status === "rejected") { console.log( - `Failed cross registration. ${task.reason?.stack || task.reason}`, + `Failed cross registration. ${task.reason?.stack || task.reason}` ); } } @@ -71,18 +125,18 @@ async function registerOnExistingChainsWormholeRelayer(targetChain: ChainInfo) { console.log( "Did all contract registrations of the core relayer on " + targetChain.chainId + - " onto the existing (non operating) chains", + " onto the existing (non operating) chains" ); } async function registerWormholeRelayer( wormholeRelayer: WormholeRelayer, operatingChain: ChainInfo, - targetChain: ChainInfo, + targetChain: ChainInfo ) { const registration = await wormholeRelayer.getRegisteredWormholeRelayerContract( - targetChain.chainId, + targetChain.chainId ); if (registration !== zeroBytes32) { const registrationAddress = await getWormholeRelayerAddress(targetChain); @@ -95,7 +149,7 @@ Actual: ${registration}`); } console.log( - `Chain ${targetChain.chainId} on chain ${operatingChain.chainId} is already registered`, + `Chain ${targetChain.chainId} on chain ${operatingChain.chainId} is already registered` ); return; } @@ -103,19 +157,19 @@ Actual: ${registration}`); const vaa = await createRegisterChainVAA(targetChain); console.log( - `Registering chain ${targetChain.chainId} onto chain ${operatingChain.chainId}`, + `Registering chain ${targetChain.chainId} onto chain ${operatingChain.chainId}` ); try { const overrides = await buildOverrides( () => wormholeRelayer.estimateGas.registerWormholeRelayerContract(vaa), - operatingChain, + operatingChain ); await wormholeRelayer .registerWormholeRelayerContract(vaa, overrides) .then(wait); } catch (error) { console.log( - `Error in registering chain ${targetChain.chainId} onto ${operatingChain.chainId}`, + `Error in registering chain ${targetChain.chainId} onto ${operatingChain.chainId}` ); console.log((error as any)?.stack || error); } From bdd30d43a7bc5db87efb425a097431d62f3b840c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 5 Sep 2023 16:57:15 -0300 Subject: [PATCH 035/174] AutoRelayer: adds overrides to upgrade scripts. --- .../upgradeDeliveryProvider.ts | 66 ++++++++++++++----- .../upgradeWormholeRelayerSelfSign.ts | 57 +++++++++++----- 2 files changed, 92 insertions(+), 31 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts index 8c76da0f1c..15d54a09ef 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts @@ -6,36 +6,72 @@ import { getDeliveryProvider, getOperatingChains, } from "../helpers/env"; -import { deployDeliveryProviderImplementation } from "../helpers/deployments"; +import { + buildOverrides, + deployDeliveryProviderImplementation, +} from "../helpers/deployments"; const processName = "upgradeDeliveryProvider"; init(); -const chains = getOperatingChains(); +const operatingChains = getOperatingChains(); + +interface DeliveryProviderUpgrade { + deliveryProviderImplementations: Deployment[]; +} async function run() { console.log("Start!"); - const output: any = { + const output: DeliveryProviderUpgrade = { deliveryProviderImplementations: [], }; - for (let i = 0; i < chains.length; i++) { - const deliveryProviderImplementation = await deployDeliveryProviderImplementation( - chains[i] - ); - await upgradeDeliveryProvider(chains[i], deliveryProviderImplementation); + const tasks = await Promise.allSettled( + operatingChains.map(async (chain) => { + const implementation = await deployDeliveryProviderImplementation(chain); + await upgradeDeliveryProvider(chain, implementation); - output.deliveryProviderImplementations.push(deliveryProviderImplementation); + return implementation; + }), + ); + for (const task of tasks) { + if (task.status === "rejected") { + console.log( + `DeliveryProvider upgrade failed. ${task.reason?.stack || task.reason}`, + ); + } else { + output.deliveryProviderImplementations.push(task.value); + } } writeOutputFiles(output, processName); } -async function upgradeDeliveryProvider(chain: ChainInfo, newImpl: Deployment) { - console.log("About to upgrade relay provider for chain " + chain.chainId); - const provider = await getDeliveryProvider(chain); - const tx = await provider.upgrade(chain.chainId, newImpl.address); - await tx.wait(); - console.log("Successfully upgraded relay provider " + chain.chainId); +async function upgradeDeliveryProvider( + operatingChain: ChainInfo, + newImpl: Deployment, +) { + console.log( + "About to upgrade relay provider for chain " + operatingChain.chainId, + ); + const provider = await getDeliveryProvider(operatingChain); + + const overrides = await buildOverrides( + () => provider.estimateGas.upgrade(operatingChain.chainId, newImpl.address), + operatingChain, + ); + const tx = await provider.upgrade( + operatingChain.chainId, + newImpl.address, + overrides, + ); + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error( + `Failed to upgrade DeliveryProvider on chain ${operatingChain.chainId}, tx id: ${tx.hash}`, + ); + } + console.log("Successfully upgraded relay provider " + operatingChain.chainId); } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts index fe3bc82b54..890148dd65 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts @@ -1,30 +1,46 @@ -import { deployWormholeRelayerImplementation } from "../helpers/deployments"; +import { + buildOverrides, + deployWormholeRelayerImplementation, +} from "../helpers/deployments"; import { init, ChainInfo, getWormholeRelayer, writeOutputFiles, getOperatingChains, + Deployment, } from "../helpers/env"; import { createWormholeRelayerUpgradeVAA } from "../helpers/vaa"; const processName = "upgradeWormholeRelayerSelfSign"; init(); -const chains = getOperatingChains(); +const operatingChains = getOperatingChains(); + +interface WormholeRelayerUpgrade { + wormholeRelayerImplementations: Deployment[]; +} async function run() { console.log("Start!"); - const output: any = { - wormholeRelayerImplementations: [] + const output: WormholeRelayerUpgrade = { + wormholeRelayerImplementations: [], }; - for (const chain of chains) { - const coreRelayerImplementation = await deployWormholeRelayerImplementation( - chain - ); - await upgradeWormholeRelayer(chain, coreRelayerImplementation.address); + const tasks = await Promise.allSettled( + operatingChains.map(async (chain) => { + const implementation = await deployWormholeRelayerImplementation(chain); + await upgradeWormholeRelayer(chain, implementation.address); - output.wormholeRelayerImplementations.push(coreRelayerImplementation); + return implementation; + }), + ); + + for (const task of tasks) { + if (task.status === "rejected") { + console.log(`WormholeRelayer upgrade failed. ${task.reason?.stack || task.reason}`); + } else { + output.wormholeRelayerImplementations.push(task.value); + } } writeOutputFiles(output, processName); @@ -32,20 +48,29 @@ async function run() { async function upgradeWormholeRelayer( chain: ChainInfo, - newImplementationAddress: string + newImplementationAddress: string, ) { console.log("upgradeWormholeRelayer " + chain.chainId); - const coreRelayer = await getWormholeRelayer(chain); + const wormholeRelayer = await getWormholeRelayer(chain); + + const vaa = createWormholeRelayerUpgradeVAA(chain, newImplementationAddress); - const tx = await coreRelayer.submitContractUpgrade( - createWormholeRelayerUpgradeVAA(chain, newImplementationAddress) + const overrides = await buildOverrides( + () => wormholeRelayer.estimateGas.submitContractUpgrade(vaa), + chain, ); + const tx = await wormholeRelayer.submitContractUpgrade(vaa, overrides); - await tx.wait(); + const receipt = await tx.wait(); + if (receipt.status !== 1) { + throw new Error( + `Failed to upgrade on chain ${chain.chainId}, tx id: ${tx.hash}`, + ); + } console.log( - "Successfully upgraded the core relayer contract on " + chain.chainId + "Successfully upgraded the core relayer contract on " + chain.chainId, ); } From e967370170c2b1f9a843abdb950533bfe0b53c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Sun, 22 Oct 2023 18:44:21 -0300 Subject: [PATCH 036/174] gRelayer: adds named constant for VAA key type flag --- .../relayer/deliveryProvider/configureDeliveryProvider.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index d9b0f2f737..70bb7dbde5 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -60,13 +60,14 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { ); } + const VAA_KEY_TYPE = 1 << 1; const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { updateWormholeRelayer: false, updateRewardAddress: true, updateSupportedKeyTypes: true, coreRelayer: "0x0000000000000000000000000000000000000000", rewardAddress: thisChainsConfigInfo.rewardAddress, - supportedKeyTypesBitmap: 1 << 1 // VAA_KEY_TYPE + supportedKeyTypesBitmap: VAA_KEY_TYPE, }; const updates: DeliveryProviderStructs.UpdateStruct[] = []; From 3fb2371cf222b3bc5b6e17bfd2e8bb2f4c9f5d65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 Nov 2023 14:43:19 -0300 Subject: [PATCH 037/174] gRelayer: adds missing upgrade testnet script --- ethereum/ts-scripts/relayer/shell/upgradeTestnet.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 ethereum/ts-scripts/relayer/shell/upgradeTestnet.sh diff --git a/ethereum/ts-scripts/relayer/shell/upgradeTestnet.sh b/ethereum/ts-scripts/relayer/shell/upgradeTestnet.sh new file mode 100755 index 0000000000..ffc43e3a44 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/upgradeTestnet.sh @@ -0,0 +1,3 @@ +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts From fe33a184e776d1ff822b8edf9b8620560db63d4c Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 2 Nov 2023 15:34:02 -0300 Subject: [PATCH 038/174] upgrade wormhole-relayer mainnet scripts --- ethereum/ts-scripts/relayer/helpers/env.ts | 6 ++ .../relayer/shell/upgradeMainnet.sh | 3 + .../shell/upgradeWormholeRelayerMainnet.sh | 1 + .../deployWormholeRelayerImplementation.ts | 54 +++++++++++++ ...mitWormholeRelayerImplementationUpgrade.ts | 75 +++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/shell/upgradeMainnet.sh create mode 100644 ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh create mode 100644 ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts create mode 100644 ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 6e2af13aef..94667ce24d 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -26,6 +26,12 @@ export type Deployment = { address: string; }; +// A deployment that requires a governance VAA to be +// submitted signed by the guardians and submitted +export type GovernanceDeployment = Deployment & { + vaa: string; +} + export interface OperationDescriptor { /** * Txs will be signed for these chains diff --git a/ethereum/ts-scripts/relayer/shell/upgradeMainnet.sh b/ethereum/ts-scripts/relayer/shell/upgradeMainnet.sh new file mode 100644 index 0000000000..fdfde41a78 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/upgradeMainnet.sh @@ -0,0 +1,3 @@ +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh b/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh new file mode 100644 index 0000000000..a37f047ee4 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh @@ -0,0 +1 @@ +npx tsx ./ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementation.ts \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts new file mode 100644 index 0000000000..58e02c81ea --- /dev/null +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts @@ -0,0 +1,54 @@ +import { + buildOverrides, + deployWormholeRelayerImplementation, +} from "../helpers/deployments"; +import { + init, + ChainInfo, + getWormholeRelayer, + writeOutputFiles, + getOperatingChains, + GovernanceDeployment, +} from "../helpers/env"; +import { createWormholeRelayerUpgradeVAA } from "../helpers/vaa"; + +const processName = "upgradeWormholeRelayerSelfSign"; +init(); +const operatingChains = getOperatingChains(); + + + +interface WormholeRelayerUpgrade { + wormholeRelayerImplementations: GovernanceDeployment[]; +} + +async function run() { + console.log("Start!"); + const output: WormholeRelayerUpgrade = { + wormholeRelayerImplementations: [], + + }; + + const tasks = await Promise.allSettled( + operatingChains.map(async (chain) => { + const implementation = await deployWormholeRelayerImplementation(chain); + const vaa = createWormholeRelayerUpgradeVAA(chain, implementation.address); + + console.log(`Upgrade wormhole relayer implementation on ${chain.chainId}:\n${vaa}`); + + return { ...implementation, vaa }; + }), + ); + + for (const task of tasks) { + if (task.status === "rejected") { + console.log(`WormholeRelayer upgrade failed. ${task.reason?.stack || task.reason}`); + } else { + output.wormholeRelayerImplementations.push(task.value); + } + } + + writeOutputFiles(output, processName); +} + +run().then(() => console.log("Done! " + processName)); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts new file mode 100644 index 0000000000..0a0475b7c2 --- /dev/null +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -0,0 +1,75 @@ +import { ChainId } from "@certusone/wormhole-sdk"; +import { + init, + getOperatingChains, + getWormholeRelayer, + ChainInfo, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; + +import { extractChainToBeRegisteredFromRegisterChainVaa } from "../helpers/vaa"; + +import { inspect } from "util"; + +const processName = "registerWormholeRelayer"; +init(); +const chains = getOperatingChains(); + +/** + * These are the registration VAAs for mainnet. + */ +const implementationUpgradeVaas: Partial> = { + // [chainId:number]: vaa +} + +async function run() { + console.log(`Start! ${processName}`); + + const tasks = await Promise.allSettled( + chains.map((chain) => { + const vaa = implementationUpgradeVaas[chain.chainId] as string; + if (!vaa) { + throw new Error("No implementation upgrade VAA found for chain " + chain.chainId); + } + console.log(`Submitting upgrade VAA ${vaa} to chain ${chain.chainId}`); + return submitWormholeRelayerUpgradeVaa(chain, vaa) + }), + ); + + for (const task of tasks) { + if (task.status === "rejected") { + console.error(`Register failed: ${inspect(task.reason)}`); + } else { + console.log(`Register succeeded for chain ${task.value}`); + } + } +} + +async function submitWormholeRelayerUpgradeVaa( + chain: ChainInfo, + vaa: string, +) { + console.log(`Upgrading WormholeRelayer in chain ${chain.chainId}...`); + + const wormholeRelayer = await getWormholeRelayer(chain); + + const overrides = await buildOverrides( + () => wormholeRelayer.estimateGas.submitContractUpgrade(vaa), + chain, + ); + const tx = await wormholeRelayer.submitContractUpgrade(vaa, overrides); + + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error( + `Failed to upgrade on chain ${chain.chainId}, tx id: ${tx.hash}`, + ); + } + console.log( + "Successfully upgraded the core relayer contract on " + chain.chainId, + ); + return chain.chainId; +} + +run().then(() => console.log("Done! " + processName)); From cbf5de5765fb46181a682acc9eac9a4d332a960d Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 2 Nov 2023 15:38:19 -0300 Subject: [PATCH 039/174] fix comment --- .../submitWormholeRelayerImplementationUpgrade.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts index 0a0475b7c2..0d82a064d2 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -16,7 +16,7 @@ init(); const chains = getOperatingChains(); /** - * These are the registration VAAs for mainnet. + * These are wormhole-relayer implementation upgrade VAAs for mainnet. */ const implementationUpgradeVaas: Partial> = { // [chainId:number]: vaa From d7adc3495c8b3caec827f8969c98776daeeaf9ad Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 2 Nov 2023 15:39:53 -0300 Subject: [PATCH 040/174] fix log + remove unused import --- .../submitWormholeRelayerImplementationUpgrade.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts index 0d82a064d2..96807bdf7e 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -7,8 +7,6 @@ import { } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { extractChainToBeRegisteredFromRegisterChainVaa } from "../helpers/vaa"; - import { inspect } from "util"; const processName = "registerWormholeRelayer"; @@ -67,7 +65,7 @@ async function submitWormholeRelayerUpgradeVaa( ); } console.log( - "Successfully upgraded the core relayer contract on " + chain.chainId, + "Successfully upgraded the wormhole relayer contract on " + chain.chainId, ); return chain.chainId; } From 08028a50dfb0352864b38602dd535939572de19e Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 2 Nov 2023 17:02:47 -0300 Subject: [PATCH 041/174] AR: dont create vaa on upgrade script --- ethereum/ts-scripts/relayer/helpers/env.ts | 6 ------ .../deployWormholeRelayerImplementation.ts | 16 +++------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 94667ce24d..6e2af13aef 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -26,12 +26,6 @@ export type Deployment = { address: string; }; -// A deployment that requires a governance VAA to be -// submitted signed by the guardians and submitted -export type GovernanceDeployment = Deployment & { - vaa: string; -} - export interface OperationDescriptor { /** * Txs will be signed for these chains diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts index 58e02c81ea..e54240b24d 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts @@ -1,25 +1,19 @@ import { - buildOverrides, deployWormholeRelayerImplementation, } from "../helpers/deployments"; import { init, - ChainInfo, - getWormholeRelayer, writeOutputFiles, getOperatingChains, - GovernanceDeployment, + Deployment, } from "../helpers/env"; -import { createWormholeRelayerUpgradeVAA } from "../helpers/vaa"; const processName = "upgradeWormholeRelayerSelfSign"; init(); const operatingChains = getOperatingChains(); - - interface WormholeRelayerUpgrade { - wormholeRelayerImplementations: GovernanceDeployment[]; + wormholeRelayerImplementations: Deployment[]; } async function run() { @@ -32,11 +26,7 @@ async function run() { const tasks = await Promise.allSettled( operatingChains.map(async (chain) => { const implementation = await deployWormholeRelayerImplementation(chain); - const vaa = createWormholeRelayerUpgradeVAA(chain, implementation.address); - - console.log(`Upgrade wormhole relayer implementation on ${chain.chainId}:\n${vaa}`); - - return { ...implementation, vaa }; + return implementation; }), ); From a054fdfd5731281af439d64df59daf4f4916d563 Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 3 Nov 2023 08:27:35 -0300 Subject: [PATCH 042/174] gRelayer: rename script file --- ...upgradeWormholeRelayerMainnet.sh => upgradeWormholeRelayer.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ethereum/ts-scripts/relayer/shell/{upgradeWormholeRelayerMainnet.sh => upgradeWormholeRelayer.sh} (100%) diff --git a/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh b/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh similarity index 100% rename from ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayerMainnet.sh rename to ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh From 64afc214b6908a262a1cd57abc5aa456233ecf33 Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 3 Nov 2023 08:45:34 -0300 Subject: [PATCH 043/174] gRelayer: rename processName of new scripts --- .../wormholeRelayer/deployWormholeRelayerImplementation.ts | 2 +- .../submitWormholeRelayerImplementationUpgrade.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts index e54240b24d..bf4260cd6b 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts @@ -8,7 +8,7 @@ import { Deployment, } from "../helpers/env"; -const processName = "upgradeWormholeRelayerSelfSign"; +const processName = "deployWormholeRelayerImplementation"; init(); const operatingChains = getOperatingChains(); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts index 96807bdf7e..c8088ba031 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -9,7 +9,7 @@ import { buildOverrides } from "../helpers/deployments"; import { inspect } from "util"; -const processName = "registerWormholeRelayer"; +const processName = "submitWormholeRelayerImplementationUpgrade"; init(); const chains = getOperatingChains(); From 7d08374437eb6d9438bdd180cca523024f672a6b Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 3 Nov 2023 08:52:36 -0300 Subject: [PATCH 044/174] gRelayer: use base64 encoding for wormhole relayer implementation VAA submission --- .../submitWormholeRelayerImplementationUpgrade.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts index c8088ba031..b755bca7ef 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -17,7 +17,7 @@ const chains = getOperatingChains(); * These are wormhole-relayer implementation upgrade VAAs for mainnet. */ const implementationUpgradeVaas: Partial> = { - // [chainId:number]: vaa + // [chainId:number]: [vaa:string] (base64 encoded) } async function run() { @@ -29,8 +29,9 @@ async function run() { if (!vaa) { throw new Error("No implementation upgrade VAA found for chain " + chain.chainId); } + console.log(`Submitting upgrade VAA ${vaa} to chain ${chain.chainId}`); - return submitWormholeRelayerUpgradeVaa(chain, vaa) + return submitWormholeRelayerUpgradeVaa(chain, Buffer.from(vaa, "base64")); }), ); @@ -45,7 +46,7 @@ async function run() { async function submitWormholeRelayerUpgradeVaa( chain: ChainInfo, - vaa: string, + vaa: Uint8Array, ) { console.log(`Upgrading WormholeRelayer in chain ${chain.chainId}...`); From 5041698cbcdb1195d035b217046a5277e28e319d Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 9 Nov 2023 17:19:19 -0300 Subject: [PATCH 045/174] gRelayer: verify wormhole implementation and verify delivery provider implementation scripts --- .../relayer/config/mainnet/chains.json | 2 +- .../relayer/shell/verifyDeliveryProvider.sh | 6 ++ .../verifyDeliveryProviderImplementation.sh | 69 +++++++++++++++++ .../verifyWormholeRelayerImplementation.sh | 76 +++++++++++++++++++ 4 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 ethereum/ts-scripts/relayer/shell/verifyDeliveryProviderImplementation.sh create mode 100755 ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerImplementation.sh diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index fba8043b5a..fdbb6701d4 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -80,4 +80,4 @@ "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" } ] -} +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index 9cd43d0887..40c4a3df41 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -40,6 +40,12 @@ for chain in $chain_ids # We need the token to be unquoted when passed to `forge verify-contract` set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + # if we dont have a scan token echo a warning and continue + if test -z $scan_token + echo "Error: No scan token found for chain $chain. Chain will not be verified." + continue + end + set evm_chain_id (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) # We're using the production profile for delivery providers on mainnet and testnet diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProviderImplementation.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProviderImplementation.sh new file mode 100644 index 0000000000..c5365bd3f7 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProviderImplementation.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env fish + +# TODO: +# This script is very similar to verifyDeliveryProxy.sh, but it only verifies the implementation contract +# instead of all the contracts (implementation, setup and proxy). When performing an upgrade you'll only +# need to verify the new implementation since the setup and proxy were already verified during the deployment +# We should refactor this script to avoid code duplication. + +# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan + +# Equivalent to `set -x` in bash, this prints out commands with variables substituted before executing them +# set fish_trace true + +# TODO: add option to specify one or more chain ids and avoid verifying already verified contracts +set options (string join '' (fish_opt --short t --long scan-tokens --required-val) '!jq . "$_flag_value" > /dev/null') +argparse $options -- $argv + +if test -z $_flag_scan_tokens + echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." + echo 'JSON format: [{"chainId": , "token": }, ...]' + exit 1 +end +set scan_tokens_file $_flag_scan_tokens + +set chains_file "ts-scripts/relayer/config/$ENV/chains.json" +set last_run_file "ts-scripts/relayer/output/$ENV/upgradeDeliveryProvider/lastrun.json" +if not test -e $last_run_file + echo "$last_run_file does not exist. Delivery provider addresses are read from this file." + exit 1 +end + +set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) + +for chain in $chain_ids + # Klaytn, Karura and Acala don't have a verification API yet + if test 11 -le $chain && test $chain -le 13 + continue + end + + # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` + set implementation_address (jq --raw-output ".deliveryProviderImplementations[] | select(.chainId == $chain) | .address" $last_run_file) + + # We need the token to be unquoted when passed to `forge verify-contract` + set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + + # if we dont have a scan token echo a warning and continue + if test -z $scan_token + echo "Error: No scan token found for chain $chain. Chain will not be verified." + continue + end + + echo "Verifying delivery provider contract ($implementation_address) on chain $chain" + + set evm_chain_id (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + + # We're using the production profile for delivery providers on mainnet and testnet + set --export FOUNDRY_PROFILE production + + # Celo has a verification API but it currently doesn't work with `forge verify-contract` + # We print the compiler input to a file instead for manual verification + if test $chain -eq 14 + forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderImplementation.compiler-input.json + + echo "Please manually submit the compiler input files at celoscan.io" + echo "- $implementation_address: DeliveryProviderImplementation.compiler-input.json" + else + forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token + end +end \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerImplementation.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerImplementation.sh new file mode 100755 index 0000000000..12451e5db4 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerImplementation.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env fish + +# TODO: +# This script is very similar to verifyWormholeRelayer.sh, but it only verifies the implementation contract +# instead of all the contracts (implementation and proxy). When performing an upgrade you'll only +# need to verify the new implementation since the proxy was already verified during the deployment +# We should refactor this script to avoid code duplication. + +# To link Proxy and Implementation, go to the proxyContractChecker of the chain's etherscan + +# note: the first 5 testnets (avalanche, celo, bsc, mumbai, moonbeam) were deployed with evm_version London + +# Equivalent to `set -x` in bash, this prints out commands with variables substituted before executing them +# set fish_trace true + +# TODO: add option to specify one or more chain ids and avoid verifying already verified contracts +set options (string join '' (fish_opt --short t --long scan-tokens --required-val) '!jq . "$_flag_value" > /dev/null') +argparse $options -- $argv + +if test -z $_flag_scan_tokens + echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." + echo 'JSON format: [{"chainId": , "token": }, ...]' + exit 1 +end +set scan_tokens_file $_flag_scan_tokens + +set chains_file "ts-scripts/relayer/config/$ENV/chains.json" +set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" +# TODO: add implementation addresses to `contracts.json` to allow using it instead of lastrun.json +set last_run_file "ts-scripts/relayer/output/$ENV/deployWormholeRelayerImplementation/lastrun.json" +if not test -e $last_run_file + echo "$last_run_file does not exist. Delivery provider addresses are read from this file." + exit 1 +end + +set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) + +for chain in $chain_ids + # Klaytn, Karura and Acala don't have a verification API yet + if test 11 -le $chain && test $chain -le 13 + continue + end + + # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` + set implementation_address (jq --raw-output ".wormholeRelayerImplementations[] | select(.chainId == $chain) | .address" $last_run_file) + # TODO: actually consult this from `worm` CLI + # Perhaps the value present in the chains file can be used as a fallback when the current version of the `worm` program doesn't know about + # a particular wormhole deployment + set wormhole_address (jq --raw-output ".chains[] | select(.chainId == $chain) | .wormholeAddress" $chains_file) + # This actually pads the address to 32 bytes with 12 zero bytes at the start + # And we discard the "0x" + set wormhole_address (cast to-uint256 $wormhole_address | sed 's/^0x//g' -) + + # These two are documented in `forge verify-contract` as accepted environment variables. + # We need the token to be unquoted when passed to `forge verify-contract` + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + + # We're using the production profile for delivery providers on mainnet and testnet + set --export FOUNDRY_PROFILE production + + # We need to compute the address of the Init contract since it is used as a constructor argument for the creation of the proxy. + # `Init` is created through CREATE which uses the address + nonce derivation for its address. + # Contract accounts start with their nonce at 1. See https://eips.ethereum.org/EIPS/eip-161#specification. + + # Celo has a verification API but it currently doesn't work with `forge verify-contract` + # We print the compiler input to a file instead for manual verification + if test $chain -eq 14 + echo "Please manually submit the compiler input files at celoscan.io" + echo "- $implementation_address: WormholeRelayerImplementation.compiler-input.json" + else + forge verify-contract $implementation_address WormholeRelayer --watch --constructor-args $wormhole_address + end +end + +# TODO: print proxy contract URLs so it's easy to navigate to them and verify they're proxies From 93140c24a060a21e5b6726a1eb14d3a168798954 Mon Sep 17 00:00:00 2001 From: solanoe Date: Tue, 14 Nov 2023 19:27:10 -0300 Subject: [PATCH 046/174] gRelayer: add WormholeRelayer implementation verify bytecode script --- ethereum/package-lock.json | 921 ++++++++++-------- ethereum/package.json | 1 + .../relayer/config/mainnet/contracts.json | 46 + ethereum/ts-scripts/relayer/helpers/env.ts | 19 + .../shell/verifyWormholeRelayerByteCode.sh | 1 + .../verifyWormholeRelayerDeployedByteCode.ts | 226 +++++ 6 files changed, 809 insertions(+), 405 deletions(-) create mode 100755 ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerByteCode.sh create mode 100644 ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 812924904a..487e973355 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -26,6 +26,7 @@ "@types/mocha": "^8.2.3", "@xlabs-xyz/ledger-signer": "0.0.3", "chai": "^4.3.7", + "chalk": "^4.0.0", "mocha": "^8.4.0", "truffle": "5.8.4", "truffle-flattener": "^1.6.0", @@ -994,6 +995,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { "version": "7.17.10", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", @@ -3929,6 +3943,20 @@ "node": ">=4" } }, + "node_modules/@openzeppelin/cli/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@openzeppelin/cli/node_modules/command-line-args": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", @@ -4041,6 +4069,20 @@ "node": "*" } }, + "node_modules/@openzeppelin/upgrades/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@openzeppelin/upgrades/node_modules/ethers": { "version": "4.0.49", "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", @@ -7729,69 +7771,6 @@ "node": ">=8" } }, - "node_modules/@trufflesuite/spinnies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "node_modules/@trufflesuite/spinnies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@trufflesuite/spinnies/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -7805,19 +7784,6 @@ "node": ">=8" } }, - "node_modules/@trufflesuite/spinnies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@trufflesuite/web3-provider-engine": { "version": "15.0.14", "resolved": "https://registry.npmjs.org/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz", @@ -10288,16 +10254,67 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/change-case": { @@ -10727,6 +10744,19 @@ "node": ">=8" } }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/command-line-usage/node_modules/typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", @@ -12490,6 +12520,68 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint/node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -15830,6 +15922,20 @@ "node": ">=6.0.0" } }, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/inquirer/node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -17272,6 +17378,19 @@ "node": "> 8.0.0" } }, + "node_modules/link-module-alias/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -17367,64 +17486,6 @@ "node": ">=10" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/loglevel": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", @@ -21714,6 +21775,20 @@ "cli-cursor": "^3.0.0" } }, + "node_modules/spinnies/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -24097,6 +24172,62 @@ "node": ">=4" } }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/truffle-hdwallet-provider-klaytn/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/truffle-hdwallet-provider-klaytn/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -26030,34 +26161,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/truffle/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/truffle/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/truffle/node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -26500,70 +26603,6 @@ "write-markdown": "dist/write-markdown.js" } }, - "node_modules/ts-command-line-args/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-command-line-args/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/ts-command-line-args/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-command-line-args/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-essentials": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", @@ -26590,6 +26629,20 @@ "ts-generator": "dist/cli/run.js" } }, + "node_modules/ts-generator/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ts-generator/node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -29960,6 +30013,18 @@ "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/parser": { @@ -32224,6 +32289,17 @@ "typical": "^2.6.1" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "command-line-args": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", @@ -32325,6 +32401,17 @@ "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "ethers": { "version": "4.0.49", "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", @@ -35340,51 +35427,6 @@ "dev": true, "optional": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -35394,16 +35436,6 @@ "requires": { "ansi-regex": "^5.0.1" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -37471,13 +37503,48 @@ } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "change-case": { @@ -37841,6 +37908,16 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", @@ -39285,6 +39362,58 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -41966,6 +42095,17 @@ "through": "^2.3.6" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -43088,6 +43228,18 @@ "integrity": "sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==", "requires": { "chalk": "^2.4.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "loader-utils": { @@ -43173,51 +43325,6 @@ "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "requires": { "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } } }, "loglevel": { @@ -46766,6 +46873,19 @@ "requires": { "chalk": "^2.4.2", "cli-cursor": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "split-string": { @@ -47580,27 +47700,6 @@ "balanced-match": "^1.0.0" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -48842,6 +48941,52 @@ "type-detect": "^4.0.0" } }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -50400,51 +50545,6 @@ "command-line-args": "^5.1.1", "command-line-usage": "^6.1.0", "string-format": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } } }, "ts-essentials": { @@ -50470,6 +50570,17 @@ "ts-essentials": "^1.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", diff --git a/ethereum/package.json b/ethereum/package.json index dcc45eac09..7d14d76ad5 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -12,6 +12,7 @@ "@types/mocha": "^8.2.3", "@xlabs-xyz/ledger-signer": "0.0.3", "chai": "^4.3.7", + "chalk": "^4.0.0", "mocha": "^8.4.0", "truffle": "5.8.4", "truffle-flattener": "^1.6.0", diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index f40b68cc5d..3b4ea096cd 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -184,5 +184,51 @@ "chainId": 30, "address": "0x51fEBFE97190a9825E98E04AF8Df60e269912Dd8" } + ], + "wormholeRelayerImplementations": [ + { + "chainId": 2, + "address": "0x90995DBd1aae85872451b50A569dE947D34ac4ee" + }, + { + "chainId": 4, + "address": "0xb6134890a64E9FFC54Ecc2702BdF41DeEdd4999C" + }, + { + "chainId": 5, + "address": "0xE4451E8479115CeA6B785bf71C1CD4ADa963991c" + }, + { + "chainId": 6, + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD" + }, + { + "chainId": 10, + "address": "0x1a8dD0FA61990Db5aef353DC122bc17Ac4F10358" + }, + { + "chainId": 13, + "address": "0x60e36e6b28c18f47d0195ae2d28da1d03f96a16d" + }, + { + "chainId": 14, + "address": "0x60e36E6B28c18F47d0195Ae2d28da1d03F96A16D" + }, + { + "chainId": 16, + "address": "0x1a8dD0FA61990Db5aef353DC122bc17Ac4F10358" + }, + { + "chainId": 23, + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD" + }, + { + "chainId": 24, + "address": "0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689" + }, + { + "chainId": 30, + "address": "0x231Ca706096427Bd674bFaec28B34d8fCa26E2A1" + } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 6e2af13aef..9d2ecfdf21 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -256,6 +256,25 @@ export function loadMockIntegrations(): Deployment[] { } } +export function loadWormholeRelayerImplementations(): Deployment[] { + const contracts = readContracts(); + + if (contracts.useLastRun) { + const lastRunFile = fs.readFileSync( + `./ts-scripts/relayer/output/${env}/deployWormholeRelayerImplementation/lastrun.json`, + ); + if (!lastRunFile) { + throw Error( + "Failed to find last run file for the deployWormholeRelayerImplementation process!", + ); + } + const lastRun = JSON.parse(lastRunFile.toString()); + return lastRun.wormholeRelayerImplementations; + } + + return contracts.wormholeRelayerImplementations; +} + export function loadCreate2Factories(): Deployment[] { const contracts = readContracts(); if (contracts.useLastRun) { diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerByteCode.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerByteCode.sh new file mode 100755 index 0000000000..617d6ab102 --- /dev/null +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayerByteCode.sh @@ -0,0 +1 @@ +npx tsx ./ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts new file mode 100644 index 0000000000..3eed575bc9 --- /dev/null +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -0,0 +1,226 @@ +import fs from "fs"; +import crypto from "crypto"; +import chalk from "chalk"; + +import { + init, + Deployment, + getOperationDescriptor, + getProvider, + loadWormholeRelayerImplementations, + ChainInfo +} from "../helpers/env"; + +const processName = "verifyWormholeRelayerDeployedByteCode"; +init(); +const operation = getOperationDescriptor(); + +const WORMHOLE_RELAYER_ABI_PATH = "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; +const WORMHOLE_RELAYER_BASE_ABI_PATH = "./build-forge/WormholeRelayerBase.sol/WormholeRelayerBase.json"; + +async function run() { + console.log("Start! " + processName); + + const implementationAddresses: Deployment[] = loadWormholeRelayerImplementations(); + + for (const chain of operation.operatingChains) { + console.log(`Verifying deployed bytecode for chain ${chain.chainId}...`); + const deployedImplementationAddress = implementationAddresses.find((deploy) => { + return deploy.chainId === chain.chainId; + }); + + if (!deployedImplementationAddress) { + console.error("Failed to find implementation address for chain " + chain.chainId); + continue; + } + + const provider = getProvider(chain); + + let deployedBytecode: Buffer; + try { + deployedBytecode = Buffer.from( + strip0x(await provider.getCode(deployedImplementationAddress.address)), + "hex" + ); + } catch (e) { + console.error(`Failed to retrieve deployed contract from chain scanner. Error: ${e}`); + continue; + } + + let implementation: SolidityCompilerOutput; + try { + implementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_ABI_PATH, "utf8")); + } catch (e) { + console.error(`Failed to read WormholeRelayer contract data. Error: ${e}`); + continue; + } + + let baseImplementation: SolidityCompilerOutput; + try { + baseImplementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_BASE_ABI_PATH, "utf8")); + } catch (e) { + console.error(`Failed to read WormholeRelayerBase contract data. Error: ${e}`); + continue; + } + + let expectedByteCode: Buffer; + try { + expectedByteCode = buildByteCode(chain, implementation, baseImplementation); + } catch (error) { + console.error(`Failed to build bytecode for chain ${chain.chainId}. Error: ${error}`); + continue; + } + + const deployedBytecodeHash = sha256sum(deployedBytecode); + const expectedByteCodeHash = sha256sum(expectedByteCode); + + if (deployedBytecodeHash !== expectedByteCodeHash) { + console.error( + chalk.red( + `Bytecode verification failed for chain ${chain.chainId}! Expected hash ${expectedByteCodeHash} but got ${deployedBytecodeHash}` + ) + ); + continue; + } + + console.log(chalk.green(`Bytecode verified for chain ${chain.chainId} matches. Hash: ${deployedBytecodeHash}`)); + } +} + +interface ImmutableReference { + start: number; + length: number; +} + +interface AstNode { + id: number; + mutability: string; + name: string; + nodes: AstNode[]; +} + +interface SolidityCompilerOutput { + abi: string; + deployedBytecode: { + object: string; + immutableReferences: Record; + }; + ast: { + nodes: AstNode[]; + } +} + +const knownRefs = { + // the wormhole core contract address on the respective chain + "wormhole_": (chain: ChainInfo, valueLength: number): Buffer => { + return toBufferOfLength(strip0x(chain.wormholeAddress), valueLength); + }, + // the wormhole chain id of the respective chain + "chainId_": (chain: ChainInfo, valueLength: number): Buffer => { + return uint16To32BytesBuffer(chain.chainId); + }, +} + +function buildByteCode( + chain: ChainInfo, + implementation: SolidityCompilerOutput, + baseImplementation: SolidityCompilerOutput, +): Buffer { + + let byteCodeWithImmutablesReplaced = Buffer.from(strip0x(implementation.deployedBytecode.object), "hex"); + const immutableReferences = implementation.deployedBytecode.immutableReferences; + + for (const [key, references] of Object.entries(immutableReferences)) { + const ref = getAstNode(parseInt(key), baseImplementation.ast.nodes); + + if (ref === null) { + throw Error(`Failed to find AstNode for key ${parseInt(key)}`); + } + + if (!Object.keys(knownRefs).includes(ref.name)) { + throw Error(`Unknown reference name ${ref.name}`); + } + + const refName = ref.name as keyof typeof knownRefs; + + if (ref.mutability !== "immutable") { + throw Error(`Reference ${ref.name} is not immutable`); + } + + const referenceValue = knownRefs[refName](chain, references[0].length); + + byteCodeWithImmutablesReplaced = replaceImmutableReferences( + byteCodeWithImmutablesReplaced, + references, + referenceValue + ); + } + + return byteCodeWithImmutablesReplaced; +} + +function getAstNode(id: number, nodes: AstNode[]): AstNode|null { + let node: AstNode|null = null; + + for (const n of nodes) { + if (n.id === id) { + node = n; + break; + } + + if (n.nodes) { + node = getAstNode(id, n.nodes); + if (node) break; + } + } + + return node; +} + +function replaceImmutableReferences( + deployedBytecode: Buffer, + immutableReferences: ImmutableReference[], + referenceValue: Buffer //32 bytes +): Buffer { + const byteCodeWithImmutablesReplaced = Buffer.from(deployedBytecode); + for (const ref of immutableReferences) { + if (ref.length !== 32) { + throw new Error("Only 32 byte words supported for immutable references."); + } + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(0), ref.start); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(8), ref.start + 8); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(16), ref.start + 16); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(24), ref.start + 24); + } + + return byteCodeWithImmutablesReplaced; +} + +function toBufferOfLength(raw: string, length: number) { + const buffer = Buffer.from(raw, "hex"); + + if (buffer.length > length) { + throw new Error(`Buffer is longer than expected`); + } + + const padding = Buffer.alloc(length - buffer.length); + const a = Buffer.concat([padding, buffer]); + + return a; +} + +function uint16To32BytesBuffer(num: number): Buffer { + const buff = Buffer.alloc(32); + buff.writeUInt16BE(num, 30); + return buff; +}; + +function strip0x(str: string) { + return str.startsWith("0x") ? str.substring(2) : str; +} + +function sha256sum(buff: Buffer) { + return crypto.createHash("sha256").update(buff).digest("hex"); +} + +run().then(() => console.log("Done! " + processName)); From c8a173e29c9b0e73534aa1d0b2b6ddaa9bc613b8 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 15 Nov 2023 11:01:50 -0300 Subject: [PATCH 047/174] gRelayer: Update klaytn and base rpcs for gRelayer deployment --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index fdbb6701d4..75b01263be 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -41,7 +41,7 @@ "description": "Klaytn", "evmNetworkId": 8217, "chainId": 13, - "rpc": "https://klaytn.blockpi.network/v1/rpc/public", + "rpc": "https://1rpc.io/klay", "wormholeAddress": "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7" }, { @@ -76,7 +76,7 @@ "description": "Base", "evmNetworkId": 8453, "chainId": 30, - "rpc": "https://base.blockpi.network/v1/rpc/public", + "rpc": "https://base.llamarpc.com", "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" } ] From 50f6211260a6713cc9712885d35520aba9bac735 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 15 Nov 2023 11:03:51 -0300 Subject: [PATCH 048/174] gRelayer: improve verify script initial log --- .../wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index 3eed575bc9..f6d7f75683 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -24,15 +24,16 @@ async function run() { const implementationAddresses: Deployment[] = loadWormholeRelayerImplementations(); for (const chain of operation.operatingChains) { - console.log(`Verifying deployed bytecode for chain ${chain.chainId}...`); const deployedImplementationAddress = implementationAddresses.find((deploy) => { return deploy.chainId === chain.chainId; }); - + if (!deployedImplementationAddress) { console.error("Failed to find implementation address for chain " + chain.chainId); continue; } + + console.log(`Verifying bytecode deployed at ${deployedImplementationAddress} on chain ${chain.chainId}...`); const provider = getProvider(chain); From 91b61048f1b707148ada5fa6071fc8d018876463 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 15 Nov 2023 14:40:45 -0300 Subject: [PATCH 049/174] gRelayer: improve variable name --- .../verifyWormholeRelayerDeployedByteCode.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index f6d7f75683..9010fd94d2 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -15,8 +15,8 @@ const processName = "verifyWormholeRelayerDeployedByteCode"; init(); const operation = getOperationDescriptor(); -const WORMHOLE_RELAYER_ABI_PATH = "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; -const WORMHOLE_RELAYER_BASE_ABI_PATH = "./build-forge/WormholeRelayerBase.sol/WormholeRelayerBase.json"; +const WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT = "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; +const WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT = "./build-forge/WormholeRelayerBase.sol/WormholeRelayerBase.json"; async function run() { console.log("Start! " + processName); @@ -50,7 +50,7 @@ async function run() { let implementation: SolidityCompilerOutput; try { - implementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_ABI_PATH, "utf8")); + implementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT, "utf8")); } catch (e) { console.error(`Failed to read WormholeRelayer contract data. Error: ${e}`); continue; @@ -58,7 +58,7 @@ async function run() { let baseImplementation: SolidityCompilerOutput; try { - baseImplementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_BASE_ABI_PATH, "utf8")); + baseImplementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT, "utf8")); } catch (e) { console.error(`Failed to read WormholeRelayerBase contract data. Error: ${e}`); continue; From fe163c1a99d5cb66601e4654d9774a08aa36ec81 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 15 Nov 2023 14:44:39 -0300 Subject: [PATCH 050/174] gRelayer: add explanation to function on verify bytecode script --- .../verifyWormholeRelayerDeployedByteCode.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index 9010fd94d2..ccc3310bfb 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -121,7 +121,21 @@ const knownRefs = { return uint16To32BytesBuffer(chain.chainId); }, } - +/** + * The WormholeRelayer contract has two immutable references: + * 1. the wormhole core contract address on the respective chain + * 2. the wormhole chain id of the respective chain + * + * The contract deployed bytecode will have this values replaced by the values for the respective chain. + * + * The definitions of the references are in the WormholeRelayerBase contract, that's why we need the compiler + * output of both contracts to build the bytecode. + * @param chain wormhole chain id of the chain to build the bytecode for + * @param implementation the solidity compiler output of the WormholeRelayer contract + * @param baseImplementation the solidity compiler output of the WormholeRelayerBase contract + * @returns the bytecode for the WormholeRelayer contract with the immutable references replaced + * by the values for the respective chain + */ function buildByteCode( chain: ChainInfo, implementation: SolidityCompilerOutput, From c982b8c43e6f639b9a54ece540583bb31ef3693f Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 15 Nov 2023 16:15:46 -0300 Subject: [PATCH 051/174] script to verify local bytecode with the template of deployed bytecode --- .../relayer/config/testnet/contracts.json | 38 +++++ .../verifyWormholeRelayerByteCodeTemplate.ts | 140 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerByteCodeTemplate.ts diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index 8faa6afa09..d191a6c93f 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -77,6 +77,44 @@ "address": "0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a" } ], + "wormholeRelayerImplementations": [ + { + "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", + "chainId": 6 + }, + { + "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", + "chainId": 14 + }, + { + "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", + "chainId": 4 + }, + { + "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", + "chainId": 5 + }, + { + "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", + "chainId": 16 + }, + { + "address": "0xc11548d2785DF7BDE8DcD3724eB43a625fc08109", + "chainId": 30 + }, + { + "address": "0x6bF3695Afd9B7169A3761c5D314efC89964cec62", + "chainId": 24 + }, + { + "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId": 23 + }, + { + "address": "0xA82aE5F6784D07580e83cf02bA162D48b81f8316", + "chainId": 2 + } + ], "mockIntegrations": [ { "chainId": 6, diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerByteCodeTemplate.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerByteCodeTemplate.ts new file mode 100644 index 0000000000..9c58914d1d --- /dev/null +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerByteCodeTemplate.ts @@ -0,0 +1,140 @@ +import fs from "fs"; +import crypto from "crypto"; +import chalk from "chalk"; + +import { + init, + Deployment, + getOperationDescriptor, + getProvider, + loadWormholeRelayerImplementations, +} from "../helpers/env"; + +const processName = "verifyWormholeRelayerByteCodeTemplate"; +init(); +const operation = getOperationDescriptor(); + +const WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT = "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; +/** + * This scripts serves to verify that the locally built bytecode for the WormholeRelayer contract + * matches the bytecode deployed on already supported chains. + * It's meant to be used as a helper script before deploying the WormholeRelayer contract to a new chain. + * It should help verify that the implementation deployed to a new chain matches the implementation + * previously deployed on another chains. + * The WormholeRelayer contract uses immutable references that are replaced by different values on each chain. + * In this script we'll replace all immutable references by 0 both on the SolidityCompilerOutput and on the + * built bytecode to compare the rest of the bytecode. + * The script will compare the locally built bytcode at $WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT with + * the bytecode it pulls from each of the operatingChains. + */ +async function run() { + console.log("Start! " + processName); + + let implementation: SolidityCompilerOutput; + try { + implementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT, "utf8")); + } catch (e) { + console.error(`Failed to read WormholeRelayer contract data. Error: ${e}`); + throw e; + } + + const immutableReferences = implementation.deployedBytecode.immutableReferences; + + let bytecode = Buffer.from(strip0x(implementation.deployedBytecode.object), "hex"); + const bytecodeTemplate = replaceAllImmutableReferencesBy0(bytecode, immutableReferences); + + const implementationAddresses: Deployment[] = loadWormholeRelayerImplementations(); + + for (const chain of operation.operatingChains) { + const deployedImplementationAddress = implementationAddresses.find((deploy) => { + return deploy.chainId === chain.chainId; + }); + + if (!deployedImplementationAddress) { + console.error("Failed to find implementation address for chain " + chain.chainId); + continue; + } + + console.log(`Verifying bytecode at ${deployedImplementationAddress.address} matches the local template...`); + + const provider = getProvider(chain); + + let deployedBytecode: Buffer; + try { + deployedBytecode = Buffer.from( + strip0x(await provider.getCode(deployedImplementationAddress.address)), + "hex" + ); + } catch (e) { + console.error(`Failed to retrieve deployed contract from chain scanner. Error: ${e}`); + continue; + } + + const deployedBytecodeTemplate = replaceAllImmutableReferencesBy0(deployedBytecode, immutableReferences); + + const deployedBytecodeHash = sha256sum(bytecodeTemplate); + const expectedByteCodeHash = sha256sum(deployedBytecodeTemplate); + + if (deployedBytecodeHash !== expectedByteCodeHash) { + console.error( + chalk.red( + `Bytecode verification failed for chain ${chain.chainId}! Expected hash ${expectedByteCodeHash} but got ${deployedBytecodeHash}` + ) + ); + continue; + } + + console.log(chalk.green(`Local bytecode matches the template deployed for chain ${chain.chainId}. Hash: ${deployedBytecodeHash}`)); + } +} + +function replaceAllImmutableReferencesBy0 (bytecode: Buffer, referencesByKey: Record) { + let byteCodeWithImmutablesReplaced = Buffer.from(bytecode); + for (const references of Object.values(referencesByKey)) { + byteCodeWithImmutablesReplaced = replaceImmutableReferences(byteCodeWithImmutablesReplaced, references, Buffer.alloc(32)); + } + return byteCodeWithImmutablesReplaced; +} + +interface ImmutableReference { + start: number; + length: number; +} + +interface SolidityCompilerOutput { + abi: string; + deployedBytecode: { + object: string; + immutableReferences: Record; + }; +} + +function replaceImmutableReferences( + deployedBytecode: Buffer, + immutableReferences: ImmutableReference[], + referenceValue: Buffer //32 bytes +): Buffer { + const byteCodeWithImmutablesReplaced = Buffer.from(deployedBytecode); + for (const ref of immutableReferences) { + if (ref.length !== 32) { + throw new Error("Only 32 byte words supported for immutable references."); + } + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(0), ref.start); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(8), ref.start + 8); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(16), ref.start + 16); + byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(24), ref.start + 24); + } + + return byteCodeWithImmutablesReplaced; +} + + +function strip0x(str: string) { + return str.startsWith("0x") ? str.substring(2) : str; +} + +function sha256sum(buff: Buffer) { + return crypto.createHash("sha256").update(buff).digest("hex"); +} + +run().then(() => console.log("Done! " + processName)); From dbaa8e8a54d0564fc65788f3569faba6a10098ab Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:42:03 -0300 Subject: [PATCH 052/174] gRelayer: update some rpcs --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 75b01263be..06cfe51954 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -41,7 +41,7 @@ "description": "Klaytn", "evmNetworkId": 8217, "chainId": 13, - "rpc": "https://1rpc.io/klay", + "rpc": "https://public-en-cypress.klaytn.net", "wormholeAddress": "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7" }, { @@ -69,7 +69,7 @@ "description": "Optimism", "evmNetworkId": 10, "chainId": 24, - "rpc": "https://mainnet.optimism.io", + "rpc": "https://optimism.publicnode.com", "wormholeAddress": "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722" }, { From ea2795da8145b8a8bbbe5877f2b4182b52b9bdfd Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:44:00 -0300 Subject: [PATCH 053/174] gRelayer: rename configureDeliveryProvider -> initializeDeliveryProvider --- .../initializeDeliveryProvider.ts | 118 ++++++++++++++++++ .../relayer/shell/deployConfigureMainnet.sh | 2 +- .../relayer/shell/deployConfigureTest.sh | 6 +- .../relayer/shell/deployInContainer.sh | 2 +- 4 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts new file mode 100644 index 0000000000..37f758071f --- /dev/null +++ b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts @@ -0,0 +1,118 @@ +import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; +import type { BigNumberish } from "ethers"; +import { + init, + loadChains, + ChainInfo, + loadScriptConfig, + getDeliveryProvider, + getDeliveryProviderAddress, + getOperatingChains, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; +import { wait } from "../helpers/utils"; + +import type { DeliveryProviderStructs } from "../../../ethers-contracts/DeliveryProvider"; + +/** + * Meant for `config.pricingInfo` + */ +interface PricingInfo { + chainId: ChainId; + deliverGasOverhead: BigNumberish; + updatePriceGas: BigNumberish; + updatePriceNative: BigNumberish; + maximumBudget: BigNumberish; +} + +const processName = "initializeDeliveryProvider"; +init(); +const operatingChains = getOperatingChains(); +const allChains = loadChains(); +const config = loadScriptConfig(processName); + +async function run() { + console.log("Start! " + processName); + + for (const chain of operatingChains) { + await configureChainsDeliveryProvider(chain); + } +} + +async function configureChainsDeliveryProvider(chain: ChainInfo) { + console.log( + "about to perform DeliveryProvider configuration for chain " + chain.chainId + ); + const deliveryProvider = await getDeliveryProvider(chain); + + const thisChainsConfigInfo = config.addresses.find( + (x: any) => x.chainId == chain.chainId + ); + + if (!thisChainsConfigInfo) { + throw new Error( + "Failed to find address config info for chain " + chain.chainId + ); + } + if (!thisChainsConfigInfo.rewardAddress) { + throw new Error( + "Failed to find reward address info for chain " + chain.chainId + ); + } + + const VAA_KEY_TYPE = 1 << 1; + const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { + updateWormholeRelayer: false, + updateRewardAddress: true, + updateSupportedKeyTypes: true, + coreRelayer: "0x0000000000000000000000000000000000000000", + rewardAddress: thisChainsConfigInfo.rewardAddress, + supportedKeyTypesBitmap: VAA_KEY_TYPE, + }; + const updates: DeliveryProviderStructs.UpdateStruct[] = []; + + // Set the entire relay provider configuration + for (const targetChain of allChains) { + const targetChainPriceUpdate = (config.pricingInfo as PricingInfo[]).find( + (x: any) => x.chainId == targetChain.chainId + ); + if (!targetChainPriceUpdate) { + throw new Error( + "Failed to find pricingInfo for chain " + targetChain.chainId + ); + } + const targetChainProviderAddress = getDeliveryProviderAddress(targetChain); + const remoteDeliveryProvider = + "0x" + tryNativeToHexString(targetChainProviderAddress, "ethereum"); + const chainConfigUpdate: DeliveryProviderStructs.UpdateStruct = { + chainId: targetChain.chainId, + updateAssetConversionBuffer: true, + updateDeliverGasOverhead: true, + updatePrice: true, + updateMaximumBudget: true, + updateTargetChainAddress: true, + updateSupportedChain: true, + isSupported: true, + buffer: 5, + bufferDenominator: 100, + newGasOverhead: targetChainPriceUpdate.deliverGasOverhead, + gasPrice: targetChainPriceUpdate.updatePriceGas, + nativeCurrencyPrice: targetChainPriceUpdate.updatePriceNative, + targetChainAddress: remoteDeliveryProvider, + maximumTotalBudget: targetChainPriceUpdate.maximumBudget, + }; + updates.push(chainConfigUpdate); + } + + const overrides = await buildOverrides( + () => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), + chain + ); + await deliveryProvider + .updateConfig(updates, coreConfig, overrides) + .then(wait); + + console.log("done with DeliveryProvider configuration on " + chain.chainId); +} + +run().then(() => console.log("Done! " + processName)); diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh index e94fd930f2..64c684f40b 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -3,7 +3,7 @@ npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ - && npx tsx ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh index 9791a3b594..1a2b0bf2c4 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh @@ -2,10 +2,10 @@ npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ - && npx tsx ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ + && npx tsx ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts \ && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ - && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts \ - && npx tsx ./ts-scripts/relayer/mockIntegration/messageTest.ts + && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts + # && npx tsx ./ts-scripts/relayer/mockIntegration/messageTest.ts # put this as 2nd script if not deployed aleady \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/deployInContainer.sh b/ethereum/ts-scripts/relayer/shell/deployInContainer.sh index ad70d6420a..d28e11c0a3 100755 --- a/ethereum/ts-scripts/relayer/shell/deployInContainer.sh +++ b/ethereum/ts-scripts/relayer/shell/deployInContainer.sh @@ -4,4 +4,4 @@ && npx tsx@4.5.1 ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx@4.5.1 ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ && npx tsx@4.5.1 ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts \ - && npx tsx@4.5.1 ./ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts \ + && npx tsx@4.5.1 ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ From cc538ccf32b88bfdff549a48068662045bb65377 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:44:27 -0300 Subject: [PATCH 054/174] gRelayer: fix wrong script name --- ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh diff --git a/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh old mode 100644 new mode 100755 index a37f047ee4..d2c94ec0c8 --- a/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/upgradeWormholeRelayer.sh @@ -1 +1 @@ -npx tsx ./ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementation.ts \ No newline at end of file +npx tsx ./ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts \ No newline at end of file From 2bb4027b81c77b1f01233c7dbcd0cf8d37003a97 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:45:17 -0300 Subject: [PATCH 055/174] gRelayer: remove legacy file --- .../configureDeliveryProvider.ts | 118 ------------------ 1 file changed, 118 deletions(-) delete mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts deleted file mode 100644 index 70bb7dbde5..0000000000 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; -import type { BigNumberish } from "ethers"; -import { - init, - loadChains, - ChainInfo, - loadScriptConfig, - getDeliveryProvider, - getDeliveryProviderAddress, - getOperatingChains, -} from "../helpers/env"; -import { buildOverrides } from "../helpers/deployments"; -import { wait } from "../helpers/utils"; - -import type { DeliveryProviderStructs } from "../../../ethers-contracts/DeliveryProvider"; - -/** - * Meant for `config.pricingInfo` - */ -interface PricingInfo { - chainId: ChainId; - deliverGasOverhead: BigNumberish; - updatePriceGas: BigNumberish; - updatePriceNative: BigNumberish; - maximumBudget: BigNumberish; -} - -const processName = "configureDeliveryProvider"; -init(); -const operatingChains = getOperatingChains(); -const allChains = loadChains(); -const config = loadScriptConfig(processName); - -async function run() { - console.log("Start! " + processName); - - for (const chain of operatingChains) { - await configureChainsDeliveryProvider(chain); - } -} - -async function configureChainsDeliveryProvider(chain: ChainInfo) { - console.log( - "about to perform DeliveryProvider configuration for chain " + chain.chainId - ); - const deliveryProvider = await getDeliveryProvider(chain); - - const thisChainsConfigInfo = config.addresses.find( - (x: any) => x.chainId == chain.chainId - ); - - if (!thisChainsConfigInfo) { - throw new Error( - "Failed to find address config info for chain " + chain.chainId - ); - } - if (!thisChainsConfigInfo.rewardAddress) { - throw new Error( - "Failed to find reward address info for chain " + chain.chainId - ); - } - - const VAA_KEY_TYPE = 1 << 1; - const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { - updateWormholeRelayer: false, - updateRewardAddress: true, - updateSupportedKeyTypes: true, - coreRelayer: "0x0000000000000000000000000000000000000000", - rewardAddress: thisChainsConfigInfo.rewardAddress, - supportedKeyTypesBitmap: VAA_KEY_TYPE, - }; - const updates: DeliveryProviderStructs.UpdateStruct[] = []; - - // Set the entire relay provider configuration - for (const targetChain of allChains) { - const targetChainPriceUpdate = (config.pricingInfo as PricingInfo[]).find( - (x: any) => x.chainId == targetChain.chainId - ); - if (!targetChainPriceUpdate) { - throw new Error( - "Failed to find pricingInfo for chain " + targetChain.chainId - ); - } - const targetChainProviderAddress = getDeliveryProviderAddress(targetChain); - const remoteDeliveryProvider = - "0x" + tryNativeToHexString(targetChainProviderAddress, "ethereum"); - const chainConfigUpdate: DeliveryProviderStructs.UpdateStruct = { - chainId: targetChain.chainId, - updateAssetConversionBuffer: true, - updateDeliverGasOverhead: true, - updatePrice: true, - updateMaximumBudget: true, - updateTargetChainAddress: true, - updateSupportedChain: true, - isSupported: true, - buffer: 5, - bufferDenominator: 100, - newGasOverhead: targetChainPriceUpdate.deliverGasOverhead, - gasPrice: targetChainPriceUpdate.updatePriceGas, - nativeCurrencyPrice: targetChainPriceUpdate.updatePriceNative, - targetChainAddress: remoteDeliveryProvider, - maximumTotalBudget: targetChainPriceUpdate.maximumBudget, - }; - updates.push(chainConfigUpdate); - } - - const overrides = await buildOverrides( - () => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), - chain - ); - await deliveryProvider - .updateConfig(updates, coreConfig, overrides) - .then(wait); - - console.log("done with DeliveryProvider configuration on " + chain.chainId); -} - -run().then(() => console.log("Done! " + processName)); From 621b765be10a633c257a980aa9959be75a05d693 Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:46:10 -0300 Subject: [PATCH 056/174] gRelayer: fix log on verifyWormholeRelayerDeployedBytecode --- .../wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index ccc3310bfb..0fe2a561f0 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -33,7 +33,7 @@ async function run() { continue; } - console.log(`Verifying bytecode deployed at ${deployedImplementationAddress} on chain ${chain.chainId}...`); + console.log(`Verifying bytecode deployed at ${deployedImplementationAddress.address} on chain ${chain.chainId}...`); const provider = getProvider(chain); From b3952aca3f1773375cf422afaaa2c8fc2179788b Mon Sep 17 00:00:00 2001 From: solanoe Date: Wed, 22 Nov 2023 16:46:33 -0300 Subject: [PATCH 057/174] gRelayer: add fantom and sepolia config --- .../ts-scripts/relayer/config/testnet/chains.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index fd0b1a2d2b..07d76ced66 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -64,6 +64,20 @@ "chainId": 2, "rpc": "https://ethereum-goerli.publicnode.com", "wormholeAddress": "0x706abc4E45D419950511e474C7B9Ed348A4a716c" + }, + { + "description": "Fantom", + "evmNetworkId": 4002, + "chainId": 10, + "rpc": "https://fantom.api.onfinality.io/public", + "wormholeAddress": "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7" + }, + { + "description": "Ethereum Sepolia", + "evmNetworkId": 11155111, + "chainId": 10002, + "rpc": "https://ethereum-goerli.publicnode.com", + "wormholeAddress": "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78" } ] } From 5ea33f9b2c20d2bfdb7393dac1bc5d60b898a40f Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 23 Nov 2023 12:56:17 -0300 Subject: [PATCH 058/174] add sepolia and fantom chain config for testnet --- .../relayer/config/testnet/chains.json | 4 +- .../relayer/config/testnet/contracts.json | 42 ++++++++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 07d76ced66..99c932af18 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -69,14 +69,14 @@ "description": "Fantom", "evmNetworkId": 4002, "chainId": 10, - "rpc": "https://fantom.api.onfinality.io/public", + "rpc": "https://fantom-testnet.publicnode.com", "wormholeAddress": "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7" }, { "description": "Ethereum Sepolia", "evmNetworkId": 11155111, "chainId": 10002, - "rpc": "https://ethereum-goerli.publicnode.com", + "rpc": "https://ethereum-sepolia.publicnode.com", "wormholeAddress": "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78" } ] diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index d191a6c93f..f3ef0a95ce 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -37,6 +37,14 @@ { "chainId": 2, "address": "0xD1463B4fe86166768d2ff51B1A928beBB5c9f375" + }, + { + "chainId": 10, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + }, + { + "chainId": 10002, + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" } ], "wormholeRelayers": [ @@ -75,6 +83,14 @@ { "chainId": 2, "address": "0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a" + }, + { + "chainId": 10, + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" + }, + { + "chainId": 10002, + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" } ], "wormholeRelayerImplementations": [ @@ -113,6 +129,14 @@ { "address": "0xA82aE5F6784D07580e83cf02bA162D48b81f8316", "chainId": 2 + }, + { + "chainId": 10, + "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF" + }, + { + "chainId": 10002, + "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF" } ], "mockIntegrations": [ @@ -151,6 +175,14 @@ { "chainId": 2, "address": "0xb81bc199b73AB34c393a4192C163252116a03370" + }, + { + "chainId": 10, + "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" + }, + { + "chainId": 10002, + "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" } ], "create2Factories": [ @@ -189,6 +221,14 @@ { "chainId": 2, "address": "0x787220D50B32562b0F71Db786881D5F6322082F2" + }, + { + "chainId": 10, + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2" + }, + { + "chainId": 10002, + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2" } ] -} +} \ No newline at end of file From 3d8771100d76103e9efb22dd13d586d380c9f3f4 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 23 Nov 2023 12:58:01 -0300 Subject: [PATCH 059/174] adds configureDeliveryProvider script --- .../configureDeliveryProvider.json | 205 ++++++++--- .../initializeDeliveryProvider.json | 123 +++++++ .../configureDeliveryProvider.ts | 320 ++++++++++++++++++ 3 files changed, 594 insertions(+), 54 deletions(-) create mode 100644 ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json create mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 94fcf93da5..1951b0b648 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -1,101 +1,198 @@ { - "addresses": [ + "pricingInfo": [ { - "chainId": 6, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 2, + "updatePriceGas": "40000000000", + "updatePriceNative": "1964720000" }, { - "chainId": 14, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 4, + "updatePriceGas": "3000000000", + "updatePriceNative": "250830000" }, { "chainId": 5, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "updatePriceGas": "219000000000", + "updatePriceNative": "818100" }, { - "chainId": 16, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 6, + "updatePriceGas": "30000000000", + "updatePriceNative": "15080000" }, { - "chainId": 4, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 10, + "updatePriceGas": "800000000000", + "updatePriceNative": "287900" + }, + { + "chainId": 13, + "updatePriceGas": "25000000000", + "updatePriceNative": "163600" + }, + { + "chainId": 14, + "updatePriceGas": "10000000000", + "updatePriceNative": "519400" + }, + { + "chainId": 16, + "updatePriceGas": "160000000000", + "updatePriceNative": "253800" }, { "chainId": 23, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "updatePriceGas": "1200000", + "updatePriceNative": "1964720000" }, { "chainId": 24, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "updatePriceGas": "1200000", + "updatePriceNative": "1964720000" }, { - "chainId": 2, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 10, + "updatePriceGas": "5000000000", + "updatePriceNative": "100000" + }, + { + "chainId": 10002, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" } ], - "pricingInfo": [ + "deliveryGasOverheads": [ { "chainId": 6, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "updateGasOverhead": "500000" + }, + { + "chainId": 10, + "updateGasOverhead": "500000" }, { "chainId": 14, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "updateGasOverhead": "500000" }, { - "chainId": 5, - "deliverGasOverhead": "350000", - "updatePriceGas": "7322000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "chainId": 23, + "updateGasOverhead": "424148649" + }, + { + "chainId": 24, + "updateGasOverhead": "424148649" + }, + { + "chainId": 10, + "updateGasOverhead": "350000" + }, + { + "chainId": 10002, + "updateGasOverhead": "350000" + } + ], + "maximumBudgets": [ + { + "chainId": 2, + "updateMaximumBudget": "200000000000000000" }, { "chainId": 4, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "updateMaximumBudget": "797352788700000000" }, { - "chainId": 16, - "deliverGasOverhead": "350000", - "updatePriceGas": "10000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "chainId": 5, + "updateMaximumBudget": "244468891300000000000" }, { - "chainId": 30, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "chainId": 6, + "updateMaximumBudget": "13262599470000000000" + }, + { + "chainId": 10, + "updateMaximumBudget": "694685654700000000000" + }, + { + "chainId": 13, + "updateMaximumBudget": "1222493888000000000000" + }, + { + "chainId": 14, + "updateMaximumBudget": "385059684300000000000" + }, + { + "chainId": 16, + "updateMaximumBudget": "788022064600000000000" }, { "chainId": 23, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "updateMaximumBudget": "101795675700000000" }, { "chainId": 24, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "updateMaximumBudget": "101795675700000000" }, + { + "chainId": 10, + "updateMaximumBudget": "1000000000000000000" + }, + { + "chainId": 10002, + "updateMaximumBudget": "1000000000000000000" + } + ], + "rewardAddresses": [ { "chainId": 2, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 4, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 5, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 6, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 13, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 14, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 16, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 23, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 24, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 30, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10002, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ] } diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json new file mode 100644 index 0000000000..d8fd8724df --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json @@ -0,0 +1,123 @@ +{ + "addresses": [ + { + "chainId": 6, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 14, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 5, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 16, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 4, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 23, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 24, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 2, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10002, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + } + ], + "pricingInfo": [ + { + "chainId": 6, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 14, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 5, + "deliverGasOverhead": "350000", + "updatePriceGas": "7322000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 4, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 16, + "deliverGasOverhead": "350000", + "updatePriceGas": "10000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 30, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 23, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 24, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 2, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10, + "deliverGasOverhead": "350000", + "updatePriceGas": "3000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10002, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + } + ] +} diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts new file mode 100644 index 0000000000..79128ac9b8 --- /dev/null +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -0,0 +1,320 @@ +import { ChainId, tryHexToNativeString, tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { BigNumberish, utils } from "ethers"; +import { + init, + ChainInfo, + loadScriptConfig, + getDeliveryProvider, + getOperatingChains, + loadChains, + getDeliveryProviderAddress, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; + +import type { + DeliveryProvider, + DeliveryProviderStructs, +} from "../../../ethers-contracts/DeliveryProvider"; + +type AwaitedProperties = { + [K in keyof T]: Awaited; +}; +type UpdateStruct = AwaitedProperties; + +interface Config { + pricingInfo: PricingInfo[]; + deliveryGasOverheads: DeliveryGasOverhead[]; + maximumBudgets: MaximumBudget[]; + rewardAddresses: RewardAddress[]; +} + +interface PricingInfo { + chainId: ChainId; + updatePriceGas: BigNumberish; + updatePriceNative: BigNumberish; +} + +interface DeliveryGasOverhead { + chainId: ChainId; + updateGasOverhead: BigNumberish; +} + +interface MaximumBudget { + chainId: ChainId; + updateMaximumBudget: BigNumberish; +} + +interface RewardAddress { + chainId: ChainId; + rewardAddress: string; +} + +const zeroAddress = "0x0000000000000000000000000000000000000000"; +const whZeroAddress = +"0x0000000000000000000000000000000000000000000000000000000000000000"; + +const processName = "configureDeliveryProvider"; +init(); +const operatingChains = getOperatingChains(); +const allChains = loadChains(); +const config: Config = loadScriptConfig(processName); + +async function run() { + console.log(`Start! ${processName}`); + + const updateTasks = operatingChains.map((chain) => + updateDeliveryProviderConfiguration(config, chain) + ); + const results = await Promise.allSettled(updateTasks); + for (const result of results) { + if (result.status === "rejected") { + console.log( + `Price update failed: ${result.reason?.stack || result.reason}` + ); + } else { + // Print update details; this reflects the exact updates requested to the contract. + // Note that we assume that this update element was added because + // some modification was requested to the contract. + // This depends on the behaviour of the process functions. + for (const update of result.value?.updates || []) { + if (result.value?.chain) { + printUpdate(update, result.value.chain); + } + } + } + } +} + +function printUpdate(update: UpdateStruct, { chainId }: ChainInfo) { + let messages = [ + `Updates for operating chain ${chainId} and target chain ${update.chainId}:`, + ]; + if (update.updatePrice) { + const assetPrice = utils.formatUnits(update.nativeCurrencyPrice, 6); + const gasPrice = utils.formatUnits(update.gasPrice, "gwei"); + messages.push(` Asset price update: $${assetPrice}`); + messages.push(` Gas price update: ${gasPrice} gwei`); + } + if (update.updateDeliverGasOverhead) { + messages.push(` Deliver gas overhead update: ${update.newGasOverhead}`); + } + if (update.updateMaximumBudget) { + const maximumBudget = utils.formatEther(update.maximumTotalBudget); + messages.push(` Maximum budget update: ${maximumBudget}`); + } + + console.log(messages.join("\n")); +} + +async function updateDeliveryProviderConfiguration(config: Config, chain: ChainInfo) { + const deliveryProvider = await getDeliveryProvider(chain); + const updates: UpdateStruct[] = []; + + for (const priceUpdate of config.pricingInfo) { + console.log( + `Processing price update for operating chain ${chain.chainId} and target chain ${priceUpdate.chainId}` + ); + await processPriceUpdate(updates, deliveryProvider, priceUpdate); + } + + for (const gasOverheadUpdate of config.deliveryGasOverheads) { + console.log( + `Processing gas overhead update for operating chain ${chain.chainId} and target chain ${gasOverheadUpdate.chainId}` + ); + await processGasOverheadUpdate( + updates, + deliveryProvider, + gasOverheadUpdate + ); + } + + for (const maximumBudgetUpdate of config.maximumBudgets) { + console.log( + `Processing maximum budget update for operating chain ${chain.chainId} and target chain ${maximumBudgetUpdate.chainId}` + ); + await processMaximumBudgetUpdate( + updates, + deliveryProvider, + maximumBudgetUpdate + ); + } + + for (const targetChain of allChains) { + console.log( + `Processing targetChainAddress update for operating chain ${chain.chainId} and target chain ${targetChain.chainId}` + ); + + await processTargetChainAddressUpdate( + updates, + deliveryProvider, + targetChain, + ); + } + + const coreConfig = await processCoreConfigUpdates( + config.rewardAddresses, + deliveryProvider, + chain, + ); + + const overrides = await buildOverrides( + () => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), + chain + ); + console.log(`Sending update tx for operating chain ${chain.chainId}`); + console.log(JSON.stringify(updates)); + + const tx = await deliveryProvider.updateConfig( + updates, + coreConfig, + overrides + ); + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error( + `Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}` + ); + } + + return { updates, chain }; +} + +async function processPriceUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + { chainId, updatePriceGas, updatePriceNative }: PricingInfo +) { + const currentGasPrice = await deliveryProvider.gasPrice(chainId); + const currentNativeAssetPrice = await deliveryProvider.nativeCurrencyPrice( + chainId + ); + + if ( + !currentGasPrice.eq(updatePriceGas) || + !currentNativeAssetPrice.eq(updatePriceNative) + ) { + const update = getUpdateConfig(updates, chainId); + update.updatePrice = true; + update.nativeCurrencyPrice = updatePriceNative; + update.gasPrice = updatePriceGas; + } +} + +async function processGasOverheadUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + { chainId, updateGasOverhead }: DeliveryGasOverhead +) { + const currentGasOverhead = await deliveryProvider.deliverGasOverhead(chainId); + + if (!currentGasOverhead.eq(updateGasOverhead)) { + const update = getUpdateConfig(updates, chainId); + update.updateDeliverGasOverhead = true; + update.newGasOverhead = updateGasOverhead; + } +} + +async function processMaximumBudgetUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + { chainId, updateMaximumBudget }: MaximumBudget +) { + const currentMaximumBudget = await deliveryProvider.maximumBudget(chainId); + + if (!currentMaximumBudget.eq(updateMaximumBudget)) { + const update = getUpdateConfig(updates, chainId); + update.updateMaximumBudget = true; + update.maximumTotalBudget = updateMaximumBudget; + } +} + +async function processTargetChainAddressUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + chain: ChainInfo, +) { + const currentTargetChainAddress = await deliveryProvider.getTargetChainAddress(chain.chainId); + const targetChainAddress = + "0x" + tryNativeToHexString(getDeliveryProviderAddress(chain), "ethereum"); + + if (currentTargetChainAddress !== targetChainAddress) { + const update = getUpdateConfig(updates, chain.chainId); + update.updateTargetChainAddress = true; + update.targetChainAddress = targetChainAddress; + } +} + +async function processCoreConfigUpdates( + rewardAddresses: RewardAddress[], + deliveryProvider: DeliveryProvider, + chain: ChainInfo, +) { + const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { + updateRewardAddress: false, + updateWormholeRelayer: false, + updateSupportedKeyTypes: false, + coreRelayer: zeroAddress, + rewardAddress: zeroAddress, + supportedKeyTypesBitmap: 0, + }; + + const rewardAddress = rewardAddresses.find((element) => { + return element.chainId === chain.chainId; + })?.rewardAddress; + + if (!rewardAddress) { + throw new Error( + "Failed to find reward address info for chain " + chain.chainId + ); + } + + const currentRewardAddress = await deliveryProvider.rewardAddress(); + console.log("currentRewardAddress: " + currentRewardAddress); + console.log("rewardAddress: " + rewardAddress); + + if (currentRewardAddress !== rewardAddress) { + coreConfig.updateRewardAddress = true; + coreConfig.rewardAddress = rewardAddress; + } + + return coreConfig; +} + +function getUpdateConfig( + updates: UpdateStruct[], + chainId: ChainId +): UpdateStruct { + let update = updates.find((element) => { + return element.chainId === chainId; + }); + + if (update === undefined) { + update = createEmptyUpdateConfig(chainId); + updates.push(update); + } + + return update; +} + +function createEmptyUpdateConfig(chainId: ChainId): UpdateStruct { + return { + chainId, + updateAssetConversionBuffer: false, + updateDeliverGasOverhead: false, + updatePrice: false, + updateMaximumBudget: false, + updateTargetChainAddress: false, + updateSupportedChain: false, + isSupported: false, + buffer: 0, + bufferDenominator: 0, + newGasOverhead: 0, + gasPrice: 0, + nativeCurrencyPrice: 0, + targetChainAddress: whZeroAddress, + maximumTotalBudget: 0, + }; +} + +run().then(() => console.log(`Done! ${processName}`)); From a325bb5ae8facd6724ec99f1a68464608c837846 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 30 Nov 2023 13:23:11 -0300 Subject: [PATCH 060/174] add isSupportedChain property to configureDeliveryProvider script --- .../configureDeliveryProvider.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 79128ac9b8..8e8074e837 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -26,6 +26,7 @@ interface Config { deliveryGasOverheads: DeliveryGasOverhead[]; maximumBudgets: MaximumBudget[]; rewardAddresses: RewardAddress[]; + supportedChains: SupportedChain[]; } interface PricingInfo { @@ -49,6 +50,11 @@ interface RewardAddress { rewardAddress: string; } +interface SupportedChain { + chainId: ChainId; + isSupported: boolean; +} + const zeroAddress = "0x0000000000000000000000000000000000000000"; const whZeroAddress = "0x0000000000000000000000000000000000000000000000000000000000000000"; @@ -151,6 +157,18 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); } + for (const supportedChain of config.supportedChains) { + console.log( + `Processing supported chain update for operating chain ${chain.chainId} and target chain ${supportedChain.chainId}` + ); + + await processSupportedChainUpdate( + updates, + deliveryProvider, + supportedChain, + ); + } + const coreConfig = await processCoreConfigUpdates( config.rewardAddresses, deliveryProvider, @@ -245,6 +263,20 @@ async function processTargetChainAddressUpdate( } } +async function processSupportedChainUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + { chainId, isSupported }: SupportedChain, +) { + const currentIsSupported = await deliveryProvider.isChainSupported(chainId); + + if (currentIsSupported !== isSupported) { + const update = getUpdateConfig(updates, chainId); + update.updateSupportedChain = true; + update.isSupported = isSupported; + } +} + async function processCoreConfigUpdates( rewardAddresses: RewardAddress[], deliveryProvider: DeliveryProvider, From 0a08b3dca6157d048d44e8b4ffde7e0d470abdd0 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 30 Nov 2023 13:23:33 -0300 Subject: [PATCH 061/174] add some missing configurations --- .../configureDeliveryProvider.js | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js new file mode 100644 index 0000000000..4951c0fdca --- /dev/null +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js @@ -0,0 +1,173 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const wormhole_sdk_1 = require("@certusone/wormhole-sdk"); +const ethers_1 = require("ethers"); +const env_1 = require("../helpers/env"); +const deployments_1 = require("../helpers/deployments"); +const zeroAddress = "0x0000000000000000000000000000000000000000"; +const whZeroAddress = "0x0000000000000000000000000000000000000000000000000000000000000000"; +const processName = "configureDeliveryProvider"; +(0, env_1.init)(); +const operatingChains = (0, env_1.getOperatingChains)(); +const allChains = (0, env_1.loadChains)(); +const config = (0, env_1.loadScriptConfig)(processName); +async function run() { + console.log(`Start! ${processName}`); + const updateTasks = operatingChains.map((chain) => updateDeliveryProviderConfiguration(config, chain)); + const results = await Promise.allSettled(updateTasks); + for (const result of results) { + if (result.status === "rejected") { + console.log(`Price update failed: ${result.reason?.stack || result.reason}`); + } + else { + // Print update details; this reflects the exact updates requested to the contract. + // Note that we assume that this update element was added because + // some modification was requested to the contract. + // This depends on the behaviour of the process functions. + for (const update of result.value?.updates || []) { + if (result.value?.chain) { + printUpdate(update, result.value.chain); + } + } + } + } +} +function printUpdate(update, { chainId }) { + let messages = [ + `Updates for operating chain ${chainId} and target chain ${update.chainId}:`, + ]; + if (update.updatePrice) { + const assetPrice = ethers_1.utils.formatUnits(update.nativeCurrencyPrice, 6); + const gasPrice = ethers_1.utils.formatUnits(update.gasPrice, "gwei"); + messages.push(` Asset price update: $${assetPrice}`); + messages.push(` Gas price update: ${gasPrice} gwei`); + } + if (update.updateDeliverGasOverhead) { + messages.push(` Deliver gas overhead update: ${update.newGasOverhead}`); + } + if (update.updateMaximumBudget) { + const maximumBudget = ethers_1.utils.formatEther(update.maximumTotalBudget); + messages.push(` Maximum budget update: ${maximumBudget}`); + } + console.log(messages.join("\n")); +} +async function updateDeliveryProviderConfiguration(config, chain) { + const deliveryProvider = await (0, env_1.getDeliveryProvider)(chain); + const updates = []; + for (const priceUpdate of config.pricingInfo) { + console.log(`Processing price update for operating chain ${chain.chainId} and target chain ${priceUpdate.chainId}`); + await processPriceUpdate(updates, deliveryProvider, priceUpdate); + } + for (const gasOverheadUpdate of config.deliveryGasOverheads) { + console.log(`Processing gas overhead update for operating chain ${chain.chainId} and target chain ${gasOverheadUpdate.chainId}`); + await processGasOverheadUpdate(updates, deliveryProvider, gasOverheadUpdate); + } + for (const maximumBudgetUpdate of config.maximumBudgets) { + console.log(`Processing maximum budget update for operating chain ${chain.chainId} and target chain ${maximumBudgetUpdate.chainId}`); + await processMaximumBudgetUpdate(updates, deliveryProvider, maximumBudgetUpdate); + } + for (const targetChain of allChains) { + console.log(`Processing targetChainAddress update for operating chain ${chain.chainId} and target chain ${targetChain.chainId}`); + await processTargetChainAddressUpdate(updates, deliveryProvider, targetChain); + } + const coreConfig = await processCoreConfigUpdates(config.rewardAddresses, deliveryProvider, chain); + const overrides = await (0, deployments_1.buildOverrides)(() => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), chain); + console.log(`Sending update tx for operating chain ${chain.chainId}`); + console.log(JSON.stringify(updates)); + const tx = await deliveryProvider.updateConfig(updates, coreConfig, overrides); + const receipt = await tx.wait(); + if (receipt.status !== 1) { + throw new Error(`Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}`); + } + return { updates, chain }; +} +async function processPriceUpdate(updates, deliveryProvider, { chainId, updatePriceGas, updatePriceNative }) { + const currentGasPrice = await deliveryProvider.gasPrice(chainId); + const currentNativeAssetPrice = await deliveryProvider.nativeCurrencyPrice(chainId); + if (!currentGasPrice.eq(updatePriceGas) || + !currentNativeAssetPrice.eq(updatePriceNative)) { + const update = getUpdateConfig(updates, chainId); + update.updatePrice = true; + update.nativeCurrencyPrice = updatePriceNative; + update.gasPrice = updatePriceGas; + } +} +async function processGasOverheadUpdate(updates, deliveryProvider, { chainId, updateGasOverhead }) { + const currentGasOverhead = await deliveryProvider.deliverGasOverhead(chainId); + if (!currentGasOverhead.eq(updateGasOverhead)) { + const update = getUpdateConfig(updates, chainId); + update.updateDeliverGasOverhead = true; + update.newGasOverhead = updateGasOverhead; + } +} +async function processMaximumBudgetUpdate(updates, deliveryProvider, { chainId, updateMaximumBudget }) { + const currentMaximumBudget = await deliveryProvider.maximumBudget(chainId); + if (!currentMaximumBudget.eq(updateMaximumBudget)) { + const update = getUpdateConfig(updates, chainId); + update.updateMaximumBudget = true; + update.maximumTotalBudget = updateMaximumBudget; + } +} +async function processTargetChainAddressUpdate(updates, deliveryProvider, chain) { + const currentTargetChainAddress = await deliveryProvider.getTargetChainAddress(chain.chainId); + const targetChainAddress = "0x" + (0, wormhole_sdk_1.tryNativeToHexString)((0, env_1.getDeliveryProviderAddress)(chain), "ethereum"); + if (currentTargetChainAddress !== targetChainAddress) { + const update = getUpdateConfig(updates, chain.chainId); + update.updateTargetChainAddress = true; + update.targetChainAddress = targetChainAddress; + } +} +async function processCoreConfigUpdates(rewardAddresses, deliveryProvider, chain) { + const coreConfig = { + updateRewardAddress: false, + updateWormholeRelayer: false, + updateSupportedKeyTypes: false, + coreRelayer: zeroAddress, + rewardAddress: zeroAddress, + supportedKeyTypesBitmap: 0, + }; + const rewardAddress = rewardAddresses.find((element) => { + return element.chainId === chain.chainId; + })?.rewardAddress; + if (!rewardAddress) { + throw new Error("Failed to find reward address info for chain " + chain.chainId); + } + const currentRewardAddress = await deliveryProvider.rewardAddress(); + console.log("currentRewardAddress: " + currentRewardAddress); + console.log("rewardAddress: " + rewardAddress); + if (currentRewardAddress !== rewardAddress) { + coreConfig.updateRewardAddress = true; + coreConfig.rewardAddress = rewardAddress; + } + return coreConfig; +} +function getUpdateConfig(updates, chainId) { + let update = updates.find((element) => { + return element.chainId === chainId; + }); + if (update === undefined) { + update = createEmptyUpdateConfig(chainId); + updates.push(update); + } + return update; +} +function createEmptyUpdateConfig(chainId) { + return { + chainId, + updateAssetConversionBuffer: false, + updateDeliverGasOverhead: false, + updatePrice: false, + updateMaximumBudget: false, + updateTargetChainAddress: false, + updateSupportedChain: false, + isSupported: false, + buffer: 0, + bufferDenominator: 0, + newGasOverhead: 0, + gasPrice: 0, + nativeCurrencyPrice: 0, + targetChainAddress: whZeroAddress, + maximumTotalBudget: 0, + }; +} +run().then(() => console.log(`Done! ${processName}`)); From 21452264f4baca00c040ab961460d9a4404b96ee Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 30 Nov 2023 13:26:38 -0300 Subject: [PATCH 062/174] remove unnecessary log --- .../relayer/deliveryProvider/configureDeliveryProvider.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 8e8074e837..92e7f4a3ba 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -302,8 +302,6 @@ async function processCoreConfigUpdates( } const currentRewardAddress = await deliveryProvider.rewardAddress(); - console.log("currentRewardAddress: " + currentRewardAddress); - console.log("rewardAddress: " + rewardAddress); if (currentRewardAddress !== rewardAddress) { coreConfig.updateRewardAddress = true; From 0ca6a39d4cd0e0fbe14f251ed4e321114ad18b61 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 30 Nov 2023 13:27:48 -0300 Subject: [PATCH 063/174] add missing configurations for configureDeliveryProvider script --- .../configureDeliveryProvider.json | 136 +++++++++++++----- 1 file changed, 99 insertions(+), 37 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 1951b0b648..a9a9cb1fed 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -2,66 +2,78 @@ "pricingInfo": [ { "chainId": 2, - "updatePriceGas": "40000000000", - "updatePriceNative": "1964720000" + "updatePriceGas": "20000000000", + "updatePriceNative": "2000000" }, { "chainId": 4, "updatePriceGas": "3000000000", - "updatePriceNative": "250830000" + "updatePriceNative": "1000000" }, { "chainId": 5, "updatePriceGas": "219000000000", - "updatePriceNative": "818100" + "updatePriceNative": "1000000" }, { "chainId": 6, "updatePriceGas": "30000000000", - "updatePriceNative": "15080000" + "updatePriceNative": "1000000" }, { "chainId": 10, "updatePriceGas": "800000000000", - "updatePriceNative": "287900" + "updatePriceNative": "1000000" }, { "chainId": 13, "updatePriceGas": "25000000000", - "updatePriceNative": "163600" + "updatePriceNative": "1000000" }, { "chainId": 14, "updatePriceGas": "10000000000", - "updatePriceNative": "519400" + "updatePriceNative": "1000000" }, { "chainId": 16, "updatePriceGas": "160000000000", - "updatePriceNative": "253800" + "updatePriceNative": "1000000" }, { "chainId": 23, "updatePriceGas": "1200000", - "updatePriceNative": "1964720000" + "updatePriceNative": "2000000" }, { "chainId": 24, "updatePriceGas": "1200000", - "updatePriceNative": "1964720000" + "updatePriceNative": "2000000" }, { - "chainId": 10, - "updatePriceGas": "5000000000", - "updatePriceNative": "100000" + "chainId": 30, + "updatePriceGas": "1200000", + "updatePriceNative": "2000000" }, { "chainId": 10002, - "updatePriceGas": "30000000000", - "updatePriceNative": "200000" + "updatePriceGas": "20000000000", + "updatePriceNative": "2000000" } ], "deliveryGasOverheads": [ + { + "chainId": 2, + "updateGasOverhead": "500000" + }, + { + "chainId": 4, + "updateGasOverhead": "500000" + }, + { + "chainId": 5, + "updateGasOverhead": "500000" + }, { "chainId": 6, "updateGasOverhead": "500000" @@ -70,39 +82,43 @@ "chainId": 10, "updateGasOverhead": "500000" }, + { + "chainId": 13, + "updateGasOverhead": "500000" + }, { "chainId": 14, "updateGasOverhead": "500000" }, { - "chainId": 23, - "updateGasOverhead": "424148649" + "chainId": 16, + "updateGasOverhead": "500000" }, { - "chainId": 24, - "updateGasOverhead": "424148649" + "chainId": 23, + "updateGasOverhead": "500000" }, { - "chainId": 10, - "updateGasOverhead": "350000" + "chainId": 24, + "updateGasOverhead": "500000" }, { "chainId": 10002, - "updateGasOverhead": "350000" + "updateGasOverhead": "500000" } ], "maximumBudgets": [ { "chainId": 2, - "updateMaximumBudget": "200000000000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 4, - "updateMaximumBudget": "797352788700000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 5, - "updateMaximumBudget": "244468891300000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 6, @@ -110,35 +126,35 @@ }, { "chainId": 10, - "updateMaximumBudget": "694685654700000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 13, - "updateMaximumBudget": "1222493888000000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 14, - "updateMaximumBudget": "385059684300000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 16, - "updateMaximumBudget": "788022064600000000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 23, - "updateMaximumBudget": "101795675700000000" + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 24, - "updateMaximumBudget": "101795675700000000" + "updateMaximumBudget": "13262599470000000000" }, { - "chainId": 10, - "updateMaximumBudget": "1000000000000000000" + "chainId": 30, + "updateMaximumBudget": "13262599470000000000" }, { "chainId": 10002, - "updateMaximumBudget": "1000000000000000000" + "updateMaximumBudget": "13262599470000000000" } ], "rewardAddresses": [ @@ -187,12 +203,58 @@ "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 10, + "chainId": 10002, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + } + ], + "supportedChains": [ + { + "chainId": 2, + "isSupported": true + }, + { + "chainId": 4, + "isSupported": true + }, + { + "chainId": 5, + "isSupported": true + }, + { + "chainId": 6, + "isSupported": true + }, + { + "chainId": 10, + "isSupported": true + }, + { + "chainId": 13, + "isSupported": true + }, + { + "chainId": 14, + "isSupported": true + }, + { + "chainId": 16, + "isSupported": true + }, + { + "chainId": 23, + "isSupported": true + }, + { + "chainId": 24, + "isSupported": true + }, + { + "chainId": 30, + "isSupported": true }, { "chainId": 10002, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "isSupported": true } ] } From 0ae74daa7ccb1132074d34c3934cebd6e57f6bc9 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 30 Nov 2023 18:42:46 -0300 Subject: [PATCH 064/174] minor improvements to logs --- .../relayer/config/checkNetworks.ts | 1 + .../configureDeliveryProvider.ts | 41 ++++++++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index b247e2f6da..88913d6c0b 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -18,6 +18,7 @@ async function main() { console.log("Checking networks before deploying..."); for (const chain of chains) { + console.log(`Checking network ${chain.chainId}...`); const signer = await getSigner(chain); const network = await signer.provider?.getNetwork(); const balance = await signer.getBalance(); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 92e7f4a3ba..783e5edd5b 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -1,5 +1,5 @@ import { ChainId, tryHexToNativeString, tryNativeToHexString } from "@certusone/wormhole-sdk"; -import { BigNumberish, utils } from "ethers"; +import { BigNumberish, utils, ContractReceipt } from 'ethers'; import { init, ChainInfo, @@ -75,7 +75,7 @@ async function run() { for (const result of results) { if (result.status === "rejected") { console.log( - `Price update failed: ${result.reason?.stack || result.reason}` + `Updates processing failed: ${result.reason?.stack || result.reason}` ); } else { // Print update details; this reflects the exact updates requested to the contract. @@ -108,6 +108,12 @@ function printUpdate(update: UpdateStruct, { chainId }: ChainInfo) { const maximumBudget = utils.formatEther(update.maximumTotalBudget); messages.push(` Maximum budget update: ${maximumBudget}`); } + if (update.updateTargetChainAddress) { + messages.push(` Target chain address update: ${update.targetChainAddress}`); + } + if (update.updateSupportedChain) { + messages.push(` Supported chain update: ${update.isSupported}`); + } console.log(messages.join("\n")); } @@ -179,18 +185,31 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI () => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), chain ); - console.log(`Sending update tx for operating chain ${chain.chainId}`); - console.log(JSON.stringify(updates)); - const tx = await deliveryProvider.updateConfig( - updates, - coreConfig, - overrides - ); - const receipt = await tx.wait(); + if (!updates.length) { + console.log(`No updates for operating chain ${chain.chainId}`); + return { updates, chain }; + } + + console.log(`Sending update tx for operating chain ${chain.chainId}. Updates: ${JSON.stringify(updates)}`); + + let receipt: ContractReceipt; + try { + const tx = await deliveryProvider.updateConfig( + updates, + coreConfig, + overrides + ); + receipt = await tx.wait(); + } catch (error) { + console.log( + `Updates failed on operating chain ${chain.chainId}. Error: ${error}` + ); + throw error; + } if (receipt.status !== 1) { - throw new Error( + const err = new Error( `Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}` ); } From 5b622353f07cdcf0d29a78de5f6b6b795f1a6843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 11:46:27 -0300 Subject: [PATCH 065/174] evm: throws error when `DeliveryProvider` update failed --- .../relayer/deliveryProvider/configureDeliveryProvider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 783e5edd5b..2ab9e93499 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -1,4 +1,4 @@ -import { ChainId, tryHexToNativeString, tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; import { BigNumberish, utils, ContractReceipt } from 'ethers'; import { init, @@ -69,7 +69,7 @@ async function run() { console.log(`Start! ${processName}`); const updateTasks = operatingChains.map((chain) => - updateDeliveryProviderConfiguration(config, chain) + updateDeliveryProviderConfiguration(config, chain) ); const results = await Promise.allSettled(updateTasks); for (const result of results) { @@ -209,7 +209,7 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI } if (receipt.status !== 1) { - const err = new Error( + throw new Error( `Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}` ); } From 0b64ba9a713afe21cd50bf5efdb12d2d2d5dc521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 11:48:45 -0300 Subject: [PATCH 066/174] evm: adds simple script to enable all message keys for GR --- .../configureSupportedKeys.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureSupportedKeys.ts diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureSupportedKeys.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureSupportedKeys.ts new file mode 100644 index 0000000000..021b78ccf6 --- /dev/null +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureSupportedKeys.ts @@ -0,0 +1,54 @@ +import { + init, + ChainInfo, + getDeliveryProvider, + getOperatingChains, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; +import { wait } from "../helpers/utils"; + +const processName = "configureSupportedKeys"; +init(); +const operatingChains = getOperatingChains(); + + +const keyTypes = { + VAA: 1, + CCTP: 2, +}; + +//TODO: configure which key types to update and whether to enable or disable them. +async function run() { + console.log("Start! " + processName); + + const tasks = await Promise.allSettled(operatingChains.map((chain) => { + return configureChainsDeliveryProvider(chain); + })); + + for (const task of tasks) { + if (task.status === "rejected") { + console.log(`Failed to update supported message key types. ${task.reason?.stack || task.reason}`); + } + } +} + +async function configureChainsDeliveryProvider(chain: ChainInfo) { + console.log( + "about to perform DeliveryProvider message key types update for chain " + chain.chainId + ); + const deliveryProvider = await getDeliveryProvider(chain); + + for (const keyType of Object.values(keyTypes)) { + const overrides = await buildOverrides( + () => deliveryProvider.estimateGas.updateSupportedMessageKeyTypes(keyType, true), + chain + ); + await deliveryProvider + .updateSupportedMessageKeyTypes(keyType, true, overrides) + .then(wait); + } + + console.log("done with DeliveryProvider message key types update on " + chain.chainId); +} + +run().then(() => console.log("Done! " + processName)); From 4cf834f46ff7229b57cc50a0e950967934ed7388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 11:54:12 -0300 Subject: [PATCH 067/174] evm: sepolia config for GR deployment --- .../relayer/config/testnet/chains.json | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 99c932af18..5275972964 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -20,7 +20,7 @@ "description": "BSC Testnet", "evmNetworkId": 97, "chainId": 4, - "rpc": "https://bsc-testnet.public.blastapi.io", + "rpc": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", "wormholeAddress": "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D" }, { @@ -78,6 +78,27 @@ "chainId": 10002, "rpc": "https://ethereum-sepolia.publicnode.com", "wormholeAddress": "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78" + }, + { + "description": "Arbitrum Sepolia", + "evmNetworkId": 421614, + "chainId": 10003, + "rpc": "https://sepolia-rollup.arbitrum.io/rpc", + "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" + }, + { + "description": "Optimism Sepolia", + "evmNetworkId": 11155420, + "chainId": 10005, + "rpc": "https://sepolia.optimism.io", + "wormholeAddress": "0x27812285fbe85BA1DF242929B906B31EE3dd1b9f" + }, + { + "description": "Base Sepolia", + "evmNetworkId": 84532, + "chainId": 10004, + "rpc": "https://sepolia.base.org", + "wormholeAddress": "0x268557122Ffd64c85750d630b716471118F323c8" } ] } From f312225f5c528c6cf250ef85e3dfce0dcbc2722a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 12:01:13 -0300 Subject: [PATCH 068/174] evm: updates tsx and typescript --- ethereum/package-lock.json | 516 +++++++++++++++++-------------------- ethereum/package.json | 4 +- 2 files changed, 243 insertions(+), 277 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 487e973355..298f92aad3 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -32,8 +32,8 @@ "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "ts-node": "^10.9.1", - "tsx": "^3.12.7", - "typescript": "^4.9.5" + "tsx": "^4.7.0", + "typescript": "^5.3.3" } }, "node_modules/@apollo/client": { @@ -1511,40 +1511,26 @@ "node": ">=12" } }, - "node_modules/@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "node_modules/@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "dev": true, - "dependencies": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "cpu": [ "arm" ], @@ -1558,9 +1544,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "cpu": [ "arm64" ], @@ -1574,9 +1560,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "cpu": [ "x64" ], @@ -1590,9 +1576,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ "arm64" ], @@ -1606,9 +1592,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", "cpu": [ "x64" ], @@ -1622,9 +1608,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "cpu": [ "arm64" ], @@ -1638,9 +1624,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "cpu": [ "x64" ], @@ -1654,9 +1640,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "cpu": [ "arm" ], @@ -1670,9 +1656,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "cpu": [ "arm64" ], @@ -1686,9 +1672,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "cpu": [ "ia32" ], @@ -1702,9 +1688,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "cpu": [ "loong64" ], @@ -1718,9 +1704,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", "cpu": [ "mips64el" ], @@ -1734,9 +1720,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", "cpu": [ "ppc64" ], @@ -1750,9 +1736,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", "cpu": [ "riscv64" ], @@ -1766,9 +1752,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", "cpu": [ "s390x" ], @@ -1782,9 +1768,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", "cpu": [ "x64" ], @@ -1798,9 +1784,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "cpu": [ "x64" ], @@ -1814,9 +1800,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "cpu": [ "x64" ], @@ -1830,9 +1816,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "cpu": [ "x64" ], @@ -1846,9 +1832,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "cpu": [ "arm64" ], @@ -1862,9 +1848,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "cpu": [ "ia32" ], @@ -1878,9 +1864,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "cpu": [ "x64" ], @@ -12343,9 +12329,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", "dev": true, "hasInstallScript": true, "bin": { @@ -12355,28 +12341,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "node_modules/escalade": { @@ -14530,9 +14517,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, "optional": true, "os": [ @@ -15208,9 +15195,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", - "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -26723,20 +26710,22 @@ "dev": true }, "node_modules/tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.0.tgz", + "integrity": "sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==", "dev": true, "dependencies": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5" + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" }, "bin": { - "tsx": "dist/cli.js" + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" } }, "node_modules/tty-browserify": { @@ -27497,15 +27486,15 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/typescript-compare": { @@ -30469,187 +30458,164 @@ "@jridgewell/trace-mapping": "0.3.9" } }, - "@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "dev": true, - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "dev": true, - "requires": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", "dev": true, - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } + "optional": true }, "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "dev": true, "optional": true }, @@ -39247,33 +39213,34 @@ } }, "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "escalade": { @@ -41028,9 +40995,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "optional": true }, "function-bind": { @@ -41519,9 +41486,9 @@ } }, "get-tsconfig": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", - "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, "requires": { "resolve-pkg-maps": "^1.0.0" @@ -50634,15 +50601,14 @@ "dev": true }, "tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.0.tgz", + "integrity": "sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==", "dev": true, "requires": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5", - "fsevents": "~2.3.2" + "esbuild": "~0.19.10", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.2" } }, "tty-browserify": { @@ -51278,9 +51244,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==" }, "typescript-compare": { "version": "0.0.2", diff --git a/ethereum/package.json b/ethereum/package.json index 7d14d76ad5..d40d3a8b90 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -18,8 +18,8 @@ "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "ts-node": "^10.9.1", - "tsx": "^3.12.7", - "typescript": "^4.9.5" + "tsx": "^4.7.0", + "typescript": "^5.3.3" }, "scripts": { "build:core": "truffle compile", From 8d916fc3e8c04403b1de7b0106c3d46c6d1d02f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 13:06:15 -0300 Subject: [PATCH 069/174] evm: replaces `ts-node` with `tsx` --- ethereum/package-lock.json | 294 -------------------------- ethereum/package.json | 3 +- ethereum/ts-scripts/relayer/README.md | 4 +- 3 files changed, 3 insertions(+), 298 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 298f92aad3..696eb14061 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -31,7 +31,6 @@ "truffle": "5.8.4", "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", - "ts-node": "^10.9.1", "tsx": "^4.7.0", "typescript": "^5.3.3" } @@ -1499,18 +1498,6 @@ "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.11", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", @@ -3502,31 +3489,6 @@ "dev": true, "optional": true }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@ledgerhq/cryptoassets": { "version": "9.8.0", "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz", @@ -7824,30 +7786,6 @@ "async-limiter": "~1.0.0" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, "node_modules/@typechain/ethers-v5": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz", @@ -8520,15 +8458,6 @@ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", @@ -9131,12 +9060,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -11305,12 +11228,6 @@ "sha.js": "^2.4.8" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "node_modules/cross-fetch": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", @@ -11783,15 +11700,6 @@ "node": ">=8" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -17580,12 +17488,6 @@ "node": ">=4" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -26642,61 +26544,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -27862,12 +27709,6 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==" }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, "node_modules/value-or-promise": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", @@ -29203,15 +29044,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -30449,15 +30281,6 @@ "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, "@esbuild/aix-ppc64": { "version": "0.19.11", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", @@ -31910,28 +31733,6 @@ "dev": true, "optional": true }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "@ledgerhq/cryptoassets": { "version": "9.8.0", "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-9.8.0.tgz", @@ -35461,30 +35262,6 @@ } } }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, "@typechain/ethers-v5": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz", @@ -36094,12 +35871,6 @@ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", @@ -36545,12 +36316,6 @@ } } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -38356,12 +38121,6 @@ "sha.js": "^2.4.8" } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "cross-fetch": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", @@ -38745,12 +38504,6 @@ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -43383,12 +43136,6 @@ } } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -50559,35 +50306,6 @@ } } }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - } - } - }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -51555,12 +51273,6 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==" }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, "value-or-promise": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", @@ -52740,12 +52452,6 @@ "fd-slicer": "~1.1.0" } }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/ethereum/package.json b/ethereum/package.json index d40d3a8b90..d995b9e39a 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -17,7 +17,6 @@ "truffle": "5.8.4", "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", - "ts-node": "^10.9.1", "tsx": "^4.7.0", "typescript": "^5.3.3" }, @@ -25,7 +24,7 @@ "build:core": "truffle compile", "build:forge": "if [ \"$DEV\" = \"True\" ]; then forge build; else FOUNDRY_PROFILE=production forge build; fi", "build": "npm run build:core && npm run build:forge && typechain --target=ethers-v5 --out-dir=./ethers-contracts \"build-forge/!(test).sol/*.json\"&& npm run erase-types", - "erase-types": "ts-node ./ts-scripts/relayer/eraseTypes.ts ./contracts/interfaces/relayer/IDeliveryProviderTyped.sol ./contracts/interfaces/relayer/IWormholeRelayerTyped.sol", + "erase-types": "tsx ./ts-scripts/relayer/eraseTypes.ts ./contracts/interfaces/relayer/IDeliveryProviderTyped.sol ./contracts/interfaces/relayer/IWormholeRelayerTyped.sol", "test": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle test --network test --compile-none", "migrate": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle migrate --to 4 --compile-none", "deploy-bridge-implementation-only": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle migrate --f 6 --to 6 --compile-none", diff --git a/ethereum/ts-scripts/relayer/README.md b/ethereum/ts-scripts/relayer/README.md index 55aa2fbea2..4a436dcd05 100644 --- a/ethereum/ts-scripts/relayer/README.md +++ b/ethereum/ts-scripts/relayer/README.md @@ -21,7 +21,7 @@ All files in the coreRelayer, deliveryProvider, and MockIntegration directories The target environment must be passed in as an environment variable. So, for example, you can run the DeliveryProvider deployment script by running: ``` -ENV=tilt ts-node ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +ENV=tilt tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts ``` ## Chaining multiple scripts @@ -31,7 +31,7 @@ Scripts are meant to be run individually or successively. Scripts which deploy c If "useLastRun" is set to true in the contracts.json configuration file, the lastrun files from the deployment scripts will be used, rather than the deployed addresses of the contracts.json file. This allows you to easily run things like ``` -ENV=tilt ts-node ./ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts && ts-node ./ts-scripts/relayer/mockIntegration/messageTest.ts +ENV=tilt tsx ./ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts && tsx ./ts-scripts/relayer/mockIntegration/messageTest.ts ``` The ./shell directory contains shell scripts which combine commonly chained actions together. From a3f2d575d89c73510449c5738fa191f650563665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 13:07:43 -0300 Subject: [PATCH 070/174] evm: adds configuration for sepolia `DeliveryProvider`s --- .../initializeDeliveryProvider.json | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json index d8fd8724df..86430ffe1b 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json @@ -39,6 +39,18 @@ { "chainId": 10002, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10003, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10004, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10005, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], "pricingInfo": [ @@ -118,6 +130,27 @@ "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10003, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10004, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10005, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" } ] } From e488c438040c051feaaca69823ca8942de0e6d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 13:17:36 -0300 Subject: [PATCH 071/174] evm: reorder testnet chains --- .../relayer/config/testnet/chains.json | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 5275972964..0cb0b040b3 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -3,18 +3,11 @@ "description": "This file contains the chains against which all the scripts should run.", "chains": [ { - "description": "Avalanche testnet fuji", - "evmNetworkId": 43113, - "chainId": 6, - "rpc": "https://api.avax-test.network/ext/bc/C/rpc", - "wormholeAddress": "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C" - }, - { - "description": "Celo Testnet", - "evmNetworkId": 44787, - "chainId": 14, - "rpc": "https://alfajores-forno.celo-testnet.org", - "wormholeAddress": "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56" + "description": "Ethereum Goerli", + "evmNetworkId": 5, + "chainId": 2, + "rpc": "https://ethereum-goerli.publicnode.com", + "wormholeAddress": "0x706abc4E45D419950511e474C7B9Ed348A4a716c" }, { "description": "BSC Testnet", @@ -30,6 +23,27 @@ "rpc": "https://rpc.ankr.com/polygon_mumbai", "wormholeAddress": "0x0CBE91CF822c73C2315FB05100C2F714765d5c20" }, + { + "description": "Avalanche testnet fuji", + "evmNetworkId": 43113, + "chainId": 6, + "rpc": "https://api.avax-test.network/ext/bc/C/rpc", + "wormholeAddress": "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C" + }, + { + "description": "Fantom", + "evmNetworkId": 4002, + "chainId": 10, + "rpc": "https://fantom-testnet.publicnode.com", + "wormholeAddress": "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7" + }, + { + "description": "Celo Testnet", + "evmNetworkId": 44787, + "chainId": 14, + "rpc": "https://alfajores-forno.celo-testnet.org", + "wormholeAddress": "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56" + }, { "description": "Moonbase Alpha", "evmNetworkId": 1287, @@ -37,13 +51,6 @@ "rpc": "https://rpc.testnet.moonbeam.network", "wormholeAddress": "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901" }, - { - "description": "Base Testnet", - "evmNetworkId": 84531, - "chainId": 30, - "rpc": "https://goerli.base.org", - "wormholeAddress": "0x23908A62110e21C04F3A4e011d24F901F911744A" - }, { "description": "Optimism Goerli", "evmNetworkId": 420, @@ -59,18 +66,11 @@ "wormholeAddress": "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e" }, { - "description": "Ethereum Goerli", - "evmNetworkId": 5, - "chainId": 2, - "rpc": "https://ethereum-goerli.publicnode.com", - "wormholeAddress": "0x706abc4E45D419950511e474C7B9Ed348A4a716c" - }, - { - "description": "Fantom", - "evmNetworkId": 4002, - "chainId": 10, - "rpc": "https://fantom-testnet.publicnode.com", - "wormholeAddress": "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7" + "description": "Base Testnet", + "evmNetworkId": 84531, + "chainId": 30, + "rpc": "https://goerli.base.org", + "wormholeAddress": "0x23908A62110e21C04F3A4e011d24F901F911744A" }, { "description": "Ethereum Sepolia", @@ -86,19 +86,19 @@ "rpc": "https://sepolia-rollup.arbitrum.io/rpc", "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" }, - { - "description": "Optimism Sepolia", - "evmNetworkId": 11155420, - "chainId": 10005, - "rpc": "https://sepolia.optimism.io", - "wormholeAddress": "0x27812285fbe85BA1DF242929B906B31EE3dd1b9f" - }, { "description": "Base Sepolia", "evmNetworkId": 84532, "chainId": 10004, "rpc": "https://sepolia.base.org", "wormholeAddress": "0x268557122Ffd64c85750d630b716471118F323c8" + }, + { + "description": "Optimism Sepolia", + "evmNetworkId": 11155420, + "chainId": 10005, + "rpc": "https://sepolia.optimism.io", + "wormholeAddress": "0x27812285fbe85BA1DF242929B906B31EE3dd1b9f" } ] } From f703fd75f3874eb8c147eb90f7bfa6dfb1ab59c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 14:57:42 -0300 Subject: [PATCH 072/174] evm: updates wormhole sdk --- ethereum/package-lock.json | 2607 ++++++++++++++++++++++-------------- ethereum/package.json | 2 +- 2 files changed, 1622 insertions(+), 987 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 696eb14061..7bcddc7e46 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.9.11", + "@certusone/wormhole-sdk": "^0.10.8", "@typechain/ethers-v5": "^10.2.0", "dotenv": "^10.0.0", "elliptic": "^6.5.2", @@ -36,17 +36,17 @@ } }, "node_modules/@apollo/client": { - "version": "3.7.10", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.10.tgz", - "integrity": "sha512-/k1MfrqPKYiPNdHcOzdxg9cEx96vhAGxAcSorzfBvV29XtFQcYW2cPNQOTjK/fpSMtqVo8UNmu5vwQAWD1gfCg==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz", + "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==", + "optional": true, "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.7.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", + "optimism": "^0.18.0", "prop-types": "^15.7.2", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", @@ -76,48 +76,20 @@ } } }, - "node_modules/@apollo/client/node_modules/@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@apollo/client/node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "optional": true, "engines": { "node": ">=0.10" } }, - "node_modules/@apollo/client/node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@apollo/client/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@apollo/client/node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" - } + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/@apollo/protobufjs": { "version": "1.2.7", @@ -1093,22 +1065,20 @@ } }, "node_modules/@certusone/wormhole-sdk": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.11.tgz", - "integrity": "sha512-HpqlgNle09E6v8EhEBSjBe9MexO7av4cznM4kRR4CYCKTLfwqT75LQRYuSnCJgxrpwNiVRDVJaPWRi7ZEgIipw==", + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.8.tgz", + "integrity": "sha512-W2rA8fMdkVFWvy93+51K+8Kv/bpjuFtxCYCQI4YkWe+g4zLkDXw+yYMVPPqc/chFLFNSutPMqUtXAg7+y8lowg==", "dependencies": { - "@certusone/wormhole-sdk-proto-web": "0.0.6", + "@certusone/wormhole-sdk-proto-web": "0.0.7", "@certusone/wormhole-sdk-wasm": "^0.0.1", "@coral-xyz/borsh": "0.2.6", - "@injectivelabs/networks": "^1.0.73", - "@injectivelabs/sdk-ts": "^1.0.368", - "@injectivelabs/utils": "^1.0.63", + "@mysten/sui.js": "0.32.2", "@project-serum/anchor": "^0.25.0", "@solana/spl-token": "^0.3.5", "@solana/web3.js": "^1.66.2", - "@terra-money/terra.js": "^3.1.3", + "@terra-money/terra.js": "3.1.9", "@xpla/xpla.js": "^0.2.1", - "algosdk": "^1.15.0", + "algosdk": "^2.4.0", "aptos": "1.5.0", "axios": "^0.24.0", "bech32": "^2.0.0", @@ -1117,12 +1087,17 @@ "elliptic": "^6.5.4", "js-base64": "^3.6.1", "near-api-js": "^1.0.0" + }, + "optionalDependencies": { + "@injectivelabs/networks": "1.10.12", + "@injectivelabs/sdk-ts": "1.10.72", + "@injectivelabs/utils": "1.10.12" } }, "node_modules/@certusone/wormhole-sdk-proto-web": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.6.tgz", - "integrity": "sha512-LTyjsrWryefx5WmkoBP6FQ2EjLxhMExAGxLkloHUhufVQZdrbGh0htBBUviP+HaDSJBCMPMtulNFwkBJV6muqQ==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz", + "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==", "dependencies": { "@improbable-eng/grpc-web": "^0.15.0", "protobufjs": "^7.0.0", @@ -1130,14 +1105,14 @@ } }, "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -1158,17 +1133,17 @@ } }, "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@certusone/wormhole-sdk-wasm": { "version": "0.0.1", @@ -1242,6 +1217,7 @@ "version": "0.6.8", "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", + "optional": true, "dependencies": { "@noble/hashes": "^1.0.0", "protobufjs": "^6.8.8" @@ -1268,24 +1244,26 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/@cosmjs/amino": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.5.tgz", - "integrity": "sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz", + "integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==", + "optional": true, "dependencies": { - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5" + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1" } }, "node_modules/@cosmjs/crypto": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz", - "integrity": "sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz", + "integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==", + "optional": true, "dependencies": { - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", @@ -1295,12 +1273,14 @@ "node_modules/@cosmjs/crypto/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "node_modules/@cosmjs/encoding": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.5.tgz", - "integrity": "sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz", + "integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==", + "optional": true, "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -1310,21 +1290,24 @@ "node_modules/@cosmjs/encoding/node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "optional": true }, "node_modules/@cosmjs/json-rpc": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz", - "integrity": "sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz", + "integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==", + "optional": true, "dependencies": { - "@cosmjs/stream": "^0.29.5", + "@cosmjs/stream": "^0.30.1", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/math": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.5.tgz", - "integrity": "sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz", + "integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==", + "optional": true, "dependencies": { "bn.js": "^5.2.0" } @@ -1332,37 +1315,31 @@ "node_modules/@cosmjs/math/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "node_modules/@cosmjs/proto-signing": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz", - "integrity": "sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA==", - "dependencies": { - "@cosmjs/amino": "^0.29.5", - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5", - "cosmjs-types": "^0.5.2", - "long": "^4.0.0" - } - }, - "node_modules/@cosmjs/proto-signing/node_modules/cosmjs-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.2.tgz", - "integrity": "sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz", + "integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==", + "optional": true, "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" + "@cosmjs/amino": "^0.30.1", + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1", + "cosmjs-types": "^0.7.1", + "long": "^4.0.0" } }, "node_modules/@cosmjs/socket": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz", - "integrity": "sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz", + "integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==", + "optional": true, "dependencies": { - "@cosmjs/stream": "^0.29.5", + "@cosmjs/stream": "^0.30.1", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" @@ -1372,6 +1349,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "optional": true, "engines": { "node": ">=8.3.0" }, @@ -1389,38 +1367,31 @@ } }, "node_modules/@cosmjs/stargate": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.29.5.tgz", - "integrity": "sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz", + "integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==", + "optional": true, "dependencies": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/proto-signing": "^0.29.5", - "@cosmjs/stream": "^0.29.5", - "@cosmjs/tendermint-rpc": "^0.29.5", - "@cosmjs/utils": "^0.29.5", - "cosmjs-types": "^0.5.2", + "@cosmjs/amino": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/proto-signing": "^0.30.1", + "@cosmjs/stream": "^0.30.1", + "@cosmjs/tendermint-rpc": "^0.30.1", + "@cosmjs/utils": "^0.30.1", + "cosmjs-types": "^0.7.1", "long": "^4.0.0", "protobufjs": "~6.11.3", "xstream": "^11.14.0" } }, - "node_modules/@cosmjs/stargate/node_modules/cosmjs-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.2.tgz", - "integrity": "sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==", - "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, "node_modules/@cosmjs/stargate/node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", "hasInstallScript": true, + "optional": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -1442,25 +1413,27 @@ } }, "node_modules/@cosmjs/stream": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz", - "integrity": "sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz", + "integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==", + "optional": true, "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz", - "integrity": "sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==", - "dependencies": { - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/json-rpc": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/socket": "^0.29.5", - "@cosmjs/stream": "^0.29.5", - "@cosmjs/utils": "^0.29.5", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz", + "integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==", + "optional": true, + "dependencies": { + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/json-rpc": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/socket": "^0.30.1", + "@cosmjs/stream": "^0.30.1", + "@cosmjs/utils": "^0.30.1", "axios": "^0.21.2", "readonly-date": "^1.0.0", "xstream": "^11.14.0" @@ -1470,20 +1443,22 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/@cosmjs/tendermint-rpc/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "optional": true, "engines": { "node": ">=4.0" }, @@ -1494,9 +1469,10 @@ } }, "node_modules/@cosmjs/utils": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", - "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz", + "integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==", + "optional": true }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.11", @@ -1870,6 +1846,7 @@ "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "devOptional": true, "dependencies": { "crc-32": "^1.2.0", "ethereumjs-util": "^7.1.5" @@ -1879,6 +1856,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "devOptional": true, "dependencies": { "@types/node": "*" } @@ -1886,12 +1864,14 @@ "node_modules/@ethereumjs/common/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "devOptional": true }, "node_modules/@ethereumjs/common/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "devOptional": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -1907,6 +1887,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "devOptional": true, "dependencies": { "@ethereumjs/common": "^2.6.4", "ethereumjs-util": "^7.1.5" @@ -1916,6 +1897,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "devOptional": true, "dependencies": { "@types/node": "*" } @@ -1923,12 +1905,14 @@ "node_modules/@ethereumjs/tx/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "devOptional": true }, "node_modules/@ethereumjs/tx/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "devOptional": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -2941,6 +2925,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "optional": true, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } @@ -2991,9 +2976,10 @@ } }, "node_modules/@injectivelabs/core-proto-ts": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.11.tgz", - "integrity": "sha512-gYMzkoZ0olXLbEhSQVarUCMR6VAHytvENDv2Psjl9EjO5Pg93vTGLViS4E4vA5fezRfdF/x0Uic31w+ogp66jA==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.14.tgz", + "integrity": "sha512-NZWlgBzgVrXow9IknFQHvcYKX4QkUD25taRigoNYQK8PDn4+VXd9xM5WFUDRhzm2smTCguyl/+MghpEp4oTPWw==", + "optional": true, "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -3002,15 +2988,17 @@ } }, "node_modules/@injectivelabs/core-proto-ts/node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, "node_modules/@injectivelabs/core-proto-ts/node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", "hasInstallScript": true, + "optional": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3030,26 +3018,29 @@ } }, "node_modules/@injectivelabs/core-proto-ts/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@injectivelabs/core-proto-ts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/@injectivelabs/exceptions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.10.0.tgz", - "integrity": "sha512-YD9MEUEwJDalj+bV+/4P8TEqyR7asnQfjacCtuCYEF59qWsSYjYWxfZdZDssmSK8FA4HgJaQ2sghhK/LUfBneA==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.5.tgz", + "integrity": "sha512-WQ+hxpKz4g4+ZXNTXLFKpf9D9uosleZLqC++2+wK81IQ/lcwi5GrTLYdasOhJeu3c+LKWxHQRHJfSsvt8TQWbA==", "hasInstallScript": true, + "optional": true, "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.10.0", + "@injectivelabs/ts-types": "^1.14.5", "http-status-codes": "^2.2.0", "link-module-alias": "^1.2.0", "shx": "^0.3.2" @@ -3059,6 +3050,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web/-/grpc-web-0.0.1.tgz", "integrity": "sha512-Pu5YgaZp+OvR5UWfqbrPdHer3+gDf+b5fQoY+t2VZx1IAVHX8bzbN9EreYTvTYtFeDpYRWM8P7app2u4EX5wTw==", + "optional": true, "dependencies": { "browser-headers": "^0.4.1" }, @@ -3070,6 +3062,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-node-http-transport/-/grpc-web-node-http-transport-0.0.2.tgz", "integrity": "sha512-rpyhXLiGY/UMs6v6YmgWHJHiO9l0AgDyVNv+jcutNVt4tQrmNvnpvz2wCAGOFtq5LuX/E9ChtTVpk3gWGqXcGA==", + "optional": true, "peerDependencies": { "@injectivelabs/grpc-web": ">=0.0.1" } @@ -3078,14 +3071,16 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-react-native-transport/-/grpc-web-react-native-transport-0.0.2.tgz", "integrity": "sha512-mk+aukQXnYNgPsPnu3KBi+FD0ZHQpazIlaBZ2jNZG7QAVmxTWtv3R66Zoq99Wx2dnE946NsZBYAoa0K5oSjnow==", + "optional": true, "peerDependencies": { "@injectivelabs/grpc-web": ">=0.0.1" } }, "node_modules/@injectivelabs/indexer-proto-ts": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-0.0.9.tgz", - "integrity": "sha512-ZFTUKlHAY2WYnB9RPPf11nq7SNm7wcKFTmFTavTiHV8UvNEni7dCR3Un6U5Mo1qD0xHEsfoCDMdqGcIguliPMA==", + "version": "1.10.8-rc.4", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.10.8-rc.4.tgz", + "integrity": "sha512-IwbepTfsHHAv3Z36As6yH/+HIplOEpUu6SFHBCVgdSIaQ8GuvTib4HETiVnV4mjYqoyVgWs+zLSAfih46rdMJQ==", + "optional": true, "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -3094,15 +3089,17 @@ } }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", "hasInstallScript": true, + "optional": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3122,35 +3119,25 @@ } }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@injectivelabs/networks": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.0.tgz", - "integrity": "sha512-S0f1iWBcnc+HgvtIJLNlMC0iBsiT5AH0rXfwJpvkRehqwyB/J2WPKN7uOdsplK72nH4fauA3emokzGS8JknyEA==", - "hasInstallScript": true, - "dependencies": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2" - } + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, - "node_modules/@injectivelabs/ninja-proto-ts": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@injectivelabs/ninja-proto-ts/-/ninja-proto-ts-1.0.1.tgz", - "integrity": "sha512-ZHyVp/yPQcl7QdHxRU49G5xFVDXJwBtMvu7BW//nUVDrTWxBy2zS1AUYpL37nvKpTG9AtB1EqMYKLPXD2sdLsg==", + "node_modules/@injectivelabs/mito-proto-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.9.tgz", + "integrity": "sha512-+TZMvJ4SHwcn6SFPdqaiQFZdNhjH7hyRFozY15nOTC2utdGij9jEsjz1NsyOejfYDA0s1z5Wm1SgrMYKaVpAmQ==", + "optional": true, "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -3158,16 +3145,18 @@ "rxjs": "^7.4.0" } }, - "node_modules/@injectivelabs/ninja-proto-ts/node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "node_modules/@injectivelabs/mito-proto-ts/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, - "node_modules/@injectivelabs/ninja-proto-ts/node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "node_modules/@injectivelabs/mito-proto-ts/node_modules/protobufjs": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", "hasInstallScript": true, + "optional": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3186,42 +3175,59 @@ "node": ">=12.0.0" } }, - "node_modules/@injectivelabs/ninja-proto-ts/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "node_modules/@injectivelabs/mito-proto-ts/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "dependencies": { "tslib": "^2.1.0" } }, - "node_modules/@injectivelabs/ninja-proto-ts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "node_modules/@injectivelabs/mito-proto-ts/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, + "node_modules/@injectivelabs/networks": { + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.12.tgz", + "integrity": "sha512-tTHyLls1Nik5QTs/S03qqG2y/ITvNwI8CJOQbMmmsr1CL2CdjJBtzRYn9Dyx2p8XgzRFf9hmlybpe20tq9O3SA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/ts-types": "^1.10.12", + "@injectivelabs/utils": "^1.10.12", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } }, "node_modules/@injectivelabs/sdk-ts": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.15.tgz", - "integrity": "sha512-W8ysWwqmKBH8U8xe8n2B6vuSW9qu2sBf26VkdMGQE0del26EHfGSy5U5vTLGkdXP+ZgBabvcAzGhuIBr6V8vxQ==", + "version": "1.10.72", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz", + "integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==", "hasInstallScript": true, + "optional": true, "dependencies": { "@apollo/client": "^3.5.8", - "@cosmjs/amino": "^0.29.5", - "@cosmjs/proto-signing": "^0.29.5", - "@cosmjs/stargate": "^0.29.5", + "@cosmjs/amino": "^0.30.1", + "@cosmjs/proto-signing": "^0.30.1", + "@cosmjs/stargate": "^0.30.1", "@ethersproject/bytes": "^5.7.0", - "@injectivelabs/core-proto-ts": "^0.0.11", - "@injectivelabs/exceptions": "^1.10.0", + "@injectivelabs/core-proto-ts": "^0.0.14", + "@injectivelabs/exceptions": "^1.10.12", "@injectivelabs/grpc-web": "^0.0.1", "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", - "@injectivelabs/indexer-proto-ts": "^0.0.9", - "@injectivelabs/networks": "^1.10.0", - "@injectivelabs/ninja-proto-ts": "1.0.1", - "@injectivelabs/test-utils": "^1.10.0", - "@injectivelabs/token-metadata": "^1.10.4", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", + "@injectivelabs/indexer-proto-ts": "1.10.8-rc.4", + "@injectivelabs/mito-proto-ts": "1.0.9", + "@injectivelabs/networks": "^1.10.12", + "@injectivelabs/test-utils": "^1.10.12", + "@injectivelabs/token-metadata": "^1.10.42", + "@injectivelabs/ts-types": "^1.10.12", + "@injectivelabs/utils": "^1.10.12", "@metamask/eth-sig-util": "^4.0.0", "axios": "^0.27.2", "bech32": "^2.0.0", @@ -3229,7 +3235,7 @@ "cosmjs-types": "^0.7.1", "eth-crypto": "^2.6.0", "ethereumjs-util": "^7.1.4", - "ethers": "^5.6.4", + "ethers": "^5.7.2", "google-protobuf": "^3.21.0", "graphql": "^16.3.0", "http-status-codes": "^2.2.0", @@ -3244,9 +3250,10 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "optional": true, "dependencies": { "@types/node": "*" } @@ -3255,6 +3262,7 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "optional": true, "dependencies": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" @@ -3263,12 +3271,14 @@ "node_modules/@injectivelabs/sdk-ts/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "node_modules/@injectivelabs/sdk-ts/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "optional": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -3281,15 +3291,16 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "optional": true, "engines": { "node": ">=4.0" }, @@ -3303,6 +3314,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3313,9 +3325,10 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "optional": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -3323,12 +3336,14 @@ "node_modules/@injectivelabs/sdk-ts/node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "optional": true }, "node_modules/@injectivelabs/sdk-ts/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "dependencies": { "tslib": "^2.1.0" } @@ -3338,6 +3353,7 @@ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "hasInstallScript": true, + "optional": true, "dependencies": { "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", @@ -3348,15 +3364,17 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/@injectivelabs/test-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.10.0.tgz", - "integrity": "sha512-OS1AUq3Wu4nxhchpOa/zjAp2rgq5aKniLnNt07RzQQAM+4mPw3PcF7zWuClkUFAgVCxlpvFnV1f6LyzXW46mGQ==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.3.tgz", + "integrity": "sha512-dVe262sACa7YkRr7mfXx58yI/ieuQqm3IMGq7EMweFKI6Kh2gh8FAM2bsDgm1cGewEIhJ9tWh6OM5uNheeVamg==", "hasInstallScript": true, + "optional": true, "dependencies": { "axios": "^0.21.1", "bignumber.js": "^9.0.1", @@ -3370,28 +3388,31 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/@injectivelabs/test-utils/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true, "engines": { "node": "*" } }, "node_modules/@injectivelabs/test-utils/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "optional": true, "engines": { "node": ">=4.0" }, @@ -3402,15 +3423,16 @@ } }, "node_modules/@injectivelabs/token-metadata": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.10.4.tgz", - "integrity": "sha512-2uCRkL5pYaLSziva9w4cpH0AJ+JMgg2irA22dEkM5JPK9kLB4rv0gey1Us7EzcX6WnY4RRO3aN2e0uTG08WVzA==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.5.tgz", + "integrity": "sha512-GiIiNDixfvbfEjzZG7ixtGYmJllFIcA2Xl1LnsK5yawT8Q+/SoSIJig4tE+0CC/AaGHS1GxDKySrIdMse7PZ0w==", "hasInstallScript": true, + "optional": true, "dependencies": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/networks": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/networks": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/utils": "^1.14.5", "@types/lodash.values": "^4.3.6", "copyfiles": "^2.4.1", "jsonschema": "^1.4.0", @@ -3420,24 +3442,96 @@ "shx": "^0.3.2" } }, + "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/networks": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.5.tgz", + "integrity": "sha512-9GINd/pPBX6Jyc26pmlLC54s7nLlXsBLZ/1fo8a0nvHkrrODRDE4IldP6KsA9OLVomMPk5TyBUgYLGgM3ST9GA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/utils": "^1.14.5", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/utils": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.5.tgz", + "integrity": "sha512-L2ul/7rgop8RLJBhlXjt6Q/A6fXeRZ3hhCZFXGXmA63vz9RSqOFHILiRp6hAFsuZbiITjmVx0eubFPaQU0MymA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "node_modules/@injectivelabs/token-metadata/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@injectivelabs/token-metadata/node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/@injectivelabs/token-metadata/node_modules/follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "optional": true, + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/@injectivelabs/ts-types": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.10.0.tgz", - "integrity": "sha512-2PczKP93fmkg4HIbg1ZWO115GF1oUQaCkc34SRDYDZ9oGjAnr3rV31tju4DW9uxT8eVb2olxqUy71LVHGD7AUA==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.5.tgz", + "integrity": "sha512-dwmEJE90vMr1zkQhz5lX2280sBMe2GvAj98vOHoL2RLTo0OQkJZrirUHwsTkexJf7sFZIT2PlmLCfix9Ulcp5A==", "hasInstallScript": true, + "optional": true, "dependencies": { "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "node_modules/@injectivelabs/utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.0.tgz", - "integrity": "sha512-r7/z1+0Xd6XSYnLf+IO2ydQ0VRFBw2ETxWdvvkpsror3uYLvaAcuCjkRhNsOYM5R4VPCER+0TBm6sm5A1ahiQw==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz", + "integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==", "hasInstallScript": true, + "optional": true, "dependencies": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", + "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/ts-types": "^1.10.12", "axios": "^0.21.1", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", @@ -3451,28 +3545,31 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/@injectivelabs/utils/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true, "engines": { "node": "*" } }, "node_modules/@injectivelabs/utils/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "optional": true, "engines": { "node": ">=4.0" }, @@ -3744,6 +3841,7 @@ "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==", + "optional": true, "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -3758,7 +3856,8 @@ "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "optional": true }, "node_modules/@morgan-stanley/ts-mocking-bird": { "version": "0.6.4", @@ -3795,6 +3894,141 @@ "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, + "node_modules/@mysten/bcs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.7.1.tgz", + "integrity": "sha512-wFPb8bkhwrbiStfZMV5rFM7J+umpke59/dNjDp+UYJKykNlW23LCk2ePyEUvGdb62HGJM1jyOJ8g4egE3OmdKA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/bcs/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@mysten/bcs/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@mysten/sui.js": { + "version": "0.32.2", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz", + "integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==", + "dependencies": { + "@mysten/bcs": "0.7.1", + "@noble/curves": "^1.0.0", + "@noble/hashes": "^1.3.0", + "@scure/bip32": "^1.3.0", + "@scure/bip39": "^1.2.0", + "@suchipi/femver": "^1.0.0", + "jayson": "^4.0.0", + "rpc-websockets": "^7.5.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@mysten/sui.js/node_modules/@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "dependencies": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@mysten/sui.js/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/@mysten/sui.js/node_modules/jayson": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mysten/sui.js/node_modules/superstruct": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mysten/sui.js/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/@mysten/sui.js/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@mysten/sui.js/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/ed25519": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", @@ -3807,15 +4041,15 @@ ] }, "node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/secp256k1": { "version": "1.7.1", @@ -4364,15 +4598,25 @@ } }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "dependencies": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip39": { "version": "1.1.0", @@ -4555,11 +4799,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/@solana/web3.js/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "node_modules/@solana/web3.js/node_modules/node-fetch": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", @@ -4579,58 +4818,11 @@ } } }, - "node_modules/@solana/web3.js/node_modules/rpc-websockets": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", - "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "eventemitter3": "^4.0.7", - "uuid": "^8.3.2", - "ws": "^8.5.0" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" - }, - "optionalDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - } - }, "node_modules/@solana/web3.js/node_modules/superstruct": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" }, - "node_modules/@solana/web3.js/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@solana/web3.js/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", @@ -4640,6 +4832,11 @@ "antlr4ts": "^0.5.0-alpha.4" } }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -4664,9 +4861,9 @@ } }, "node_modules/@terra-money/terra.js": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.8.tgz", - "integrity": "sha512-Cd/fh4MswT00fDGVckoZ0cm77EpIy4+CjSDO0RqZ3Qfp4CJBp7sWTLRNsyzUWjdYOT5iTx+1wOMCYbbyKo6LAw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.9.tgz", + "integrity": "sha512-JulSvOHLM56fL7s+cIjIbZeWPBluq883X1soWxA4TG5rKkDythT/DHeLXr3jP5Ld/26VENPSg6lNvK7cEYKpiw==", "dependencies": { "@classic-terra/terra.proto": "^1.1.0", "@terra-money/terra.proto": "^2.1.0", @@ -4697,9 +4894,9 @@ } }, "node_modules/@terra-money/terra.js/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", @@ -7939,14 +8136,16 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.192", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", - "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==" + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "optional": true }, "node_modules/@types/lodash.values": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.7.tgz", - "integrity": "sha512-Moex9/sWxtKEa+BKiH5zvmhfcieDlcz4wRxMhO/oJ2qOKUdujoU6dQjUTxWA8jwEREpHXmiY4HCwNRpycW8JQA==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.9.tgz", + "integrity": "sha512-IJ20OEfqNwm3k8ENwoM3q0yOs4UMpgtD4GqxB4lwBHToGthHWqhyh5DdSgQjioocz0QK2SSBkJfCq95ZTV8BTw==", + "optional": true, "dependencies": { "@types/lodash": "*" } @@ -8205,10 +8404,29 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "optional": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/caches/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, "node_modules/@wry/context": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", - "integrity": "sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "optional": true, "dependencies": { "tslib": "^2.3.0" }, @@ -8217,14 +8435,34 @@ } }, "node_modules/@wry/context/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "optional": true, "dependencies": { "tslib": "^2.3.0" }, @@ -8233,9 +8471,10 @@ } }, "node_modules/@wry/trie/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/@xlabs-xyz/ledger-signer": { "version": "0.0.3", @@ -8587,13 +8826,12 @@ } }, "node_modules/algosdk": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-1.24.1.tgz", - "integrity": "sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.7.0.tgz", + "integrity": "sha512-sBE9lpV7bup3rZ+q2j3JQaFAE9JwZvjWKX00vPlG8e9txctXbgLL56jZhSWZndqhDI9oI+0P4NldkuQIWdrUyg==", "dependencies": { "algo-msgpack-with-bigint": "^2.1.1", - "buffer": "^6.0.2", - "cross-fetch": "^3.1.5", + "buffer": "^6.0.3", "hi-base32": "^0.5.1", "js-sha256": "^0.9.0", "js-sha3": "^0.8.0", @@ -8603,7 +8841,7 @@ "vlq": "^2.0.4" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/algosdk/node_modules/buffer": { @@ -8629,38 +8867,11 @@ "ieee754": "^1.2.1" } }, - "node_modules/algosdk/node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, "node_modules/algosdk/node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, - "node_modules/algosdk/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/algosdk/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -9370,13 +9581,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "optional": true, - "peer": true - }, "node_modules/backoff": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", @@ -10967,6 +11171,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "optional": true, "dependencies": { "glob": "^7.0.5", "minimatch": "^3.0.3", @@ -10985,6 +11190,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "optional": true, "engines": { "node": ">=8" } @@ -10993,6 +11199,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11007,6 +11214,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "optional": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -11017,6 +11225,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11027,17 +11236,20 @@ "node_modules/copyfiles/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true }, "node_modules/copyfiles/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "optional": true }, "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true, "engines": { "node": ">=8" } @@ -11046,6 +11258,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11059,6 +11272,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11070,6 +11284,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -11079,6 +11294,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11095,6 +11311,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "optional": true, "engines": { "node": ">=10" } @@ -11103,6 +11320,7 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "optional": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -11120,6 +11338,7 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "optional": true, "engines": { "node": ">=10" } @@ -11171,9 +11390,10 @@ } }, "node_modules/cosmjs-types": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.1.tgz", - "integrity": "sha512-qP89SGwi6YpvMTrM9CPzTfZ0JPNlXzgimqMLsa/ZjzW+L6MC8TCr6XmoWtFOT6GSfefvJLwFWq7YCtL456Bdzg==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", + "integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==", + "optional": true, "dependencies": { "long": "^4.0.0", "protobufjs": "~6.11.2" @@ -11183,6 +11403,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "devOptional": true, "dependencies": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -11616,6 +11837,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, "dependencies": { "object-keys": "^1.0.12" }, @@ -11865,6 +12087,7 @@ "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", "hasInstallScript": true, + "optional": true, "dependencies": { "acorn": "7.1.1", "elliptic": "6.5.4", @@ -11879,6 +12102,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "optional": true, "bin": { "acorn": "bin/acorn" }, @@ -11889,7 +12113,8 @@ "node_modules/eccrypto/node_modules/nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true }, "node_modules/eccrypto/node_modules/secp256k1": { "version": "3.7.1", @@ -12796,6 +13021,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", + "optional": true, "dependencies": { "@babel/runtime": "7.20.13", "@ethereumjs/tx": "3.5.2", @@ -12813,6 +13039,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "optional": true, "dependencies": { "@types/node": "*" } @@ -12820,12 +13047,14 @@ "node_modules/eth-crypto/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "node_modules/eth-crypto/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "optional": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -12840,13 +13069,15 @@ "node_modules/eth-crypto/node_modules/node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "optional": true }, "node_modules/eth-crypto/node_modules/secp256k1": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", "hasInstallScript": true, + "optional": true, "dependencies": { "elliptic": "^6.5.4", "node-addon-api": "^5.0.0", @@ -13581,7 +13812,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "devOptional": true + "dev": true }, "node_modules/events": { "version": "3.3.0", @@ -13604,6 +13835,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "devOptional": true, "engines": { "node": ">=0.8" } @@ -15220,9 +15452,10 @@ } }, "node_modules/globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "optional": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -15275,6 +15508,7 @@ "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true, "engines": { "node": ">= 10.x" } @@ -15283,6 +15517,7 @@ "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, "dependencies": { "tslib": "^2.1.0" }, @@ -15296,7 +15531,8 @@ "node_modules/graphql-tag/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "optional": true }, "node_modules/growl": { "version": "1.10.5", @@ -15525,6 +15761,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "optional": true, "dependencies": { "react-is": "^16.7.0" } @@ -15626,9 +15863,10 @@ } }, "node_modules/http-status-codes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", - "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "optional": true }, "node_modules/http2-wrapper": { "version": "2.2.0", @@ -16432,13 +16670,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "optional": true, - "peer": true - }, "node_modules/jayson": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", @@ -16569,9 +16800,9 @@ } }, "node_modules/json-bigint/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "engines": { "node": "*" } @@ -16695,6 +16926,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "optional": true, "engines": { "node": "*" } @@ -16759,6 +16991,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "optional": true, "dependencies": { "bn.js": "^5.2.0", "buffer": "^6.0.3", @@ -16768,7 +17001,8 @@ "node_modules/keccak256/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "node_modules/keccak256/node_modules/buffer": { "version": "6.0.3", @@ -16788,6 +17022,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -17247,22 +17482,25 @@ } }, "node_modules/libsodium": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.11.tgz", - "integrity": "sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==" + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", + "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==", + "optional": true }, "node_modules/libsodium-wrappers": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz", - "integrity": "sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", + "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "optional": true, "dependencies": { - "libsodium": "^0.7.11" + "libsodium": "^0.7.13" } }, "node_modules/link-module-alias": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/link-module-alias/-/link-module-alias-1.2.0.tgz", "integrity": "sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==", + "optional": true, "dependencies": { "chalk": "^2.4.1" }, @@ -17277,6 +17515,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -17368,7 +17607,8 @@ "node_modules/lodash.values": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==" + "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", + "optional": true }, "node_modules/log-symbols": { "version": "4.0.0", @@ -17404,6 +17644,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "devOptional": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -17500,6 +17741,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "optional": true, "engines": { "node": ">=8" }, @@ -18741,6 +18983,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "optional": true, "dependencies": { "inherits": "^2.0.1", "readable-stream": "~1.0.31" @@ -18749,12 +18992,14 @@ "node_modules/noms/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "optional": true }, "node_modules/noms/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "optional": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -18765,7 +19010,8 @@ "node_modules/noms/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "optional": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -18941,6 +19187,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true, "engines": { "node": ">= 0.4" } @@ -19012,14 +19259,35 @@ } }, "node_modules/optimism": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", - "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", + "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", + "optional": true, "dependencies": { + "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", - "@wry/trie": "^0.3.0" + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, + "node_modules/optimism/node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "optional": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" } }, + "node_modules/optimism/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -20082,6 +20350,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "devOptional": true, "bin": { "printj": "bin/printj.njs" }, @@ -20138,6 +20407,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "optional": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -20448,7 +20718,8 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "optional": true }, "node_modules/readable-stream": { "version": "2.3.7", @@ -20483,12 +20754,14 @@ "node_modules/readonly-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", - "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==" + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", + "optional": true }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "optional": true, "dependencies": { "resolve": "^1.1.6" }, @@ -20756,6 +21029,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "optional": true, "engines": { "node": ">=0.8" } @@ -20839,6 +21113,58 @@ "rlp": "bin/rlp" } }, + "node_modules/rpc-websockets": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", + "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "eventemitter3": "^4.0.7", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/rpc-websockets/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/rpc-websockets/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -21216,6 +21542,7 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "optional": true, "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -21232,6 +21559,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "optional": true, "dependencies": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -21312,13 +21640,14 @@ } }, "node_modules/snakecase-keys": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.5.tgz", - "integrity": "sha512-qSQVcgcWk8mQUN1miVGnRMAUye1dbj9+F9PVkR7wZUXNCidQwrl/kOKmoYf+WbH2ju6c9pXnlmbS2he7pb2/9A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.5.0.tgz", + "integrity": "sha512-r3kRtnoPu3FxGJ3fny6PKNnU3pteb29o6qAa0ugzhSseKNWRkw1dw8nIjXMyyKaU9vQxxVIE62Mb3bKbdrgpiw==", + "optional": true, "dependencies": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", - "type-fest": "^2.5.2" + "type-fest": "^3.12.0" }, "engines": { "node": ">=12" @@ -21328,6 +21657,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "optional": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -21337,6 +21667,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "optional": true, "dependencies": { "tslib": "^2.0.3" } @@ -21345,6 +21676,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "optional": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -21354,22 +21686,25 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "optional": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/snakecase-keys/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/snakecase-keys/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "optional": true, "engines": { - "node": ">=12.20" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -21826,7 +22161,8 @@ "node_modules/store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "optional": true }, "node_modules/stream-each": { "version": "1.2.3", @@ -22021,46 +22357,6 @@ "dev": true, "optional": true }, - "node_modules/subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", - "optional": true, - "peer": true, - "dependencies": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependencies": { - "graphql": ">=0.10.0" - } - }, - "node_modules/subscriptions-transport-ws/node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "optional": true, - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/superstruct": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", @@ -22192,7 +22488,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -26544,6 +26840,24 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-invariant/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, "node_modules/tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -26599,7 +26913,8 @@ "node_modules/tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "devOptional": true }, "node_modules/type": { "version": "1.2.0", @@ -27532,6 +27847,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "optional": true, "engines": { "node": ">=8" } @@ -28904,6 +29220,7 @@ "version": "11.14.0", "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", + "optional": true, "dependencies": { "globalthis": "^1.0.1", "symbol-observable": "^2.0.3" @@ -28913,6 +29230,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "optional": true, "engines": { "node": ">=0.10" } @@ -29058,22 +29376,32 @@ "node_modules/zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", + "optional": true + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "optional": true, + "dependencies": { + "zen-observable": "0.8.15" + } } }, "dependencies": { "@apollo/client": { - "version": "3.7.10", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.10.tgz", - "integrity": "sha512-/k1MfrqPKYiPNdHcOzdxg9cEx96vhAGxAcSorzfBvV29XtFQcYW2cPNQOTjK/fpSMtqVo8UNmu5vwQAWD1gfCg==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz", + "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==", + "optional": true, "requires": { "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.7.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", + "optimism": "^0.18.0", "prop-types": "^15.7.2", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", @@ -29082,39 +29410,17 @@ "zen-observable-ts": "^1.2.5" }, "dependencies": { - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" - } - }, "symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, - "ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "requires": { - "tslib": "^2.1.0" - } + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "optional": true }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "requires": { - "zen-observable": "0.8.15" - } + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, @@ -29914,22 +30220,23 @@ } }, "@certusone/wormhole-sdk": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.11.tgz", - "integrity": "sha512-HpqlgNle09E6v8EhEBSjBe9MexO7av4cznM4kRR4CYCKTLfwqT75LQRYuSnCJgxrpwNiVRDVJaPWRi7ZEgIipw==", + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.8.tgz", + "integrity": "sha512-W2rA8fMdkVFWvy93+51K+8Kv/bpjuFtxCYCQI4YkWe+g4zLkDXw+yYMVPPqc/chFLFNSutPMqUtXAg7+y8lowg==", "requires": { - "@certusone/wormhole-sdk-proto-web": "0.0.6", + "@certusone/wormhole-sdk-proto-web": "0.0.7", "@certusone/wormhole-sdk-wasm": "^0.0.1", "@coral-xyz/borsh": "0.2.6", - "@injectivelabs/networks": "^1.0.73", - "@injectivelabs/sdk-ts": "^1.0.368", - "@injectivelabs/utils": "^1.0.63", + "@injectivelabs/networks": "1.10.12", + "@injectivelabs/sdk-ts": "1.10.72", + "@injectivelabs/utils": "1.10.12", + "@mysten/sui.js": "0.32.2", "@project-serum/anchor": "^0.25.0", "@solana/spl-token": "^0.3.5", "@solana/web3.js": "^1.66.2", - "@terra-money/terra.js": "^3.1.3", + "@terra-money/terra.js": "3.1.9", "@xpla/xpla.js": "^0.2.1", - "algosdk": "^1.15.0", + "algosdk": "^2.4.0", "aptos": "1.5.0", "axios": "^0.24.0", "bech32": "^2.0.0", @@ -29956,9 +30263,9 @@ } }, "@certusone/wormhole-sdk-proto-web": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.6.tgz", - "integrity": "sha512-LTyjsrWryefx5WmkoBP6FQ2EjLxhMExAGxLkloHUhufVQZdrbGh0htBBUviP+HaDSJBCMPMtulNFwkBJV6muqQ==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz", + "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==", "requires": { "@improbable-eng/grpc-web": "^0.15.0", "protobufjs": "^7.0.0", @@ -29966,14 +30273,14 @@ }, "dependencies": { "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -29990,17 +30297,17 @@ } }, "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" } } }, @@ -30048,6 +30355,7 @@ "version": "0.6.8", "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", + "optional": true, "requires": { "@noble/hashes": "^1.0.0", "protobufjs": "^6.8.8" @@ -30070,24 +30378,26 @@ } }, "@cosmjs/amino": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.5.tgz", - "integrity": "sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz", + "integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==", + "optional": true, "requires": { - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5" + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1" } }, "@cosmjs/crypto": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz", - "integrity": "sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz", + "integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==", + "optional": true, "requires": { - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", @@ -30097,14 +30407,16 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true } } }, "@cosmjs/encoding": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.5.tgz", - "integrity": "sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz", + "integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==", + "optional": true, "requires": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -30114,23 +30426,26 @@ "bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "optional": true } } }, "@cosmjs/json-rpc": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz", - "integrity": "sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz", + "integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==", + "optional": true, "requires": { - "@cosmjs/stream": "^0.29.5", + "@cosmjs/stream": "^0.30.1", "xstream": "^11.14.0" } }, "@cosmjs/math": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.5.tgz", - "integrity": "sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz", + "integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==", + "optional": true, "requires": { "bn.js": "^5.2.0" }, @@ -30138,41 +30453,33 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true } } }, "@cosmjs/proto-signing": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz", - "integrity": "sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA==", - "requires": { - "@cosmjs/amino": "^0.29.5", - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/utils": "^0.29.5", - "cosmjs-types": "^0.5.2", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz", + "integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==", + "optional": true, + "requires": { + "@cosmjs/amino": "^0.30.1", + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/utils": "^0.30.1", + "cosmjs-types": "^0.7.1", "long": "^4.0.0" - }, - "dependencies": { - "cosmjs-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.2.tgz", - "integrity": "sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==", - "requires": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - } } }, "@cosmjs/socket": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz", - "integrity": "sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz", + "integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==", + "optional": true, "requires": { - "@cosmjs/stream": "^0.29.5", + "@cosmjs/stream": "^0.30.1", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" @@ -30182,42 +30489,36 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "optional": true, "requires": {} } } }, "@cosmjs/stargate": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.29.5.tgz", - "integrity": "sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz", + "integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==", + "optional": true, "requires": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/proto-signing": "^0.29.5", - "@cosmjs/stream": "^0.29.5", - "@cosmjs/tendermint-rpc": "^0.29.5", - "@cosmjs/utils": "^0.29.5", - "cosmjs-types": "^0.5.2", + "@cosmjs/amino": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/proto-signing": "^0.30.1", + "@cosmjs/stream": "^0.30.1", + "@cosmjs/tendermint-rpc": "^0.30.1", + "@cosmjs/utils": "^0.30.1", + "cosmjs-types": "^0.7.1", "long": "^4.0.0", "protobufjs": "~6.11.3", "xstream": "^11.14.0" }, "dependencies": { - "cosmjs-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.2.tgz", - "integrity": "sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==", - "requires": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "optional": true, "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -30237,25 +30538,27 @@ } }, "@cosmjs/stream": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz", - "integrity": "sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz", + "integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==", + "optional": true, "requires": { "xstream": "^11.14.0" } }, "@cosmjs/tendermint-rpc": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz", - "integrity": "sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==", - "requires": { - "@cosmjs/crypto": "^0.29.5", - "@cosmjs/encoding": "^0.29.5", - "@cosmjs/json-rpc": "^0.29.5", - "@cosmjs/math": "^0.29.5", - "@cosmjs/socket": "^0.29.5", - "@cosmjs/stream": "^0.29.5", - "@cosmjs/utils": "^0.29.5", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz", + "integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==", + "optional": true, + "requires": { + "@cosmjs/crypto": "^0.30.1", + "@cosmjs/encoding": "^0.30.1", + "@cosmjs/json-rpc": "^0.30.1", + "@cosmjs/math": "^0.30.1", + "@cosmjs/socket": "^0.30.1", + "@cosmjs/stream": "^0.30.1", + "@cosmjs/utils": "^0.30.1", "axios": "^0.21.2", "readonly-date": "^1.0.0", "xstream": "^11.14.0" @@ -30265,21 +30568,24 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "requires": { "follow-redirects": "^1.14.0" } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "optional": true } } }, "@cosmjs/utils": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", - "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz", + "integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==", + "optional": true }, "@esbuild/aix-ppc64": { "version": "0.19.11", @@ -30446,6 +30752,7 @@ "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "devOptional": true, "requires": { "crc-32": "^1.2.0", "ethereumjs-util": "^7.1.5" @@ -30455,6 +30762,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "devOptional": true, "requires": { "@types/node": "*" } @@ -30462,12 +30770,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "devOptional": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "devOptional": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -30482,6 +30792,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "devOptional": true, "requires": { "@ethereumjs/common": "^2.6.4", "ethereumjs-util": "^7.1.5" @@ -30491,6 +30802,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "devOptional": true, "requires": { "@types/node": "*" } @@ -30498,12 +30810,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "devOptional": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "devOptional": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -31272,6 +31586,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "optional": true, "requires": {} }, "@grpc/grpc-js": { @@ -31310,9 +31625,10 @@ } }, "@injectivelabs/core-proto-ts": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.11.tgz", - "integrity": "sha512-gYMzkoZ0olXLbEhSQVarUCMR6VAHytvENDv2Psjl9EjO5Pg93vTGLViS4E4vA5fezRfdF/x0Uic31w+ogp66jA==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.14.tgz", + "integrity": "sha512-NZWlgBzgVrXow9IknFQHvcYKX4QkUD25taRigoNYQK8PDn4+VXd9xM5WFUDRhzm2smTCguyl/+MghpEp4oTPWw==", + "optional": true, "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31321,14 +31637,16 @@ }, "dependencies": { "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, "protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "optional": true, "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31345,27 +31663,30 @@ } }, "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, "@injectivelabs/exceptions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.10.0.tgz", - "integrity": "sha512-YD9MEUEwJDalj+bV+/4P8TEqyR7asnQfjacCtuCYEF59qWsSYjYWxfZdZDssmSK8FA4HgJaQ2sghhK/LUfBneA==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.5.tgz", + "integrity": "sha512-WQ+hxpKz4g4+ZXNTXLFKpf9D9uosleZLqC++2+wK81IQ/lcwi5GrTLYdasOhJeu3c+LKWxHQRHJfSsvt8TQWbA==", + "optional": true, "requires": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.10.0", + "@injectivelabs/ts-types": "^1.14.5", "http-status-codes": "^2.2.0", "link-module-alias": "^1.2.0", "shx": "^0.3.2" @@ -31375,6 +31696,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web/-/grpc-web-0.0.1.tgz", "integrity": "sha512-Pu5YgaZp+OvR5UWfqbrPdHer3+gDf+b5fQoY+t2VZx1IAVHX8bzbN9EreYTvTYtFeDpYRWM8P7app2u4EX5wTw==", + "optional": true, "requires": { "browser-headers": "^0.4.1" } @@ -31383,18 +31705,21 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-node-http-transport/-/grpc-web-node-http-transport-0.0.2.tgz", "integrity": "sha512-rpyhXLiGY/UMs6v6YmgWHJHiO9l0AgDyVNv+jcutNVt4tQrmNvnpvz2wCAGOFtq5LuX/E9ChtTVpk3gWGqXcGA==", + "optional": true, "requires": {} }, "@injectivelabs/grpc-web-react-native-transport": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-react-native-transport/-/grpc-web-react-native-transport-0.0.2.tgz", "integrity": "sha512-mk+aukQXnYNgPsPnu3KBi+FD0ZHQpazIlaBZ2jNZG7QAVmxTWtv3R66Zoq99Wx2dnE946NsZBYAoa0K5oSjnow==", + "optional": true, "requires": {} }, "@injectivelabs/indexer-proto-ts": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-0.0.9.tgz", - "integrity": "sha512-ZFTUKlHAY2WYnB9RPPf11nq7SNm7wcKFTmFTavTiHV8UvNEni7dCR3Un6U5Mo1qD0xHEsfoCDMdqGcIguliPMA==", + "version": "1.10.8-rc.4", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.10.8-rc.4.tgz", + "integrity": "sha512-IwbepTfsHHAv3Z36As6yH/+HIplOEpUu6SFHBCVgdSIaQ8GuvTib4HETiVnV4mjYqoyVgWs+zLSAfih46rdMJQ==", + "optional": true, "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31403,14 +31728,16 @@ }, "dependencies": { "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, "protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "optional": true, "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31427,36 +31754,27 @@ } }, "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, - "@injectivelabs/networks": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.0.tgz", - "integrity": "sha512-S0f1iWBcnc+HgvtIJLNlMC0iBsiT5AH0rXfwJpvkRehqwyB/J2WPKN7uOdsplK72nH4fauA3emokzGS8JknyEA==", - "requires": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2" - } - }, - "@injectivelabs/ninja-proto-ts": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@injectivelabs/ninja-proto-ts/-/ninja-proto-ts-1.0.1.tgz", - "integrity": "sha512-ZHyVp/yPQcl7QdHxRU49G5xFVDXJwBtMvu7BW//nUVDrTWxBy2zS1AUYpL37nvKpTG9AtB1EqMYKLPXD2sdLsg==", + "@injectivelabs/mito-proto-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.9.tgz", + "integrity": "sha512-+TZMvJ4SHwcn6SFPdqaiQFZdNhjH7hyRFozY15nOTC2utdGij9jEsjz1NsyOejfYDA0s1z5Wm1SgrMYKaVpAmQ==", + "optional": true, "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31465,14 +31783,16 @@ }, "dependencies": { "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true }, "protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "optional": true, "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31489,42 +31809,58 @@ } }, "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, + "@injectivelabs/networks": { + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.12.tgz", + "integrity": "sha512-tTHyLls1Nik5QTs/S03qqG2y/ITvNwI8CJOQbMmmsr1CL2CdjJBtzRYn9Dyx2p8XgzRFf9hmlybpe20tq9O3SA==", + "optional": true, + "requires": { + "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/ts-types": "^1.10.12", + "@injectivelabs/utils": "^1.10.12", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, "@injectivelabs/sdk-ts": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.15.tgz", - "integrity": "sha512-W8ysWwqmKBH8U8xe8n2B6vuSW9qu2sBf26VkdMGQE0del26EHfGSy5U5vTLGkdXP+ZgBabvcAzGhuIBr6V8vxQ==", + "version": "1.10.72", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz", + "integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==", + "optional": true, "requires": { "@apollo/client": "^3.5.8", - "@cosmjs/amino": "^0.29.5", - "@cosmjs/proto-signing": "^0.29.5", - "@cosmjs/stargate": "^0.29.5", + "@cosmjs/amino": "^0.30.1", + "@cosmjs/proto-signing": "^0.30.1", + "@cosmjs/stargate": "^0.30.1", "@ethersproject/bytes": "^5.7.0", - "@injectivelabs/core-proto-ts": "^0.0.11", - "@injectivelabs/exceptions": "^1.10.0", + "@injectivelabs/core-proto-ts": "^0.0.14", + "@injectivelabs/exceptions": "^1.10.12", "@injectivelabs/grpc-web": "^0.0.1", "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", - "@injectivelabs/indexer-proto-ts": "^0.0.9", - "@injectivelabs/networks": "^1.10.0", - "@injectivelabs/ninja-proto-ts": "1.0.1", - "@injectivelabs/test-utils": "^1.10.0", - "@injectivelabs/token-metadata": "^1.10.4", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", + "@injectivelabs/indexer-proto-ts": "1.10.8-rc.4", + "@injectivelabs/mito-proto-ts": "1.0.9", + "@injectivelabs/networks": "^1.10.12", + "@injectivelabs/test-utils": "^1.10.12", + "@injectivelabs/token-metadata": "^1.10.42", + "@injectivelabs/ts-types": "^1.10.12", + "@injectivelabs/utils": "^1.10.12", "@metamask/eth-sig-util": "^4.0.0", "axios": "^0.27.2", "bech32": "^2.0.0", @@ -31532,7 +31868,7 @@ "cosmjs-types": "^0.7.1", "eth-crypto": "^2.6.0", "ethereumjs-util": "^7.1.4", - "ethers": "^5.6.4", + "ethers": "^5.7.2", "google-protobuf": "^3.21.0", "graphql": "^16.3.0", "http-status-codes": "^2.2.0", @@ -31547,9 +31883,10 @@ }, "dependencies": { "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "optional": true, "requires": { "@types/node": "*" } @@ -31558,6 +31895,7 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "optional": true, "requires": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" @@ -31566,12 +31904,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "optional": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -31581,14 +31921,16 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "optional": true }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "optional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -31596,19 +31938,22 @@ } }, "graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "optional": true }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "optional": true }, "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "optional": true, "requires": { "tslib": "^2.1.0" } @@ -31617,6 +31962,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "optional": true, "requires": { "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", @@ -31624,16 +31970,18 @@ } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, "@injectivelabs/test-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.10.0.tgz", - "integrity": "sha512-OS1AUq3Wu4nxhchpOa/zjAp2rgq5aKniLnNt07RzQQAM+4mPw3PcF7zWuClkUFAgVCxlpvFnV1f6LyzXW46mGQ==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.3.tgz", + "integrity": "sha512-dVe262sACa7YkRr7mfXx58yI/ieuQqm3IMGq7EMweFKI6Kh2gh8FAM2bsDgm1cGewEIhJ9tWh6OM5uNheeVamg==", + "optional": true, "requires": { "axios": "^0.21.1", "bignumber.js": "^9.0.1", @@ -31647,31 +31995,35 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "requires": { "follow-redirects": "^1.14.0" } }, "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "optional": true } } }, "@injectivelabs/token-metadata": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.10.4.tgz", - "integrity": "sha512-2uCRkL5pYaLSziva9w4cpH0AJ+JMgg2irA22dEkM5JPK9kLB4rv0gey1Us7EzcX6WnY4RRO3aN2e0uTG08WVzA==", - "requires": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/networks": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", - "@injectivelabs/utils": "^1.10.0", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.5.tgz", + "integrity": "sha512-GiIiNDixfvbfEjzZG7ixtGYmJllFIcA2Xl1LnsK5yawT8Q+/SoSIJig4tE+0CC/AaGHS1GxDKySrIdMse7PZ0w==", + "optional": true, + "requires": { + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/networks": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/utils": "^1.14.5", "@types/lodash.values": "^4.3.6", "copyfiles": "^2.4.1", "jsonschema": "^1.4.0", @@ -31679,24 +32031,79 @@ "lodash": "^4.17.21", "lodash.values": "^4.3.0", "shx": "^0.3.2" + }, + "dependencies": { + "@injectivelabs/networks": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.5.tgz", + "integrity": "sha512-9GINd/pPBX6Jyc26pmlLC54s7nLlXsBLZ/1fo8a0nvHkrrODRDE4IldP6KsA9OLVomMPk5TyBUgYLGgM3ST9GA==", + "optional": true, + "requires": { + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/utils": "^1.14.5", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "@injectivelabs/utils": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.5.tgz", + "integrity": "sha512-L2ul/7rgop8RLJBhlXjt6Q/A6fXeRZ3hhCZFXGXmA63vz9RSqOFHILiRp6hAFsuZbiITjmVx0eubFPaQU0MymA==", + "optional": true, + "requires": { + "@injectivelabs/exceptions": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.5", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true + }, + "follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "optional": true + } } }, "@injectivelabs/ts-types": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.10.0.tgz", - "integrity": "sha512-2PczKP93fmkg4HIbg1ZWO115GF1oUQaCkc34SRDYDZ9oGjAnr3rV31tju4DW9uxT8eVb2olxqUy71LVHGD7AUA==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.5.tgz", + "integrity": "sha512-dwmEJE90vMr1zkQhz5lX2280sBMe2GvAj98vOHoL2RLTo0OQkJZrirUHwsTkexJf7sFZIT2PlmLCfix9Ulcp5A==", + "optional": true, "requires": { "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "@injectivelabs/utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.0.tgz", - "integrity": "sha512-r7/z1+0Xd6XSYnLf+IO2ydQ0VRFBw2ETxWdvvkpsror3uYLvaAcuCjkRhNsOYM5R4VPCER+0TBm6sm5A1ahiQw==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz", + "integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==", + "optional": true, "requires": { - "@injectivelabs/exceptions": "^1.10.0", - "@injectivelabs/ts-types": "^1.10.0", + "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/ts-types": "^1.10.12", "axios": "^0.21.1", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", @@ -31710,19 +32117,22 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "optional": true, "requires": { "follow-redirects": "^1.14.0" } }, "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "optional": true }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "optional": true } } }, @@ -31950,6 +32360,7 @@ "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==", + "optional": true, "requires": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -31961,7 +32372,8 @@ "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "optional": true } } }, @@ -31986,15 +32398,119 @@ "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, + "@mysten/bcs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.7.1.tgz", + "integrity": "sha512-wFPb8bkhwrbiStfZMV5rFM7J+umpke59/dNjDp+UYJKykNlW23LCk2ePyEUvGdb62HGJM1jyOJ8g4egE3OmdKA==", + "requires": { + "bs58": "^5.0.0" + }, + "dependencies": { + "base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "requires": { + "base-x": "^4.0.0" + } + } + } + }, + "@mysten/sui.js": { + "version": "0.32.2", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz", + "integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==", + "requires": { + "@mysten/bcs": "0.7.1", + "@noble/curves": "^1.0.0", + "@noble/hashes": "^1.3.0", + "@scure/bip32": "^1.3.0", + "@scure/bip39": "^1.2.0", + "@suchipi/femver": "^1.0.0", + "jayson": "^4.0.0", + "rpc-websockets": "^7.5.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "requires": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "jayson": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "requires": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + } + }, + "superstruct": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + } + } + }, + "@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "requires": { + "@noble/hashes": "1.3.3" + } + }, "@noble/ed25519": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==" }, "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" }, "@noble/secp256k1": { "version": "1.7.1", @@ -32492,9 +33008,19 @@ } }, "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==" + }, + "@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "requires": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } }, "@scure/bip39": { "version": "1.1.0", @@ -32613,11 +33139,6 @@ "ieee754": "^1.2.1" } }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "node-fetch": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", @@ -32626,34 +33147,10 @@ "whatwg-url": "^5.0.0" } }, - "rpc-websockets": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", - "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", - "requires": { - "@babel/runtime": "^7.17.2", - "bufferutil": "^4.0.1", - "eventemitter3": "^4.0.7", - "utf-8-validate": "^5.0.2", - "uuid": "^8.3.2", - "ws": "^8.5.0" - } - }, "superstruct": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "requires": {} } } }, @@ -32666,6 +33163,11 @@ "antlr4ts": "^0.5.0-alpha.4" } }, + "@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -32686,9 +33188,9 @@ } }, "@terra-money/terra.js": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.8.tgz", - "integrity": "sha512-Cd/fh4MswT00fDGVckoZ0cm77EpIy4+CjSDO0RqZ3Qfp4CJBp7sWTLRNsyzUWjdYOT5iTx+1wOMCYbbyKo6LAw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.9.tgz", + "integrity": "sha512-JulSvOHLM56fL7s+cIjIbZeWPBluq883X1soWxA4TG5rKkDythT/DHeLXr3jP5Ld/26VENPSg6lNvK7cEYKpiw==", "requires": { "@classic-terra/terra.proto": "^1.1.0", "@terra-money/terra.proto": "^2.1.0", @@ -32716,9 +33218,9 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" }, "form-data": { "version": "4.0.0", @@ -35407,14 +35909,16 @@ } }, "@types/lodash": { - "version": "4.14.192", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", - "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==" + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "optional": true }, "@types/lodash.values": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.7.tgz", - "integrity": "sha512-Moex9/sWxtKEa+BKiH5zvmhfcieDlcz4wRxMhO/oJ2qOKUdujoU6dQjUTxWA8jwEREpHXmiY4HCwNRpycW8JQA==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.9.tgz", + "integrity": "sha512-IJ20OEfqNwm3k8ENwoM3q0yOs4UMpgtD4GqxB4lwBHToGthHWqhyh5DdSgQjioocz0QK2SSBkJfCq95ZTV8BTw==", + "optional": true, "requires": { "@types/lodash": "*" } @@ -35676,33 +36180,71 @@ } } }, + "@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "optional": true, + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + } + } + }, "@wry/context": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", - "integrity": "sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + } + } + }, + "@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "optional": true, + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true } } }, @@ -35967,13 +36509,12 @@ "integrity": "sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==" }, "algosdk": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-1.24.1.tgz", - "integrity": "sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.7.0.tgz", + "integrity": "sha512-sBE9lpV7bup3rZ+q2j3JQaFAE9JwZvjWKX00vPlG8e9txctXbgLL56jZhSWZndqhDI9oI+0P4NldkuQIWdrUyg==", "requires": { "algo-msgpack-with-bigint": "^2.1.1", - "buffer": "^6.0.2", - "cross-fetch": "^3.1.5", + "buffer": "^6.0.3", "hi-base32": "^0.5.1", "js-sha256": "^0.9.0", "js-sha3": "^0.8.0", @@ -35992,27 +36533,11 @@ "ieee754": "^1.2.1" } }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -36570,13 +37095,6 @@ "@babel/helper-define-polyfill-provider": "^0.3.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "optional": true, - "peer": true - }, "backoff": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", @@ -37913,6 +38431,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "optional": true, "requires": { "glob": "^7.0.5", "minimatch": "^3.0.3", @@ -37926,12 +38445,14 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "optional": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, "requires": { "color-convert": "^2.0.1" } @@ -37940,6 +38461,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "optional": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -37950,6 +38472,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, "requires": { "color-name": "~1.1.4" } @@ -37957,22 +38480,26 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "optional": true }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "optional": true }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "optional": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -37983,6 +38510,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "optional": true, "requires": { "ansi-regex": "^5.0.1" } @@ -37991,6 +38519,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -38000,6 +38529,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -38009,12 +38539,14 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "optional": true }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "optional": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -38028,7 +38560,8 @@ "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "optional": true } } }, @@ -38070,9 +38603,10 @@ } }, "cosmjs-types": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.1.tgz", - "integrity": "sha512-qP89SGwi6YpvMTrM9CPzTfZ0JPNlXzgimqMLsa/ZjzW+L6MC8TCr6XmoWtFOT6GSfefvJLwFWq7YCtL456Bdzg==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", + "integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==", + "optional": true, "requires": { "long": "^4.0.0", "protobufjs": "~6.11.2" @@ -38082,6 +38616,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "devOptional": true, "requires": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -38444,6 +38979,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "devOptional": true, "requires": { "object-keys": "^1.0.12" } @@ -38649,6 +39185,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", + "optional": true, "requires": { "acorn": "7.1.1", "elliptic": "6.5.4", @@ -38660,12 +39197,14 @@ "acorn": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "optional": true }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true }, "secp256k1": { "version": "3.7.1", @@ -39414,6 +39953,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", + "optional": true, "requires": { "@babel/runtime": "7.20.13", "@ethereumjs/tx": "3.5.2", @@ -39428,6 +39968,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "optional": true, "requires": { "@types/node": "*" } @@ -39435,12 +39976,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "optional": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -39452,12 +39995,14 @@ "node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "optional": true }, "secp256k1": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", + "optional": true, "requires": { "elliptic": "^6.5.4", "node-addon-api": "^5.0.0", @@ -40050,7 +40595,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "devOptional": true + "dev": true }, "events": { "version": "3.3.0", @@ -40069,7 +40614,8 @@ "exit-on-epipe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "devOptional": true }, "expand-brackets": { "version": "2.1.4", @@ -41334,9 +41880,10 @@ } }, "globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "optional": true, "requires": { "define-properties": "^1.1.3" } @@ -41379,12 +41926,14 @@ "graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "optional": true }, "graphql-tag": { "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "optional": true, "requires": { "tslib": "^2.1.0" }, @@ -41392,7 +41941,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "optional": true } } }, @@ -41574,6 +42124,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "optional": true, "requires": { "react-is": "^16.7.0" } @@ -41666,9 +42217,10 @@ } }, "http-status-codes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", - "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "optional": true }, "http2-wrapper": { "version": "2.2.0", @@ -42254,13 +42806,6 @@ } } }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "optional": true, - "peer": true - }, "jayson": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", @@ -42358,9 +42903,9 @@ }, "dependencies": { "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" } } }, @@ -42473,7 +43018,8 @@ "jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==" + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "optional": true }, "JSONStream": { "version": "1.3.5", @@ -42521,6 +43067,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "optional": true, "requires": { "bn.js": "^5.2.0", "buffer": "^6.0.3", @@ -42530,12 +43077,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "optional": true }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "optional": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -42930,22 +43479,25 @@ } }, "libsodium": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.11.tgz", - "integrity": "sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==" + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", + "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==", + "optional": true }, "libsodium-wrappers": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz", - "integrity": "sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", + "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "optional": true, "requires": { - "libsodium": "^0.7.11" + "libsodium": "^0.7.13" } }, "link-module-alias": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/link-module-alias/-/link-module-alias-1.2.0.tgz", "integrity": "sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==", + "optional": true, "requires": { "chalk": "^2.4.1" }, @@ -42954,6 +43506,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "optional": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -43037,7 +43590,8 @@ "lodash.values": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==" + "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", + "optional": true }, "log-symbols": { "version": "4.0.0", @@ -43063,6 +43617,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "devOptional": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -43144,7 +43699,8 @@ "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "optional": true }, "map-visit": { "version": "1.0.0", @@ -44179,6 +44735,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "optional": true, "requires": { "inherits": "^2.0.1", "readable-stream": "~1.0.31" @@ -44187,12 +44744,14 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "optional": true }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -44203,7 +44762,8 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "optional": true } } }, @@ -44346,7 +44906,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "devOptional": true }, "object-visit": { "version": "1.0.1", @@ -44400,12 +44961,32 @@ } }, "optimism": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", - "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", + "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", + "optional": true, "requires": { + "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", - "@wry/trie": "^0.3.0" + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + }, + "dependencies": { + "@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "optional": true, + "requires": { + "tslib": "^2.3.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + } } }, "optionator": { @@ -45279,7 +45860,8 @@ "printj": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "devOptional": true }, "process": { "version": "0.5.2", @@ -45321,6 +45903,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "optional": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -45564,7 +46147,8 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "optional": true }, "readable-stream": { "version": "2.3.7", @@ -45598,12 +46182,14 @@ "readonly-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", - "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==" + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", + "optional": true }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "optional": true, "requires": { "resolve": "^1.1.6" } @@ -45821,7 +46407,8 @@ "response-iterator": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", - "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "optional": true }, "responselike": { "version": "1.0.2", @@ -45884,6 +46471,37 @@ "bn.js": "^4.11.1" } }, + "rpc-websockets": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", + "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "requires": { + "@babel/runtime": "^7.17.2", + "bufferutil": "^4.0.1", + "eventemitter3": "^4.0.7", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "requires": {} + } + } + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -46202,6 +46820,7 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "optional": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -46212,6 +46831,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "optional": true, "requires": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -46285,19 +46905,21 @@ } }, "snakecase-keys": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.5.tgz", - "integrity": "sha512-qSQVcgcWk8mQUN1miVGnRMAUye1dbj9+F9PVkR7wZUXNCidQwrl/kOKmoYf+WbH2ju6c9pXnlmbS2he7pb2/9A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.5.0.tgz", + "integrity": "sha512-r3kRtnoPu3FxGJ3fny6PKNnU3pteb29o6qAa0ugzhSseKNWRkw1dw8nIjXMyyKaU9vQxxVIE62Mb3bKbdrgpiw==", + "optional": true, "requires": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", - "type-fest": "^2.5.2" + "type-fest": "^3.12.0" }, "dependencies": { "dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "optional": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -46307,6 +46929,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "optional": true, "requires": { "tslib": "^2.0.3" } @@ -46315,6 +46938,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "optional": true, "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -46324,20 +46948,23 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "optional": true, "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "optional": true } } }, @@ -46723,7 +47350,8 @@ "store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "optional": true }, "stream-each": { "version": "1.2.3", @@ -46890,30 +47518,6 @@ } } }, - "subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "optional": true, - "peer": true, - "requires": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "dependencies": { - "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "optional": true, - "peer": true, - "requires": {} - } - } - }, "superstruct": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", @@ -47029,7 +47633,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "devOptional": true + "dev": true }, "table": { "version": "5.4.6", @@ -50306,6 +50910,23 @@ } } }, + "ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "optional": true, + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + } + } + }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -50350,7 +50971,8 @@ "tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "devOptional": true }, "type": { "version": "1.2.0", @@ -51126,7 +51748,8 @@ "untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "optional": true }, "upath": { "version": "1.2.0", @@ -52337,6 +52960,7 @@ "version": "11.14.0", "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", + "optional": true, "requires": { "globalthis": "^1.0.1", "symbol-observable": "^2.0.3" @@ -52345,7 +52969,8 @@ "symbol-observable": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "optional": true } } }, @@ -52460,7 +53085,17 @@ "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", + "optional": true + }, + "zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "optional": true, + "requires": { + "zen-observable": "0.8.15" + } } } } diff --git a/ethereum/package.json b/ethereum/package.json index d995b9e39a..b69c6f2fe5 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -43,7 +43,7 @@ "author": "", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.9.11", + "@certusone/wormhole-sdk": "^0.10.8", "@typechain/ethers-v5": "^10.2.0", "dotenv": "^10.0.0", "elliptic": "^6.5.2", From 74fb639584d6d8f3c602c109f6fdcc4bea45c7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 14:58:22 -0300 Subject: [PATCH 073/174] evm: uses wormhole sdk to print chain names --- ethereum/ts-scripts/relayer/config/checkNetworks.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index 88913d6c0b..830d8beb6d 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -1,9 +1,9 @@ +import { coalesceChainName } from "@certusone/wormhole-sdk"; import { env, getSigner, init, loadChains, - loadPrivateKey, } from "../helpers/env"; import { readFileSync, writeFileSync } from "fs"; @@ -29,7 +29,7 @@ async function main() { process.exit(1); } console.log(`Balance ${balance.toString()}`); - console.log(`Network ${network.name} (${chain.chainId}) checked`); + console.log(`Network ${coalesceChainName(chain.chainId)} (${chain.chainId}) checked`); } console.log(""); console.log("Networks checked"); From 220ae51f07c9000e4e088e90263cedcedf8b4354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 16:02:04 -0300 Subject: [PATCH 074/174] evm: merge contract addresses from last run when flag is set --- ethereum/ts-scripts/relayer/helpers/env.ts | 86 ++++++++++------------ 1 file changed, 37 insertions(+), 49 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 9d2ecfdf21..30f1e20fbb 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -205,71 +205,61 @@ export function loadGuardianSetIndex(): number { export function loadDeliveryProviders(): Deployment[] { const contracts = readContracts(); if (contracts.useLastRun) { - const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployDeliveryProvider/lastrun.json`, + const lastRun = loadLastRun( + "deployDeliveryProvider", + `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` ); - if (!lastRunFile) { - throw Error( - "Failed to find last run file for the deployDeliveryProvider process!", - ); + if (lastRun !== undefined) { + return {...contracts.deliveryProviders, ...lastRun.deliveryProviderProxies}; } - const lastRun = JSON.parse(lastRunFile.toString()); - return lastRun.deliveryProviderProxies; - } else if (contracts.useLastRun == false) { - return contracts.deliveryProviders; - } else { - throw Error("useLastRun was an invalid value from the contracts config"); } + + return contracts.deliveryProviders; } export function loadWormholeRelayers(dev: boolean): Deployment[] { const contracts = readContracts(); + // TODO: do we really want this dev flag? + const wormholeRelayers = dev ? contracts.wormholeRelayersDev : contracts.wormholeRelayers; if (contracts.useLastRun) { - const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployWormholeRelayer/lastrun.json`, + const lastRun = loadLastRun( + "deployWormholeRelayer", + `Failed to open last run file for WormholeRelayer proxy contracts. Using only the addresses provided in contracts.json` ); - if (!lastRunFile) { - throw Error("Failed to find last run file for the Core Relayer process!"); + if (lastRun !== undefined) { + return {...wormholeRelayers, ...lastRun.wormholeRelayerProxies}; } - const lastRun = JSON.parse(lastRunFile.toString()); - return lastRun.wormholeRelayerProxies; - } else { - return dev ? contracts.wormholeRelayersDev : contracts.wormholeRelayers; } + + return wormholeRelayers; } export function loadMockIntegrations(): Deployment[] { const contracts = readContracts(); if (contracts.useLastRun) { - const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployMockIntegration/lastrun.json`, + const lastRun = loadLastRun( + "deployMockIntegration", + `Failed to open last run file for MockIntegration contracts. Using only the addresses provided in contracts.json` ); - if (!lastRunFile) { - throw Error( - "Failed to find last run file for the deploy mock integration process!", - ); + if (lastRun !== undefined) { + return {...contracts.mockIntegrations, ...lastRun.mockIntegrations}; } - const lastRun = JSON.parse(lastRunFile.toString()); - return lastRun.mockIntegrations; - } else { - return contracts.mockIntegrations; } + + return contracts.mockIntegrations; } export function loadWormholeRelayerImplementations(): Deployment[] { const contracts = readContracts(); if (contracts.useLastRun) { - const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployWormholeRelayerImplementation/lastrun.json`, + const lastRun = loadLastRun( + "deployWormholeRelayerImplementation", + `Failed to open last run file for WormholeRelayer implementations. Using only the addresses provided in contracts.json` ); - if (!lastRunFile) { - throw Error( - "Failed to find last run file for the deployWormholeRelayerImplementation process!", - ); + if (lastRun !== undefined) { + return {...contracts.wormholeRelayerImplementations, ...lastRun.wormholeRelayerImplementations}; } - const lastRun = JSON.parse(lastRunFile.toString()); - return lastRun.wormholeRelayerImplementations; } return contracts.wormholeRelayerImplementations; @@ -278,19 +268,16 @@ export function loadWormholeRelayerImplementations(): Deployment[] { export function loadCreate2Factories(): Deployment[] { const contracts = readContracts(); if (contracts.useLastRun) { - const lastRunFile = fs.readFileSync( - `./ts-scripts/relayer/output/${env}/deployCreate2Factory/lastrun.json`, + const lastRun = loadLastRun( + "deployCreate2Factory", + `Failed to open last run file for create2 factories. Using only the addresses provided in contracts.json` ); - if (!lastRunFile) { - throw Error( - "Failed to find last run file for the deployCreate2Factory process!", - ); + if (lastRun !== undefined) { + return {...contracts.create2Factories, ...lastRun.create2Factories}; } - const lastRun = JSON.parse(lastRunFile.toString()); - return lastRun.create2Factories; - } else { - return contracts.create2Factories; } + + return contracts.create2Factories; } //TODO load these keys more intelligently, @@ -343,7 +330,7 @@ export function writeOutputFiles(output: unknown, processName: string) { ); } -export function loadLastRun(processName: string): any { +export function loadLastRun(processName: string, errorMessage: string): any { try { return JSON.parse( fs.readFileSync( @@ -353,6 +340,7 @@ export function loadLastRun(processName: string): any { ); } catch (error: unknown) { if (error instanceof Error && (error as any).code === "ENOENT") { + console.error(errorMessage); return undefined; } else { throw error; From cfc1596fe3505e1d537f89b0cafb3e16a2f24da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 17:40:21 -0300 Subject: [PATCH 075/174] evm: fixes contract address merging in GR deployment --- .../relayer/config/syncContractsJson.ts | 41 +++++++------------ ethereum/ts-scripts/relayer/helpers/env.ts | 33 +++++++++++---- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index 61432e9887..24095c3af6 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -6,65 +6,52 @@ import { getDeliveryProvider, init, loadChains, + updateContractAddress, + Deployment, } from "../helpers/env"; const env = init(); const chains = loadChains(); -interface Address { - chainId: number; - address: string; -} interface ContractsJson { - deliveryProviders: Address[]; - wormholeRelayers: Address[]; - mockIntegrations: Address[]; - create2Factories: Address[]; + deliveryProviders: Deployment[]; + wormholeRelayers: Deployment[]; + mockIntegrations: Deployment[]; + create2Factories: Deployment[]; } async function main() { const path = `./ts-scripts/relayer/config/${env}/contracts.json`; - const blob = readFileSync(path); - const contracts: ContractsJson = JSON.parse(String(blob)); - console.log("Old:"); - console.log(`${String(blob)}`); + const contractsFile = readFileSync(path, "utf8"); + const contracts: ContractsJson = JSON.parse(contractsFile); + console.log(`Old:\n${contractsFile}`); contracts.deliveryProviders = []; contracts.wormholeRelayers = []; contracts.mockIntegrations = []; contracts.create2Factories = []; for (const chain of chains) { - update(contracts.deliveryProviders, { + updateContractAddress(contracts.deliveryProviders, { chainId: chain.chainId, address: (await getDeliveryProvider(chain)).address, }); - update(contracts.wormholeRelayers, { + updateContractAddress(contracts.wormholeRelayers, { chainId: chain.chainId, address: (await getWormholeRelayer(chain)).address, }); - update(contracts.mockIntegrations, { + updateContractAddress(contracts.mockIntegrations, { chainId: chain.chainId, address: (await getMockIntegration(chain)).address, }); - update(contracts.create2Factories, { + updateContractAddress(contracts.create2Factories, { chainId: chain.chainId, address: (await getCreate2Factory(chain)).address, }); } const newStr = JSON.stringify(contracts, undefined, 2); - console.log("New:"); - console.log(`${String(newStr)}`); + console.log(`New:\n${newStr}`); writeFileSync(path, newStr); } -function update(arr: Address[], newAddress: Address) { - const idx = arr.findIndex((a) => a.chainId === newAddress.chainId); - if (idx === -1) { - arr.push(newAddress); - } else { - arr[idx] = newAddress; - } -} - main().catch((e) => { console.error(e); process.exit(1); diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 30f1e20fbb..34f072324a 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -210,7 +210,7 @@ export function loadDeliveryProviders(): Deployment[] { `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return {...contracts.deliveryProviders, ...lastRun.deliveryProviderProxies}; + return mergeContractAddresses(contracts.deliveryProviders, lastRun.deliveryProviderProxies); } } @@ -227,7 +227,7 @@ export function loadWormholeRelayers(dev: boolean): Deployment[] { `Failed to open last run file for WormholeRelayer proxy contracts. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return {...wormholeRelayers, ...lastRun.wormholeRelayerProxies}; + return mergeContractAddresses(wormholeRelayers, lastRun.wormholeRelayerProxies); } } @@ -242,7 +242,7 @@ export function loadMockIntegrations(): Deployment[] { `Failed to open last run file for MockIntegration contracts. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return {...contracts.mockIntegrations, ...lastRun.mockIntegrations}; + return mergeContractAddresses(contracts.mockIntegrations, lastRun.mockIntegrations); } } @@ -258,7 +258,7 @@ export function loadWormholeRelayerImplementations(): Deployment[] { `Failed to open last run file for WormholeRelayer implementations. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return {...contracts.wormholeRelayerImplementations, ...lastRun.wormholeRelayerImplementations}; + return mergeContractAddresses(contracts.wormholeRelayerImplementations, lastRun.wormholeRelayerImplementations); } } @@ -273,7 +273,7 @@ export function loadCreate2Factories(): Deployment[] { `Failed to open last run file for create2 factories. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return {...contracts.create2Factories, ...lastRun.create2Factories}; + return mergeContractAddresses(contracts.create2Factories, lastRun.create2Factories); } } @@ -330,7 +330,7 @@ export function writeOutputFiles(output: unknown, processName: string) { ); } -export function loadLastRun(processName: string, errorMessage: string): any { +export function loadLastRun(processName: string, errorMessage?: string): any { try { return JSON.parse( fs.readFileSync( @@ -340,7 +340,9 @@ export function loadLastRun(processName: string, errorMessage: string): any { ); } catch (error: unknown) { if (error instanceof Error && (error as any).code === "ENOENT") { - console.error(errorMessage); + if (errorMessage !== undefined) { + console.error(errorMessage); + } return undefined; } else { throw error; @@ -474,3 +476,20 @@ export const getCreate2Factory = async ( getCreate2FactoryAddress(chain), await getSigner(chain), ); + +export function updateContractAddress(arr: Deployment[], newAddress: Deployment) { + const idx = arr.findIndex((a) => a.chainId === newAddress.chainId); + if (idx === -1) { + arr.push(newAddress); + } else { + arr[idx] = newAddress; + } +} + +export function mergeContractAddresses(arr: Deployment[], newAddresses: Deployment[]): Deployment[] { + const newArray = [...arr]; + for (const newAddress of newAddresses) { + updateContractAddress(newArray, newAddress); + } + return newArray; +} From fdcc28df282c2161a3dd5d6f7a0c0cb68b37e32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 18:11:58 -0300 Subject: [PATCH 076/174] evm: simplifies GR testnet cross registrations --- .../registerChainsWormholeRelayerSelfSign.ts | 120 +++--------------- 1 file changed, 21 insertions(+), 99 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index ceec6bf9d3..9eab646491 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -1,10 +1,11 @@ import { tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { inspect } from "util"; + import { init, loadChains, ChainInfo, getWormholeRelayer, - getOperationDescriptor, getWormholeRelayerAddress, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; @@ -14,7 +15,6 @@ import type { WormholeRelayer } from "../../../ethers-contracts"; const processName = "registerChainsWormholeRelayerSelfSign"; init(); -const operation = getOperationDescriptor(); const allChains = loadChains(); const zeroBytes32 = @@ -23,109 +23,34 @@ const zeroBytes32 = async function run() { console.log("Start! " + processName); - // TODO: to send txs concurrently, the cross-registrations need to be separated out - // for (const operatingChain of operation.operatingChains) { - // await registerChainsWormholeRelayer(operatingChain); - // await registerOnExistingChainsWormholeRelayer(operatingChain); - //} - for (const myChain of allChains) { - registerChainsWormholeRelayerIfUnregistered(myChain); - } -} - -async function registerChainsWormholeRelayerIfUnregistered( - operatingChain: ChainInfo -) { - console.log( - "[START] Registering all the wormhole relayers onto Wormhole Relayer " + - operatingChain.chainId - ); - - const wormholeRelayer = await getWormholeRelayer(operatingChain); - for (const targetChain of allChains) { - let currentRegisteredContract; - try { - currentRegisteredContract = (await wormholeRelayer.getRegisteredWormholeRelayerContract( - targetChain.chainId - )) - } catch (e) { - console.log(`Error getting the wormhole relayer for chain ${operatingChain.chainId}, rpc ${operatingChain.rpc}`) - } - if ( - currentRegisteredContract === zeroBytes32 - ) { - console.log( - `[start] This chain ${targetChain.chainId} is not registered onto chain ${operatingChain.chainId} yet` - ); - try { - await registerWormholeRelayer( - wormholeRelayer, - operatingChain, - targetChain - ); - } catch(error) { - console.log(`[error] Registering ${targetChain.chainId} onto ${operatingChain.chainId} failed`) - console.log(`The error was ${error}`) - } + const results = await Promise.allSettled(allChains.map((chain) => registerChainsWormholeRelayerIfUnregistered(chain))); + for (const result of results) { + if (result.status === "rejected") { console.log( - `[done] Now this chain ${targetChain.chainId} is registered onto chain ${operatingChain.chainId}` - ); - } else { - // This doesn't check that the registered address is correct - only that it exists and is not zero - console.log( - `This chain ${targetChain.chainId} is already registered onto chain ${operatingChain.chainId}` + `Registration failed: ${result.reason?.stack || inspect(result.reason)}` ); } } - - console.log( - "Did all contract registrations for the core relayer on " + - operatingChain.chainId - ); } -async function registerChainsWormholeRelayer(operatingChain: ChainInfo) { +async function registerChainsWormholeRelayerIfUnregistered( + operatingChain: ChainInfo +) { console.log( - "Registering all the wormhole relayers onto Wormhole Relayer " + - operatingChain.chainId + `Registering all the WormholeRelayer contracts in chain ${operatingChain.chainId}` ); const wormholeRelayer = await getWormholeRelayer(operatingChain); for (const targetChain of allChains) { - await registerWormholeRelayer(wormholeRelayer, operatingChain, targetChain); - } - - console.log( - "Did all contract registrations for the core relayer on " + - operatingChain.chainId - ); -} - -async function registerOnExistingChainsWormholeRelayer(targetChain: ChainInfo) { - console.log( - "Registering Wormhole Relayer " + - targetChain.chainId + - " onto all the wormhole relayers" - ); - const tasks = await Promise.allSettled( - operation.supportedChains.map(async (operatingChain) => { - const coreRelayer = await getWormholeRelayer(operatingChain); - - return registerWormholeRelayer(coreRelayer, operatingChain, targetChain); - }) - ); - for (const task of tasks) { - if (task.status === "rejected") { - console.log( - `Failed cross registration. ${task.reason?.stack || task.reason}` - ); - } + await registerWormholeRelayer( + wormholeRelayer, + operatingChain, + targetChain + ); } console.log( - "Did all contract registrations of the core relayer on " + - targetChain.chainId + - " onto the existing (non operating) chains" + `Did all contract registrations for the WormholeRelayer in chain ${operatingChain.chainId}` ); } @@ -134,15 +59,12 @@ async function registerWormholeRelayer( operatingChain: ChainInfo, targetChain: ChainInfo ) { - const registration = - await wormholeRelayer.getRegisteredWormholeRelayerContract( - targetChain.chainId - ); + const registration = await wormholeRelayer.getRegisteredWormholeRelayerContract(targetChain.chainId); if (registration !== zeroBytes32) { const registrationAddress = await getWormholeRelayerAddress(targetChain); const expectedRegistration = "0x" + tryNativeToHexString(registrationAddress, "ethereum"); - if (registration !== expectedRegistration) { + if (registration.toLowerCase() !== expectedRegistration.toLowerCase()) { throw new Error(`Found an unexpected registration for chain ${targetChain.chainId} on chain ${operatingChain.chainId} Expected: ${expectedRegistration} Actual: ${registration}`); @@ -168,10 +90,10 @@ Actual: ${registration}`); .registerWormholeRelayerContract(vaa, overrides) .then(wait); } catch (error) { - console.log( - `Error in registering chain ${targetChain.chainId} onto ${operatingChain.chainId}` + throw new Error( + `Error in registering chain ${targetChain.chainId} onto ${operatingChain.chainId} +Details: ${(error as any)?.stack || inspect(error)}` ); - console.log((error as any)?.stack || error); } } From 712787d0eb8881bcf61503c4462cd92710a3acce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 18:23:43 -0300 Subject: [PATCH 077/174] evm: improves some error messages --- ethereum/ts-scripts/relayer/helpers/env.ts | 4 ++-- .../relayer/wormholeRelayer/deployWormholeRelayer.ts | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 34f072324a..17f820a860 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -180,7 +180,7 @@ export function getChain(chain: ChainId): ChainInfo { const chains = loadChains(); const output = chains.find((x) => x.chainId == chain); if (!output) { - throw Error("Bad chain ID"); + throw Error(`Bad chain ID ${chain}`); } return output; @@ -189,7 +189,7 @@ export function getChain(chain: ChainId): ChainInfo { export function loadPrivateKey(): string { const privateKey = get_env_var("WALLET_KEY"); if (!privateKey) { - throw Error("Failed to find private key for this process!"); + throw Error("WALLET_KEY must be explicitly set."); } return privateKey; } diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index f26555eec4..2dbc35d8d4 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -32,20 +32,17 @@ async function run() { for (const chain of operation.operatingChains) { console.log(`Deploying for chain ${chain.chainId}...`); - const coreRelayerImplementation = await deployWormholeRelayerImplementation( + const relayerImplementation = await deployWormholeRelayerImplementation( chain, ); const coreRelayerProxy = await deployWormholeRelayerProxy( chain, - coreRelayerImplementation.address, + relayerImplementation.address, getDeliveryProviderAddress(chain), ); - deployments.wormholeRelayerImplementations.push( - coreRelayerImplementation, - ); + deployments.wormholeRelayerImplementations.push(relayerImplementation); deployments.wormholeRelayerProxies.push(coreRelayerProxy); - console.log(""); } writeOutputFiles(deployments, processName); From fadfe327836dfcf34e2cf350d58bb271e6cd7252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 18:11:15 -0300 Subject: [PATCH 078/174] evm: updates testnet chains and GR contracts --- .../relayer/config/testnet/chains.json | 18 +- .../relayer/config/testnet/contracts.json | 258 +++++++++++------- .../initializeDeliveryProvider.json | 52 ++-- 3 files changed, 190 insertions(+), 138 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 0cb0b040b3..6f31123ffa 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -51,13 +51,6 @@ "rpc": "https://rpc.testnet.moonbeam.network", "wormholeAddress": "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901" }, - { - "description": "Optimism Goerli", - "evmNetworkId": 420, - "chainId": 24, - "rpc": "https://goerli.optimism.io", - "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" - }, { "description": "Arbitrum Goerli", "evmNetworkId": 421613, @@ -65,6 +58,13 @@ "rpc": "https://arbitrum-goerli.publicnode.com", "wormholeAddress": "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e" }, + { + "description": "Optimism Goerli", + "evmNetworkId": 420, + "chainId": 24, + "rpc": "https://goerli.optimism.io", + "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" + }, { "description": "Base Testnet", "evmNetworkId": 84531, @@ -91,14 +91,14 @@ "evmNetworkId": 84532, "chainId": 10004, "rpc": "https://sepolia.base.org", - "wormholeAddress": "0x268557122Ffd64c85750d630b716471118F323c8" + "wormholeAddress": "0x79A1027a6A159502049F10906D333EC57E95F083" }, { "description": "Optimism Sepolia", "evmNetworkId": 11155420, "chainId": 10005, "rpc": "https://sepolia.optimism.io", - "wormholeAddress": "0x27812285fbe85BA1DF242929B906B31EE3dd1b9f" + "wormholeAddress": "0x31377888146f3253211EFEf5c676D41ECe7D58Fe" } ] } diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index f3ef0a95ce..8ce3d3173c 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -1,234 +1,282 @@ { "description": "This file contains the addresses for the contracts on each chain. If useLastRun is true, this file will be ignored, and the addresses will be taken from the lastrun.json of the deployment scripts.", - "useLastRun": false, + "useLastRun": true, "deliveryProviders": [ { - "chainId": 6, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0xD1463B4fe86166768d2ff51B1A928beBB5c9f375", + "chainId": 2 }, { - "chainId": 14, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 4 }, { - "chainId": 4, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 5 }, { - "chainId": 5, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 6 }, { - "chainId": 16, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 10 }, { - "chainId": 30, - "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366" + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 14 }, { - "chainId": 24, - "address": "0xfCe1Df3EF22fe5Cb7e2f5988b7d58fF633a313a7" + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 16 }, { - "chainId": 23, - "address": "0x90995DBd1aae85872451b50A569dE947D34ac4ee" + "address": "0x90995DBd1aae85872451b50A569dE947D34ac4ee", + "chainId": 23 }, { - "chainId": 2, - "address": "0xD1463B4fe86166768d2ff51B1A928beBB5c9f375" + "address": "0xfCe1Df3EF22fe5Cb7e2f5988b7d58fF633a313a7", + "chainId": 24 + }, + { + "address": "0x60a86b97a7596eBFd25fb769053894ed0D9A8366", + "chainId": 30 }, { - "chainId": 10, - "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 10002 }, { - "chainId": 10002, - "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81" + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 10003 + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 10004 + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 10005 } ], "wormholeRelayers": [ { - "chainId": 6, - "address": "0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB" + "address": "0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a", + "chainId": 2 + }, + { + "address": "0x80aC94316391752A193C1c47E27D382b507c93F3", + "chainId": 4 + }, + { + "address": "0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0", + "chainId": 5 }, { - "chainId": 14, - "address": "0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84" + "address": "0xA3cF45939bD6260bcFe3D66bc73d60f19e49a8BB", + "chainId": 6 }, { - "chainId": 4, - "address": "0x80aC94316391752A193C1c47E27D382b507c93F3" + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470", + "chainId": 10 }, { - "chainId": 5, - "address": "0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0" + "address": "0x306B68267Deb7c5DfCDa3619E22E9Ca39C374f84", + "chainId": 14 }, { - "chainId": 16, - "address": "0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0" + "address": "0x0591C25ebd0580E0d4F27A82Fc2e24E7489CB5e0", + "chainId": 16 }, { - "chainId": 30, - "address": "0xea8029CD7FCAEFFcD1F53686430Db0Fc8ed384E1" + "address": "0xAd753479354283eEE1b86c9470c84D42f229FF43", + "chainId": 23 }, { - "chainId": 24, - "address": "0x01A957A525a5b7A72808bA9D10c389674E459891" + "address": "0x01A957A525a5b7A72808bA9D10c389674E459891", + "chainId": 24 }, { - "chainId": 23, - "address": "0xAd753479354283eEE1b86c9470c84D42f229FF43" + "address": "0xea8029CD7FCAEFFcD1F53686430Db0Fc8ed384E1", + "chainId": 30 + }, + { + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470", + "chainId": 10002 }, { - "chainId": 2, - "address": "0x28D8F1Be96f97C1387e94A53e00eCcFb4E75175a" + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470", + "chainId": 10003 }, { - "chainId": 10, - "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" + "address": "0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE", + "chainId": 10004 }, { - "chainId": 10002, - "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" + "address": "0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE", + "chainId": 10005 } ], "wormholeRelayerImplementations": [ + { + "address": "0xA82aE5F6784D07580e83cf02bA162D48b81f8316", + "chainId": 2 + }, { "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 6 + "chainId": 4 }, { "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 14 + "chainId": 5 }, { "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 4 + "chainId": 6 + }, + { + "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF", + "chainId": 10 }, { "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 5 + "chainId": 14 }, { "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", "chainId": 16 }, { - "address": "0xc11548d2785DF7BDE8DcD3724eB43a625fc08109", - "chainId": 30 + "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId": 23 }, { "address": "0x6bF3695Afd9B7169A3761c5D314efC89964cec62", "chainId": 24 }, { - "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", - "chainId": 23 + "address": "0xc11548d2785DF7BDE8DcD3724eB43a625fc08109", + "chainId": 30 }, { - "address": "0xA82aE5F6784D07580e83cf02bA162D48b81f8316", + "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF", + "chainId": 10002 + } + ], + "mockIntegrations": [ + { + "address": "0xb81bc199b73AB34c393a4192C163252116a03370", "chainId": 2 }, { - "chainId": 10, - "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF" + "address": "0xb6A04D6672F005787147472Be20d39741929Aa03", + "chainId": 4 }, { - "chainId": 10002, - "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF" - } - ], - "mockIntegrations": [ + "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56", + "chainId": 5 + }, { - "chainId": 6, - "address": "0x5E52f3eB0774E5e5f37760BD3Fca64951D8F74Ae" + "address": "0x5E52f3eB0774E5e5f37760BD3Fca64951D8F74Ae", + "chainId": 6 }, { - "chainId": 14, - "address": "0x7f1d8E809aBB3F6Dc9B90F0131C3E8308046E190" + "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0", + "chainId": 10 }, { - "chainId": 4, - "address": "0xb6A04D6672F005787147472Be20d39741929Aa03" + "address": "0x7f1d8E809aBB3F6Dc9B90F0131C3E8308046E190", + "chainId": 14 }, { - "chainId": 5, - "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56" + "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56", + "chainId": 16 }, { - "chainId": 16, - "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56" + "address": "0x0de48f34E14d08934DA1eA2286Be1b2BED5c062a", + "chainId": 23 }, { - "chainId": 30, - "address": "0x9Ee656203B0DC40cc1bA3f4738527779220e3998" + "address": "0x421e0bb71dDeeC727Af79766423d33D8FD7dB963", + "chainId": 24 }, { - "chainId": 24, - "address": "0x421e0bb71dDeeC727Af79766423d33D8FD7dB963" + "address": "0x9Ee656203B0DC40cc1bA3f4738527779220e3998", + "chainId": 30 }, { - "chainId": 23, - "address": "0x0de48f34E14d08934DA1eA2286Be1b2BED5c062a" + "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0", + "chainId": 10002 }, { - "chainId": 2, - "address": "0xb81bc199b73AB34c393a4192C163252116a03370" + "address": "0x2B1502Ffe717817A0A101a687286bE294fe495f7", + "chainId": 10003 }, { - "chainId": 10, - "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" + "address": "0xA404B69582bac287a7455FFf315938CCd92099c1", + "chainId": 10004 }, { - "chainId": 10002, - "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" + "address": "0xA404B69582bac287a7455FFf315938CCd92099c1", + "chainId": 10005 } ], "create2Factories": [ { - "chainId": 6, - "address": "0xbB2C5134cCDAC02047D915aCd451B697E4D71E1a" + "address": "0x787220D50B32562b0F71Db786881D5F6322082F2", + "chainId": 2 }, { - "chainId": 14, - "address": "0xF4325DD26aF3cEeAB3Bb35ECC916F332505d9847" + "address": "0x1B8d30A267041693b7DAA3c24E47746A28885054", + "chainId": 4 }, { - "chainId": 4, - "address": "0x1B8d30A267041693b7DAA3c24E47746A28885054" + "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986", + "chainId": 5 }, { - "chainId": 5, - "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986" + "address": "0xbB2C5134cCDAC02047D915aCd451B697E4D71E1a", + "chainId": 6 }, { - "chainId": 16, - "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986" + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 10 }, { - "chainId": 30, - "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986" + "address": "0xF4325DD26aF3cEeAB3Bb35ECC916F332505d9847", + "chainId": 14 }, { - "chainId": 24, - "address": "0xe714195F6c5b7C5AAF94Cd1430Ce075f80a81CF6" + "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986", + "chainId": 16 + }, + { + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId": 23 + }, + { + "address": "0xe714195F6c5b7C5AAF94Cd1430Ce075f80a81CF6", + "chainId": 24 + }, + { + "address": "0xE49B157DA7B71308d32512ec150ffEa8677F4986", + "chainId": 30 }, { - "chainId": 23, - "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD" + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 10002 }, { - "chainId": 2, - "address": "0x787220D50B32562b0F71Db786881D5F6322082F2" + "address": "0xe9918f582a972613ac5700d2346a97b8ebad48a2", + "chainId": 10003 }, { - "chainId": 10, - "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2" + "address": "0xe9918f582a972613ac5700d2346a97b8ebad48a2", + "chainId": 10004 }, { - "chainId": 10002, - "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2" + "address": "0xe9918f582a972613ac5700d2346a97b8ebad48a2", + "chainId": 10005 } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json index 86430ffe1b..f813d9c80a 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json @@ -1,11 +1,11 @@ { "addresses": [ { - "chainId": 6, + "chainId": 2, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 14, + "chainId": 4, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { @@ -13,27 +13,31 @@ "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 16, + "chainId": 6, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 4, + "chainId": 10, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 23, + "chainId": 14, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 24, + "chainId": 16, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 2, + "chainId": 23, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 10, + "chainId": 24, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 30, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { @@ -55,14 +59,14 @@ ], "pricingInfo": [ { - "chainId": 6, + "chainId": 2, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", - "updatePriceNative": "100000", + "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" }, { - "chainId": 14, + "chainId": 4, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "100000", @@ -76,51 +80,51 @@ "maximumBudget": "1000000000000000000" }, { - "chainId": 4, + "chainId": 6, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "100000", "maximumBudget": "1000000000000000000" }, { - "chainId": 16, + "chainId": 10, "deliverGasOverhead": "350000", - "updatePriceGas": "10000000000", - "updatePriceNative": "100000", + "updatePriceGas": "3000000000", + "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" }, { - "chainId": 30, + "chainId": 14, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", - "updatePriceNative": "200000", + "updatePriceNative": "100000", "maximumBudget": "1000000000000000000" }, { - "chainId": 23, + "chainId": 16, "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", + "updatePriceGas": "10000000000", + "updatePriceNative": "100000", "maximumBudget": "1000000000000000000" }, { - "chainId": 24, + "chainId": 23, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" }, { - "chainId": 2, + "chainId": 24, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" }, { - "chainId": 10, + "chainId": 30, "deliverGasOverhead": "350000", - "updatePriceGas": "3000000000", + "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" }, From 8d517aacbd36005343d61cb309cad38a3e9f37a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 20:31:45 -0300 Subject: [PATCH 079/174] evm: adds core address check on GR deployment --- .../ts-scripts/relayer/helpers/deployments.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 01fc4a9d76..7fa6f90af4 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -13,9 +13,11 @@ import { getSigner, getWormholeRelayerAddress, getCreate2Factory, + env, } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; +import { CONTRACTS, ChainId, coalesceChainName } from "@certusone/wormhole-sdk"; export const setupContractSalt = Buffer.from("0xSetup"); export const proxyContractSalt = Buffer.from("0xGenericRelayer"); @@ -91,6 +93,7 @@ export async function deployMockIntegration( const factory = new MockRelayerIntegration__factory(signer); const wormholeRelayerAddress = await getWormholeRelayerAddress(chain); + checkCoreAddress(chain.wormholeAddress, env, chain.chainId); const overrides = await buildOverridesDeploy(factory, chain, [ chain.wormholeAddress, wormholeRelayerAddress, @@ -124,6 +127,26 @@ export async function deployCreate2Factory( return { address: contract.address, chainId: chain.chainId }; } +function checkCoreAddress(wormhole: string, env: string, chainId: ChainId) { + const chainName = coalesceChainName(chainId); + if (chainName === undefined) { + return; + } + + // We assume other environments are local devnets + const contractSet = env === "mainnet" ? "MAINNET" : env === "testnet" ? "TESTNET" : undefined; + if (contractSet === undefined) return; + + const sdkWormhole = CONTRACTS[contractSet][chainName].core; + if (sdkWormhole === undefined) { + console.error(`Warning: SDK Wormhole address for chain ${chainId} is undefined.`); + return; + } + if (sdkWormhole.toLowerCase() !== wormhole.toLowerCase()) { + throw new Error(`Expected wormhole address to be ${sdkWormhole} but it's set to ${wormhole} in chains.json`); + } +} + export async function deployWormholeRelayerImplementation( chain: ChainInfo, ): Promise { @@ -132,6 +155,7 @@ export async function deployWormholeRelayerImplementation( const signer = await getSigner(chain); const factory = new WormholeRelayer__factory(signer); + checkCoreAddress(chain.wormholeAddress, env, chain.chainId); const overrides = await buildOverridesDeploy(factory, chain, [ chain.wormholeAddress, ]); From 8cdd33bc5bdda851c8923d97b616bba9f4d588c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 11 Jan 2024 22:12:57 -0300 Subject: [PATCH 080/174] evm: adds `WormholeRelayer` implementation addresses to contracts.json --- .../relayer/config/syncContractsJson.ts | 40 ++++++------------- ethereum/ts-scripts/relayer/helpers/env.ts | 17 ++++++++ 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index 24095c3af6..217ca7fea8 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -1,23 +1,23 @@ import { readFileSync, writeFileSync } from "fs"; import { - getWormholeRelayer, - getCreate2Factory, - getMockIntegration, - getDeliveryProvider, init, - loadChains, updateContractAddress, Deployment, + loadDeliveryProviders, + loadWormholeRelayers, + loadMockIntegrations, + loadCreate2Factories, + loadWormholeRelayerImplementations, } from "../helpers/env"; const env = init(); -const chains = loadChains(); interface ContractsJson { deliveryProviders: Deployment[]; wormholeRelayers: Deployment[]; mockIntegrations: Deployment[]; create2Factories: Deployment[]; + wormholeRelayerImplementations: Deployment[]; } async function main() { @@ -25,28 +25,12 @@ async function main() { const contractsFile = readFileSync(path, "utf8"); const contracts: ContractsJson = JSON.parse(contractsFile); console.log(`Old:\n${contractsFile}`); - contracts.deliveryProviders = []; - contracts.wormholeRelayers = []; - contracts.mockIntegrations = []; - contracts.create2Factories = []; - for (const chain of chains) { - updateContractAddress(contracts.deliveryProviders, { - chainId: chain.chainId, - address: (await getDeliveryProvider(chain)).address, - }); - updateContractAddress(contracts.wormholeRelayers, { - chainId: chain.chainId, - address: (await getWormholeRelayer(chain)).address, - }); - updateContractAddress(contracts.mockIntegrations, { - chainId: chain.chainId, - address: (await getMockIntegration(chain)).address, - }); - updateContractAddress(contracts.create2Factories, { - chainId: chain.chainId, - address: (await getCreate2Factory(chain)).address, - }); - } + contracts.create2Factories = loadCreate2Factories(); + contracts.wormholeRelayers = loadWormholeRelayers(); + contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); + contracts.deliveryProviders = loadDeliveryProviders(); + contracts.mockIntegrations = loadMockIntegrations(); + const newStr = JSON.stringify(contracts, undefined, 2); console.log(`New:\n${newStr}`); writeFileSync(path, newStr); diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 17f820a860..ed7f2b07e6 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -421,6 +421,23 @@ export async function getWormholeRelayerAddress( } } +export async function getWormholeRelayerImplementationAddress( + chain: ChainInfo, +): Promise { + + const thisChainsRelayer = loadWormholeRelayerImplementations().find( + (x) => x.chainId == chain.chainId, + )?.address; + if (thisChainsRelayer) { + return thisChainsRelayer; + } else { + throw Error( + "Failed to find a WormholeRelayer implementation contract address on chain " + + chain.chainId, + ); + } +} + export async function getWormholeRelayer( chain: ChainInfo, provider?: ethers.providers.StaticJsonRpcProvider, From 9fa8d69efd981ff6a57441062083b6ebb42adb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 12 Jan 2024 11:36:44 -0300 Subject: [PATCH 081/174] evm: fixes GR deployment artifact generation --- ethereum/ts-scripts/relayer/config/syncContractsJson.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index 217ca7fea8..474ec096f5 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -26,7 +26,7 @@ async function main() { const contracts: ContractsJson = JSON.parse(contractsFile); console.log(`Old:\n${contractsFile}`); contracts.create2Factories = loadCreate2Factories(); - contracts.wormholeRelayers = loadWormholeRelayers(); + contracts.wormholeRelayers = loadWormholeRelayers(false); contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); contracts.deliveryProviders = loadDeliveryProviders(); contracts.mockIntegrations = loadMockIntegrations(); From ff35292c20083affc485ff01ed2ff9e98b6f4cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 12 Jan 2024 11:37:35 -0300 Subject: [PATCH 082/174] evm: updates testnet prices --- .../configureDeliveryProvider.json | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index a9a9cb1fed..bea4cf1bf4 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -59,6 +59,21 @@ "chainId": 10002, "updatePriceGas": "20000000000", "updatePriceNative": "2000000" + }, + { + "chainId": 10003, + "updatePriceGas": "20000000000", + "updatePriceNative": "2000000" + }, + { + "chainId": 10004, + "updatePriceGas": "20000000000", + "updatePriceNative": "2000000" + }, + { + "chainId": 10005, + "updatePriceGas": "20000000000", + "updatePriceNative": "2000000" } ], "deliveryGasOverheads": [ @@ -105,6 +120,18 @@ { "chainId": 10002, "updateGasOverhead": "500000" + }, + { + "chainId": 10003, + "updateGasOverhead": "500000" + }, + { + "chainId": 10004, + "updateGasOverhead": "500000" + }, + { + "chainId": 10005, + "updateGasOverhead": "500000" } ], "maximumBudgets": [ @@ -155,6 +182,18 @@ { "chainId": 10002, "updateMaximumBudget": "13262599470000000000" + }, + { + "chainId": 10003, + "updateMaximumBudget": "13262599470000000000" + }, + { + "chainId": 10004, + "updateMaximumBudget": "13262599470000000000" + }, + { + "chainId": 10005, + "updateMaximumBudget": "13262599470000000000" } ], "rewardAddresses": [ @@ -205,6 +244,18 @@ { "chainId": 10002, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10003, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10004, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10005, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], "supportedChains": [ @@ -255,6 +306,18 @@ { "chainId": 10002, "isSupported": true + }, + { + "chainId": 10003, + "isSupported": true + }, + { + "chainId": 10004, + "isSupported": true + }, + { + "chainId": 10005, + "isSupported": true } ] } From 9fb212e506710e08b7413f5d978c16a6a0a7ee1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 12 Jan 2024 12:27:26 -0300 Subject: [PATCH 083/174] evm: updates GR testnet implementation addresses --- .../relayer/config/testnet/contracts.json | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index 8ce3d3173c..8296569d03 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -119,48 +119,60 @@ ], "wormholeRelayerImplementations": [ { - "address": "0xA82aE5F6784D07580e83cf02bA162D48b81f8316", - "chainId": 2 + "address":"0x501dfADfF70dfdB72fE41cbD242613716600bafF", + "chainId":2 }, { - "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 4 + "address":"0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId":4 }, { - "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 5 + "address":"0x9a1aA99018C7Cb689e41066ACbD7CFB2b27EF5E3", + "chainId":5 }, { - "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 6 + "address":"0xcb32823B33e5c099609788a50B8768eDf922bB1c", + "chainId":6 }, { - "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF", - "chainId": 10 + "address":"0x5364FA2a8ebcd0CAD0E12dfd25246365FB94874A", + "chainId":10 }, { - "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 14 + "address":"0xd9C241330eC2E2bdf3a862B40eEF473b80b30723", + "chainId":14 }, { - "address": "0x43c97e924E117F92FD022DA33C238c57Ee9954D6", - "chainId": 16 + "address":"0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId":16 }, { - "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", - "chainId": 23 + "address":"0x41B9fE6b7B77349a3AD2Ee83e7EF55951C35ea88", + "chainId":23 }, { - "address": "0x6bF3695Afd9B7169A3761c5D314efC89964cec62", - "chainId": 24 + "address":"0x1e507e74Cc89d7D1a573524B9Cd8ceDe82eb8d85", + "chainId":24 }, { - "address": "0xc11548d2785DF7BDE8DcD3724eB43a625fc08109", - "chainId": 30 + "address":"0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId":30 }, { - "address": "0x00337a31aEE3Ed37f5D5FBF892031d0090Da2EeF", - "chainId": 10002 + "address":"0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId":10002 + }, + { + "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId":10003 + }, + { + "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId":10004 + }, + { + "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId":10005 } ], "mockIntegrations": [ From 6a356bbf5dc14931cd177944143c571e05c71099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 12 Jan 2024 12:28:01 -0300 Subject: [PATCH 084/174] evm: simplifies `WormholeRelayer` verification script --- .../ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index ea95b189e3..387362244d 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -20,12 +20,6 @@ set scan_tokens_file $_flag_scan_tokens set chains_file "ts-scripts/relayer/config/$ENV/chains.json" set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" -# TODO: add implementation addresses to `contracts.json` to allow using it instead of lastrun.json -set last_run_file "ts-scripts/relayer/output/$ENV/deployWormholeRelayer/lastrun.json" -if not test -e $last_run_file - echo "$last_run_file does not exist. Delivery provider addresses are read from this file." - exit 1 -end set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) @@ -36,8 +30,8 @@ for chain in $chain_ids end # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` - set implementation_address (jq --raw-output ".wormholeRelayerImplementations[] | select(.chainId == $chain) | .address" $last_run_file) - set proxy_address (jq --raw-output ".wormholeRelayerProxies[] | select(.chainId == $chain) | .address" $last_run_file) + set implementation_address (jq --raw-output ".wormholeRelayerImplementations[] | select(.chainId == $chain) | .address" $contracts_file) + set proxy_address (jq --raw-output ".wormholeRelayers[] | select(.chainId == $chain) | .address" $contracts_file) set create2_factory_address (jq --raw-output ".create2Factories[] | select(.chainId == $chain) | .address" $contracts_file) # TODO: actually consult this from `worm` CLI # Perhaps the value present in the chains file can be used as a fallback when the current version of the `worm` program doesn't know about From 74b9fb34b1c3bf9cc11a257c1fee488d514b25c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 22 Jan 2024 16:46:45 -0300 Subject: [PATCH 085/174] evm: configureDeliveryProvider config update --- .../configureDeliveryProvider.json | 208 ++++++++++++++---- 1 file changed, 162 insertions(+), 46 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 52cdcec5b0..db3e37fb2a 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -1,5 +1,154 @@ { - "addresses": [ + "pricingInfo": [ + { + "chainId": 2, + "updatePriceGas": "45000000000", + "updatePriceNative": "2427660000" + }, + { + "chainId": 4, + "updatePriceGas": "3000000000", + "updatePriceNative": "307730000" + }, + { + "chainId": 5, + "updatePriceGas": "350000000000", + "updatePriceNative": "779300" + }, + { + "chainId": 6, + "updatePriceGas": "30000000000", + "updatePriceNative": "32730000" + }, + { + "chainId": 10, + "updatePriceGas": "100000000000", + "updatePriceNative": "360700" + }, + { + "chainId": 13, + "updatePriceGas": "25000000000", + "updatePriceNative": "201900" + }, + { + "chainId": 14, + "updatePriceGas": "13000000000", + "updatePriceNative": "666900" + }, + { + "chainId": 16, + "updatePriceGas": "1000000000000", + "updatePriceNative": "372100" + }, + { + "chainId": 23, + "updatePriceGas": "1200000", + "updatePriceNative": "2427660000" + }, + { + "chainId": 24, + "updatePriceGas": "1200000", + "updatePriceNative": "2427660000" + }, + { + "chainId": 30, + "updatePriceGas": "1200000", + "updatePriceNative": "2427660000" + } + ], + "deliveryGasOverheads": [ + { + "chainId": 2, + "updateGasOverhead": "500000" + }, + { + "chainId": 4, + "updateGasOverhead": "500000" + }, + { + "chainId": 5, + "updateGasOverhead": "500000" + }, + { + "chainId": 6, + "updateGasOverhead": "500000" + }, + { + "chainId": 10, + "updateGasOverhead": "500000" + }, + { + "chainId": 13, + "updateGasOverhead": "500000" + }, + { + "chainId": 14, + "updateGasOverhead": "500000" + }, + { + "chainId": 16, + "updateGasOverhead": "500000" + }, + { + "chainId": 23, + "updateGasOverhead": "1029798242" + }, + { + "chainId": 24, + "updateGasOverhead": "1373064323" + }, + { + "chainId": 30, + "updateGasOverhead": "1373064323" + } + ], + "maximumBudgets": [ + { + "chainId": 2, + "updateMaximumBudget": "225000000000000000" + }, + { + "chainId": 4, + "updateMaximumBudget": "649920384752868000" + }, + { + "chainId": 5, + "updateMaximumBudget": "256640574874888000000" + }, + { + "chainId": 6, + "updateMaximumBudget": "6110601894286590000" + }, + { + "chainId": 10, + "updateMaximumBudget": "554477405045744000000" + }, + { + "chainId": 13, + "updateMaximumBudget": "990589400693413000000" + }, + { + "chainId": 14, + "updateMaximumBudget": "299895036737142000000" + }, + { + "chainId": 16, + "updateMaximumBudget": "537489922063961000000" + }, + { + "chainId": 23, + "updateMaximumBudget": "82383859354275300" + }, + { + "chainId": 24, + "updateMaximumBudget": "82383859354275300" + }, + { + "chainId": 30, + "updateMaximumBudget": "82383859354275300" + } + ], + "rewardAddresses": [ { "chainId": 2, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" @@ -45,83 +194,50 @@ "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], - "pricingInfo": [ + "supportedChains": [ { "chainId": 2, - "deliverGasOverhead": "500000", - "updatePriceGas": "40000000000", - "updatePriceNative": "1828220000", - "maximumBudget": "200000000000000000" + "isSupported": true }, { "chainId": 4, - "deliverGasOverhead": "300000", - "updatePriceGas": "3000000000", - "updatePriceNative": "241480000", - "maximumBudget": "828225940000000000" + "isSupported": true }, { "chainId": 5, - "deliverGasOverhead": "300000", - "updatePriceGas": "219000000000", - "updatePriceNative": "667900", - "maximumBudget": "299446024900000022528" + "isSupported": true }, { "chainId": 6, - "deliverGasOverhead": "500000", - "updatePriceGas": "30000000000", - "updatePriceNative": "12560000", - "maximumBudget": "15923566880000000000" + "isSupported": true }, { "chainId": 10, - "deliverGasOverhead": "500000", - "updatePriceGas": "800000000000", - "updatePriceNative": "234100", - "maximumBudget": "854335753999999959040" + "isSupported": true }, { "chainId": 13, - "deliverGasOverhead": "300000", - "updatePriceGas": "25000000000", - "updatePriceNative": "156000", - "maximumBudget": "1282051281999999795200" + "isSupported": true }, { "chainId": 14, - "deliverGasOverhead": "500000", - "updatePriceGas": "10000000000", - "updatePriceNative": "488000", - "maximumBudget": "409836065599999967232" + "isSupported": true }, { "chainId": 16, - "deliverGasOverhead": "300000", - "updatePriceGas": "160000000000", - "updatePriceNative": "231900", - "maximumBudget": "862440707200000065536" + "isSupported": true }, { "chainId": 23, - "deliverGasOverhead": "455816769", - "updatePriceGas": "1200000", - "updatePriceNative": "1828220000", - "maximumBudget": "109396024500000000" + "isSupported": true }, { "chainId": 24, - "deliverGasOverhead": "455816769", - "updatePriceGas": "1200000", - "updatePriceNative": "1828220000", - "maximumBudget": "109396024500000000" + "isSupported": true }, { "chainId": 30, - "deliverGasOverhead": "455816769", - "updatePriceGas": "1200000", - "updatePriceNative": "1828220000", - "maximumBudget": "109396024500000000" + "isSupported": true } ] } From 5a6e6d93f2a0fc3aa976c163d06c710d09bd1ffb Mon Sep 17 00:00:00 2001 From: scnale Date: Tue, 23 Jan 2024 09:39:49 -0300 Subject: [PATCH 086/174] evm: unset last run flag in testnet contracts.json --- ethereum/ts-scripts/relayer/config/testnet/contracts.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index 8296569d03..dd6e10b38f 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -1,6 +1,6 @@ { "description": "This file contains the addresses for the contracts on each chain. If useLastRun is true, this file will be ignored, and the addresses will be taken from the lastrun.json of the deployment scripts.", - "useLastRun": true, + "useLastRun": false, "deliveryProviders": [ { "address": "0xD1463B4fe86166768d2ff51B1A928beBB5c9f375", @@ -291,4 +291,4 @@ "chainId": 10005 } ] -} \ No newline at end of file +} From eac8ff6a9314ad60b8a070801f38a51c86806086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 25 Jan 2024 13:52:46 -0300 Subject: [PATCH 087/174] evm: adds batch update asset conversion buffer of `DeliveryProvider` --- .../configureDeliveryProvider.json | 77 +++++++++++++++++++ .../configureDeliveryProvider.ts | 40 +++++++++- 2 files changed, 116 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index bea4cf1bf4..52a581df78 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -258,6 +258,83 @@ "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], + "conversionBuffers": [ + { + "chainId": 2, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 4, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 5, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 6, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 10, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 13, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 14, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 16, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 23, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 24, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 30, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 10002, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 10003, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 10004, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 10005, + "buffer": 5, + "bufferDenominator": 100 + } + ], "supportedChains": [ { "chainId": 2, diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 2ab9e93499..8d1a1a8949 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -1,5 +1,5 @@ import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; -import { BigNumberish, utils, ContractReceipt } from 'ethers'; +import { BigNumber, BigNumberish, utils, ContractReceipt } from 'ethers'; import { init, ChainInfo, @@ -25,6 +25,7 @@ interface Config { pricingInfo: PricingInfo[]; deliveryGasOverheads: DeliveryGasOverhead[]; maximumBudgets: MaximumBudget[]; + conversionBuffers: AssetConversionBuffer[]; rewardAddresses: RewardAddress[]; supportedChains: SupportedChain[]; } @@ -45,6 +46,12 @@ interface MaximumBudget { updateMaximumBudget: BigNumberish; } +interface AssetConversionBuffer { + chainId: ChainId; + buffer: bigint; + bufferDenominator: bigint; +} + interface RewardAddress { chainId: ChainId; rewardAddress: string; @@ -114,6 +121,11 @@ function printUpdate(update: UpdateStruct, { chainId }: ChainInfo) { if (update.updateSupportedChain) { messages.push(` Supported chain update: ${update.isSupported}`); } + if (update.updateAssetConversionBuffer) { + const bufferDenominator = BigNumber.isBigNumber(update.bufferDenominator) ? update.bufferDenominator : BigNumber.from(update.bufferDenominator); + const buffer = BigNumber.isBigNumber(update.buffer) ? update.buffer : BigNumber.from(update.buffer); + messages.push(` Asset conversion buffer ratio: (${bufferDenominator.toBigInt()} / ${bufferDenominator.add(buffer).toBigInt()})`) + } console.log(messages.join("\n")); } @@ -151,6 +163,17 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); } + for (const conversionBuffer of config.conversionBuffers) { + console.log( + `Processing asset conversion buffer update for operating chain ${chain.chainId} and target chain ${conversionBuffer.chainId}` + ); + await processConversionBufferUpdate( + updates, + deliveryProvider, + conversionBuffer + ); + } + for (const targetChain of allChains) { console.log( `Processing targetChainAddress update for operating chain ${chain.chainId} and target chain ${targetChain.chainId}` @@ -266,6 +289,21 @@ async function processMaximumBudgetUpdate( } } +async function processConversionBufferUpdate( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + { chainId, buffer, bufferDenominator }: AssetConversionBuffer +) { + const currentBuffer = await deliveryProvider.assetConversionBuffer(chainId); + + if (BigInt(currentBuffer.buffer) !== buffer || BigInt(currentBuffer.bufferDenominator) !== bufferDenominator) { + const update = getUpdateConfig(updates, chainId); + update.updateAssetConversionBuffer = true; + update.buffer = buffer; + update.bufferDenominator = bufferDenominator; + } +} + async function processTargetChainAddressUpdate( updates: UpdateStruct[], deliveryProvider: DeliveryProvider, From c70a33a05d9f733bba7f9debde86bd2e20e6eecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 25 Jan 2024 13:53:32 -0300 Subject: [PATCH 088/174] evm: changes schema for contract verification tokens --- ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh | 2 +- ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh | 2 +- ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh index bb9deeeb00..47d06e9116 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh @@ -32,7 +32,7 @@ for chain in $chain_ids # These two are documented in `forge verify-contract` as accepted environment variables. # We need the token to be unquoted when passed to `forge verify-contract` - set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) # We're using the production profile for delivery providers on mainnet and testnet diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index 40c4a3df41..e6e4dbdb3a 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -38,7 +38,7 @@ for chain in $chain_ids set proxy_address (jq --raw-output ".deliveryProviderProxies[] | select(.chainId == $chain) | .address" $last_run_file) # We need the token to be unquoted when passed to `forge verify-contract` - set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) # if we dont have a scan token echo a warning and continue if test -z $scan_token diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index 387362244d..f5da0f0952 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -43,7 +43,7 @@ for chain in $chain_ids # These two are documented in `forge verify-contract` as accepted environment variables. # We need the token to be unquoted when passed to `forge verify-contract` - set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .token" $scan_tokens_file) + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) # We're using the production profile for delivery providers on mainnet and testnet From 3addc0c0a8fc9e66df5b5450db1c92a3001b639b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Jan 2024 09:43:52 -0300 Subject: [PATCH 089/174] evm: pins openzeppelin version with a commit hash --- ethereum/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethereum/Makefile b/ethereum/Makefile index 701c593fca..b709b2ce96 100644 --- a/ethereum/Makefile +++ b/ethereum/Makefile @@ -38,7 +38,8 @@ lib/forge-std: forge install foundry-rs/forge-std@v1.5.5 --no-git --no-commit lib/openzeppelin-contracts: - forge install openzeppelin/openzeppelin-contracts@v4.9.1 --no-git --no-commit + # This commit hash corresponds to tag v4.9.1 at the time of writing + forge install openzeppelin/openzeppelin-contracts@281550b71c3df9a83e6b80ceefc700852c287570 --no-git --no-commit dependencies: node_modules forge_dependencies From a579d52cb0859a5e57aa85540b2355ebd3a1722f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Jan 2024 09:51:38 -0300 Subject: [PATCH 090/174] evm: adds a sample json for the verification API tokens --- ethereum/verification-tokens.sample.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 ethereum/verification-tokens.sample.json diff --git a/ethereum/verification-tokens.sample.json b/ethereum/verification-tokens.sample.json new file mode 100644 index 0000000000..08446229f7 --- /dev/null +++ b/ethereum/verification-tokens.sample.json @@ -0,0 +1,16 @@ +[ + {"chainId": 2, "etherscan": "eth token", "blockscout":{"mainnet": "eth token 2", "testnet": "eth token 3"}}, + {"chainId": 4, "etherscan": "bsc token"}, + {"chainId": 5, "etherscan": "polygon token"}, + {"chainId": 6, "etherscan": "avalanche token"}, + {"chainId": 10, "etherscan": "fantom token"}, + {"chainId": 14, "etherscan": "celo token"}, + {"chainId": 16, "etherscan": "moonbeam token"}, + {"chainId": 23, "etherscan": "arbitrum token"}, + {"chainId": 24, "etherscan": "optimism token", "blockscout": {"mainnet": "optimism token 2"}}, + {"chainId": 30, "etherscan": "base token", "blockscout": {"mainnet": "base token 2"}}, + {"chainId": 10002, "etherscan": "eth token"}, + {"chainId": 10003, "etherscan": "arbitrum token"}, + {"chainId": 10004, "etherscan": "base token"}, + {"chainId": 10005, "etherscan": "optimism token"} +] From 2beb866a89c507b612c946cadf3b5fb621754221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Jan 2024 12:10:07 -0300 Subject: [PATCH 091/174] evm: adds supportedKeys update to GR configuration script --- .../configureDeliveryProvider.ts | 135 ++++++++++++------ 1 file changed, 93 insertions(+), 42 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 8d1a1a8949..bbb00a58de 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -20,6 +20,7 @@ type AwaitedProperties = { [K in keyof T]: Awaited; }; type UpdateStruct = AwaitedProperties; +type CoreConfigStruct = AwaitedProperties; interface Config { pricingInfo: PricingInfo[]; @@ -28,6 +29,7 @@ interface Config { conversionBuffers: AssetConversionBuffer[]; rewardAddresses: RewardAddress[]; supportedChains: SupportedChain[]; + supportedKeysByChain: SupportedKeys[]; } interface PricingInfo { @@ -52,6 +54,11 @@ interface AssetConversionBuffer { bufferDenominator: bigint; } +interface SupportedKeys { + chainId: ChainId; + supportedKeys: number[]; +} + interface RewardAddress { chainId: ChainId; rewardAddress: string; @@ -89,42 +96,54 @@ async function run() { // Note that we assume that this update element was added because // some modification was requested to the contract. // This depends on the behaviour of the process functions. - for (const update of result.value?.updates || []) { - if (result.value?.chain) { - printUpdate(update, result.value.chain); - } - } + printUpdate(result.value.updates, result.value.coreConfig, result.value.chain); } } } -function printUpdate(update: UpdateStruct, { chainId }: ChainInfo) { - let messages = [ - `Updates for operating chain ${chainId} and target chain ${update.chainId}:`, - ]; - if (update.updatePrice) { - const assetPrice = utils.formatUnits(update.nativeCurrencyPrice, 6); - const gasPrice = utils.formatUnits(update.gasPrice, "gwei"); - messages.push(` Asset price update: $${assetPrice}`); - messages.push(` Gas price update: ${gasPrice} gwei`); - } - if (update.updateDeliverGasOverhead) { - messages.push(` Deliver gas overhead update: ${update.newGasOverhead}`); - } - if (update.updateMaximumBudget) { - const maximumBudget = utils.formatEther(update.maximumTotalBudget); - messages.push(` Maximum budget update: ${maximumBudget}`); +function printUpdate(updates: UpdateStruct[], coreConfig: CoreConfigStruct, { chainId }: ChainInfo) { + const messages: string[] = []; + + if (coreConfig.updateRewardAddress || coreConfig.updateSupportedKeyTypes) { + messages.push(`Core configuration updates for operating chain ${chainId}:`); } - if (update.updateTargetChainAddress) { - messages.push(` Target chain address update: ${update.targetChainAddress}`); + if (coreConfig.updateRewardAddress) { + messages.push(` Reward address: ${coreConfig.rewardAddress}`); } - if (update.updateSupportedChain) { - messages.push(` Supported chain update: ${update.isSupported}`); + if (coreConfig.updateSupportedKeyTypes) { + const bitmap = BigNumber.isBigNumber(coreConfig.supportedKeyTypesBitmap) + ? coreConfig.supportedKeyTypesBitmap.toBigInt() + : BigNumber.from(coreConfig.supportedKeyTypesBitmap).toBigInt(); + const supportedKeys = extractKeys(bitmap); + messages.push(` Supported key types: [${supportedKeys.join(", ")}]`); } - if (update.updateAssetConversionBuffer) { - const bufferDenominator = BigNumber.isBigNumber(update.bufferDenominator) ? update.bufferDenominator : BigNumber.from(update.bufferDenominator); - const buffer = BigNumber.isBigNumber(update.buffer) ? update.buffer : BigNumber.from(update.buffer); - messages.push(` Asset conversion buffer ratio: (${bufferDenominator.toBigInt()} / ${bufferDenominator.add(buffer).toBigInt()})`) + + for (const update of updates) { + messages.push(`Updates for operating chain ${chainId} and target chain ${update.chainId}:`); + if (update.updatePrice) { + const assetPrice = utils.formatUnits(update.nativeCurrencyPrice, 6); + const gasPrice = utils.formatUnits(update.gasPrice, "gwei"); + messages.push(` Asset price update: $${assetPrice}`); + messages.push(` Gas price update: ${gasPrice} gwei`); + } + if (update.updateDeliverGasOverhead) { + messages.push(` Deliver gas overhead update: ${update.newGasOverhead}`); + } + if (update.updateMaximumBudget) { + const maximumBudget = utils.formatEther(update.maximumTotalBudget); + messages.push(` Maximum budget update: ${maximumBudget}`); + } + if (update.updateTargetChainAddress) { + messages.push(` Target chain address update: ${update.targetChainAddress}`); + } + if (update.updateSupportedChain) { + messages.push(` Supported chain update: ${update.isSupported}`); + } + if (update.updateAssetConversionBuffer) { + const bufferDenominator = BigNumber.isBigNumber(update.bufferDenominator) ? update.bufferDenominator : BigNumber.from(update.bufferDenominator); + const buffer = BigNumber.isBigNumber(update.buffer) ? update.buffer : BigNumber.from(update.buffer); + messages.push(` Asset conversion buffer ratio: (${bufferDenominator.toBigInt()} / ${bufferDenominator.add(buffer).toBigInt()})`) + } } console.log(messages.join("\n")); @@ -200,6 +219,7 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI const coreConfig = await processCoreConfigUpdates( config.rewardAddresses, + config.supportedKeysByChain, deliveryProvider, chain, ); @@ -209,9 +229,10 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI chain ); - if (!updates.length) { + // `coreConfig.updateWormholeRelayer` is an obsolete configuration parameter so we ignore it here. + if (updates.length === 0 && !coreConfig.updateRewardAddress && !coreConfig.updateSupportedKeyTypes) { console.log(`No updates for operating chain ${chain.chainId}`); - return { updates, chain }; + return { updates, coreConfig, chain }; } console.log(`Sending update tx for operating chain ${chain.chainId}. Updates: ${JSON.stringify(updates)}`); @@ -225,7 +246,7 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); receipt = await tx.wait(); } catch (error) { - console.log( + console.error( `Updates failed on operating chain ${chain.chainId}. Error: ${error}` ); throw error; @@ -237,7 +258,7 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); } - return { updates, chain }; + return { updates, coreConfig, chain }; } async function processPriceUpdate( @@ -336,10 +357,11 @@ async function processSupportedChainUpdate( async function processCoreConfigUpdates( rewardAddresses: RewardAddress[], + supportedKeysByChain: SupportedKeys[], deliveryProvider: DeliveryProvider, chain: ChainInfo, ) { - const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { + const coreConfig: CoreConfigStruct = { updateRewardAddress: false, updateWormholeRelayer: false, updateSupportedKeyTypes: false, @@ -352,17 +374,27 @@ async function processCoreConfigUpdates( return element.chainId === chain.chainId; })?.rewardAddress; - if (!rewardAddress) { - throw new Error( - "Failed to find reward address info for chain " + chain.chainId - ); + if (rewardAddress !== undefined) { + const currentRewardAddress = await deliveryProvider.rewardAddress(); + + if (currentRewardAddress !== rewardAddress) { + coreConfig.updateRewardAddress = true; + coreConfig.rewardAddress = rewardAddress; + } } - const currentRewardAddress = await deliveryProvider.rewardAddress(); + const supportedKeys = supportedKeysByChain.find((element) => { + return element.chainId === chain.chainId; + })?.supportedKeys; + + if (supportedKeys !== undefined) { + const currentSupportedKeys = await deliveryProvider.getSupportedKeys(); + const newSupportedKeys = generateBitmap(supportedKeys); - if (currentRewardAddress !== rewardAddress) { - coreConfig.updateRewardAddress = true; - coreConfig.rewardAddress = rewardAddress; + if (currentSupportedKeys.toBigInt() !== newSupportedKeys) { + coreConfig.updateSupportedKeyTypes = true; + coreConfig.supportedKeyTypesBitmap = newSupportedKeys; + } } return coreConfig; @@ -404,4 +436,23 @@ function createEmptyUpdateConfig(chainId: ChainId): UpdateStruct { }; } +// We assume the bitmap is 256 bits wide which is accurate at the time of writing. +function extractKeys(bitmap: bigint): bigint[] { + const keys = []; + for (let i = 0n; i < 256n; ++i) { + if ((bitmap & (1n << i)) > 0n) { + keys.push(i); + } + } + return keys; +} + +function generateBitmap(keys: number[]): bigint { + let bitmap = 0n; + for (const key of keys) { + bitmap |= 1n << BigInt(key); + } + return bitmap; +} + run().then(() => console.log(`Done! ${processName}`)); From 3b84b326e774f6693445b866c7d8215cc3fac0c9 Mon Sep 17 00:00:00 2001 From: solanoe Date: Mon, 4 Dec 2023 13:52:40 -0300 Subject: [PATCH 092/174] add AssetConversionBuffer support to configure delivery provider script --- .../configureDeliveryProvider.ts | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index bbb00a58de..15e0b8ee29 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -144,6 +144,17 @@ function printUpdate(updates: UpdateStruct[], coreConfig: CoreConfigStruct, { ch const buffer = BigNumber.isBigNumber(update.buffer) ? update.buffer : BigNumber.from(update.buffer); messages.push(` Asset conversion buffer ratio: (${bufferDenominator.toBigInt()} / ${bufferDenominator.add(buffer).toBigInt()})`) } + if (update.updateSupportedChain) { + messages.push(` Supported chain update: ${update.isSupported}`); + } + if (update.updateTargetChainAddress) { + messages.push(` Target chain address update: ${utils.hexlify(update.targetChainAddress)}`); + } + if (update.updateAssetConversionBuffer) { + messages.push(` Asset conversion buffer update:`); + messages.push(` buffer: ${update.buffer}`); + messages.push(` buffer denominator: ${update.bufferDenominator}`); + } } console.log(messages.join("\n")); @@ -217,6 +228,18 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); } + for (const conversionBufferConfig of config.conversionBuffers) { + console.log( + `Processing supported chain update for operating chain ${chain.chainId} and target chain ${conversionBufferConfig.chainId}` + ); + + await processAssetConversionBufferUpdates( + updates, + deliveryProvider, + conversionBufferConfig, + ); + } + const coreConfig = await processCoreConfigUpdates( config.rewardAddresses, config.supportedKeysByChain, @@ -302,7 +325,6 @@ async function processMaximumBudgetUpdate( { chainId, updateMaximumBudget }: MaximumBudget ) { const currentMaximumBudget = await deliveryProvider.maximumBudget(chainId); - if (!currentMaximumBudget.eq(updateMaximumBudget)) { const update = getUpdateConfig(updates, chainId); update.updateMaximumBudget = true; @@ -400,6 +422,26 @@ async function processCoreConfigUpdates( return coreConfig; } +async function processAssetConversionBufferUpdates( + updates: UpdateStruct[], + deliveryProvider: DeliveryProvider, + conversionBufferConfig: AssetConversionBuffer, +) { + const { chainId, buffer, bufferDenominator } = conversionBufferConfig; + const update = getUpdateConfig(updates, chainId); + + const { + buffer: currentBuffer, + bufferDenominator: currentBufferDenominator + } = await deliveryProvider.assetConversionBuffer(chainId); + + if (buffer !== BigInt(currentBuffer) || bufferDenominator !== BigInt(currentBufferDenominator)) { + update.updateAssetConversionBuffer = true; + update.buffer = buffer; + update.bufferDenominator = bufferDenominator; + } +} + function getUpdateConfig( updates: UpdateStruct[], chainId: ChainId From d03a4106f95feb2b041f423741bd92c8f8989fa4 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 1 Feb 2024 18:50:53 -0300 Subject: [PATCH 093/174] commiting last price config --- .../configureDeliveryProvider.json | 56 +-- .../relayer/config/testnet/chains.json | 1 + .../configureDeliveryProvider.json | 358 +++--------------- 3 files changed, 88 insertions(+), 327 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index db3e37fb2a..ee3868f597 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -3,57 +3,57 @@ { "chainId": 2, "updatePriceGas": "45000000000", - "updatePriceNative": "2427660000" + "updatePriceNative": "2288380000" }, { "chainId": 4, "updatePriceGas": "3000000000", - "updatePriceNative": "307730000" + "updatePriceNative": "300730000" }, { "chainId": 5, - "updatePriceGas": "350000000000", - "updatePriceNative": "779300" + "updatePriceGas": "250000000000", + "updatePriceNative": "789900" }, { "chainId": 6, "updatePriceGas": "30000000000", - "updatePriceNative": "32730000" + "updatePriceNative": "34410000" }, { "chainId": 10, - "updatePriceGas": "100000000000", - "updatePriceNative": "360700" + "updatePriceGas": "30000000000", + "updatePriceNative": "357400" }, { "chainId": 13, - "updatePriceGas": "25000000000", - "updatePriceNative": "201900" + "updatePriceGas": "45000000000", + "updatePriceNative": "193100" }, { "chainId": 14, - "updatePriceGas": "13000000000", - "updatePriceNative": "666900" + "updatePriceGas": "10000000000", + "updatePriceNative": "677600" }, { "chainId": 16, "updatePriceGas": "1000000000000", - "updatePriceNative": "372100" + "updatePriceNative": "666400" }, { "chainId": 23, "updatePriceGas": "1200000", - "updatePriceNative": "2427660000" + "updatePriceNative": "2288380000" }, { "chainId": 24, "updatePriceGas": "1200000", - "updatePriceNative": "2427660000" + "updatePriceNative": "2288380000" }, { "chainId": 30, "updatePriceGas": "1200000", - "updatePriceNative": "2427660000" + "updatePriceNative": "2288380000" } ], "deliveryGasOverheads": [ @@ -91,15 +91,15 @@ }, { "chainId": 23, - "updateGasOverhead": "1029798242" + "updateGasOverhead": "1130684516" }, { "chainId": 24, - "updateGasOverhead": "1373064323" + "updateGasOverhead": "1507579355" }, { "chainId": 30, - "updateGasOverhead": "1373064323" + "updateGasOverhead": "1507579355" } ], "maximumBudgets": [ @@ -109,43 +109,43 @@ }, { "chainId": 4, - "updateMaximumBudget": "649920384752868000" + "updateMaximumBudget": "665048382269810000" }, { "chainId": 5, - "updateMaximumBudget": "256640574874888000000" + "updateMaximumBudget": "253196607165464000000" }, { "chainId": 6, - "updateMaximumBudget": "6110601894286590000" + "updateMaximumBudget": "5812263876780010000" }, { "chainId": 10, - "updateMaximumBudget": "554477405045744000000" + "updateMaximumBudget": "559597090095132000000" }, { "chainId": 13, - "updateMaximumBudget": "990589400693413000000" + "updateMaximumBudget": "1035732780942520000000" }, { "chainId": 14, - "updateMaximumBudget": "299895036737142000000" + "updateMaximumBudget": "295159386068477000000" }, { "chainId": 16, - "updateMaximumBudget": "537489922063961000000" + "updateMaximumBudget": "300120048019208000000" }, { "chainId": 23, - "updateMaximumBudget": "82383859354275300" + "updateMaximumBudget": "87398071998531700" }, { "chainId": 24, - "updateMaximumBudget": "82383859354275300" + "updateMaximumBudget": "87398071998531700" }, { "chainId": 30, - "updateMaximumBudget": "82383859354275300" + "updateMaximumBudget": "87398071998531700" } ], "rewardAddresses": [ diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 6f31123ffa..6b0ecfa347 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -1,6 +1,7 @@ { "guardianSetIndex": 0, "description": "This file contains the chains against which all the scripts should run.", + "useLastRun": true, "chains": [ { "description": "Ethereum Goerli", diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 52a581df78..80787a45c1 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -1,202 +1,5 @@ { - "pricingInfo": [ - { - "chainId": 2, - "updatePriceGas": "20000000000", - "updatePriceNative": "2000000" - }, - { - "chainId": 4, - "updatePriceGas": "3000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 5, - "updatePriceGas": "219000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 6, - "updatePriceGas": "30000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 10, - "updatePriceGas": "800000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 13, - "updatePriceGas": "25000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 14, - "updatePriceGas": "10000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 16, - "updatePriceGas": "160000000000", - "updatePriceNative": "1000000" - }, - { - "chainId": 23, - "updatePriceGas": "1200000", - "updatePriceNative": "2000000" - }, - { - "chainId": 24, - "updatePriceGas": "1200000", - "updatePriceNative": "2000000" - }, - { - "chainId": 30, - "updatePriceGas": "1200000", - "updatePriceNative": "2000000" - }, - { - "chainId": 10002, - "updatePriceGas": "20000000000", - "updatePriceNative": "2000000" - }, - { - "chainId": 10003, - "updatePriceGas": "20000000000", - "updatePriceNative": "2000000" - }, - { - "chainId": 10004, - "updatePriceGas": "20000000000", - "updatePriceNative": "2000000" - }, - { - "chainId": 10005, - "updatePriceGas": "20000000000", - "updatePriceNative": "2000000" - } - ], - "deliveryGasOverheads": [ - { - "chainId": 2, - "updateGasOverhead": "500000" - }, - { - "chainId": 4, - "updateGasOverhead": "500000" - }, - { - "chainId": 5, - "updateGasOverhead": "500000" - }, - { - "chainId": 6, - "updateGasOverhead": "500000" - }, - { - "chainId": 10, - "updateGasOverhead": "500000" - }, - { - "chainId": 13, - "updateGasOverhead": "500000" - }, - { - "chainId": 14, - "updateGasOverhead": "500000" - }, - { - "chainId": 16, - "updateGasOverhead": "500000" - }, - { - "chainId": 23, - "updateGasOverhead": "500000" - }, - { - "chainId": 24, - "updateGasOverhead": "500000" - }, - { - "chainId": 10002, - "updateGasOverhead": "500000" - }, - { - "chainId": 10003, - "updateGasOverhead": "500000" - }, - { - "chainId": 10004, - "updateGasOverhead": "500000" - }, - { - "chainId": 10005, - "updateGasOverhead": "500000" - } - ], - "maximumBudgets": [ - { - "chainId": 2, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 4, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 5, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 6, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 10, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 13, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 14, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 16, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 23, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 24, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 30, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 10002, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 10003, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 10004, - "updateMaximumBudget": "13262599470000000000" - }, - { - "chainId": 10005, - "updateMaximumBudget": "13262599470000000000" - } - ], - "rewardAddresses": [ + "addresses": [ { "chainId": 2, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" @@ -217,10 +20,6 @@ "chainId": 10, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, - { - "chainId": 13, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" - }, { "chainId": 14, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" @@ -258,143 +57,104 @@ "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], - "conversionBuffers": [ - { - "chainId": 2, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 4, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 5, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 6, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 10, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 13, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 14, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 16, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 23, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 24, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 30, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 10002, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 10003, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 10004, - "buffer": 5, - "bufferDenominator": 100 - }, - { - "chainId": 10005, - "buffer": 5, - "bufferDenominator": 100 - } - ], - "supportedChains": [ + "pricingInfo": [ { "chainId": 2, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 4, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" }, { "chainId": 5, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "7322000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" }, { "chainId": 6, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" }, { "chainId": 10, - "isSupported": true - }, - { - "chainId": 13, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "3000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 14, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" }, { "chainId": 16, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "10000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" }, { "chainId": 23, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 24, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 30, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 10002, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 10003, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 10004, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" }, { "chainId": 10005, - "isSupported": true + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" } ] -} +} \ No newline at end of file From 5c036365f8eae309cf8dc767a6f62186a63a4ff6 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 1 Feb 2024 20:29:48 -0300 Subject: [PATCH 094/174] adds configure delivery provider price assistant script --- ...nfigureDeliveryProviderPriceAssistant.json | 48 +++++++ ...nfigureDeliveryProviderPriceAssistant.json | 64 +++++++++ ...configureDeliveryProviderPriceAssistant.ts | 128 ++++++++++++++++++ .../ts-scripts/relayer/helpers/deployments.ts | 2 +- 4 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json create mode 100644 ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json create mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json new file mode 100644 index 0000000000..73865df9b3 --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json @@ -0,0 +1,48 @@ +{ + "priceAssistantAddress": [ + { + "chainId": 2, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 4, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 5, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 6, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 10, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 13, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 14, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 16, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 23, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 24, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 30, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + } + ] +} diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json new file mode 100644 index 0000000000..ff6b4cf51e --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json @@ -0,0 +1,64 @@ +{ + "priceAssistantAddress": [ + { + "chainId": 2, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 4, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 5, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 6, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 10, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 13, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 14, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 16, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 23, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 24, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 30, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 10002, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 10003, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 10004, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + }, + { + "chainId": 10005, + "address": "0xf11Fe617EED60945cBd867Ec98D81268F3891a18" + } + ] +} diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts new file mode 100644 index 0000000000..c87ff73bda --- /dev/null +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts @@ -0,0 +1,128 @@ +import { ChainId } from "@certusone/wormhole-sdk"; +import { + init, + ChainInfo, + loadScriptConfig, + getDeliveryProvider, + getOperatingChains, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; + +import type { DeliveryProvider } from "../../../ethers-contracts/DeliveryProvider"; + +type PricingWalletAction = { + shouldUpdate: boolean; + address: string; + chainId: ChainId; +} + +interface Config { + priceAssistantAddress: PricingWalletConfig[]; +} + +interface PricingWalletConfig { + chainId: ChainId; + address: string; +} + +const processName = "configureDeliveryProviderPriceAssistant"; +init(); +const operatingChains = getOperatingChains(); +const config: Config = loadScriptConfig(processName); + +async function run() { + console.log(`Start! ${processName}`); + + const updateTasks = operatingChains.map((chain) => + updateDeliveryProviderConfiguration(config, chain)); + + const results = await Promise.allSettled(updateTasks); + for (const result of results) { + if (result.status === "rejected") { + console.log( + `Updates processing failed: ${result.reason?.stack || result.reason}` + ); + } else { + // Print update details; this reflects the exact updates requested to the contract. + // Note that we assume that this update element was added because + // some modification was requested to the contract. + // This depends on the behaviour of the process functions. + + printUpdate(result.value); + } + } +} + +function printUpdate(update: PricingWalletAction) { + let messages = [ + `Updates for operating chain ${update.chainId}:`, + ]; + messages.push(` Should've updated: ${update.shouldUpdate}`); + messages.push(` Pricing Address: ${update.address}`); + + console.log(messages.join("\n")); +} + +async function updateDeliveryProviderConfiguration(config: Config, chain: ChainInfo) { + const deliveryProvider = await getDeliveryProvider(chain); + + const pricingWalletConfig = config.priceAssistantAddress.find( + (element) => element.chainId === chain.chainId + ); + + if (!pricingWalletConfig) { + throw new Error( + `Failed to find price assistant address for chain ${chain.chainId}` + ); + } + + console.log( + `Processing price assistant address update on chain ${pricingWalletConfig.chainId}` + ); + + const update = await processPricingWalletUpdate(deliveryProvider, pricingWalletConfig); + + if (update.shouldUpdate) { + const overrides = await buildOverrides( + () => deliveryProvider.estimateGas.updatePricingWallet(update.address), + chain + ); + + await deliveryProvider.updatePricingWallet(update.address, overrides); + + + let receipt; + try { + const tx = await deliveryProvider.updatePricingWallet( + update.address, + overrides + ); + receipt = await tx.wait(); + } catch (error) { + console.log( + `Updates failed on operating chain ${chain.chainId}. Error: ${error}` + ); + throw error; + } + + if (receipt.status !== 1) { + const err = new Error( + `Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}` + ); + } + } + + return update; +} + +async function processPricingWalletUpdate( + deliveryProvider: DeliveryProvider, + { address, chainId }: PricingWalletConfig +) { + const currentPricingWallet = await deliveryProvider.pricingWallet(); + const shouldUpdate = currentPricingWallet.toLowerCase() !== address.toLowerCase(); + + return { shouldUpdate, address, chainId }; +} + +run().then(() => console.log(`Done! ${processName}`)); diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 7fa6f90af4..16fb11220c 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -265,7 +265,7 @@ export async function buildOverrides( // This is normally autodetected in bsc but we want to set the gas price to a fixed value. // We need to ensure we are using the correct tx envelope in that case. overrides.type = 0; - overrides.gasPrice = ethers.utils.parseUnits("3", "gwei"); + overrides.gasPrice = ethers.utils.parseUnits("15", "gwei"); } else if (chain.chainId === 23) { // Arbitrum gas price feeds are excessive on public endpoints too apparently. overrides.type = 2; From c92aecc50fa94802daf0cb899cd86f0cf4194072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Apr 2024 16:42:51 -0300 Subject: [PATCH 095/174] evm: improves `MockIntegration` deployment script --- .../mockIntegration/deployMockIntegration.ts | 97 ++++++++++++------- 1 file changed, 63 insertions(+), 34 deletions(-) diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 67d35291f8..17aabd683b 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -1,21 +1,20 @@ import { init, - loadChains, writeOutputFiles, - getMockIntegration, Deployment, - loadLastRun, getOperationDescriptor, - getMockIntegrationAddress, + loadMockIntegrations, + getChain, + getSigner, } from "../helpers/env"; -import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; -import type { BigNumberish, BytesLike } from "ethers"; import { tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; import { wait } from "../helpers/utils"; +import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; +import { MockRelayerIntegration__factory } from "../../../ethers-contracts"; const processName = "deployMockIntegration"; init(); -const chains = loadChains(); const operation = getOperationDescriptor(); interface MockIntegrationDeployment { @@ -25,38 +24,68 @@ interface MockIntegrationDeployment { async function run() { console.log("Start!"); - const lastRun: MockIntegrationDeployment | undefined = - loadLastRun(processName); - const output = { - mockIntegrations: lastRun?.mockIntegrations?.filter(isSupportedChain) || [], - }; + const oldDeployments = loadMockIntegrations().filter(isSupportedChain); + const newDeployments: Deployment[] = []; - for (const chain of operation.operatingChains) { - const mockIntegration = await deployMockIntegration(chain); - output.mockIntegrations.push(mockIntegration); + // TODO: deploy only on chains missing deployment + const deploymentTasks = await Promise.allSettled(operation.operatingChains.map(async (chain) => { + return deployMockIntegration(chain); + })); + + for (const task of deploymentTasks) { + if (task.status === "rejected") { + // These get discarded and need to be retried later with a separate invocation. + console.log(task.reason?.stack || task.reason); + } else { + newDeployments.push(task.value); + } } + const output = { + mockIntegrations: oldDeployments.concat(newDeployments), + } satisfies MockIntegrationDeployment; writeOutputFiles(output, processName); - for (const chain of operation.operatingChains) { - console.log(`Registering emitters for chainId ${chain.chainId}`); - // note: must use useLastRun = true - const mockIntegration = await getMockIntegration(chain); - - const emitters: { - chainId: BigNumberish; - addr: BytesLike; - }[] = chains.map((c) => ({ - chainId: c.chainId, - addr: - "0x" + tryNativeToHexString(getMockIntegrationAddress(c), "ethereum"), - })); - - const overrides = await buildOverrides( - () => mockIntegration.estimateGas.registerEmitters(emitters), - chain, - ); - await mockIntegration.registerEmitters(emitters, overrides).then(wait); + const emitters = output.mockIntegrations.map(({address, chainId}) => ({ + chainId, + addr: "0x" + tryNativeToHexString(address, "ethereum"), + })) satisfies XAddressStruct[]; + + const registerTasks = await Promise.allSettled(output.mockIntegrations.map(async ({chainId, address}) => { + console.log(`Registering emitters for chainId ${chainId}`); + const chain = getChain(chainId); + + // Loading this way would necessitate having last run enabled and we don't want that. + // const mockIntegration = await getMockIntegration(chain); + const signer = await getSigner(chain); + const mockIntegration = MockRelayerIntegration__factory.connect(address, signer); + + const updateEmitters: typeof emitters = []; + for (const emitter of emitters) { + const currentEmitter = await mockIntegration.getRegisteredContract(emitter.chainId); + if (currentEmitter.toLowerCase() !== emitter.addr.toLowerCase()) { + updateEmitters.push(emitter); + } + } + + if (updateEmitters.length > 0) { + const overrides = await buildOverrides( + () => mockIntegration.estimateGas.registerEmitters(emitters), + chain, + ); + const receipt = await mockIntegration.registerEmitters(emitters, overrides).then(wait); + + if (receipt.status !== 1) { + throw new Error(`Mock integration emitter registration failed for chain ${chainId}, tx id ${receipt.transactionHash}`); + } + } + })); + + for (const task of registerTasks) { + if (task.status === "rejected") { + // These get discarded and need to be retried later with a separate invocation. + console.log(task.reason?.stack || task.reason); + } } } From ae2a0cd01832542e2834d6ad542c02079047ef75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Apr 2024 16:43:26 -0300 Subject: [PATCH 096/174] evm: updates SR registration VAAs to guardian set 4. --- .../registerChainsWormholeRelayer.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts index f80e01eb2c..ad7b89910e 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts @@ -26,17 +26,17 @@ const zeroBytes32 = * These are the registration VAAs for mainnet. */ const base64RegistrationVaas = [ - "AQAAAAMNAD854pKAyzQP3qbpHeNRVc4R+sSdpZHPfv1h8S9NP0ZmPXxFdeyDDDXBzBkBenniju3B0Q/P/0WVsdu/yQR9VZkBA7uRv48zdi7msHq7MRnEunSNCSv6/ofTYNuWLZnJZGKSCrtObQdunVSur+jexWOxkwpDBeKzlhzTY7wgO+BknycABSRe+D5mP7xunLPyye675E6sL25YRME2EDM9ZDQMfkQHYR9OEdZ26Xc1AvbKbAcJdSl89vNy3OCHXeP4uoC0j1gBBpbqctsY3kMLXAcbsJ1R1T0DGXozsd8HEbX4WRSd3PxzWMhFc6dRizcZtn7AH6BxQN2nJBsIeAfB1FSMGHZVnSgBCG+yBj9JvDPR8l7hOsMcuyoLpUD0Gd8c0DyR0K646X1eb+rj2kNiiXUxQoGQqLRYwyfiVgFqtqxizBsekxIluu4BCYv+nbZtXVDrYXcUPo2xsjIAxncmbwKsLRwEuQ7podG0dqn0+TdSVV6GpU4vW7ZmhmMQ+PWHNWxZQhiq9B0g+84BCrZhIetb+PQy4a4yu5iN18M9SC/k1jq+E4bTjN3a4MA5ZNeS8nBDCbzqrgwbMi5GqmUcbio8JhGQPN28hzY73HUADLIrgXKpCr8Uqu5agLuXOAJ1eY4fiUeb5QtUtFSeL8u/KFr47XMJmMqpNhLaxOgO/zbqgulFZy5GEo16vhLBk2oADU7wpNQuK+ZI62vTfWGEwSOrCjHdgElwQWly5b4/vWoARNnS3WSkMMypURD/NvLzY/qQoM61JPIptGyqhfmxi8QADg3bIzgJU+q6BbjUk/IZOGDxAHmi/2/8AL0R25TiK18OGrO/RReXKgqi1+0YVRIx4IPkjMwH6NZO0g+7bVcVG4IAEIpYXVlg2VpQ+c1sjKS4rnpwtFSaBSdx7f8aDDpAnqXNKG6ubFPrKAA4YFOE0FHgTowsUxwPhxPjalxNcaBEpAsAEfo82Vdl1ku9wHAAjDER/69GradeTcOWB8ZDtUfD9w1CPw9O4q5dftQ2GGmJbcsBI2igqVhogcV5qHdyj9dh9ToBEkR+W5flNBxf8ukcCrqLSMqYXzaZkvAPsX/cnA9ldrk8a+rzpE3+iXLfHyjE7aczanlV5tM6TMHhwyStRd5y1W4AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKggAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAAgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAC4Khc78ncNOrZVxtF6aKWxY2MQ8QnLvXlDI0dA2foKKN7xEBVlgtVQux5tQgcLeIprnpVVdQJI1eS4836w9SVIBAwlBxz/Bc9Lxv6gQoUHbI0Pz1P9CDFb/CTVLJxi1uqSIeSIgjpCX8Z9mB9i3m/x61GnUus0/YK6Vif2tI4qh2VMBBR2ltDAXis/eYJHUz9g2kmCXvihi4wuW2J0D+da5vBqDGcgUyRhtMKVk23kBNuJCKb5sIaEVUY+y4Kfz9QU3ccQBBhbb5RwfEgcX9lItcs+F5CMV1l3QSfzp5pFljRoOPZjIZccdb8XPdoKZHEdrta3kBI1x486Bul+iYy29F6NSJg8BCPvTdyW8MuXpqHLwR3vjRu0wKv1F2bDlckNHrcDNFCwCDxNHcHJ8nVf/+iSZgMNofMmNYhlgZMMN96cUfwfOOvYACfaiG2OzyMGPlrX/cSVtXtD2MN6Q7mXuva9rWRa01v2ydtff2uXgX/UqL3e4gBy8sfuYjGtK3N3Zqu8ueIR1APEBCrwnhFkN5XHwi/MAPs1QpWQwM3bA2noUURgVMCK+RE2UAjgUfKVL9l8sMSOJ9Wi6gLDFR0E6j7UnRS8JMg8jNH8ADOaxfnB/eVg98oN87GzwX10/cLmfBO9sOlTVXncPKspKeNqHRGwRuzn/uuvTJNezaZRASUV7vJclbdewamEScmMBDULIbOMpTiyuUwTZSusw3kxoZhLQkPQZmK+KFHP6tPpgVXkwggEYNRC6VmAvLbujaUlZ4FLg0uyXPxJzCFF4mLoBDhE6OMIZ67mQxb8VybFVu0W8x3O1PbwsP8rIZqsA4PK+YeOWK5niW75f7+Kwr1/eAB41px4YVrNptaF508CoJrIBEOqec42IPcihlMnxgKESPCSWvoJngEfWIgYAZX33eyj9HsU995vEdIevEWBw7USlirhuBQMIksIQc0LbpfdC6zkAEXWcbYwl7T9KYLfDBHPO8S8WUiMe5eLZjvwp/+MpCm7zf77gIbDc3b+/ERBModlFHT7UVYFoIeLAiVOOfWBeCjgAEqB8ci9Em4Y9mW8VGF76H7WwVr5tQEyOeTSS7bVzY3Lyep7mfntJmOgc7l9FYmmE2AG4HvfryYDN4ZWaSLGtV8cAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKkgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAE6Q36mQROR7Vk7srbLGWFgwZKxWba93KGdhaEzGh+nWUXPMqGthiMJ3hHhGaBrhG9vxuWauZRgMfYeP9IE1z6AAA/EAYYyE/1bqSfVjtDK60HY1D658/Ps97JJUCAPYTqk7XaTH+nvX7DY7m2EtzafP7J++vbzlF9wwkD8TwuxcsU4BBc5x0uWU82yvJ+i3aSYeWbkenlf6FiBcbTdQdGFQiJF+BRMPJPG/lIQxvLAlrsvyTc8oYpejACw36+cqy1wkMMYBBoRFxlvvrUVvHMQnyAsiQ7I3AMFSr8YLKYzPXSQmG9nuFie8QKpSe8Z96R3hTMDfstmbnsCNMaeuPhrO8f8irL8ACJkeyW80eyQncOl4pkc9qMgrFNy5pczAXd5LzxEl49lIHCXxiNB+Hk5oqRbNeash9BpUM9d5Zg0VgI5sFyxVrM0ACUJeXz9xrwpuvtG7A3WQMZutJg4uvYuIm8ZPeC5ZR5KlKHTBlzz2m3byCjMxf6jxbpgq/IX+FHunQr4SItlC3PgACssbY/Gk8wcC4riD7syASLqRs4oJ//7TMpmw5a6r4J94Cfyl91/GpAIrkCvnyveToY0Tca7LPZvw19J2QHd7LNcADLbyUAzjUScqHYdOLJUWxWbNhXAocuK4sPoJxUoPA9vNJ8Hss2faHc4Ea07q6pIvn/FyiGrk5QeZJI9Ygh5UP20ADSwwdEPIMpscnkVjNCU8YEtdbB1/Xc1EBtnYxO0Ti3L0ef8vQSpBR089YZpByL8haJi46KF9PNcnXmkpvMIhuEgBDnm1dbR5XG08zK7zecL1M95ibfmoelI4nzj6w/XXe1eqMXqu+kOGqshmOKnhnNDcvZL58If+1UyeKMu363zHW4QBEI1j+IArF9KuA6E4wSOwajvl++09R4Zy3FAJprbNsT3qRnrE3LFnhMzNnKlFnumM7q+gyfREzb02VPA08oiiT+kBEb0+TrlFXAbDr/CINvVa3XsbxdOJoaAtAqvNXVTlwd8cMXlrk7Cw6FMg+ANqOFE7xIAItKzAiQk2vUYWXyWJ1pQAEn9pqSDr4RrXtz6xOosnKdeily72uG7C2bLKX047i5y3AZX1nmK3FXJO0iIeMsT1N4WNElBuxNTL9WaYK/Y7+1oBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKogAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNALv+lDZlR9R2zIDqVdTmLugQxZlRCJyJ8H1ebcCIdhOEF4houQ9284WPt0lXOi6wOk0F+PaAly04zlBVOFAYp78BAwEDXTn4j00HUSaa5OCYu+R/NZE1fBthaz40pcIcTB8sa/0rGagHhBlplAXzjUwws9SXDIp6N3Kd/FwxnymYg6wBBWbsEpv9iR9RD0s1B0PyupwGGwuU2cwg0KdcIN2GNyLYMK0ZbTzZ+1FYM36HWnhI6GU9UP9+fmPEHCmV5X4cA5cBBgSzRQmNoyexzifuSKbSv9JqdECQVABC3B1pikWPcmtzDzmBWrElTMm0W/H7Espi6ptfnzKFl0w1D6fiP+SpyL8BCIGlIhPWXY/Mpsmc6jstE0UYpFGid6C5L88NugaE/FLDclS4ov+0UKHgd3utUJfZB89aSMfXDAN7OjYvGXOxQ9IBCSiyXsE5S/nKr5yV7wdLq+9yLBWwpO3M7aw/29amvYfTasL7SQ5GBesNU9s+2oVSf+XwAXGlpagbKDxAHvA2l5QBCrVHAGEhesS5T8xF/CMpLVHARxlJOieFoMr3brNJekAuE4kL3pFPB7aAuEB5+HvRRI7Y5PKx1qYGYZhqb1FZPWYADChGjEAyisp4d34ZwnIrNwVyUBeNkqLWaqtS2LYL38tAdpa9seLfKwAvqOmWR1QKALWMHR8R6GonTO2PjYsmgIMBDV+ocwnKjLisM8UWo8POhgwsaUEcT1q/7A2O5/CKkXcYNx/C5URdJ/mRXP1yOWqwsPdv3IIPh97fpqEpo3bTlnEADgKLgU6x90+/EKX7LEZaJUsAAoMKrZIBVV1/m1Bhv5n0HL7KD7srbdpR/aQN/PiL4Is8mp7hQQNHoN/w9wp2/VYAEPohckH7ZN+WgSunreqP9He0wDp2wl67P4vIF6/KKnNcfI0MV+As7UxSLcXFwCdY7ukf07v49pBX6TzObtF3ydUAEVzZxD1seRo60FzqfP2X92oe76Jn4TTw2BRLn8Un+T0uAXxExCdnAkiVTR0Rm3EkEuAyrOn0h5uMNkOcEAMY0PAAEnyy5SYJou8oOLJHRCM7oIT3Z0jStVOr78cM748F6xZzHgEwgbKOrgQu9A9zEEuiuRdg6TaRaO2Ru5jZhe3AJfEBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKsgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAAr8dcvvcrz2zDXa/fRUftsAUXiawK+9NMfO+lYaHMLwGZ8xbOO7k9M5+G3ESYbUHjNnfzPZ+XQsYkvv772gWjcBA9PPlaqEA1NY9B1LD13QxZwt6Laa9NuE4ptd9ReB1KRDfLiFBU5iWkrQMyRXPgM77m5Bafp/oWnC+0pcTH5pvuABBR+EOjQP/TpgX9hEgO8U2FlbH//dRafhyRnGhqwb0jS7QlXW/4iZDjPb63UcBv9rpcY0af71D7mSTBNaLoHbD5EABnjl6QJRne9mncGwPTyb5LhFiaYyK83zyMsFYZKhN3RIeklwlWbQzGj92cbR82gVLxwHKLunEDGoZ9v4oXDPaU4ACLJd8E57QUe9OuOWD+fxgZaMCEtjqJyhHCjlV9UW5qw7YjtW6UcgQajOn6sL4U6fZZPK8gMkL1oajADIoj+UcYMACRnEAkeedWFcdn3jTrRjCZ/HUsgqqd73u13KgS3F0aFMJo+Mikxlm+j64OUdLw7RIMzKxYNEyps9+anNIf4ZGfkACnyW4MIet0MQY3yLzPrCS/kRkN/KOnSZuuiFpN7FQcWPJBkzsNVnhUttjC/MKE6Qd/+rFtbJwPmyTNwveHXgqPwBDM2tQaNyLpQxfZnslULjqlnqnPApf0UO3FfAN0CL3F1XcN8AA3WnmuIxr/HrEoxlfQll/o5Pte/vJnIISLbmihQBDUGakaIpm6PZgxcSUL/NoZtGLGzs1saJq0TNBtd7PJvHH1MlIbEzQwi/7QFkCrPI0hLy5p80nHaX+rz5X0Ov3OcBDiI43VD6wj2Cd4aAdo3Fz0/9AruzUUg91iXgNMndC+AKGixJ+VI4p8/X7EUDi0R4pFfpucIX//V0t92dVmPGU0YAEA+vwSXtBEwGWXp1Y/IqXtUHHNoukov0AacVkq96vWz0WxFNHWmrXHhM1K3du/UbRh6FxB9XksXjCfhnhxlvn1YAERQak1FOQjbaZxFR384z8f0k3W6cyI0Wui+44ExmRXaxIs95Vmb1td9gGyJDOCuZhSzSOEDZHG/X37sz4ndTeUoAEogAQf7s6GmPgbtm6YF//qow61i17k9meiT7BQMPov+8NHz8PzC9mhiujl6cAe1A1GRZ0l6WxIbPhJ1fTb6hiEgAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKwgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAACgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAMm50l6vVsWTb2bxR/5FBhcpv60FFMHbwhprPoxB/WacQ/j8LdJ5KtEG2bI9fSFhN0/bJAhOTcRLJGmGJDF35OMAA6c73WsihkS9xIO8iRDDnxILg8MVwzdkwwjZ9zvCswxPJs5rk+PeHM6rRB2xREUxgHW96OFemqd/psMR5AvcBoAABT6I7geeKMbr0s3UfO4ye3upzZhcWwE1LvwlaJ6+yoWET3vGbaMmbb5dW7ppzg88IX6HoFH7LedMJTwRk+UrFxwBBkpGMnw6vA80yqLO8UNBkD4Uo7hOZ9WU9F0BBeLjtOusN5OWfCDaEqo/OBAfrj8HH+hw++V0ZXwCGUnT3zADpqcBCC1cO0i9dEJWye6riEVALlqTdIHIrh/FJdoiyZh5U+NGfhmmoxxmuov/fc0k19I7AtRMeaCdqe+stdm+jw3OJp0BCbw8IX60VXy9W0hs4T5XcyKAjt2tKG/1b4xkA95yF6MqEC5jS+Jqyt0zKySgWgQGj4I6dKakHE4vkasj9iF9isgBCoI7N3PopcIiv1oouV0uuqmSuk+FIjN+jSq6GbvhrXK0Ii5qhql+NGypN0ZAmL9fZJ9ffm4Y5x1bSqvcDBm7UTAADMbSMs/v707BCPvvlZqilAdOrLg7bHqP5faz52ttSzxGeeHmrLMYZlHX/phMH6iVxK+7QhsYB0+RfjIktoTZAG4ADdSTb3y+nLxkqYplTUZz5m3eOlzNUvjz4W+mnAHx5juANiqo9wx3GwSggL+Ee1AVkU4YnJBT5lnJlt+04Sdb1OoADoqxm1LsxFOyIb0js7Q3JD2nasCtiOSecbrqrjAGVNg0Rof3yx1p3yRCbj0Y6QujnBJnxjclcSqxJXSWQvh0LFMBEKuZsOWzfCD3hrKWkjExxd+ClJhVnkbx5cKXH+2TzqsXAKYTVLYPtkDjaXVamXi8V98BpVORy1/HQAxsrtASGokBEchEtRIjsv4TRINmyM0A7ckeaI7EGa7sl71Brpd28xfxdwwXQoJcPMG94sD4ko7cJIdKvyPZTT0S8SG2YdMTkTsAEvRgV/sj6LmU39AWj43OL2Ye4k+5/6C+Iqiwq0Qk8//GVn2eXBJNLc7g09ro63hvDB1LOPqFfhcxC9JeQJLDccIAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czK8gAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAFnqys3Sj0ZG5SCr/H7zPPMTobjwIKJ+GAjwpY3zSl69HYvw6Kyk+w22FFWLEQDIC+fdtNiuUCMtkyQPyTZIh60BAyCF2HrSfqoBnRTN7upXX5JuwdtEGAyxkytv9UtW8KnXO6sOlS+ry6gTX62fGH2xIOpv3yYM+zhp2XPT63JcRXoBBQw37r8alAMrP7f1P/q+7iVhCoBMf1jHq36CuNEDrb4fOvGumWfxBFwECqXzpMjk2NWjgCyoJkg+mhoV+OQjmQUBBviNctAZuDy5sQMJyBRuGXadpyu1miY2kkn+ObUdR11XDlf14ZzYZK+YNcSAmyZor7ZpCyTycdN9nK9wiUAqZxQBCOfslO/WxsBueSw6foiFvzBc1lKnaHbUlpfJnd/JqYt4a8IVUhoDFRcYzYH8RhnHL/7rKebNlo2rnVEvfS0OuogACVtvE45SlnX+M15acva8GjXSDPUYeGUZwkqwFM7vYetxM63LcBp/dcy6zBKrXnTbx8CD6oMY0O7eUfSGKSyQHnQBClOML781tGMPE+aU2hn9Pi+ldDhiKvSQ/TuxmmIPiL42eLXWQIxxd1ddBKZVm8C9GVOPk+bdUojZkxURq4xRLTEADGVj6VJZpT+FTFRBdZgEER5SzkLlMy33ymAcsUCR08bYGjf/uRgpyvwFPhSvJKWf/KvD/XdOE5mQEVTVLWNAV/oADdY5xogi7U8pr73+NJ+zHMNnsGX1o7+3NYfgqvjdCtUWG+X9mdeGKKe9+owH/6pH1sS1jmtHDavs++lds5qWSWoBDrhaIDsYRE9dJr6sOCeQgdYYpQp38Py31/8/UfsnBdmhZ798eiUG3ErJC5Ru5j2Knqa/rYqoSU+Z8q9dFdGQgBsBEBjVo5DQG5jZdiIi2X08uYhXPyVqej1RK7Jtt48uEoS+AgptWpZgqGnc66GZMI20A+BwjHheHCcVgh9poJHznYsBEQdn1vTyf523rp5CVrmoV+eFcekhl8vIIYVR2jMvtBEOB9/Mc0OLhHO5HzqTpL2Wvp26/4a1JOuNwWOdoz8feaAAErADh80hPi5uw5c72Q2Y60xQDJxqqJPLHWB9mEKjJrbnWlZEeF3V/3wu7wEuk4tt8hXtTpe4IjwHj8io26knh3cBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLAgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNABR85p6uz7OK3Pj5U7+X8XGPo9uBwWCeQuzt7+6V9vshbyCl41YuU6gBa0xaxFyT90ntO6k4FoUDdJAoalXl28UAA66iAflTo0x7XLvMvsbELUdBB++jwfXyUTfw9/H480RvU/v5sdR185bNBIeOC/nvWAFL7sOMP7aY04YC+9+18YsBBfuTEmM0KJhXMC6vMnaQoNhFcJj6wJSmgXtJ84hBw4UpWZjfyNUAcfKWBT2PxHJoX+423YmQyCMPPiduG4c6db4ABiQZRfhsGr7z7hKGsUIskrr+17OMPa7CK6YCUmZ1tNNeGTirhEtBa2qAO95bEmSNZum65o403IdFCmmmS70gNLoACE7pCtO6oO5My5h/aGJGlYY0/Yg0eQ+LZk+P9gvx2D4lY2uenM9jIyNM29jlLBOMmPhdStLEChWxNlIK3PNhgAEBCadhBJMujDpzNsps3TOxtpy/dQ63JONo+uFTNOyICSGWPJ9eMX3itte/xjTBz20mVnZi2+kKD3iYnC4J2Gce4AQACktXQzwfVgjkwOePu1lycb23kGCgESbVVdsKAOQWDioOYZTmosgVEJs8ppsUuJlfuLUSPBHnabZYZcDEjVR8FbAADHvgVaFkolTvGo1CP7inQPNl44Tb+x32J57Bqi+OjsM/U1nj28UO0Lam+BzCio31UOCyL0A5GXyTn7CL+a9iB6IADf+iP0G5Fn+7y/+XQl8BX2LWjU9Gnwlzvey4+rQaRMHxMayCDuIjGOojmnRV4WEcd6p9Jng6oaESA7cvRHUZUgwBDj7xFX/i1N8Fmg1NN5Z4O82ay9MLm6gSc4Qab4LFa3EEF9vmBEflwbw2K9ri6xXNzyr00Ldld7GxOSXgqxBbQzQAEEQ+YNjKF7WPd5lt2slSXPrq9QkuvqBPE/3wqrggS7qiPASxmHuVg2021wZZeyQ5rN3SU52fbAu+6pcN6AH56qUAEUoRGurx9pVRXwH7F05gaDUpKpmi2VPbhHUzabf2rsiaTp4S2xW3aogLkpg/KJN+jiVpvTp+7d/nEMj8T84BHtgBEkM6QhVMvbbxsb28z/b9y5DosXRUDmOCWvA5uPxDwb1iEcHLSEnWyoyyqu/txoRxf66+ULERpE+CJN6/mqC75bABAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLEgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAEAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNACp1I3U/xNtmylR/mafS8zaeyAujaU3IAnC3787SH5AEVOWWjj1rMWb5jFPe4RqmLVN7yoAW6rE3HRVd4hRvsHkAA9YLGo7CtM4n4rcpi7PLUDAIuUVIDVN1RtuioLGv3IDia8CwfZ7k8+9ABI4l1y0j3ibSLbvHwj327vA2cRHqRm0ABTVC+o26a2IHI3K/ku9WbxreKpX3q+l2ktIL7InJrSIOSXGOvM0Gl8pZJFjXmnPD9Im6e1v8UdnK/J/TtU5dgvoABrH037fuS7MFnA+fuBxq/Vt3A9fgtUcgBn1/98YnVao/DoBsQmxacjiRf4nP2jC4DnYzz/YAWlllz2E1b1UZZKUACOvnyZoug6dRWSckasCsytl2o4gkWszh9BqxmNN7MtzXJxfhfdczngTQuXqJNW+plOWxoDbsgOtoGpw0csJt+hQACQ6YrMzxLLqDt7tluI9TKvoPhrwGjhMT4Ya0nphQZQx8brrMwC5ie110cO+QNcCMro2HTcSzcZRbKJcG3qx9kAgBCqDye8/GNxWQJEb981JVTqaZ42G449y8V7hA+LX33HReAoR9gzF9ICm3PUfayoiFLxvrKkkATBwenvS1AfQX3MYBDHJKpgwIS8wVmvNanVgHjWZ1NMtnvPyl+VngXrGwlW1KAu+Yq8msZ3t3mx+9dQWxYhsJNdGljXNzw2uWuZ+MwPsADTE5slBpUgpL2cYZBef9g84h61eGsmseW5Z3LkkzpusWPdQDGhvtDMZeOeANCgAMkXtpAVaWyx7tgWvoZLZav7IADnlCYOXXNK4g5T/zR5myqaOfD3kjcfjyfnDNXBSj14GBa33Io9prqIbywhswRkjFHBaJLaa6zRB3YYLLZcnEawEBEA78egjLgSqwR71n5iQZfoJErcahzg2e8wxGm7WRhgblXjrKZQVOD0bm5+yo8gucQSh5G6BElq6XE8UkKIN3emcBETdBam9KkZsrTfr7VcOGabk9ZoEKsMd82Shccf46PjijaxjE+x9uBwC4mvuPdPBW3ViEb7jQREw7QFr7d1X6o5kAEnR/CPumKqN0NzpcNrb7KaNtTjgu+ysKVLA5rrj3b8dkaDsCxSmAIpdCnQ+1MgseblxjrPMJ4D4PFfeh/nTv8w8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLIgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAFwAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAGcGEjeUvoyGwjagQWzB13MOGokq4vX4PNzoyt9C1h/xDO0X8X1uKvTNJom44OvZA8zn9WQ+jYt29VQREpxXU2UBAxHoSKrqcyPN3+nR9FGJrPSQ0xMLmWGFWqAMIOcUk5WhfxM85EzUoWB48viEgG2QHrPFbH+hGmxiiuZZumApE+oBBZ2DC4EQY5KVoGRHtPVO1yWFowJWv2ALfw/KSPcbMLdPAqTmTB8sQVKi87forCjoApwPYP5MkvAPXP+OXa8jlSEABt0IqJuTkgKSuvyjq5Y9Fx6ITNO7ubhXv2+HqyetJ5IVDtW/A4aT5sy4VdI3b8CkCHdH/RFU3MTCC3XfBadYGW8BCAnWoIIXBrL9oOc8TdtVGYHa2dwcLI6FqQIZXOvR2FZeUo/QeABd/tlf25LcrVlxzmj3tfiX9yVEo0agcxKaxqcACY8kt+DlomQQxmsbGUVJTTa5//bazxbFpqIvAanswCGVH9b5ksC6eraItakPzZ+Wp/0ovwRKV21Ysam4X2lk1DAACgMj1GcXIcAmImWjf/njRZGW67kow1aO9LFfWBKuQR8eTPms8Cvg9m04Cr3L0c7eTDVIPmgKDDMNT6BFUeezmmMADE0OMt7LkoUgPsdj7WyrFaH9kfqL+vO/r0SaCOUreb23ahD+KmeXTKV1SYEc6mtR852KvEe3zZlp59bzuGw5SaYADfi4hEoU7QlDkxHPRYh2DoCtKmxGB1moUUXe1mPFA4gqNnqOpHJ+FHgiu2OWEC0M5rkNHmuHts5yfV/cICuDV58ADuoGD3SDMNjDHlILjDtohz5Hptq+m9CInc11JXALkBNLSJK7lz7TrKlTQ2ROXoezYVQJ8qhyvpe5qKqjVmE1RlAAEF98ZUcipnxnhSjo1qZKJvWZnHDPM62s0c+2TQ+LDCb4GBC6hirIiq+qkKtaBmmq0mEN160WsRM/TA3NTUkaRi8BEbaY8v582DTSvf9dTi8CidljG7kQ2z5kuRaJt67gmyc2ecTMQNqD8KV5oGx1arua2dK6FQpNGL40xeiAEMRtzmcAEg/xnYT0nYTK3wwn+RlVs2mAJxpXHBeshdrxIbttBJCFfNeaieteFTK3RDmIfqD2al+a6AT/BjuJayTVAUuOlf8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLMgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAGAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", - "AQAAAAMNAN+LTdPSQwSBDdv0z0P8RQe1Zyj3bmsdECprpkbQxjsrQUgiPhmuBvQMoHL+FjM6TER0i8N0V4NZZsafNbTSdQEBAkfo9KWh5aT4WERKUPQZpHeGb3rRCvlNYiUf9af0pCqSFQAta1p5OSJNYiHXQ6AQd5K0oe/UJhlzKjTHws3EQBEAA2+275+cUGV9d5G7NEuUjWyBLxtAcDgQA6lCQZsXTE/JTLjWPOx54TmComQteJBU0HRkmIB9oD08WaOe+ikjLb8BBLvwJ7JjE3V46iQFdvEuPcFHDO2mM5Hf6q8Pca8K36dkdyogaEeqEGRq7y69uoyiG2wICIy1iULyFFxRIOD5S4YABnRxmEPJnhLNK5s3+YQx+N2L0tdLB5QpH9jXuLV1vMiWTuLHmC+0kyYhmW1YfrT/SGHh0ObYc+4e6Ln2hPCEJiUBCPM+2WFjnsgsG+BVKLinX2ZXvOvsaIJ+jylYmeQUI+IiBTEuXnu2RTAE3w6tvhHreViO4W9bNfyNsvfcfUV7+qIACeQ55bN9rN7CXRLLoVMe/OsvEwqBLS2Z/LcoKCvOBtvpH6sRIocW6h1DCuigjswkguMLQ5uRK3sNzJXMgOmP5toBClIkUZ8Dz4O2ftbTGlSV7c9mrBDaLZS6xUIQm+LQdfcjC2PBV2ZBrW2aVLH71fp/vjwIzQj2czGEdqr5/O9IxuUBC6J35ppxk4+LEZfLaXWWj35HgP2o5hNtI9LJ9cu7FdKuaCMh64tfaDxYJbdEkueipNGKwgzYww/j+nEr1xyLYDMBDQb7poN1399tdsl9Oi4OocmyQ9j3o3EUQG/GfLdUXHF0Avr1F1kH0czZQ/INU5uBXrk21DD8Pfs1wzFqI0Lbo40BDkyjKbXGH3+qQiNZX+PdTRTXdQbDYBPGzo40g01IOA91U20S46nO9URqM3ZqUApnbD1ZsJ6YTg8xvngL1zaoFQsAEHiNY2IXc3glj5jAoaWoWyKbIxbkOyigjGjgMD/iuuSifPEJ8H7W76a+AjebB7S6AsnYHEeCY+2no8J5ry1Jh/oBEtW09ah2dPjEpoasZ4BqRUQNMIYaQxkexy5fdaczqLUcGJZZ6O2P975z06FHgKRss0pYpTCPc4HWaOjbWBmPGFUBAAAAAGtFoakAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVVcE3NUEbMQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAHgAAAAAAAAAAAAAAAHBvgum7WwgTUBcUq1l0IWcEmA4x", + "AQAAAAQRARzJzKwejnkm+Hu6Qwx9RL108tiUr/XyVMzDgRfqYNzdXV/odkKRdAzAs7+akzr4t9WDGkA2/XJMtMQ5TOaBFJoBAnmN1MH27UHxkOrrgkPwhniAjMy35GfWmruDqIQUIRwDL7oBiT9cQI4wfO69dM6ujWYF9ZEeaC1WbLZt1QHgT1cBA7uRv48zdi7msHq7MRnEunSNCSv6/ofTYNuWLZnJZGKSCrtObQdunVSur+jexWOxkwpDBeKzlhzTY7wgO+BknycABKh8KJyvMRxlN0y7Vz+zC0ia/wmmbXoJ+alexQ8FmBvKUmbIYrybvq/Xk969TPPqwu5Q8BDfkxu2h38QkLrVubUBBSRe+D5mP7xunLPyye675E6sL25YRME2EDM9ZDQMfkQHYR9OEdZ26Xc1AvbKbAcJdSl89vNy3OCHXeP4uoC0j1gBBpbqctsY3kMLXAcbsJ1R1T0DGXozsd8HEbX4WRSd3PxzWMhFc6dRizcZtn7AH6BxQN2nJBsIeAfB1FSMGHZVnSgBB0UTgLdAu4aI4j5+CHW/5aROURxKWB+B25qPCXKQu0LMFsoMYJNW9pLM7fXY/EC7Es3w7XryUpktourCguPen9AACG+yBj9JvDPR8l7hOsMcuyoLpUD0Gd8c0DyR0K646X1eb+rj2kNiiXUxQoGQqLRYwyfiVgFqtqxizBsekxIluu4BCYv+nbZtXVDrYXcUPo2xsjIAxncmbwKsLRwEuQ7podG0dqn0+TdSVV6GpU4vW7ZmhmMQ+PWHNWxZQhiq9B0g+84BCrZhIetb+PQy4a4yu5iN18M9SC/k1jq+E4bTjN3a4MA5ZNeS8nBDCbzqrgwbMi5GqmUcbio8JhGQPN28hzY73HUAC0Q6MZgJBe+VPCYqlSGoFcbGdrhLANOuLoeDshJ4WGPafKiUBrJ/k0NSnKJFVStd28/zK4T/QsYrutKOXL0vh00ADU7wpNQuK+ZI62vTfWGEwSOrCjHdgElwQWly5b4/vWoARNnS3WSkMMypURD/NvLzY/qQoM61JPIptGyqhfmxi8QADg3bIzgJU+q6BbjUk/IZOGDxAHmi/2/8AL0R25TiK18OGrO/RReXKgqi1+0YVRIx4IPkjMwH6NZO0g+7bVcVG4IADznuvqHuyT06/HHLnOlm2q/FhtR4Y83/JaQTRw081e4tVfse2936XH/MnVg02y9vgqOA4eXW2pES1El6so08OFUBEIpYXVlg2VpQ+c1sjKS4rnpwtFSaBSdx7f8aDDpAnqXNKG6ubFPrKAA4YFOE0FHgTowsUxwPhxPjalxNcaBEpAsAEfo82Vdl1ku9wHAAjDER/69GradeTcOWB8ZDtUfD9w1CPw9O4q5dftQ2GGmJbcsBI2igqVhogcV5qHdyj9dh9ToBEkR+W5flNBxf8ukcCrqLSMqYXzaZkvAPsX/cnA9ldrk8a+rzpE3+iXLfHyjE7aczanlV5tM6TMHhwyStRd5y1W4AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKggAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAAgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSAX6bkGXE6VGqK+YM9iRTgau8ywKjrGsPTvOtTPXSBlPTUj4hiY4D/jkesSsYfahJ/+ESbYX00R+UxCgIbmfjaAkBAm2oAV8fVx9Q06U4RqwPHHXt73HnIH+BhgWgCWCD+jCVFE/VFABsrKJFbAkk5ESAEVcCtzO7ELUfeudCpJgL1y0BAwlBxz/Bc9Lxv6gQoUHbI0Pz1P9CDFb/CTVLJxi1uqSIeSIgjpCX8Z9mB9i3m/x61GnUus0/YK6Vif2tI4qh2VMBBH6KsR9qgMLQnrlxd2avJc1ovPjdkDhTlREAlOpL3jA5OxzpyqStQcslRGKp7Fb5g4sm6/cvkDTpvYmmvjxdMYEABR2ltDAXis/eYJHUz9g2kmCXvihi4wuW2J0D+da5vBqDGcgUyRhtMKVk23kBNuJCKb5sIaEVUY+y4Kfz9QU3ccQBBhbb5RwfEgcX9lItcs+F5CMV1l3QSfzp5pFljRoOPZjIZccdb8XPdoKZHEdrta3kBI1x486Bul+iYy29F6NSJg8BB+FyXQTori3ZpBjQTEzaMkweCrI9TccQ56liIxtdrwg8OeLs5paKJrv2L4ivYDuBkdOdD819ZjdeSQEN439cUgMBCPvTdyW8MuXpqHLwR3vjRu0wKv1F2bDlckNHrcDNFCwCDxNHcHJ8nVf/+iSZgMNofMmNYhlgZMMN96cUfwfOOvYACfaiG2OzyMGPlrX/cSVtXtD2MN6Q7mXuva9rWRa01v2ydtff2uXgX/UqL3e4gBy8sfuYjGtK3N3Zqu8ueIR1APEBCrwnhFkN5XHwi/MAPs1QpWQwM3bA2noUURgVMCK+RE2UAjgUfKVL9l8sMSOJ9Wi6gLDFR0E6j7UnRS8JMg8jNH8ACwnPxCDJaOom9cpvTP+uyoAq10Gbf9YrYW2dZ37OOGZXEjZ9GMIt7uyGHMyX27QrhiSTQmY5rn139llKbsOk2rsBDOaxfnB/eVg98oN87GzwX10/cLmfBO9sOlTVXncPKspKeNqHRGwRuzn/uuvTJNezaZRASUV7vJclbdewamEScmMBDULIbOMpTiyuUwTZSusw3kxoZhLQkPQZmK+KFHP6tPpgVXkwggEYNRC6VmAvLbujaUlZ4FLg0uyXPxJzCFF4mLoBDhE6OMIZ67mQxb8VybFVu0W8x3O1PbwsP8rIZqsA4PK+YeOWK5niW75f7+Kwr1/eAB41px4YVrNptaF508CoJrIBD/3beI7x9wogXQjUSo1XYsX1rlsjbrJTS1XoAZPFWKb0YL+JphjPV1MO8yECsuiA+wiMBi4LrijzOG3GXN1YwZwBEOqec42IPcihlMnxgKESPCSWvoJngEfWIgYAZX33eyj9HsU995vEdIevEWBw7USlirhuBQMIksIQc0LbpfdC6zkAEXWcbYwl7T9KYLfDBHPO8S8WUiMe5eLZjvwp/+MpCm7zf77gIbDc3b+/ERBModlFHT7UVYFoIeLAiVOOfWBeCjgAEqB8ci9Em4Y9mW8VGF76H7WwVr5tQEyOeTSS7bVzY3Lyep7mfntJmOgc7l9FYmmE2AG4HvfryYDN4ZWaSLGtV8cAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKkgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQQAfEAwj041X6X5mAJslrcfryvkg9aH2IdV1XTMd5hxfIWMabwyfvqitdVNK9JR6TfcswpOUSxqvu88HJ/MeQHG4EAA/EAYYyE/1bqSfVjtDK60HY1D658/Ps97JJUCAPYTqk7XaTH+nvX7DY7m2EtzafP7J++vbzlF9wwkD8TwuxcsU4BBEpalOAiZjg6EdHGP99Qss9KTHX76/FYhDhlN38BoMxHEOkI5RkKu8q8/vKU16BU7uhKm7Dq0EHAnRD3qcsgdwABBc5x0uWU82yvJ+i3aSYeWbkenlf6FiBcbTdQdGFQiJF+BRMPJPG/lIQxvLAlrsvyTc8oYpejACw36+cqy1wkMMYBBoRFxlvvrUVvHMQnyAsiQ7I3AMFSr8YLKYzPXSQmG9nuFie8QKpSe8Z96R3hTMDfstmbnsCNMaeuPhrO8f8irL8AB0Vptm2e6YxPKsb1SYxyHzvGb6m7sOxeeD7jgfnwYEatVAQqkho/c2fdsZLOiA7VeUJy3t8KNPeR70NwvAd0PvYACJkeyW80eyQncOl4pkc9qMgrFNy5pczAXd5LzxEl49lIHCXxiNB+Hk5oqRbNeash9BpUM9d5Zg0VgI5sFyxVrM0ACUJeXz9xrwpuvtG7A3WQMZutJg4uvYuIm8ZPeC5ZR5KlKHTBlzz2m3byCjMxf6jxbpgq/IX+FHunQr4SItlC3PgACssbY/Gk8wcC4riD7syASLqRs4oJ//7TMpmw5a6r4J94Cfyl91/GpAIrkCvnyveToY0Tca7LPZvw19J2QHd7LNcAC61xIaZRK/4nhW3L1cGqlu8f22EQsyKgdQhwuWrtbwajBnjteLTn3IxXphca78G5yn6ZGsSkfSZVyvONIoWNDLYADSwwdEPIMpscnkVjNCU8YEtdbB1/Xc1EBtnYxO0Ti3L0ef8vQSpBR089YZpByL8haJi46KF9PNcnXmkpvMIhuEgBDnm1dbR5XG08zK7zecL1M95ibfmoelI4nzj6w/XXe1eqMXqu+kOGqshmOKnhnNDcvZL58If+1UyeKMu363zHW4QBD6jJg+WTHRJ2+EVAxABaFtUwceemUBPFqYEsTiE1VnObaHpIPrGauz8ctz231s2STSEtPCYdTzAY6N2WyZ3IEEUAEI1j+IArF9KuA6E4wSOwajvl++09R4Zy3FAJprbNsT3qRnrE3LFnhMzNnKlFnumM7q+gyfREzb02VPA08oiiT+kBEb0+TrlFXAbDr/CINvVa3XsbxdOJoaAtAqvNXVTlwd8cMXlrk7Cw6FMg+ANqOFE7xIAItKzAiQk2vUYWXyWJ1pQAEn9pqSDr4RrXtz6xOosnKdeily72uG7C2bLKX047i5y3AZX1nmK3FXJO0iIeMsT1N4WNElBuxNTL9WaYK/Y7+1oBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKogAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQRAYowEfa6uPgWiXxwg4Ot8/XUm+VFu4ifT2MTPzc8VPAtYiN+VAIkz8Q3i8Lgn/YSel4suOSbxdjZbJ1CCex3K7wBAsCVJOb6QXibVWMlpKiTVGUI5ccw739S5Op2QMOB3UduElcIs5d1HuLzRLbhI8BErecS9/g75BjAztY6KuyuOWgBAwEDXTn4j00HUSaa5OCYu+R/NZE1fBthaz40pcIcTB8sa/0rGagHhBlplAXzjUwws9SXDIp6N3Kd/FwxnymYg6wBBB9kXvQQDFOiRNSWOhImV+k+iZm6o/bRuk+FN3/suRdaMbbgBjXk0GIpiS6SLnnOgXhHR25POgvn2D/1m0cmENYABWbsEpv9iR9RD0s1B0PyupwGGwuU2cwg0KdcIN2GNyLYMK0ZbTzZ+1FYM36HWnhI6GU9UP9+fmPEHCmV5X4cA5cBBgSzRQmNoyexzifuSKbSv9JqdECQVABC3B1pikWPcmtzDzmBWrElTMm0W/H7Espi6ptfnzKFl0w1D6fiP+SpyL8BB8nwmeoekxr1ltDe+STsy0suZPt3sK/KixEsGzCrOqJudl0K2O0BKKMcD8QEjxzc781MdnjCWdBup9q71yD7yKgACIGlIhPWXY/Mpsmc6jstE0UYpFGid6C5L88NugaE/FLDclS4ov+0UKHgd3utUJfZB89aSMfXDAN7OjYvGXOxQ9IBCSiyXsE5S/nKr5yV7wdLq+9yLBWwpO3M7aw/29amvYfTasL7SQ5GBesNU9s+2oVSf+XwAXGlpagbKDxAHvA2l5QBCrVHAGEhesS5T8xF/CMpLVHARxlJOieFoMr3brNJekAuE4kL3pFPB7aAuEB5+HvRRI7Y5PKx1qYGYZhqb1FZPWYAC6hKOxT9KEPf3ECBkPEzBTnX21IEytqVm4LJoRj/nGM6HD/3q/eyoL/XAD/scjA6DznazWu5BbLHIb73+SULPx4ADV+ocwnKjLisM8UWo8POhgwsaUEcT1q/7A2O5/CKkXcYNx/C5URdJ/mRXP1yOWqwsPdv3IIPh97fpqEpo3bTlnEADgKLgU6x90+/EKX7LEZaJUsAAoMKrZIBVV1/m1Bhv5n0HL7KD7srbdpR/aQN/PiL4Is8mp7hQQNHoN/w9wp2/VYADxzEoQoIdfrTXEK3lck1e+NaZ6ys4JcGrxO0AJvHLPyNOVeiuusou78NIiVvCJbtD2/NCY9oi2S1PdERxMw8KsEAEPohckH7ZN+WgSunreqP9He0wDp2wl67P4vIF6/KKnNcfI0MV+As7UxSLcXFwCdY7ukf07v49pBX6TzObtF3ydUAEVzZxD1seRo60FzqfP2X92oe76Jn4TTw2BRLn8Un+T0uAXxExCdnAkiVTR0Rm3EkEuAyrOn0h5uMNkOcEAMY0PAAEnyy5SYJou8oOLJHRCM7oIT3Z0jStVOr78cM748F6xZzHgEwgbKOrgQu9A9zEEuiuRdg6TaRaO2Ru5jZhe3AJfEBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKsgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAABgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSAVKY66lmKDO+v4SJbUlQl34rOnmIQ3JLD5TmzFkxBK0PPaaoHDzCpd4IkT6yYpDGb6YY5vrIK2yiU8QjmU19FxkAAkd4WQc5OBmbqhlTA/bCuoyuDIWPYb9FmoMxFOhKssZ2LnmLkdsmI6Z3BMWGVsrqScdFmvyCD5EHQhJf3va2zCcBA9PPlaqEA1NY9B1LD13QxZwt6Laa9NuE4ptd9ReB1KRDfLiFBU5iWkrQMyRXPgM77m5Bafp/oWnC+0pcTH5pvuABBC5juH+SXW2bSPi234FVk/jMQdEq9FyljO9Wei3uNyNsc0pxTPLvEQ3O1ZsLAZuJ/AaxYyjUMx6QXbOTTyGHTb8ABR+EOjQP/TpgX9hEgO8U2FlbH//dRafhyRnGhqwb0jS7QlXW/4iZDjPb63UcBv9rpcY0af71D7mSTBNaLoHbD5EABnjl6QJRne9mncGwPTyb5LhFiaYyK83zyMsFYZKhN3RIeklwlWbQzGj92cbR82gVLxwHKLunEDGoZ9v4oXDPaU4AB3OPbS5C1Jq4YTf44PHBvCsrlbnw8o82mK+xGsUCQmGuG0G11wWinud6u9esJ9I3+k43rhtA31a5oGcCTJDKbYYACLJd8E57QUe9OuOWD+fxgZaMCEtjqJyhHCjlV9UW5qw7YjtW6UcgQajOn6sL4U6fZZPK8gMkL1oajADIoj+UcYMACRnEAkeedWFcdn3jTrRjCZ/HUsgqqd73u13KgS3F0aFMJo+Mikxlm+j64OUdLw7RIMzKxYNEyps9+anNIf4ZGfkACnyW4MIet0MQY3yLzPrCS/kRkN/KOnSZuuiFpN7FQcWPJBkzsNVnhUttjC/MKE6Qd/+rFtbJwPmyTNwveHXgqPwBCwqk6CTJbKuBvLeZxiB2y8yMiNgd2HYNKZkYhwT8GCUeNZNogusA7VhlZDK+b2D78US8M30a6xRuGdgDWXZPct0ADM2tQaNyLpQxfZnslULjqlnqnPApf0UO3FfAN0CL3F1XcN8AA3WnmuIxr/HrEoxlfQll/o5Pte/vJnIISLbmihQBDUGakaIpm6PZgxcSUL/NoZtGLGzs1saJq0TNBtd7PJvHH1MlIbEzQwi/7QFkCrPI0hLy5p80nHaX+rz5X0Ov3OcBDiI43VD6wj2Cd4aAdo3Fz0/9AruzUUg91iXgNMndC+AKGixJ+VI4p8/X7EUDi0R4pFfpucIX//V0t92dVmPGU0YAD+sH3uPF7JwKdPGB928jVtNK3M0JzIiXWPsa+8GA/1Luam1sBK/PtLkq/bt57tX4x+Z8fJC8nHzyiYh+rK1CyaYBEA+vwSXtBEwGWXp1Y/IqXtUHHNoukov0AacVkq96vWz0WxFNHWmrXHhM1K3du/UbRh6FxB9XksXjCfhnhxlvn1YAERQak1FOQjbaZxFR384z8f0k3W6cyI0Wui+44ExmRXaxIs95Vmb1td9gGyJDOCuZhSzSOEDZHG/X37sz4ndTeUoAEogAQf7s6GmPgbtm6YF//qow61i17k9meiT7BQMPov+8NHz8PzC9mhiujl6cAe1A1GRZ0l6WxIbPhJ1fTb6hiEgAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czKwgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAACgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSASAraAfzuL8YrY0wl4KfhMiUMKLDQucfg5u0JrgoWqC9LMlsB7r5ak5yyQ1MAOQChHSC0r0YKej+bOcKnNKiWDMBAo5I34IMpOq5c3qh1e/nhNBh4RBilEtQNfnCRQDmRLG3R3UtzbLVjdn/tLCNsJgSHIhIl99CtwT8mRT3nhEHL94BA6c73WsihkS9xIO8iRDDnxILg8MVwzdkwwjZ9zvCswxPJs5rk+PeHM6rRB2xREUxgHW96OFemqd/psMR5AvcBoAABCbD/mvYNcMrZMVn0ka37+W0t2MZvri9yOAlg9kh3KYQXtZxOTq3enGqC640zDhzp0fqw7rwBLLnelcSINMymwMBBT6I7geeKMbr0s3UfO4ye3upzZhcWwE1LvwlaJ6+yoWET3vGbaMmbb5dW7ppzg88IX6HoFH7LedMJTwRk+UrFxwBBkpGMnw6vA80yqLO8UNBkD4Uo7hOZ9WU9F0BBeLjtOusN5OWfCDaEqo/OBAfrj8HH+hw++V0ZXwCGUnT3zADpqcBB+YRULlbg+fYqG+Bd1H9denIscOBnO3Og//pW2VvKkZgWq0aXXjrs5Tt6P1W3wyuqcqGXeVSBcqjXoW2P2Cl+kgBCC1cO0i9dEJWye6riEVALlqTdIHIrh/FJdoiyZh5U+NGfhmmoxxmuov/fc0k19I7AtRMeaCdqe+stdm+jw3OJp0BCbw8IX60VXy9W0hs4T5XcyKAjt2tKG/1b4xkA95yF6MqEC5jS+Jqyt0zKySgWgQGj4I6dKakHE4vkasj9iF9isgBCoI7N3PopcIiv1oouV0uuqmSuk+FIjN+jSq6GbvhrXK0Ii5qhql+NGypN0ZAmL9fZJ9ffm4Y5x1bSqvcDBm7UTAAC/Z9o9kALJHpqpE2h5gKImks4a3jmV6q1GUlkomQvvB/Dofvdwn8L6d0N5eLEFzHvghPE0/5kvaQAvQWXgpgy/oBDMbSMs/v707BCPvvlZqilAdOrLg7bHqP5faz52ttSzxGeeHmrLMYZlHX/phMH6iVxK+7QhsYB0+RfjIktoTZAG4ADdSTb3y+nLxkqYplTUZz5m3eOlzNUvjz4W+mnAHx5juANiqo9wx3GwSggL+Ee1AVkU4YnJBT5lnJlt+04Sdb1OoADoqxm1LsxFOyIb0js7Q3JD2nasCtiOSecbrqrjAGVNg0Rof3yx1p3yRCbj0Y6QujnBJnxjclcSqxJXSWQvh0LFMBDw4gG1d+EfoMD4VkKkA1KVFhUiYpXnya0YIY4A05lNMdZ2Mqa9ZEWmui6wIXLAn/KT5PBrqEmKnjYCgd5TXL0HYBEKuZsOWzfCD3hrKWkjExxd+ClJhVnkbx5cKXH+2TzqsXAKYTVLYPtkDjaXVamXi8V98BpVORy1/HQAxsrtASGokBEchEtRIjsv4TRINmyM0A7ckeaI7EGa7sl71Brpd28xfxdwwXQoJcPMG94sD4ko7cJIdKvyPZTT0S8SG2YdMTkTsAEvRgV/sj6LmU39AWj43OL2Ye4k+5/6C+Iqiwq0Qk8//GVn2eXBJNLc7g09ro63hvDB1LOPqFfhcxC9JeQJLDccIAAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czK8gAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSASEoX3M1h3J1IJc78FoiQY009rWqJ1BMQFPV7lziOgLDEVNJXzxTPKFvcRB696VLiLuPx9ZNICBu0Osm/8bP5acAAtF8YPH6WoTSrmn7os9G7dA+MoOudJkauqqgF92z2ftOI5qC7r4U6J95TKMqQh8lFtn+V8lxM/IL1KNNp4pQEC4AAyCF2HrSfqoBnRTN7upXX5JuwdtEGAyxkytv9UtW8KnXO6sOlS+ry6gTX62fGH2xIOpv3yYM+zhp2XPT63JcRXoBBMevTBNe7pz7NGu5c1D0wMpYMsw2SF0/oRYD8F1Cz5yfZeRRi8VIPb3mZFGKvDDS5HQdGGSWiftcn0fcKIoiscEBBQw37r8alAMrP7f1P/q+7iVhCoBMf1jHq36CuNEDrb4fOvGumWfxBFwECqXzpMjk2NWjgCyoJkg+mhoV+OQjmQUBBviNctAZuDy5sQMJyBRuGXadpyu1miY2kkn+ObUdR11XDlf14ZzYZK+YNcSAmyZor7ZpCyTycdN9nK9wiUAqZxQBB61GPfaaJZG7uJL90bKACYAs4ps9jJjFgkgXjJJ+9RQkXixNmZaKML9kLnUNU0WuuFvMLyP8oB4Mvv+OKzvjKpMBCOfslO/WxsBueSw6foiFvzBc1lKnaHbUlpfJnd/JqYt4a8IVUhoDFRcYzYH8RhnHL/7rKebNlo2rnVEvfS0OuogACVtvE45SlnX+M15acva8GjXSDPUYeGUZwkqwFM7vYetxM63LcBp/dcy6zBKrXnTbx8CD6oMY0O7eUfSGKSyQHnQBClOML781tGMPE+aU2hn9Pi+ldDhiKvSQ/TuxmmIPiL42eLXWQIxxd1ddBKZVm8C9GVOPk+bdUojZkxURq4xRLTEAC0sZOgXtxItR7qowJHMWjbpwghoiVBoO8s+tFhsqo7yCBmpW+fDyIhFvKQRwGwUgHWGfs/SG/v0Ih2x6W+vWfAkADGVj6VJZpT+FTFRBdZgEER5SzkLlMy33ymAcsUCR08bYGjf/uRgpyvwFPhSvJKWf/KvD/XdOE5mQEVTVLWNAV/oADdY5xogi7U8pr73+NJ+zHMNnsGX1o7+3NYfgqvjdCtUWG+X9mdeGKKe9+owH/6pH1sS1jmtHDavs++lds5qWSWoBDrhaIDsYRE9dJr6sOCeQgdYYpQp38Py31/8/UfsnBdmhZ798eiUG3ErJC5Ru5j2Knqa/rYqoSU+Z8q9dFdGQgBsBD8h7peipyv9s/X6DN239l6aECQbr7DHimdL9CUD5NgYdYFskS/JCfLNhFNOc/3+6Ei1rqm1iByV9QuT6Q0c/CIcAEBjVo5DQG5jZdiIi2X08uYhXPyVqej1RK7Jtt48uEoS+AgptWpZgqGnc66GZMI20A+BwjHheHCcVgh9poJHznYsBEQdn1vTyf523rp5CVrmoV+eFcekhl8vIIYVR2jMvtBEOB9/Mc0OLhHO5HzqTpL2Wvp26/4a1JOuNwWOdoz8feaAAErADh80hPi5uw5c72Q2Y60xQDJxqqJPLHWB9mEKjJrbnWlZEeF3V/3wu7wEuk4tt8hXtTpe4IjwHj8io26knh3cBAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLAgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAADgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSAXlxbA+4i4hZ0H9mDxcyrw+OI53CGmmVgjXR2+91cliMatNmmyMVVb+uSeaoHcJxYAJrGoby7IE6ZQlndBR1uaIBAhH6Yu0fsuSsV2LaiQrjnwVCUimHVVzmnOgzahifE49xAP8JmdnMaNvLdAeOiy5k4yUTQU2t9ocwGKXgJFeVrMcAA66iAflTo0x7XLvMvsbELUdBB++jwfXyUTfw9/H480RvU/v5sdR185bNBIeOC/nvWAFL7sOMP7aY04YC+9+18YsBBONVAE45xwQpgqB6UNDnmVGA8zNvbHL+DtsX8dCs77EzAnma0bhNS9TV8RsmM6ArOtf5Vc0wOHukbSBUbcEJrAEBBfuTEmM0KJhXMC6vMnaQoNhFcJj6wJSmgXtJ84hBw4UpWZjfyNUAcfKWBT2PxHJoX+423YmQyCMPPiduG4c6db4ABiQZRfhsGr7z7hKGsUIskrr+17OMPa7CK6YCUmZ1tNNeGTirhEtBa2qAO95bEmSNZum65o403IdFCmmmS70gNLoAByglP0Y+oWvxxQlXWVWkfSqIAg/snbH153mmaHW+BUF2eVva0cBLo7fKau6Y0v0FyssGru8Na/aTxZ8U2l1gwN8BCE7pCtO6oO5My5h/aGJGlYY0/Yg0eQ+LZk+P9gvx2D4lY2uenM9jIyNM29jlLBOMmPhdStLEChWxNlIK3PNhgAEBCadhBJMujDpzNsps3TOxtpy/dQ63JONo+uFTNOyICSGWPJ9eMX3itte/xjTBz20mVnZi2+kKD3iYnC4J2Gce4AQACktXQzwfVgjkwOePu1lycb23kGCgESbVVdsKAOQWDioOYZTmosgVEJs8ppsUuJlfuLUSPBHnabZYZcDEjVR8FbAAC3at0Qaf2NasUirOxRU7Cu/K1ZLZ56X8qosLHEIwb7GOdGz17ttOknn0AhqgxuGJRH1OHWUp/avlZZ7TSKmNxkwBDHvgVaFkolTvGo1CP7inQPNl44Tb+x32J57Bqi+OjsM/U1nj28UO0Lam+BzCio31UOCyL0A5GXyTn7CL+a9iB6IADf+iP0G5Fn+7y/+XQl8BX2LWjU9Gnwlzvey4+rQaRMHxMayCDuIjGOojmnRV4WEcd6p9Jng6oaESA7cvRHUZUgwBDj7xFX/i1N8Fmg1NN5Z4O82ay9MLm6gSc4Qab4LFa3EEF9vmBEflwbw2K9ri6xXNzyr00Ldld7GxOSXgqxBbQzQAD5pbqytVTOHLtj1Ho76IX96bfVr8gu86vGNBt58YLeW2UXC3DvOwFepfGK6odUbxq7s1+PtqJ0jR5vW/VZB9A/oAEEQ+YNjKF7WPd5lt2slSXPrq9QkuvqBPE/3wqrggS7qiPASxmHuVg2021wZZeyQ5rN3SU52fbAu+6pcN6AH56qUAEUoRGurx9pVRXwH7F05gaDUpKpmi2VPbhHUzabf2rsiaTp4S2xW3aogLkpg/KJN+jiVpvTp+7d/nEMj8T84BHtgBEkM6QhVMvbbxsb28z/b9y5DosXRUDmOCWvA5uPxDwb1iEcHLSEnWyoyyqu/txoRxf66+ULERpE+CJN6/mqC75bABAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLEgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAEAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQSAQ7Hjw2pAy7aO/OfeT9hKh+RpAunsnkXJrXXi4Zp1jwtU87T6Nr5rXx6nu1oueT8fEGEA8Dna63hzvpdCOne16YBAiVBYdlhyfjk+Ey0jBLkXLQN3dQ6PHIVxIDj0pXXAY5RY88nrS1T9pLq9UYf5g/wsO3TPmmJ8xPfgC7V/6CmZHgAA9YLGo7CtM4n4rcpi7PLUDAIuUVIDVN1RtuioLGv3IDia8CwfZ7k8+9ABI4l1y0j3ibSLbvHwj327vA2cRHqRm0ABJkIQ0gaHwcxJBjYIuuBfSTKgNelNGSvmx9L+Bdy3KR+M+tG3VeXA8SuMfuRZOVQj0dLQFWqcDsKfI7r5vYL4EsABTVC+o26a2IHI3K/ku9WbxreKpX3q+l2ktIL7InJrSIOSXGOvM0Gl8pZJFjXmnPD9Im6e1v8UdnK/J/TtU5dgvoABrH037fuS7MFnA+fuBxq/Vt3A9fgtUcgBn1/98YnVao/DoBsQmxacjiRf4nP2jC4DnYzz/YAWlllz2E1b1UZZKUAB1iD0PkIgA9Uqf60IRgQ4UoKDWWCfAUfN5PRURBI3u+Le2hwA0VfL/B6M5XxKXk23heF/qdWj9ti00fvG2oVAtMBCOvnyZoug6dRWSckasCsytl2o4gkWszh9BqxmNN7MtzXJxfhfdczngTQuXqJNW+plOWxoDbsgOtoGpw0csJt+hQACQ6YrMzxLLqDt7tluI9TKvoPhrwGjhMT4Ya0nphQZQx8brrMwC5ie110cO+QNcCMro2HTcSzcZRbKJcG3qx9kAgBCqDye8/GNxWQJEb981JVTqaZ42G449y8V7hA+LX33HReAoR9gzF9ICm3PUfayoiFLxvrKkkATBwenvS1AfQX3MYBCwjKa6v4KOaeO1/dDbnDTco1/2/SorsmGgEhar/THLlSOa9xnPK6KUosG0Xf09kB9ovKOkTRzHGhgOxt3GFyKC8BDHJKpgwIS8wVmvNanVgHjWZ1NMtnvPyl+VngXrGwlW1KAu+Yq8msZ3t3mx+9dQWxYhsJNdGljXNzw2uWuZ+MwPsADTE5slBpUgpL2cYZBef9g84h61eGsmseW5Z3LkkzpusWPdQDGhvtDMZeOeANCgAMkXtpAVaWyx7tgWvoZLZav7IADnlCYOXXNK4g5T/zR5myqaOfD3kjcfjyfnDNXBSj14GBa33Io9prqIbywhswRkjFHBaJLaa6zRB3YYLLZcnEawEBD/m9hieRkxQJechGBSupnW+ehBHaf3AEqOAnKFefIoOpUQwJBGbvcZIqWBhLW+VYp5CGYSW9diEfMIqqcPCAvssAEA78egjLgSqwR71n5iQZfoJErcahzg2e8wxGm7WRhgblXjrKZQVOD0bm5+yo8gucQSh5G6BElq6XE8UkKIN3emcBETdBam9KkZsrTfr7VcOGabk9ZoEKsMd82Shccf46PjijaxjE+x9uBwC4mvuPdPBW3ViEb7jQREw7QFr7d1X6o5kAEnR/CPumKqN0NzpcNrb7KaNtTjgu+ysKVLA5rrj3b8dkaDsCxSmAIpdCnQ+1MgseblxjrPMJ4D4PFfeh/nTv8w8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLIgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAFwAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQRAYhHS4EzDA+i23TqQBORRt5MP2L6PrI98lElomFChF0BHeGqnYRGBajRE70RQuRUNPFpCBJobXFhqt41iOlKxpgBAxHoSKrqcyPN3+nR9FGJrPSQ0xMLmWGFWqAMIOcUk5WhfxM85EzUoWB48viEgG2QHrPFbH+hGmxiiuZZumApE+oBBGqHs0FsNWmixB/Ksk//ZrB3AaX9bfcqPm0EQ5gFTgSHQv66tbX4kDcDxsc+oykC3JTH7hxPMdz7BMUuDyfZOyEABZ2DC4EQY5KVoGRHtPVO1yWFowJWv2ALfw/KSPcbMLdPAqTmTB8sQVKi87forCjoApwPYP5MkvAPXP+OXa8jlSEABt0IqJuTkgKSuvyjq5Y9Fx6ITNO7ubhXv2+HqyetJ5IVDtW/A4aT5sy4VdI3b8CkCHdH/RFU3MTCC3XfBadYGW8BB3GhYlALJ4PHQiOrXSjgTxJp5JJUYwpEC7nw6s2LWVhvAa317Lx8mr4L2DI1qBO0ECaxn1ceCvMbv3mfxU5UvT8BCAnWoIIXBrL9oOc8TdtVGYHa2dwcLI6FqQIZXOvR2FZeUo/QeABd/tlf25LcrVlxzmj3tfiX9yVEo0agcxKaxqcACY8kt+DlomQQxmsbGUVJTTa5//bazxbFpqIvAanswCGVH9b5ksC6eraItakPzZ+Wp/0ovwRKV21Ysam4X2lk1DAACgMj1GcXIcAmImWjf/njRZGW67kow1aO9LFfWBKuQR8eTPms8Cvg9m04Cr3L0c7eTDVIPmgKDDMNT6BFUeezmmMAC9A99EYn5sxDEmFVOVNREQbB1FGxLPUMl34CgBF6dQZzQKZx3it1XMI91gl+X3+SK8LLwreMSZJW4E7HXo9rzD4ADE0OMt7LkoUgPsdj7WyrFaH9kfqL+vO/r0SaCOUreb23ahD+KmeXTKV1SYEc6mtR852KvEe3zZlp59bzuGw5SaYADfi4hEoU7QlDkxHPRYh2DoCtKmxGB1moUUXe1mPFA4gqNnqOpHJ+FHgiu2OWEC0M5rkNHmuHts5yfV/cICuDV58ADuoGD3SDMNjDHlILjDtohz5Hptq+m9CInc11JXALkBNLSJK7lz7TrKlTQ2ROXoezYVQJ8qhyvpe5qKqjVmE1RlAAD9ZNkUAx8ZHg10iBfrj2gtr4FXxGwQHWXtts2oojvME9EBGCAAQrMzWDSgLgwmVCLSz/5q1DDRaxIBaqgiZvkuABEF98ZUcipnxnhSjo1qZKJvWZnHDPM62s0c+2TQ+LDCb4GBC6hirIiq+qkKtaBmmq0mEN160WsRM/TA3NTUkaRi8BEbaY8v582DTSvf9dTi8CidljG7kQ2z5kuRaJt67gmyc2ecTMQNqD8KV5oGx1arua2dK6FQpNGL40xeiAEMRtzmcAEg/xnYT0nYTK3wwn+RlVs2mAJxpXHBeshdrxIbttBJCFfNeaieteFTK3RDmIfqD2al+a6AT/BjuJayTVAUuOlf8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLMgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAGAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQPAkfo9KWh5aT4WERKUPQZpHeGb3rRCvlNYiUf9af0pCqSFQAta1p5OSJNYiHXQ6AQd5K0oe/UJhlzKjTHws3EQBEAA2+275+cUGV9d5G7NEuUjWyBLxtAcDgQA6lCQZsXTE/JTLjWPOx54TmComQteJBU0HRkmIB9oD08WaOe+ikjLb8BBLvwJ7JjE3V46iQFdvEuPcFHDO2mM5Hf6q8Pca8K36dkdyogaEeqEGRq7y69uoyiG2wICIy1iULyFFxRIOD5S4YABnRxmEPJnhLNK5s3+YQx+N2L0tdLB5QpH9jXuLV1vMiWTuLHmC+0kyYhmW1YfrT/SGHh0ObYc+4e6Ln2hPCEJiUBBxJDd0VSvXr28TJbhpZVRrlglV4sWUsiWrLfUb1Yt+xTMfF9cbACmFNigZdykO1tXRU0zGaTE3mIq6JcGb4ylQIACPM+2WFjnsgsG+BVKLinX2ZXvOvsaIJ+jylYmeQUI+IiBTEuXnu2RTAE3w6tvhHreViO4W9bNfyNsvfcfUV7+qIACeQ55bN9rN7CXRLLoVMe/OsvEwqBLS2Z/LcoKCvOBtvpH6sRIocW6h1DCuigjswkguMLQ5uRK3sNzJXMgOmP5toBClIkUZ8Dz4O2ftbTGlSV7c9mrBDaLZS6xUIQm+LQdfcjC2PBV2ZBrW2aVLH71fp/vjwIzQj2czGEdqr5/O9IxuUBC6J35ppxk4+LEZfLaXWWj35HgP2o5hNtI9LJ9cu7FdKuaCMh64tfaDxYJbdEkueipNGKwgzYww/j+nEr1xyLYDMBDQb7poN1399tdsl9Oi4OocmyQ9j3o3EUQG/GfLdUXHF0Avr1F1kH0czZQ/INU5uBXrk21DD8Pfs1wzFqI0Lbo40BDkyjKbXGH3+qQiNZX+PdTRTXdQbDYBPGzo40g01IOA91U20S46nO9URqM3ZqUApnbD1ZsJ6YTg8xvngL1zaoFQsADxUaay3jMWMczdoSzyFYaLk7Eta8qZKDLOVTHSxXspC3LDI8O/8RUPFgbnOKDFFlrv/2SJ2NHGGUVmypH9yIK/MAEHiNY2IXc3glj5jAoaWoWyKbIxbkOyigjGjgMD/iuuSifPEJ8H7W76a+AjebB7S6AsnYHEeCY+2no8J5ry1Jh/oBEZAx3K9zQ2GF+IU64nO6I+RPj7tu0xt1BoT/5F2sNPEYE8N5FvC9bHKCscr0kgbm35AE4EUAEPn5PJ4OIBB8I18AEtW09ah2dPjEpoasZ4BqRUQNMIYaQxkexy5fdaczqLUcGJZZ6O2P975z06FHgKRss0pYpTCPc4HWaOjbWBmPGFUBAAAAAGtFoakAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVVcE3NUEbMQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAHgAAAAAAAAAAAAAAAHBvgum7WwgTUBcUq1l0IWcEmA4x", ]; async function run() { From 594feff87e12b5fbf3d659f0b3d2c20a04fd40c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Apr 2024 16:45:06 -0300 Subject: [PATCH 097/174] evm: adds implementation and setup addresses for `DeliveryProvider` --- .../relayer/config/mainnet/contracts.json | 94 ++++++++++++++++++- .../relayer/config/syncContractsJson.ts | 7 +- ethereum/ts-scripts/relayer/helpers/env.ts | 30 ++++++ 3 files changed, 129 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 3b4ea096cd..0092e4176d 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -47,6 +47,98 @@ "address": "0x70B4a48f482956983D8C69D3aE18Fe229888638D" } ], + "deliveryProviderImplementations": [ + { + "chainId": 2, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 4, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 5, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 6, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 10, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 13, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 14, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 16, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 23, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 24, + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c" + }, + { + "chainId": 30, + "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" + } + ], + "deliveryProviderSetups": [ + { + "chainId": 2, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 4, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 5, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 6, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 10, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 13, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 14, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 16, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 23, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 24, + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5" + }, + { + "chainId": 30, + "address": "0x2B1502Ffe717817A0A101a687286bE294fe495f7" + } + ], "wormholeRelayers": [ { "chainId": 2, @@ -231,4 +323,4 @@ "address": "0x231Ca706096427Bd674bFaec28B34d8fCa26E2A1" } ] -} \ No newline at end of file +} diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts index 474ec096f5..2ca11e4a5b 100644 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts @@ -1,9 +1,10 @@ import { readFileSync, writeFileSync } from "fs"; import { init, - updateContractAddress, Deployment, loadDeliveryProviders, + loadDeliveryProviderImplementations, + loadDeliveryProviderSetups, loadWormholeRelayers, loadMockIntegrations, loadCreate2Factories, @@ -14,6 +15,8 @@ const env = init(); interface ContractsJson { deliveryProviders: Deployment[]; + deliveryProviderImplementations: Deployment[]; + deliveryProviderSetups: Deployment[]; wormholeRelayers: Deployment[]; mockIntegrations: Deployment[]; create2Factories: Deployment[]; @@ -29,6 +32,8 @@ async function main() { contracts.wormholeRelayers = loadWormholeRelayers(false); contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); contracts.deliveryProviders = loadDeliveryProviders(); + contracts.deliveryProviderImplementations = loadDeliveryProviderImplementations(); + contracts.deliveryProviderSetups = loadDeliveryProviderSetups(); contracts.mockIntegrations = loadMockIntegrations(); const newStr = JSON.stringify(contracts, undefined, 2); diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index ed7f2b07e6..a132ceda9e 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -217,6 +217,36 @@ export function loadDeliveryProviders(): Deployment[] { return contracts.deliveryProviders; } +export function loadDeliveryProviderSetups(): Deployment[] { + const contracts = readContracts(); + if (contracts.useLastRun) { + const lastRun = loadLastRun( + "deployDeliveryProvider", + `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` + ); + if (lastRun !== undefined) { + return mergeContractAddresses(contracts.deliveryProviderSetups, lastRun.deliveryProviderSetups); + } + } + + return contracts.deliveryProviders; +} + +export function loadDeliveryProviderImplementations(): Deployment[] { + const contracts = readContracts(); + if (contracts.useLastRun) { + const lastRun = loadLastRun( + "deployDeliveryProvider", + `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` + ); + if (lastRun !== undefined) { + return mergeContractAddresses(contracts.deliveryProviderImplementations, lastRun.deliveryProviderImplementations); + } + } + + return contracts.deliveryProviders; +} + export function loadWormholeRelayers(dev: boolean): Deployment[] { const contracts = readContracts(); // TODO: do we really want this dev flag? From c6cb4f6bf48f46bf9db72360dac8348b4a41056c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Apr 2024 16:45:42 -0300 Subject: [PATCH 098/174] evm: adds Scroll and Blast chains to SR --- .../ts-scripts/relayer/config/mainnet/chains.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 06cfe51954..260b1e9567 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -78,6 +78,20 @@ "chainId": 30, "rpc": "https://base.llamarpc.com", "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" + }, + { + "description": "Scroll", + "evmNetworkId": 534352, + "chainId": 34, + "rpc": "https://rpc.ankr.com/scroll", + "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" + }, + { + "description": "Blast", + "evmNetworkId": 81457, + "chainId": 36, + "rpc": "https://rpc.ankr.com/blast", + "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" } ] } \ No newline at end of file From b72c786e729565fd85813786b21875aa8a0f8e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 26 Apr 2024 16:57:57 -0300 Subject: [PATCH 099/174] evm: mock integration contract deployment prints registrations --- .../mockIntegration/deployMockIntegration.ts | 18 +++++++++++++++++- .../mockIntegration/registerMockIntegration.ts | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 17aabd683b..ae38614b6a 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -7,12 +7,17 @@ import { getChain, getSigner, } from "../helpers/env"; -import { tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; import { wait } from "../helpers/utils"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; import { MockRelayerIntegration__factory } from "../../../ethers-contracts"; +interface EmitterRegistration { + chainId: number; + addr: string; +} + const processName = "deployMockIntegration"; init(); const operation = getOperationDescriptor(); @@ -79,16 +84,27 @@ async function run() { throw new Error(`Mock integration emitter registration failed for chain ${chainId}, tx id ${receipt.transactionHash}`); } } + + return { chainId, updateEmitters }; })); for (const task of registerTasks) { if (task.status === "rejected") { // These get discarded and need to be retried later with a separate invocation. console.log(task.reason?.stack || task.reason); + } else { + printUpdate(task.value.updateEmitters, task.value.chainId); } } } +function printUpdate(emitters: EmitterRegistration[], chainId: ChainId) { + console.log(`MockIntegration emitters registered for chain ${chainId}:`); + for (const emitter of emitters) { + console.log(` Target chain ${emitter.chainId}: ${emitter.addr}`); + } +} + function isSupportedChain(deploy: Deployment): boolean { const item = operation.supportedChains.find((chain) => { return deploy.chainId === chain.chainId; diff --git a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts index 04de17f477..5ce2122ff9 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts @@ -23,7 +23,7 @@ interface EmitterRegistration { async function run() { console.log(`Start! ${processName}`); - const emitters: EmitterRegistration[] = allChains.map((chain) => ({ + const emitters = allChains.map((chain) => ({ chainId: chain.chainId, addr: "0x" + tryNativeToHexString(getMockIntegrationAddress(chain), "ethereum"), })) satisfies XAddressStruct[]; From 75647ff341ae54c756e0d6e2bf5819fc8a595052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 11:59:48 -0300 Subject: [PATCH 100/174] evm: changes the way deployment addresses are loaded --- .../deployDeliveryProvider.ts | 19 ++++++++----------- ethereum/ts-scripts/relayer/helpers/env.ts | 4 ++-- .../wormholeRelayer/deployWormholeRelayer.ts | 13 ++++++------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index 36c5b7e1ea..e5a00b3a81 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -8,7 +8,9 @@ import { getOperationDescriptor, init, writeOutputFiles, - loadLastRun, + loadDeliveryProviderImplementations, + loadDeliveryProviderSetups, + loadDeliveryProviders, } from "../helpers/env"; const processName = "deployDeliveryProvider"; @@ -18,21 +20,16 @@ const operation = getOperationDescriptor(); interface DeliveryProviderDeployment { deliveryProviderImplementations: Deployment[]; deliveryProviderSetups: Deployment[]; - deliveryProviderProxies: Deployment[]; + deliveryProviders: Deployment[]; } async function run() { console.log(`Start ${processName}!`); - const lastRun: DeliveryProviderDeployment | undefined = - loadLastRun(processName); const deployments: DeliveryProviderDeployment = { - deliveryProviderImplementations: - lastRun?.deliveryProviderImplementations?.filter(isSupportedChain) || [], - deliveryProviderSetups: - lastRun?.deliveryProviderSetups?.filter(isSupportedChain) || [], - deliveryProviderProxies: - lastRun?.deliveryProviderProxies?.filter(isSupportedChain) || [], + deliveryProviderImplementations: loadDeliveryProviderImplementations().filter(isSupportedChain), + deliveryProviderSetups: loadDeliveryProviderSetups().filter(isSupportedChain), + deliveryProviders: loadDeliveryProviders().filter(isSupportedChain), }; for (const chain of operation.operatingChains) { @@ -50,7 +47,7 @@ async function run() { deliveryProviderImplementation, ); deployments.deliveryProviderSetups.push(deliveryProviderSetup); - deployments.deliveryProviderProxies.push(deliveryProviderProxy); + deployments.deliveryProviders.push(deliveryProviderProxy); console.log(""); } diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index a132ceda9e..f0914962c0 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -210,7 +210,7 @@ export function loadDeliveryProviders(): Deployment[] { `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return mergeContractAddresses(contracts.deliveryProviders, lastRun.deliveryProviderProxies); + return mergeContractAddresses(contracts.deliveryProviders, lastRun.deliveryProviders); } } @@ -257,7 +257,7 @@ export function loadWormholeRelayers(dev: boolean): Deployment[] { `Failed to open last run file for WormholeRelayer proxy contracts. Using only the addresses provided in contracts.json` ); if (lastRun !== undefined) { - return mergeContractAddresses(wormholeRelayers, lastRun.wormholeRelayerProxies); + return mergeContractAddresses(wormholeRelayers, lastRun.wormholeRelayers); } } diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index 2dbc35d8d4..ff33386565 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -8,7 +8,8 @@ import { getDeliveryProviderAddress, Deployment, getOperationDescriptor, - loadLastRun, + loadWormholeRelayerImplementations, + loadWormholeRelayers, } from "../helpers/env"; const processName = "deployWormholeRelayer"; @@ -17,17 +18,15 @@ const operation = getOperationDescriptor(); interface WormholeRelayerDeployment { wormholeRelayerImplementations: Deployment[]; - wormholeRelayerProxies: Deployment[]; + wormholeRelayers: Deployment[]; } async function run() { console.log("Start! " + processName); - const lastRun: WormholeRelayerDeployment | undefined = - loadLastRun(processName); const deployments: WormholeRelayerDeployment = { - wormholeRelayerImplementations: lastRun?.wormholeRelayerImplementations?.filter(isSupportedChain) || [], - wormholeRelayerProxies: lastRun?.wormholeRelayerProxies?.filter(isSupportedChain) || [], + wormholeRelayerImplementations: loadWormholeRelayerImplementations().filter(isSupportedChain) || [], + wormholeRelayers: loadWormholeRelayers(false).filter(isSupportedChain) || [], }; for (const chain of operation.operatingChains) { @@ -42,7 +41,7 @@ async function run() { ); deployments.wormholeRelayerImplementations.push(relayerImplementation); - deployments.wormholeRelayerProxies.push(coreRelayerProxy); + deployments.wormholeRelayers.push(coreRelayerProxy); } writeOutputFiles(deployments, processName); From 3339fac0edb8090458f96acc8fb51a51c66fa3dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 15:39:51 -0300 Subject: [PATCH 101/174] evm: deployments no longer read `lastRun` files to lookup addresses. --- .../relayer/config/syncContractsJson.ts | 47 ----- .../create2Factory/deployCreate2Factory.ts | 31 +-- .../deployDeliveryProvider.ts | 70 ++++--- .../upgradeDeliveryProvider.ts | 4 +- ethereum/ts-scripts/relayer/helpers/env.ts | 190 ++++++++---------- .../mockIntegration/deployMockIntegration.ts | 91 +++------ .../mockIntegration/mockIntegrationDeploy.ts | 55 +++++ .../registerMockIntegration.ts | 54 +---- .../wormholeRelayer/deployWormholeRelayer.ts | 62 +++--- .../deployWormholeRelayerImplementation.ts | 4 +- .../upgradeWormholeRelayerSelfSign.ts | 4 +- 11 files changed, 272 insertions(+), 340 deletions(-) delete mode 100644 ethereum/ts-scripts/relayer/config/syncContractsJson.ts create mode 100644 ethereum/ts-scripts/relayer/mockIntegration/mockIntegrationDeploy.ts diff --git a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts b/ethereum/ts-scripts/relayer/config/syncContractsJson.ts deleted file mode 100644 index 2ca11e4a5b..0000000000 --- a/ethereum/ts-scripts/relayer/config/syncContractsJson.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { readFileSync, writeFileSync } from "fs"; -import { - init, - Deployment, - loadDeliveryProviders, - loadDeliveryProviderImplementations, - loadDeliveryProviderSetups, - loadWormholeRelayers, - loadMockIntegrations, - loadCreate2Factories, - loadWormholeRelayerImplementations, -} from "../helpers/env"; - -const env = init(); - -interface ContractsJson { - deliveryProviders: Deployment[]; - deliveryProviderImplementations: Deployment[]; - deliveryProviderSetups: Deployment[]; - wormholeRelayers: Deployment[]; - mockIntegrations: Deployment[]; - create2Factories: Deployment[]; - wormholeRelayerImplementations: Deployment[]; -} - -async function main() { - const path = `./ts-scripts/relayer/config/${env}/contracts.json`; - const contractsFile = readFileSync(path, "utf8"); - const contracts: ContractsJson = JSON.parse(contractsFile); - console.log(`Old:\n${contractsFile}`); - contracts.create2Factories = loadCreate2Factories(); - contracts.wormholeRelayers = loadWormholeRelayers(false); - contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); - contracts.deliveryProviders = loadDeliveryProviders(); - contracts.deliveryProviderImplementations = loadDeliveryProviderImplementations(); - contracts.deliveryProviderSetups = loadDeliveryProviderSetups(); - contracts.mockIntegrations = loadMockIntegrations(); - - const newStr = JSON.stringify(contracts, undefined, 2); - console.log(`New:\n${newStr}`); - writeFileSync(path, newStr); -} - -main().catch((e) => { - console.error(e); - process.exit(1); -}); diff --git a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts index a48b03ce2a..952233b8aa 100644 --- a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts +++ b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts @@ -1,8 +1,8 @@ +import { inspect } from "util"; import { init, - writeOutputFiles, + saveDeployments, getOperationDescriptor, - getCreate2FactoryAddress, Deployment, } from "../helpers/env"; import { deployCreate2Factory } from "../helpers/deployments"; @@ -14,22 +14,23 @@ const operation = getOperationDescriptor(); async function run() { console.log("Start!"); - const newDeployments = await Promise.all( + const tasks = await Promise.allSettled( operation.operatingChains.map(deployCreate2Factory), ); + const create2Factories: Deployment[] = []; + for (const task of tasks) { + if (task.status === "rejected") { + // TODO: add chain as context + // These get discarded and need to be retried later with a separate invocation. + console.log( + `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, + ); + } else { + create2Factories.push(task.value); + } + } - const oldDeployments = operation.supportedChains.map((chain) => { - return { - chainId: chain.chainId, - address: getCreate2FactoryAddress(chain), - }; - }); - - const create2Factories = oldDeployments.concat( - newDeployments, - ) satisfies Deployment[]; - - writeOutputFiles({ create2Factories }, processName); + saveDeployments({ create2Factories }, processName); } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index e5a00b3a81..4e4c6055cb 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -1,3 +1,4 @@ +import { inspect } from "util"; import { deployDeliveryProviderImplementation, deployDeliveryProviderProxy, @@ -7,10 +8,7 @@ import { Deployment, getOperationDescriptor, init, - writeOutputFiles, - loadDeliveryProviderImplementations, - loadDeliveryProviderSetups, - loadDeliveryProviders, + saveDeployments, } from "../helpers/env"; const processName = "deployDeliveryProvider"; @@ -27,38 +25,48 @@ async function run() { console.log(`Start ${processName}!`); const deployments: DeliveryProviderDeployment = { - deliveryProviderImplementations: loadDeliveryProviderImplementations().filter(isSupportedChain), - deliveryProviderSetups: loadDeliveryProviderSetups().filter(isSupportedChain), - deliveryProviders: loadDeliveryProviders().filter(isSupportedChain), + deliveryProviderImplementations: [], + deliveryProviderSetups: [], + deliveryProviders: [], }; - for (const chain of operation.operatingChains) { - console.log(`Deploying for chain ${chain.chainId}...`); - const deliveryProviderImplementation = - await deployDeliveryProviderImplementation(chain); - const deliveryProviderSetup = await deployDeliveryProviderSetup(chain); - const deliveryProviderProxy = await deployDeliveryProviderProxy( - chain, - deliveryProviderSetup.address, - deliveryProviderImplementation.address, - ); + const tasks = await Promise.allSettled( + operation.operatingChains.map(async (chain) => { + console.log(`Deploying for chain ${chain.chainId}...`); + const deliveryProviderImplementation = + await deployDeliveryProviderImplementation(chain); + const deliveryProviderSetup = await deployDeliveryProviderSetup(chain); + const deliveryProvider = await deployDeliveryProviderProxy( + chain, + deliveryProviderSetup.address, + deliveryProviderImplementation.address, + ); - deployments.deliveryProviderImplementations.push( - deliveryProviderImplementation, - ); - deployments.deliveryProviderSetups.push(deliveryProviderSetup); - deployments.deliveryProviders.push(deliveryProviderProxy); - console.log(""); - } + return { + deliveryProviderImplementation, + deliveryProviderSetup, + deliveryProvider, + }; + }), + ); - writeOutputFiles(deployments, processName); -} + for (const task of tasks) { + if (task.status === "rejected") { + // TODO: add chain as context + // These get discarded and need to be retried later with a separate invocation. + console.log( + `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, + ); + } else { + deployments.deliveryProviderImplementations.push( + task.value.deliveryProviderImplementation, + ); + deployments.deliveryProviderSetups.push(task.value.deliveryProviderSetup); + deployments.deliveryProviders.push(task.value.deliveryProvider); + } + } -function isSupportedChain(deploy: Deployment): boolean { - const item = operation.supportedChains.find((chain) => { - return deploy.chainId === chain.chainId; - }); - return item !== undefined; + saveDeployments(deployments, processName); } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts index 15d54a09ef..4546ea175d 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/upgradeDeliveryProvider.ts @@ -1,6 +1,6 @@ import { init, - writeOutputFiles, + saveDeployments, ChainInfo, Deployment, getDeliveryProvider, @@ -43,7 +43,7 @@ async function run() { } } - writeOutputFiles(output, processName); + saveDeployments(output, processName); } async function upgradeDeliveryProvider( diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index f0914962c0..57a1e83fbf 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -14,6 +14,22 @@ import { Create2Factory__factory, } from "../../../ethers-contracts"; +export interface ContractsJson { + /** + * DeliveryProvider upgradeable proxies. + */ + deliveryProviders: Deployment[]; + deliveryProviderImplementations: Deployment[]; + deliveryProviderSetups: Deployment[]; + /** + * WormholeRelayer upgradeable proxies. + */ + wormholeRelayers: Deployment[]; + mockIntegrations: Deployment[]; + create2Factories: Deployment[]; + wormholeRelayerImplementations: Deployment[]; +} + export type ChainInfo = { evmNetworkId: number; chainId: ChainId; @@ -204,45 +220,18 @@ export function loadGuardianSetIndex(): number { export function loadDeliveryProviders(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployDeliveryProvider", - `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.deliveryProviders, lastRun.deliveryProviders); - } - } return contracts.deliveryProviders; } export function loadDeliveryProviderSetups(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployDeliveryProvider", - `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.deliveryProviderSetups, lastRun.deliveryProviderSetups); - } - } return contracts.deliveryProviders; } export function loadDeliveryProviderImplementations(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployDeliveryProvider", - `Failed to open last run file for DeliveryProvider contracts. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.deliveryProviderImplementations, lastRun.deliveryProviderImplementations); - } - } return contracts.deliveryProviders; } @@ -250,31 +239,15 @@ export function loadDeliveryProviderImplementations(): Deployment[] { export function loadWormholeRelayers(dev: boolean): Deployment[] { const contracts = readContracts(); // TODO: do we really want this dev flag? - const wormholeRelayers = dev ? contracts.wormholeRelayersDev : contracts.wormholeRelayers; - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployWormholeRelayer", - `Failed to open last run file for WormholeRelayer proxy contracts. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(wormholeRelayers, lastRun.wormholeRelayers); - } - } + const wormholeRelayers = dev + ? contracts.wormholeRelayersDev + : contracts.wormholeRelayers; return wormholeRelayers; } export function loadMockIntegrations(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployMockIntegration", - `Failed to open last run file for MockIntegration contracts. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.mockIntegrations, lastRun.mockIntegrations); - } - } return contracts.mockIntegrations; } @@ -282,30 +255,11 @@ export function loadMockIntegrations(): Deployment[] { export function loadWormholeRelayerImplementations(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployWormholeRelayerImplementation", - `Failed to open last run file for WormholeRelayer implementations. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.wormholeRelayerImplementations, lastRun.wormholeRelayerImplementations); - } - } - return contracts.wormholeRelayerImplementations; } export function loadCreate2Factories(): Deployment[] { const contracts = readContracts(); - if (contracts.useLastRun) { - const lastRun = loadLastRun( - "deployCreate2Factory", - `Failed to open last run file for create2 factories. Using only the addresses provided in contracts.json` - ); - if (lastRun !== undefined) { - return mergeContractAddresses(contracts.create2Factories, lastRun.create2Factories); - } - } return contracts.create2Factories; } @@ -344,42 +298,6 @@ export function loadGuardianKeys(): string[] { return output; } -export function writeOutputFiles(output: unknown, processName: string) { - fs.mkdirSync(`./ts-scripts/relayer/output/${env}/${processName}`, { - recursive: true, - }); - fs.writeFileSync( - `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, - JSON.stringify(output), - { flag: "w" }, - ); - fs.writeFileSync( - `./ts-scripts/relayer/output/${env}/${processName}/${Date.now()}.json`, - JSON.stringify(output), - { flag: "w" }, - ); -} - -export function loadLastRun(processName: string, errorMessage?: string): any { - try { - return JSON.parse( - fs.readFileSync( - `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, - "utf8", - ), - ); - } catch (error: unknown) { - if (error instanceof Error && (error as any).code === "ENOENT") { - if (errorMessage !== undefined) { - console.error(errorMessage); - } - return undefined; - } else { - throw error; - } - } -} - export async function getSigner(chain: ChainInfo): Promise { const provider = getProvider(chain); const privateKey = loadPrivateKey(); @@ -454,7 +372,6 @@ export async function getWormholeRelayerAddress( export async function getWormholeRelayerImplementationAddress( chain: ChainInfo, ): Promise { - const thisChainsRelayer = loadWormholeRelayerImplementations().find( (x) => x.chainId == chain.chainId, )?.address; @@ -524,7 +441,10 @@ export const getCreate2Factory = async ( await getSigner(chain), ); -export function updateContractAddress(arr: Deployment[], newAddress: Deployment) { +export function updateContractAddress( + arr: Deployment[], + newAddress: Deployment, +) { const idx = arr.findIndex((a) => a.chainId === newAddress.chainId); if (idx === -1) { arr.push(newAddress); @@ -533,10 +453,72 @@ export function updateContractAddress(arr: Deployment[], newAddress: Deployment) } } -export function mergeContractAddresses(arr: Deployment[], newAddresses: Deployment[]): Deployment[] { +export function mergeContractAddresses( + arr: Deployment[], + newAddresses: Deployment[], +): Deployment[] { const newArray = [...arr]; for (const newAddress of newAddresses) { updateContractAddress(newArray, newAddress); } return newArray; } + +export function writeOutputFiles( + output: unknown, + processName: string, +) { + fs.mkdirSync(`./ts-scripts/relayer/output/${env}/${processName}`, { + recursive: true, + }); + fs.writeFileSync( + `./ts-scripts/relayer/output/${env}/${processName}/lastrun.json`, + JSON.stringify(output), + { flag: "w" }, + ); + fs.writeFileSync( + `./ts-scripts/relayer/output/${env}/${processName}/${Date.now()}.json`, + JSON.stringify(output), + { flag: "w" }, + ); +} + +/** + * Saves deployments using the (contract, chain id) tuple as a key. + * Overwrites old deployments are any for that particular contract and chain id. + */ +export function saveDeployments( + newContracts: Partial, + processName: string, +) { + writeOutputFiles(newContracts, processName); + syncContractsJson(newContracts); +} + +function syncContractsJson(newContracts: Partial) { + const path = `./ts-scripts/relayer/config/${env}/contracts.json`; + const contractsFile = fs.readFileSync(path, "utf8"); + const contracts: ContractsJson = JSON.parse(contractsFile); + console.log(`Old:\n${contractsFile}`); + // This reads the contracts file over and over many times. + // TODO: Read once and load all addresses from there. + contracts.create2Factories = loadCreate2Factories(); + contracts.wormholeRelayers = loadWormholeRelayers(false); + contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); + contracts.deliveryProviders = loadDeliveryProviders(); + contracts.deliveryProviderImplementations = loadDeliveryProviderImplementations(); + contracts.deliveryProviderSetups = loadDeliveryProviderSetups(); + contracts.mockIntegrations = loadMockIntegrations(); + + for (const [key, newDeployments] of Object.entries(newContracts)) { + const savedDeployments = contracts[key as keyof typeof contracts]; + contracts[key as keyof typeof contracts] = mergeContractAddresses( + savedDeployments, + newDeployments, + ); + } + + const newStr = JSON.stringify(contracts, undefined, 2); + console.log(`New:\n${newStr}`); + fs.writeFileSync(path, newStr); +} diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index ae38614b6a..c433192c2e 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -1,22 +1,16 @@ +import { inspect } from "util"; import { init, - writeOutputFiles, + saveDeployments, Deployment, getOperationDescriptor, loadMockIntegrations, getChain, - getSigner, } from "../helpers/env"; -import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; -import { deployMockIntegration, buildOverrides } from "../helpers/deployments"; -import { wait } from "../helpers/utils"; +import { tryNativeToHexString } from "@certusone/wormhole-sdk"; +import { deployMockIntegration } from "../helpers/deployments"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; -import { MockRelayerIntegration__factory } from "../../../ethers-contracts"; - -interface EmitterRegistration { - chainId: number; - addr: string; -} +import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; const processName = "deployMockIntegration"; init(); @@ -29,87 +23,52 @@ interface MockIntegrationDeployment { async function run() { console.log("Start!"); - const oldDeployments = loadMockIntegrations().filter(isSupportedChain); const newDeployments: Deployment[] = []; // TODO: deploy only on chains missing deployment - const deploymentTasks = await Promise.allSettled(operation.operatingChains.map(async (chain) => { - return deployMockIntegration(chain); - })); + const deploymentTasks = await Promise.allSettled( + operation.operatingChains.map(async (chain) => { + return deployMockIntegration(chain); + }), + ); for (const task of deploymentTasks) { if (task.status === "rejected") { + // TODO: add chain as context // These get discarded and need to be retried later with a separate invocation. - console.log(task.reason?.stack || task.reason); + console.log( + `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, + ); } else { newDeployments.push(task.value); } } const output = { - mockIntegrations: oldDeployments.concat(newDeployments), + mockIntegrations: newDeployments, } satisfies MockIntegrationDeployment; - writeOutputFiles(output, processName); + saveDeployments(output, processName); - const emitters = output.mockIntegrations.map(({address, chainId}) => ({ + const emitters = loadMockIntegrations().map(({ address, chainId }) => ({ chainId, addr: "0x" + tryNativeToHexString(address, "ethereum"), })) satisfies XAddressStruct[]; - const registerTasks = await Promise.allSettled(output.mockIntegrations.map(async ({chainId, address}) => { - console.log(`Registering emitters for chainId ${chainId}`); - const chain = getChain(chainId); - - // Loading this way would necessitate having last run enabled and we don't want that. - // const mockIntegration = await getMockIntegration(chain); - const signer = await getSigner(chain); - const mockIntegration = MockRelayerIntegration__factory.connect(address, signer); - - const updateEmitters: typeof emitters = []; - for (const emitter of emitters) { - const currentEmitter = await mockIntegration.getRegisteredContract(emitter.chainId); - if (currentEmitter.toLowerCase() !== emitter.addr.toLowerCase()) { - updateEmitters.push(emitter); - } - } - - if (updateEmitters.length > 0) { - const overrides = await buildOverrides( - () => mockIntegration.estimateGas.registerEmitters(emitters), - chain, - ); - const receipt = await mockIntegration.registerEmitters(emitters, overrides).then(wait); - - if (receipt.status !== 1) { - throw new Error(`Mock integration emitter registration failed for chain ${chainId}, tx id ${receipt.transactionHash}`); - } - } - - return { chainId, updateEmitters }; - })); + const registerTasks = await Promise.allSettled( + output.mockIntegrations.map(async ({ chainId }) => { + const chain = getChain(chainId); + return registerMockIntegration(chain, emitters); + }), + ); for (const task of registerTasks) { if (task.status === "rejected") { // These get discarded and need to be retried later with a separate invocation. - console.log(task.reason?.stack || task.reason); + console.log(task.reason?.stack || inspect(task.reason)); } else { - printUpdate(task.value.updateEmitters, task.value.chainId); + printRegistration(task.value.updateEmitters, task.value.chain); } } } -function printUpdate(emitters: EmitterRegistration[], chainId: ChainId) { - console.log(`MockIntegration emitters registered for chain ${chainId}:`); - for (const emitter of emitters) { - console.log(` Target chain ${emitter.chainId}: ${emitter.addr}`); - } -} - -function isSupportedChain(deploy: Deployment): boolean { - const item = operation.supportedChains.find((chain) => { - return deploy.chainId === chain.chainId; - }); - return item !== undefined; -} - run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/mockIntegrationDeploy.ts b/ethereum/ts-scripts/relayer/mockIntegration/mockIntegrationDeploy.ts new file mode 100644 index 0000000000..0624615061 --- /dev/null +++ b/ethereum/ts-scripts/relayer/mockIntegration/mockIntegrationDeploy.ts @@ -0,0 +1,55 @@ +import { + getMockIntegration, + ChainInfo, +} from "../helpers/env"; +import { buildOverrides } from "../helpers/deployments"; + +export interface EmitterRegistration { + chainId: number; + addr: string; +} + +export async function registerMockIntegration( + chain: ChainInfo, + emitters: EmitterRegistration[], +) { + console.log(`Registering emitters for chainId ${chain.chainId}`); + const mockIntegration = await getMockIntegration(chain); + + const updateEmitters: EmitterRegistration[] = []; + for (const emitter of emitters) { + const currentEmitter = await mockIntegration.getRegisteredContract( + emitter.chainId, + ); + if (currentEmitter.toLowerCase() !== emitter.addr.toLowerCase()) { + updateEmitters.push(emitter); + } + } + + if (updateEmitters.length > 0) { + const overrides = await buildOverrides( + () => mockIntegration.estimateGas.registerEmitters(updateEmitters), + chain, + ); + console.log(`About to send emitter registration for chain ${chain.chainId}`); + const tx = await mockIntegration.registerEmitters(updateEmitters, overrides); + const receipt = await tx.wait(); + + if (receipt.status !== 1) { + throw new Error( + `Mock integration emitter registration failed for chain ${chain.chainId}, tx id ${tx.hash}`, + ); + } + } + + return { chain, updateEmitters }; +} + +export function printRegistration(emitters: EmitterRegistration[], chain: ChainInfo) { + console.log( + `MockIntegration emitters registered for chain ${chain.chainId}:`, + ); + for (const emitter of emitters) { + console.log(` Target chain ${emitter.chainId}: ${emitter.addr}`); + } +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts index 5ce2122ff9..f88c6c9243 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts @@ -1,34 +1,32 @@ import { init, loadChains, - getMockIntegration, getMockIntegrationAddress, - ChainInfo, getOperatingChains, } from "../helpers/env"; -import { buildOverrides } from "../helpers/deployments"; import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; +import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; const processName = "registerMockIntegration"; init(); const allChains = loadChains(); const operatingChains = getOperatingChains(); -interface EmitterRegistration { - chainId: number; - addr: string; -} - async function run() { console.log(`Start! ${processName}`); const emitters = allChains.map((chain) => ({ chainId: chain.chainId, - addr: "0x" + tryNativeToHexString(getMockIntegrationAddress(chain), "ethereum"), + addr: + "0x" + tryNativeToHexString(getMockIntegrationAddress(chain), "ethereum"), })) satisfies XAddressStruct[]; - const results = await Promise.allSettled(operatingChains.map(async (chain) => registerMockIntegration(chain, emitters))); + const results = await Promise.allSettled( + operatingChains.map(async (chain) => + registerMockIntegration(chain, emitters), + ), + ); for (const result of results) { if (result.status === "rejected") { @@ -36,43 +34,9 @@ async function run() { `Price update failed: ${result.reason?.stack || result.reason}`, ); } else { - printUpdate(result.value.updateEmitters, result.value.chain); - } - } -} - -async function registerMockIntegration(chain: ChainInfo, emitters: EmitterRegistration[]) { - console.log(`Registering emitters for chainId ${chain.chainId}`); - const mockIntegration = await getMockIntegration(chain); - - const updateEmitters: EmitterRegistration[] = []; - for (const emitter of emitters) { - const currentEmitter = await mockIntegration.getRegisteredContract(emitter.chainId); - if (currentEmitter.toLowerCase() !== emitter.addr.toLowerCase()) { - updateEmitters.push(emitter); + printRegistration(result.value.updateEmitters, result.value.chain); } } - - const overrides = await buildOverrides( - () => mockIntegration.estimateGas.registerEmitters(updateEmitters), - chain, - ); - console.log(`About to send emitter registration for chain ${chain.chainId}`); - const tx = await mockIntegration.registerEmitters(updateEmitters, overrides); - const receipt = await tx.wait(); - - if (receipt.status !== 1) { - throw new Error(`Mock integration emitter registration failed for chain ${chain.chainId}, tx id ${tx.hash}`); - } - - return { chain, updateEmitters }; -} - -function printUpdate(emitters: EmitterRegistration[], chain: ChainInfo) { - console.log(`MockIntegration emitters registered for chain ${chain.chainId}:`); - for (const emitter of emitters) { - console.log(` Target chain ${emitter.chainId}: ${emitter.addr}`); - } } run().then(() => console.log(`Done! ${processName}`)); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index ff33386565..843f8c777e 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -1,15 +1,14 @@ +import { inspect } from "util"; import { deployWormholeRelayerImplementation, deployWormholeRelayerProxy, } from "../helpers/deployments"; import { init, - writeOutputFiles, + saveDeployments, getDeliveryProviderAddress, Deployment, getOperationDescriptor, - loadWormholeRelayerImplementations, - loadWormholeRelayers, } from "../helpers/env"; const processName = "deployWormholeRelayer"; @@ -25,33 +24,44 @@ async function run() { console.log("Start! " + processName); const deployments: WormholeRelayerDeployment = { - wormholeRelayerImplementations: loadWormholeRelayerImplementations().filter(isSupportedChain) || [], - wormholeRelayers: loadWormholeRelayers(false).filter(isSupportedChain) || [], + wormholeRelayerImplementations: [], + wormholeRelayers: [], }; - for (const chain of operation.operatingChains) { - console.log(`Deploying for chain ${chain.chainId}...`); - const relayerImplementation = await deployWormholeRelayerImplementation( - chain, - ); - const coreRelayerProxy = await deployWormholeRelayerProxy( - chain, - relayerImplementation.address, - getDeliveryProviderAddress(chain), - ); - - deployments.wormholeRelayerImplementations.push(relayerImplementation); - deployments.wormholeRelayers.push(coreRelayerProxy); - } + const tasks = await Promise.allSettled( + operation.operatingChains.map(async (chain) => { + console.log(`Deploying for chain ${chain.chainId}...`); + const wormholeRelayerImplementation = + await deployWormholeRelayerImplementation(chain); + const wormholeRelayer = await deployWormholeRelayerProxy( + chain, + wormholeRelayerImplementation.address, + getDeliveryProviderAddress(chain), + ); - writeOutputFiles(deployments, processName); -} + return { + wormholeRelayerImplementation, + wormholeRelayer, + }; + }), + ); + + for (const task of tasks) { + if (task.status === "rejected") { + // TODO: add chain as context + // These get discarded and need to be retried later with a separate invocation. + console.log( + `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, + ); + } else { + deployments.wormholeRelayerImplementations.push( + task.value.wormholeRelayerImplementation, + ); + deployments.wormholeRelayers.push(task.value.wormholeRelayer); + } + } -function isSupportedChain(deploy: Deployment): boolean { - const item = operation.supportedChains.find((chain) => { - return deploy.chainId === chain.chainId; - }); - return item !== undefined; + saveDeployments(deployments, processName); } run().then(() => console.log("Done! " + processName)); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts index bf4260cd6b..8b08bb94e4 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayerImplementation.ts @@ -3,7 +3,7 @@ import { } from "../helpers/deployments"; import { init, - writeOutputFiles, + saveDeployments, getOperatingChains, Deployment, } from "../helpers/env"; @@ -38,7 +38,7 @@ async function run() { } } - writeOutputFiles(output, processName); + saveDeployments(output, processName); } run().then(() => console.log("Done! " + processName)); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts index 890148dd65..4c6d411464 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/upgradeWormholeRelayerSelfSign.ts @@ -6,7 +6,7 @@ import { init, ChainInfo, getWormholeRelayer, - writeOutputFiles, + saveDeployments, getOperatingChains, Deployment, } from "../helpers/env"; @@ -43,7 +43,7 @@ async function run() { } } - writeOutputFiles(output, processName); + saveDeployments(output, processName); } async function upgradeWormholeRelayer( From 92e9a559103ae90995faa0507e22023a4810a4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 15:40:51 -0300 Subject: [PATCH 102/174] evm: adds prettier and updates typescript --- ethereum/package-lock.json | 52 +++++++++++++++++++++++++++----------- ethereum/package.json | 3 ++- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 7bcddc7e46..4ecee64d04 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -28,11 +28,12 @@ "chai": "^4.3.7", "chalk": "^4.0.0", "mocha": "^8.4.0", + "prettier": "^3.2.5", "truffle": "5.8.4", "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "tsx": "^4.7.0", - "typescript": "^5.3.3" + "typescript": "^5.4.5" } }, "node_modules/@apollo/client": { @@ -20335,15 +20336,18 @@ } }, "node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/printj": { @@ -26840,6 +26844,18 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/ts-generator/node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ts-invariant": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", @@ -27648,9 +27664,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -45852,9 +45868,9 @@ "dev": true }, "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true }, "printj": { @@ -50907,6 +50923,12 @@ "requires": { "minimist": "^1.2.5" } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true } } }, @@ -51584,9 +51606,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==" + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==" }, "typescript-compare": { "version": "0.0.2", diff --git a/ethereum/package.json b/ethereum/package.json index b69c6f2fe5..eec37a5e73 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -14,11 +14,12 @@ "chai": "^4.3.7", "chalk": "^4.0.0", "mocha": "^8.4.0", + "prettier": "^3.2.5", "truffle": "5.8.4", "truffle-flattener": "^1.6.0", "truffle-plugin-verify": "^0.5.11", "tsx": "^4.7.0", - "typescript": "^5.3.3" + "typescript": "^5.4.5" }, "scripts": { "build:core": "truffle compile", From 4f18cd02f75c1c6abb64d04e7f2b0464ac1dbb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 19:12:58 -0300 Subject: [PATCH 103/174] evm: writes update to contracts file only if there is a new deployment --- ethereum/ts-scripts/relayer/helpers/env.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 57a1e83fbf..393bdd54c6 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -496,6 +496,11 @@ export function saveDeployments( } function syncContractsJson(newContracts: Partial) { + if (Object.values(newContracts).every((deployments) => deployments.length === 0)) { + console.log("No changes to deployments."); + return; + } + const path = `./ts-scripts/relayer/config/${env}/contracts.json`; const contractsFile = fs.readFileSync(path, "utf8"); const contracts: ContractsJson = JSON.parse(contractsFile); From cd8e78afe240f734294b6e570fb65ee02af21546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 19:14:43 -0300 Subject: [PATCH 104/174] evm: updates chain RPC URLs and tx overrides --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 4 ++-- ethereum/ts-scripts/relayer/helpers/deployments.ts | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 260b1e9567..5ca47f31b7 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -20,7 +20,7 @@ "description": "Polygon", "evmNetworkId": 137, "chainId": 5, - "rpc": "https://polygon.llamarpc.com", + "rpc": "https://rpc-mainnet.maticvigil.com", "wormholeAddress": "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7" }, { @@ -62,7 +62,7 @@ "description": "Arbitrum", "evmNetworkId": 42161, "chainId": 23, - "rpc": "https://rpc.arb1.arbitrum.gateway.fm", + "rpc": "https://arbitrum-one-rpc.publicnode.com", "wormholeAddress": "0xa5f208e072434bC67592E4C49C1B991BA79BCA46" }, { diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 16fb11220c..000db1bf15 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -265,12 +265,18 @@ export async function buildOverrides( // This is normally autodetected in bsc but we want to set the gas price to a fixed value. // We need to ensure we are using the correct tx envelope in that case. overrides.type = 0; - overrides.gasPrice = ethers.utils.parseUnits("15", "gwei"); + overrides.gasPrice = ethers.utils.parseUnits("1", "gwei"); } else if (chain.chainId === 23) { // Arbitrum gas price feeds are excessive on public endpoints too apparently. overrides.type = 2; overrides.maxFeePerGas = ethers.utils.parseUnits("0.3", "gwei"); overrides.maxPriorityFeePerGas = 0; + } else if (chain.chainId === 34) { + overrides.type = 0; + } else if (chain.chainId === 36) { + overrides.type = 2; + overrides.maxFeePerGas = ethers.utils.parseUnits("0.005", "gwei"); + overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.001", "gwei"); } return overrides; } From 4c5fa9ac741abd7fc5d569f84e4798b17b35467c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 20:28:21 -0300 Subject: [PATCH 105/174] evm: fixes a few helper functions for deployment --- ethereum/ts-scripts/relayer/helpers/env.ts | 28 ++++++---------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 393bdd54c6..f358f49bd9 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -88,7 +88,7 @@ export function readChains() { return JSON.parse(chainFile); } -export function readContracts() { +export function readContracts(): ContractsJson { const filepath = `./ts-scripts/relayer/config/${env}/contracts.json`; const contractsFile = fs.readFileSync(filepath, "utf8"); if (!contractsFile) { @@ -220,47 +220,36 @@ export function loadGuardianSetIndex(): number { export function loadDeliveryProviders(): Deployment[] { const contracts = readContracts(); - return contracts.deliveryProviders; } export function loadDeliveryProviderSetups(): Deployment[] { const contracts = readContracts(); - - return contracts.deliveryProviders; + return contracts.deliveryProviderSetups; } export function loadDeliveryProviderImplementations(): Deployment[] { const contracts = readContracts(); - - return contracts.deliveryProviders; + return contracts.deliveryProviderImplementations; } -export function loadWormholeRelayers(dev: boolean): Deployment[] { +export function loadWormholeRelayers(): Deployment[] { const contracts = readContracts(); - // TODO: do we really want this dev flag? - const wormholeRelayers = dev - ? contracts.wormholeRelayersDev - : contracts.wormholeRelayers; - - return wormholeRelayers; + return contracts.wormholeRelayers; } export function loadMockIntegrations(): Deployment[] { const contracts = readContracts(); - return contracts.mockIntegrations; } export function loadWormholeRelayerImplementations(): Deployment[] { const contracts = readContracts(); - return contracts.wormholeRelayerImplementations; } export function loadCreate2Factories(): Deployment[] { const contracts = readContracts(); - return contracts.create2Factories; } @@ -353,10 +342,7 @@ export async function getDeliveryProvider( export async function getWormholeRelayerAddress( chain: ChainInfo, ): Promise { - // See if we are in dev mode (i.e. forge contracts compiled without via-ir) - const dev = get_env_var("DEV") == "True" ? true : false; - - const thisChainsRelayer = loadWormholeRelayers(dev).find( + const thisChainsRelayer = loadWormholeRelayers().find( (x) => x.chainId == chain.chainId, )?.address; if (thisChainsRelayer) { @@ -508,7 +494,7 @@ function syncContractsJson(newContracts: Partial) { // This reads the contracts file over and over many times. // TODO: Read once and load all addresses from there. contracts.create2Factories = loadCreate2Factories(); - contracts.wormholeRelayers = loadWormholeRelayers(false); + contracts.wormholeRelayers = loadWormholeRelayers(); contracts.wormholeRelayerImplementations = loadWormholeRelayerImplementations(); contracts.deliveryProviders = loadDeliveryProviders(); contracts.deliveryProviderImplementations = loadDeliveryProviderImplementations(); From 83ad7926c0b4edc915fc283d5ecb7bf4733164e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 20:40:58 -0300 Subject: [PATCH 106/174] evm: adds a safety check when deploying create2 factory --- .../ts-scripts/relayer/helpers/deployments.ts | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 000db1bf15..e56b09fd60 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -14,6 +14,7 @@ import { getWormholeRelayerAddress, getCreate2Factory, env, + getChain, } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; @@ -108,6 +109,8 @@ export async function deployMockIntegration( return { address: receipt.contractAddress, chainId: chain.chainId }; } +let ethC2Promise: Promise; + /** * Deploys `Create2Factory` with the old (account, nonce) tuple hashing creation mechanism. * To achieve same address multichain deployments, ensure that the @@ -121,6 +124,56 @@ export async function deployCreate2Factory( const signer = await getSigner(chain); const factory = new Create2Factory__factory(signer); + const signerAddress = await signer.getAddress(); + if (env === "mainnet" && signerAddress.toLowerCase() === "0x5623bdf52b51085c807a5dc39152eed05825f5fd") { + console.log("doing the comparison here"); + // Here we check that the bytecode matches against Ethereum. + if (ethC2Promise === undefined) { + // we assign the promise immediately to avoid race conditions + ethC2Promise = (async () => { + const ethChain = getChain(2); + const ethFactory = await getCreate2Factory(ethChain); + return ethFactory.provider.getCode(ethFactory.address); + })(); + } + + const ethCreate2FactoryCodeStr = strip0x(await ethC2Promise); + // Note that we're looking up the deployed bytecode within the "init" bytecode, + // i.e. bytecode that contains both the constructor and the object to be deployed. + + // The create 2 factory contract has these immutables (taken from the compiler output for Create2Factory): + // "immutableReferences": { + // "20558": [ + // { + // "start": 704, + // "length": 32 + // }, + // { + // "start": 1007, + // "length": 32 + // } + // ], + // "20560": [ + // { + // "start": 1134, + // "length": 32 + // } + // ] + // } + // These are set as soon as the constructor executes and they only depend on the account where the constructor executes, since it has no constructor parameters. + // Thus, we'll just zero out these locations in the ethereum bytecode so that we can look up the deployed bytecode within the deployable bytecode that we are about to use. + const ethCreate2FactoryCode = Buffer.from(ethCreate2FactoryCodeStr, "hex"); + const zeroWord = Buffer.alloc(32, 0); + ethCreate2FactoryCode.set(zeroWord, 704); + ethCreate2FactoryCode.set(zeroWord, 1007); + ethCreate2FactoryCode.set(zeroWord, 1134); + const comparableEthCode = ethCreate2FactoryCode.toString("hex"); + + if (!factory.bytecode.includes(comparableEthCode)) { + throw new Error("Factory contract bytecode doesn't match the factory deployed in Ethereum. Aborting deployment."); + } + } + const overrides = await buildOverridesDeploy(factory, chain, []); const contract = await factory.deploy(overrides).then(deployed); console.log(`Successfully deployed contract at ${contract.address}`); @@ -280,3 +333,7 @@ export async function buildOverrides( } return overrides; } + +function strip0x(str: string) { + return str.startsWith("0x") ? str.substring(2) : str; +} \ No newline at end of file From 31442df6c4654bd24715a9f5b9b86eeb03a13102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 20:47:43 -0300 Subject: [PATCH 107/174] evm: removes last run option from scripts --- ethereum/ts-scripts/relayer/config/checkNetworks.ts | 11 ----------- .../ts-scripts/relayer/config/mainnet/contracts.json | 2 +- .../relayer/shell/deployConfigureCreate2Factory.sh | 2 +- .../relayer/shell/deployConfigureMainnet.sh | 2 +- .../ts-scripts/relayer/shell/deployConfigureTest.sh | 2 +- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index 830d8beb6d..c11d0f5f58 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -34,17 +34,6 @@ async function main() { console.log(""); console.log("Networks checked"); console.log(""); - - if (process.argv.find((arg) => arg == "--set-last-run")) { - const path = `./ts-scripts/relayer/config/${env}/contracts.json`; - const contractsFile = readFileSync(path); - if (!contractsFile) { - throw Error("Failed to find contracts file for this process!"); - } - const contracts = JSON.parse(contractsFile.toString()); - contracts.useLastRun = true; - writeFileSync(path, JSON.stringify(contracts, undefined, 2)); - } } main().catch((e) => { diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 0092e4176d..72c4673c4e 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -323,4 +323,4 @@ "address": "0x231Ca706096427Bd674bFaec28B34d8fCa26E2A1" } ] -} +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh index 4c0b3090d3..22f6f5f019 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureCreate2Factory.sh @@ -1,3 +1,3 @@ -npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh index 64c684f40b..61825170a4 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -1,6 +1,6 @@ # This pipeline doesn't attempt to sign governance VAAs since those need to be signed by the guardians. -npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh index 1a2b0bf2c4..c08d2be297 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh @@ -1,4 +1,4 @@ -npx tsx ./ts-scripts/relayer/config/checkNetworks.ts --set-last-run \ +npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ && npx tsx ./ts-scripts/relayer/create2Factory/deployCreate2Factory.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ From 8a22423ac3dd46732cce2a09022ea22cf8b174b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 20:51:46 -0300 Subject: [PATCH 108/174] evm: updates wormhole sdk --- ethereum/package-lock.json | 14 +++++++------- ethereum/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 4ecee64d04..828f6001b8 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.10.8", + "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", "dotenv": "^10.0.0", "elliptic": "^6.5.2", @@ -1066,9 +1066,9 @@ } }, "node_modules/@certusone/wormhole-sdk": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.8.tgz", - "integrity": "sha512-W2rA8fMdkVFWvy93+51K+8Kv/bpjuFtxCYCQI4YkWe+g4zLkDXw+yYMVPPqc/chFLFNSutPMqUtXAg7+y8lowg==", + "version": "0.10.15", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.15.tgz", + "integrity": "sha512-XECfrvdYjsGPZWyR1bqWCPOiRw7+6upszpSvAXjKIqEnTNXOCYRkt5ae8TVh5oZxPjpts2X3t4Oi9WGcEssHpQ==", "dependencies": { "@certusone/wormhole-sdk-proto-web": "0.0.7", "@certusone/wormhole-sdk-wasm": "^0.0.1", @@ -30236,9 +30236,9 @@ } }, "@certusone/wormhole-sdk": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.8.tgz", - "integrity": "sha512-W2rA8fMdkVFWvy93+51K+8Kv/bpjuFtxCYCQI4YkWe+g4zLkDXw+yYMVPPqc/chFLFNSutPMqUtXAg7+y8lowg==", + "version": "0.10.15", + "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.15.tgz", + "integrity": "sha512-XECfrvdYjsGPZWyR1bqWCPOiRw7+6upszpSvAXjKIqEnTNXOCYRkt5ae8TVh5oZxPjpts2X3t4Oi9WGcEssHpQ==", "requires": { "@certusone/wormhole-sdk-proto-web": "0.0.7", "@certusone/wormhole-sdk-wasm": "^0.0.1", diff --git a/ethereum/package.json b/ethereum/package.json index eec37a5e73..98f768aa2a 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -44,7 +44,7 @@ "author": "", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.10.8", + "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", "dotenv": "^10.0.0", "elliptic": "^6.5.2", From 1a514b862a3e092a4f959b37699b5f5fd1d01719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 29 Apr 2024 21:09:08 -0300 Subject: [PATCH 109/174] evm: updates guardian set index for mainnet --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 5ca47f31b7..efd431d586 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -1,5 +1,5 @@ { - "guardianSetIndex": 3, + "guardianSetIndex": 4, "description": "This file contains the chains against which all the scripts should run.", "chains": [ { From 7717c7e07f1301269d0cb9b8b2a9098023528fa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 30 Apr 2024 11:16:04 -0300 Subject: [PATCH 110/174] evm: makes `Create2Factory` deploy check more reliable --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 13 ++++++++----- ethereum/ts-scripts/relayer/helpers/env.ts | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index e56b09fd60..3c5fb4ee31 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -15,6 +15,7 @@ import { getCreate2Factory, env, getChain, + getProvider, } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; @@ -125,14 +126,15 @@ export async function deployCreate2Factory( const factory = new Create2Factory__factory(signer); const signerAddress = await signer.getAddress(); - if (env === "mainnet" && signerAddress.toLowerCase() === "0x5623bdf52b51085c807a5dc39152eed05825f5fd") { - console.log("doing the comparison here"); + const ethChain = getChain(2); + const ethChainProvider = getProvider(ethChain); + const ethNetwork = await ethChainProvider.getNetwork(); + if (ethNetwork.chainId === 1 && signerAddress.toLowerCase() === "0x5623bdf52b51085c807a5dc39152eed05825f5fd") { // Here we check that the bytecode matches against Ethereum. if (ethC2Promise === undefined) { // we assign the promise immediately to avoid race conditions ethC2Promise = (async () => { - const ethChain = getChain(2); - const ethFactory = await getCreate2Factory(ethChain); + const ethFactory = await getCreate2Factory(ethChain, ethChainProvider); return ethFactory.provider.getCode(ethFactory.address); })(); } @@ -160,7 +162,8 @@ export async function deployCreate2Factory( // } // ] // } - // These are set as soon as the constructor executes and they only depend on the account where the constructor executes, since it has no constructor parameters. + // These are set as soon as the constructor executes and they only depend on the account where the constructor executes. + // The constructor has no parameters. // Thus, we'll just zero out these locations in the ethereum bytecode so that we can look up the deployed bytecode within the deployable bytecode that we are about to use. const ethCreate2FactoryCode = Buffer.from(ethCreate2FactoryCodeStr, "hex"); const zeroWord = Buffer.alloc(32, 0); diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index f358f49bd9..cac411feb9 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -421,10 +421,11 @@ export function getCreate2FactoryAddress(chain: ChainInfo): string { export const getCreate2Factory = async ( chain: ChainInfo, + signerOrProvider?: ethers.Signer | ethers.providers.StaticJsonRpcProvider ): Promise => Create2Factory__factory.connect( getCreate2FactoryAddress(chain), - await getSigner(chain), + signerOrProvider ?? await getSigner(chain), ); export function updateContractAddress( From 2f11f74667651880a2650084ae744f0d1ab7b125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 30 Apr 2024 11:16:40 -0300 Subject: [PATCH 111/174] evm: adds addresses for `Create2Factory` --- ethereum/ts-scripts/relayer/config/mainnet/contracts.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 72c4673c4e..02786d37e7 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -275,6 +275,14 @@ { "chainId": 30, "address": "0x51fEBFE97190a9825E98E04AF8Df60e269912Dd8" + }, + { + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", + "chainId": 34 + }, + { + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", + "chainId": 36 } ], "wormholeRelayerImplementations": [ From 119b032fc44d683cdebf722fc76ef0861c59a270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 12:36:08 -0300 Subject: [PATCH 112/174] evm: adds friendly error exit code to deployment scripts --- .../relayer/create2Factory/deployCreate2Factory.ts | 8 ++++++++ .../relayer/deliveryProvider/deployDeliveryProvider.ts | 7 +++++++ .../relayer/mockIntegration/deployMockIntegration.ts | 8 ++++++++ .../relayer/wormholeRelayer/deployWormholeRelayer.ts | 7 +++++++ 4 files changed, 30 insertions(+) diff --git a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts index 952233b8aa..3c1ef4b21d 100644 --- a/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts +++ b/ethereum/ts-scripts/relayer/create2Factory/deployCreate2Factory.ts @@ -18,6 +18,8 @@ async function run() { operation.operatingChains.map(deployCreate2Factory), ); const create2Factories: Deployment[] = []; + + let failed = false; for (const task of tasks) { if (task.status === "rejected") { // TODO: add chain as context @@ -25,12 +27,18 @@ async function run() { console.log( `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, ); + failed = true; } else { create2Factories.push(task.value); } } saveDeployments({ create2Factories }, processName); + + // We throw here to ensure non zero exit code and communicate failure to shell + if (failed) { + throw new Error("One or more errors happened during execution. See messages above."); + } } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts index 4e4c6055cb..a38c1142d5 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/deployDeliveryProvider.ts @@ -50,6 +50,7 @@ async function run() { }), ); + let failed = false; for (const task of tasks) { if (task.status === "rejected") { // TODO: add chain as context @@ -57,6 +58,7 @@ async function run() { console.log( `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, ); + failed = true; } else { deployments.deliveryProviderImplementations.push( task.value.deliveryProviderImplementation, @@ -67,6 +69,11 @@ async function run() { } saveDeployments(deployments, processName); + + // We throw here to ensure non zero exit code and communicate failure to shell + if (failed) { + throw new Error("One or more errors happened during execution. See messages above."); + } } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index c433192c2e..299fa2dc59 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -32,6 +32,7 @@ async function run() { }), ); + let failed = false; for (const task of deploymentTasks) { if (task.status === "rejected") { // TODO: add chain as context @@ -39,6 +40,7 @@ async function run() { console.log( `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, ); + failed = true; } else { newDeployments.push(task.value); } @@ -65,10 +67,16 @@ async function run() { if (task.status === "rejected") { // These get discarded and need to be retried later with a separate invocation. console.log(task.reason?.stack || inspect(task.reason)); + failed = true; } else { printRegistration(task.value.updateEmitters, task.value.chain); } } + + // We throw here to ensure non zero exit code and communicate failure to shell + if (failed) { + throw new Error("One or more errors happened during execution. See messages above."); + } } run().then(() => console.log("Done!")); diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts index 843f8c777e..f99568b9d6 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts @@ -46,6 +46,7 @@ async function run() { }), ); + let failed = false; for (const task of tasks) { if (task.status === "rejected") { // TODO: add chain as context @@ -53,6 +54,7 @@ async function run() { console.log( `Deployment failed: ${task.reason?.stack || inspect(task.reason)}`, ); + failed = true; } else { deployments.wormholeRelayerImplementations.push( task.value.wormholeRelayerImplementation, @@ -62,6 +64,11 @@ async function run() { } saveDeployments(deployments, processName); + + // We throw here to ensure non zero exit code and communicate failure to shell + if (failed) { + throw new Error("One or more errors happened during execution. See messages above."); + } } run().then(() => console.log("Done! " + processName)); From 7dd7ae13400f5d0b994bbd5ed3000977dede33ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 12:36:48 -0300 Subject: [PATCH 113/174] evm: fixes SR VAA key constant in deployment script --- .../relayer/deliveryProvider/initializeDeliveryProvider.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts index 37f758071f..90ce2fb984 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts @@ -60,7 +60,8 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { ); } - const VAA_KEY_TYPE = 1 << 1; + const VAA_KEY_TYPE = 1 << 0; + // const CCTP_KEY_TYPE = 1 << 1; const coreConfig: DeliveryProviderStructs.CoreConfigStruct = { updateWormholeRelayer: false, updateRewardAddress: true, From 9c43ad955d48a683d4d84868b1d3df4d9c3098e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:28:54 -0300 Subject: [PATCH 114/174] evm: replaces references to last run files --- .../relayer/config/mainnet/contracts.json | 3 +-- .../relayer/shell/verifyDeliveryProvider.sh | 13 ++++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 02786d37e7..b32d2b1a20 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -1,6 +1,5 @@ { - "description": "This file contains the addresses for the contracts on each chain. If useLastRun is true, this file will be ignored, and the addresses will be taken from the lastrun.json of the deployment scripts.", - "useLastRun": false, + "description": "This file contains the addresses for the contracts on each chain.", "deliveryProviders": [ { "chainId": 2, diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index e6e4dbdb3a..2a49710939 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -17,10 +17,9 @@ end set scan_tokens_file $_flag_scan_tokens set chains_file "ts-scripts/relayer/config/$ENV/chains.json" -# TODO: add setup and implementation addresses to `contracts.json` to allow using it instead of lastrun.json -set last_run_file "ts-scripts/relayer/output/$ENV/deployDeliveryProvider/lastrun.json" -if not test -e $last_run_file - echo "$last_run_file does not exist. Delivery provider addresses are read from this file." +set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" +if not test -e $contracts_file + echo "$contracts_file does not exist. Delivery provider addresses are read from this file." exit 1 end @@ -33,9 +32,9 @@ for chain in $chain_ids end # We need addresses to be unquoted when passed to `cast` and `forge verify-contract` - set implementation_address (jq --raw-output ".deliveryProviderImplementations[] | select(.chainId == $chain) | .address" $last_run_file) - set setup_address (jq --raw-output ".deliveryProviderSetups[] | select(.chainId == $chain) | .address" $last_run_file) - set proxy_address (jq --raw-output ".deliveryProviderProxies[] | select(.chainId == $chain) | .address" $last_run_file) + set implementation_address (jq --raw-output ".deliveryProviderImplementations[] | select(.chainId == $chain) | .address" $contracts_file) + set setup_address (jq --raw-output ".deliveryProviderSetups[] | select(.chainId == $chain) | .address" $contracts_file) + set proxy_address (jq --raw-output ".deliveryProviders[] | select(.chainId == $chain) | .address" $contracts_file) # We need the token to be unquoted when passed to `forge verify-contract` set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) From 2ac2886bba56c258147337f5f390485c334afa3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:29:50 -0300 Subject: [PATCH 115/174] evm: updates addresses for Scroll and Blast --- .../relayer/config/mainnet/contracts.json | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index b32d2b1a20..8f38b1ef15 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -44,6 +44,14 @@ { "chainId": 30, "address": "0x70B4a48f482956983D8C69D3aE18Fe229888638D" + }, + { + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", + "chainId": 34 + }, + { + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", + "chainId": 36 } ], "deliveryProviderImplementations": [ @@ -90,6 +98,14 @@ { "chainId": 30, "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0" + }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 34 + }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 36 } ], "deliveryProviderSetups": [ @@ -136,6 +152,14 @@ { "chainId": 30, "address": "0x2B1502Ffe717817A0A101a687286bE294fe495f7" + }, + { + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", + "chainId": 34 + }, + { + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", + "chainId": 36 } ], "wormholeRelayers": [ @@ -182,6 +206,14 @@ { "chainId": 30, "address": "0x706F82e9bb5b0813501714Ab5974216704980e31" + }, + { + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", + "chainId": 34 + }, + { + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", + "chainId": 36 } ], "mockIntegrations": [ @@ -228,6 +260,14 @@ { "chainId": 30, "address": "0x9aF36616cb3B7D3317bB93c9b29Fd76bf7264772" + }, + { + "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", + "chainId": 34 + }, + { + "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", + "chainId": 36 } ], "create2Factories": [ @@ -328,6 +368,14 @@ { "chainId": 30, "address": "0x231Ca706096427Bd674bFaec28B34d8fCa26E2A1" + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 34 + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 36 } ] } \ No newline at end of file From 7007a04a64f856d723c5603c2057b0d5d0e66fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:31:18 -0300 Subject: [PATCH 116/174] evm: updates delivery provider configuration --- .../configureDeliveryProvider.json | 94 ++++++++++++++++--- 1 file changed, 79 insertions(+), 15 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index ee3868f597..85d99c88d9 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -3,7 +3,7 @@ { "chainId": 2, "updatePriceGas": "45000000000", - "updatePriceNative": "2288380000" + "updatePriceNative": "2985580000" }, { "chainId": 4, @@ -43,63 +43,81 @@ { "chainId": 23, "updatePriceGas": "1200000", - "updatePriceNative": "2288380000" + "updatePriceNative": "2985580000" }, { "chainId": 24, "updatePriceGas": "1200000", - "updatePriceNative": "2288380000" + "updatePriceNative": "2985580000" }, { "chainId": 30, "updatePriceGas": "1200000", - "updatePriceNative": "2288380000" + "updatePriceNative": "2985580000" + }, + { + "chainId": 34, + "updatePriceGas": "1200000", + "updatePriceNative": "2985580000" + }, + { + "chainId": 36, + "updatePriceGas": "1200000", + "updatePriceNative": "2985580000" } ], "deliveryGasOverheads": [ { "chainId": 2, - "updateGasOverhead": "500000" + "updateGasOverhead": "280000" }, { "chainId": 4, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 5, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 6, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 10, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 13, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 14, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 16, - "updateGasOverhead": "500000" + "updateGasOverhead": "320000" }, { "chainId": 23, - "updateGasOverhead": "1130684516" + "updateGasOverhead": "558238824" }, { "chainId": 24, - "updateGasOverhead": "1507579355" + "updateGasOverhead": "586150765" }, { "chainId": 30, - "updateGasOverhead": "1507579355" + "updateGasOverhead": "781534353" + }, + { + "chainId": 34, + "updateGasOverhead": "558238824" + }, + { + "chainId": 36, + "updateGasOverhead": "558238824" } ], "maximumBudgets": [ @@ -146,6 +164,26 @@ { "chainId": 30, "updateMaximumBudget": "87398071998531700" + }, + { + "chainId": 34, + "updateMaximumBudget": "66988658820061800" + }, + { + "chainId": 36, + "updateMaximumBudget": "66988658820061800" + } + ], + "conversionBuffers": [ + { + "chainId": 34, + "buffer": 5, + "bufferDenominator": 100 + }, + { + "chainId": 36, + "buffer": 5, + "bufferDenominator": 100 } ], "rewardAddresses": [ @@ -192,6 +230,14 @@ { "chainId": 30, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 34, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 36, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "supportedChains": [ @@ -238,6 +284,24 @@ { "chainId": 30, "isSupported": true + }, + { + "chainId": 34, + "isSupported": true + }, + { + "chainId": 36, + "isSupported": true + } + ], + "supportedKeysByChain": [ + { + "chainId": 34, + "supportedKeys": [1], + }, + { + "chainId": 36, + "supportedKeys": [1], } ] } From 09ecf582023b890287e87bef338e6bc0b848366b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:32:56 -0300 Subject: [PATCH 117/174] evm: fixes script to configure delivery provider --- .../configureDeliveryProvider.ts | 44 ++++++------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 15e0b8ee29..a34ec38a4d 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -50,12 +50,20 @@ interface MaximumBudget { interface AssetConversionBuffer { chainId: ChainId; - buffer: bigint; - bufferDenominator: bigint; + buffer: number; + bufferDenominator: number; } interface SupportedKeys { chainId: ChainId; + /** + * List of bit indices for each key. + * Bit 0 is for Wormhole VAA key. + * Bit 1 is for CCTP message key. + * E.g. [0, 1] means "set Wormhole VAA and CCTP message supported flags" + * E.g. [0] means "set Wormhole VAA supported flag" + * Note that all supported keys must be set in this array since it overwrites the bitmap every time. + */ supportedKeys: number[]; } @@ -193,17 +201,6 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI ); } - for (const conversionBuffer of config.conversionBuffers) { - console.log( - `Processing asset conversion buffer update for operating chain ${chain.chainId} and target chain ${conversionBuffer.chainId}` - ); - await processConversionBufferUpdate( - updates, - deliveryProvider, - conversionBuffer - ); - } - for (const targetChain of allChains) { console.log( `Processing targetChainAddress update for operating chain ${chain.chainId} and target chain ${targetChain.chainId}` @@ -230,7 +227,7 @@ async function updateDeliveryProviderConfiguration(config: Config, chain: ChainI for (const conversionBufferConfig of config.conversionBuffers) { console.log( - `Processing supported chain update for operating chain ${chain.chainId} and target chain ${conversionBufferConfig.chainId}` + `Processing asset conversion buffer update for operating chain ${chain.chainId} and target chain ${conversionBufferConfig.chainId}` ); await processAssetConversionBufferUpdates( @@ -332,21 +329,6 @@ async function processMaximumBudgetUpdate( } } -async function processConversionBufferUpdate( - updates: UpdateStruct[], - deliveryProvider: DeliveryProvider, - { chainId, buffer, bufferDenominator }: AssetConversionBuffer -) { - const currentBuffer = await deliveryProvider.assetConversionBuffer(chainId); - - if (BigInt(currentBuffer.buffer) !== buffer || BigInt(currentBuffer.bufferDenominator) !== bufferDenominator) { - const update = getUpdateConfig(updates, chainId); - update.updateAssetConversionBuffer = true; - update.buffer = buffer; - update.bufferDenominator = bufferDenominator; - } -} - async function processTargetChainAddressUpdate( updates: UpdateStruct[], deliveryProvider: DeliveryProvider, @@ -428,14 +410,14 @@ async function processAssetConversionBufferUpdates( conversionBufferConfig: AssetConversionBuffer, ) { const { chainId, buffer, bufferDenominator } = conversionBufferConfig; - const update = getUpdateConfig(updates, chainId); const { buffer: currentBuffer, bufferDenominator: currentBufferDenominator } = await deliveryProvider.assetConversionBuffer(chainId); - if (buffer !== BigInt(currentBuffer) || bufferDenominator !== BigInt(currentBufferDenominator)) { + if (buffer !== currentBuffer || bufferDenominator !== currentBufferDenominator) { + const update = getUpdateConfig(updates, chainId); update.updateAssetConversionBuffer = true; update.buffer = buffer; update.bufferDenominator = bufferDenominator; From e3df228b14492e82f09fb51948c5fdad0c0cd7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:33:22 -0300 Subject: [PATCH 118/174] evm: fixes script to deploy mock integration This way, it cross registers everything at deployment. --- .../relayer/mockIntegration/deployMockIntegration.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 299fa2dc59..84feddad4b 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -51,13 +51,14 @@ async function run() { } satisfies MockIntegrationDeployment; saveDeployments(output, processName); + const mockIntegrations = loadMockIntegrations(); const emitters = loadMockIntegrations().map(({ address, chainId }) => ({ chainId, addr: "0x" + tryNativeToHexString(address, "ethereum"), })) satisfies XAddressStruct[]; const registerTasks = await Promise.allSettled( - output.mockIntegrations.map(async ({ chainId }) => { + mockIntegrations.map(async ({ chainId }) => { const chain = getChain(chainId); return registerMockIntegration(chain, emitters); }), From eef7d723235fd5fcaee3187cc9e0e4664c3bd965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:34:05 -0300 Subject: [PATCH 119/174] evm: removes obsolete SR deployment steps --- ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh | 3 +-- ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh index 61825170a4..1716aa1b99 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureMainnet.sh @@ -5,5 +5,4 @@ npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ - && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts \ - && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts + && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts diff --git a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh index c08d2be297..fb17c56f40 100755 --- a/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh +++ b/ethereum/ts-scripts/relayer/shell/deployConfigureTest.sh @@ -4,8 +4,7 @@ npx tsx ./ts-scripts/relayer/config/checkNetworks.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/deployWormholeRelayer.ts \ && npx tsx ./ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts \ && npx tsx ./ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts \ - && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts \ - && npx tsx ./ts-scripts/relayer/config/syncContractsJson.ts + && npx tsx ./ts-scripts/relayer/mockIntegration/deployMockIntegration.ts # && npx tsx ./ts-scripts/relayer/mockIntegration/messageTest.ts # put this as 2nd script if not deployed aleady \ No newline at end of file From 7ae50aa01c4b56d3b2f05d4568a639827ff5f408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:35:09 -0300 Subject: [PATCH 120/174] evm: updates comment about block explorer API token json --- ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh | 2 +- ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index 2a49710939..28074916ad 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -11,7 +11,7 @@ argparse $options -- $argv if test -z $_flag_scan_tokens echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." - echo 'JSON format: [{"chainId": , "token": }, ...]' + echo 'JSON format: [{"chainId": , "etherscan": }, ...]' exit 1 end set scan_tokens_file $_flag_scan_tokens diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index f5da0f0952..b1312925d7 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -13,7 +13,7 @@ argparse $options -- $argv if test -z $_flag_scan_tokens echo "--scan-tokens option is missing or invalid. Please specify a json file containing the token APIs for each block explorer." - echo 'JSON format: [{"chainId": , "token": }, ...]' + echo 'JSON format: [{"chainId": , "etherscan": }, ...]' exit 1 end set scan_tokens_file $_flag_scan_tokens From d684712160347e0a8b75938c4b12a2f09c640c6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 2 May 2024 19:35:31 -0300 Subject: [PATCH 121/174] evm: fixes `WormholeRelayer` verification script --- ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index b1312925d7..8ea26eba46 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -63,14 +63,14 @@ for chain in $chain_ids # We print the compiler input to a file instead for manual verification if test $chain -eq 14 forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address --show-standard-json-input > WormholeRelayerProxy.compiler-input.json - forge verify-contract $implementation_address WormholeRelayer --watch --constructor-args $wormhole_address --show-standard-json-input > WormholeRelayerImplementation.compiler-input.json + forge verify-contract $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer --watch --constructor-args $wormhole_address --show-standard-json-input > WormholeRelayerImplementation.compiler-input.json echo "Please manually submit the compiler input files at celoscan.io" echo "- $implementation_address: WormholeRelayerImplementation.compiler-input.json" echo "- $proxy_address: WormholeRelayerProxy.compiler-input.json" else forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address - forge verify-contract $implementation_address WormholeRelayer --watch --constructor-args $wormhole_address + forge verify-contract $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer --watch --constructor-args $wormhole_address end end From 7528c84028dc766adc6aff8fd6b6f2a2ac78feb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 8 May 2024 17:14:33 -0300 Subject: [PATCH 122/174] evm: adds `--build-info` option to foundry build pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also adds `cbor` package to parse metadata section of contracts. For some reason, foundry stopped emitting the AST in the compiler output. As mysterious as that is, adding `--build-info` adds the AST back to the compiler output for each contract. 🤷 --- ethereum/package-lock.json | 135 +++++++++++++++++++++++-------------- ethereum/package.json | 3 +- 2 files changed, 87 insertions(+), 51 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index 828f6001b8..fb98b8c3f0 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", + "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", "jsonfile": "^4.0.0", @@ -4252,6 +4253,36 @@ "node": "*" } }, + "node_modules/@openzeppelin/upgrades/node_modules/cbor": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", + "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.0.0", + "commander": "^3.0.0", + "json-text-sequence": "^0.1", + "nofilter": "^1.0.3" + }, + "bin": { + "cbor2comment": "bin/cbor2comment", + "cbor2diag": "bin/cbor2diag", + "cbor2json": "bin/cbor2json", + "json2cbor": "bin/json2cbor" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@openzeppelin/upgrades/node_modules/cbor/node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/@openzeppelin/upgrades/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4266,6 +4297,12 @@ "node": ">=4" } }, + "node_modules/@openzeppelin/upgrades/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "node_modules/@openzeppelin/upgrades/node_modules/ethers": { "version": "4.0.49", "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", @@ -10302,41 +10339,24 @@ } }, "node_modules/cbor": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", - "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", - "dev": true, + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "dependencies": { - "bignumber.js": "^9.0.0", - "commander": "^3.0.0", - "json-text-sequence": "^0.1", - "nofilter": "^1.0.3" - }, - "bin": { - "cbor2comment": "bin/cbor2comment", - "cbor2diag": "bin/cbor2diag", - "cbor2json": "bin/cbor2json", - "json2cbor": "bin/json2cbor" + "nofilter": "^3.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=16" } }, - "node_modules/cbor/node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "dev": true, + "node_modules/cbor/node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "engines": { - "node": "*" + "node": ">=12.19" } }, - "node_modules/cbor/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -11880,7 +11900,7 @@ "node_modules/delimit-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=", + "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==", "dev": true }, "node_modules/depd": { @@ -16881,7 +16901,7 @@ "node_modules/json-text-sequence": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha1-py8hfcSvxGKf/1/rME3BvVGi89I=", + "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", "dev": true, "dependencies": { "delimit-stream": "0.1.0" @@ -32700,6 +32720,26 @@ "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", "dev": true }, + "cbor": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", + "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", + "dev": true, + "requires": { + "bignumber.js": "^9.0.0", + "commander": "^3.0.0", + "json-text-sequence": "^0.1", + "nofilter": "^1.0.3" + }, + "dependencies": { + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true + } + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -32711,6 +32751,12 @@ "supports-color": "^5.3.0" } }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "ethers": { "version": "4.0.49", "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", @@ -37716,28 +37762,17 @@ "optional": true }, "cbor": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", - "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", - "dev": true, + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "requires": { - "bignumber.js": "^9.0.0", - "commander": "^3.0.0", - "json-text-sequence": "^0.1", - "nofilter": "^1.0.3" + "nofilter": "^3.1.0" }, "dependencies": { - "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "dev": true - }, - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true + "nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==" } } }, @@ -39022,7 +39057,7 @@ "delimit-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=", + "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==", "dev": true }, "depd": { @@ -42998,7 +43033,7 @@ "json-text-sequence": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha1-py8hfcSvxGKf/1/rME3BvVGi89I=", + "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", "dev": true, "requires": { "delimit-stream": "0.1.0" diff --git a/ethereum/package.json b/ethereum/package.json index 98f768aa2a..48dffdf458 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -23,7 +23,7 @@ }, "scripts": { "build:core": "truffle compile", - "build:forge": "if [ \"$DEV\" = \"True\" ]; then forge build; else FOUNDRY_PROFILE=production forge build; fi", + "build:forge": "if [ \"$DEV\" = \"True\" ]; then forge build; else FOUNDRY_PROFILE=production forge build --build-info; fi", "build": "npm run build:core && npm run build:forge && typechain --target=ethers-v5 --out-dir=./ethers-contracts \"build-forge/!(test).sol/*.json\"&& npm run erase-types", "erase-types": "tsx ./ts-scripts/relayer/eraseTypes.ts ./contracts/interfaces/relayer/IDeliveryProviderTyped.sol ./contracts/interfaces/relayer/IWormholeRelayerTyped.sol", "test": "npm run build:core && mkdir -p build/contracts && cp node_modules/@openzeppelin/contracts/build/contracts/* build/contracts/ && truffle test --network test --compile-none", @@ -46,6 +46,7 @@ "dependencies": { "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", + "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", "jsonfile": "^4.0.0", From 085eafb69746108a4b39ea5bbc1e2c4004f7273c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 8 May 2024 17:17:58 -0300 Subject: [PATCH 123/174] evm: refines `WormholeRelayer` bytecode verifier to ignore metadata It still compares compiler version and metadata section size since we don't expect those to change. --- .../relayer/helpers/solcMetadata.ts | 82 ++++++++ .../verifyWormholeRelayerDeployedByteCode.ts | 194 +++++++++++++----- 2 files changed, 224 insertions(+), 52 deletions(-) create mode 100644 ethereum/ts-scripts/relayer/helpers/solcMetadata.ts diff --git a/ethereum/ts-scripts/relayer/helpers/solcMetadata.ts b/ethereum/ts-scripts/relayer/helpers/solcMetadata.ts new file mode 100644 index 0000000000..9e1a2e4141 --- /dev/null +++ b/ethereum/ts-scripts/relayer/helpers/solcMetadata.ts @@ -0,0 +1,82 @@ +import cbor from "cbor"; + +/** Size of the length descriptor for the metadata section. */ +export const METADATA_LENGTH = 2; +export const SOLC_NOT_FOUND_IN_METADATA_VERSION_RANGE = "0.4.7 - 0.5.8"; +export const MISSING_METADATA_VERSION_RANGE = "<0.4.7"; + +// Taken from https://github.com/NomicFoundation/hardhat/blob/main/packages/hardhat-verify/src/internal/solc/metadata.ts +// with some modifications + +/** + * Try to infer the Solidity compiler version from the bytecode metadata. + * + * Not all compiler releases produce the same bytecode: + * Solc v0.4.7 was the first compiler to introduce metadata into the generated bytecode. + * See https://docs.soliditylang.org/en/v0.4.7/miscellaneous.html#contract-metadata + * Solc v0.4.26, the last release for the v0.4 series, does not feature the compiler version in its emitted metadata. + * See https://docs.soliditylang.org/en/v0.4.26/metadata.html#encoding-of-the-metadata-hash-in-the-bytecode + * Solc v0.5.9 was the first compiler to introduce its version into the metadata. + * See https://docs.soliditylang.org/en/v0.5.9/metadata.html#encoding-of-the-metadata-hash-in-the-bytecode + * Solc v0.6.0 features compiler version metadata. + * See https://docs.soliditylang.org/en/v0.6.0/metadata.html#encoding-of-the-metadata-hash-in-the-bytecode + */ +export function inferCompilerVersion(bytecode: Buffer): string { + let solcMetadata; + try { + solcMetadata = decodeSolcMetadata(bytecode); + } catch { + // The decoding failed. Unfortunately, our only option is to assume that this bytecode was emitted by an old version. + // Technically, this bytecode could have been emitted by a compiler for another language altogether. + // console.log("Could not decode metadata."); + return MISSING_METADATA_VERSION_RANGE; + } + + if (solcMetadata instanceof Buffer) { + if (solcMetadata.length === 3) { + const [major, minor, patch] = solcMetadata; + const solcVersion = `${major}.${minor}.${patch}`; + // console.log(`Solc version detected in bytecode: ${solcVersion}`); + return solcVersion; + } + // probably unreachable + // console.log( + // `Found solc version field with ${solcMetadata.length} elements instead of three!` + // ); + } + + // The embedded metadata was successfully decoded but there was no solc version in it. + // console.log(`Could not detect solidity version in metadata.`); + return SOLC_NOT_FOUND_IN_METADATA_VERSION_RANGE; +} + +export function getMetadataSectionLength(bytecode: Buffer): number { + return bytecode.readUInt16BE(bytecode.length - METADATA_LENGTH); +} + +/** + * Decode the bytecode metadata and return the solc version. + */ +function decodeSolcMetadata(bytecode: Buffer): any { + const metadataSectionLength = getMetadataSectionLength(bytecode); + // The metadata and its length are in the last few bytes of the bytecode. + const metadataPayload = bytecode.subarray( + -metadataSectionLength - METADATA_LENGTH, + -METADATA_LENGTH + ); + + // console.log(`Read metadata length ${metadataSectionLength}`); + + // const lastMetadataBytes = metadataPayload.slice(-100); + // console.log( + // `Last ${ + // lastMetadataBytes.length + // } bytes of metadata: ${lastMetadataBytes.toString("hex")}` + // ); + + const decodedMetadata = cbor.decodeFirstSync(metadataPayload, { required: true }); + + // console.log(`Metadata decoded: ${util.inspect(decodedMetadata)}`); + + return decodedMetadata.solc; +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index 0fe2a561f0..7959e9235e 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -1,39 +1,54 @@ import fs from "fs"; import crypto from "crypto"; import chalk from "chalk"; +import { inspect } from "util"; +import { + METADATA_LENGTH, + getMetadataSectionLength, + inferCompilerVersion, +} from "../helpers/solcMetadata"; import { init, Deployment, getOperationDescriptor, getProvider, loadWormholeRelayerImplementations, - ChainInfo + ChainInfo, } from "../helpers/env"; const processName = "verifyWormholeRelayerDeployedByteCode"; init(); const operation = getOperationDescriptor(); -const WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT = "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; -const WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT = "./build-forge/WormholeRelayerBase.sol/WormholeRelayerBase.json"; +const WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT = + "./build-forge/WormholeRelayer.sol/WormholeRelayer.json"; +const WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT = + "./build-forge/WormholeRelayerBase.sol/WormholeRelayerBase.json"; async function run() { console.log("Start! " + processName); - const implementationAddresses: Deployment[] = loadWormholeRelayerImplementations(); + const implementationAddresses: Deployment[] = + loadWormholeRelayerImplementations(); for (const chain of operation.operatingChains) { - const deployedImplementationAddress = implementationAddresses.find((deploy) => { - return deploy.chainId === chain.chainId; - }); - - if (!deployedImplementationAddress) { - console.error("Failed to find implementation address for chain " + chain.chainId); + const deployedImplementationAddress = implementationAddresses.find( + (deploy) => { + return deploy.chainId === chain.chainId; + }, + ); + + if (deployedImplementationAddress === undefined) { + console.error( + "Failed to find implementation address for chain " + chain.chainId, + ); continue; } - - console.log(`Verifying bytecode deployed at ${deployedImplementationAddress.address} on chain ${chain.chainId}...`); + + console.log( + `Verifying bytecode deployed at ${deployedImplementationAddress.address} on chain ${chain.chainId}...`, + ); const provider = getProvider(chain); @@ -41,50 +56,104 @@ async function run() { try { deployedBytecode = Buffer.from( strip0x(await provider.getCode(deployedImplementationAddress.address)), - "hex" + "hex", + ); + } catch (error) { + console.error( + `Failed to retrieve deployed contract from chain scanner. Error: ${stringifyError(error)}`, ); - } catch (e) { - console.error(`Failed to retrieve deployed contract from chain scanner. Error: ${e}`); continue; } let implementation: SolidityCompilerOutput; try { - implementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT, "utf8")); - } catch (e) { - console.error(`Failed to read WormholeRelayer contract data. Error: ${e}`); + implementation = JSON.parse( + fs.readFileSync(WORMHOLE_RELAYER_SOLIDITY_COMPILER_OUTPUT, "utf8"), + ); + } catch (error) { + console.error( + `Failed to read WormholeRelayer contract data. Error: ${stringifyError(error)}`, + ); continue; } let baseImplementation: SolidityCompilerOutput; try { - baseImplementation = JSON.parse(fs.readFileSync(WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT, "utf8")); - } catch (e) { - console.error(`Failed to read WormholeRelayerBase contract data. Error: ${e}`); + baseImplementation = JSON.parse( + fs.readFileSync(WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT, "utf8"), + ); + } catch (error) { + console.error( + `Failed to read WormholeRelayerBase contract data. Error: ${stringifyError(error)}`, + ); continue; } - let expectedByteCode: Buffer; + let expectedBytecode: Buffer; try { - expectedByteCode = buildByteCode(chain, implementation, baseImplementation); + expectedBytecode = buildByteCode( + chain, + implementation, + baseImplementation, + ); } catch (error) { - console.error(`Failed to build bytecode for chain ${chain.chainId}. Error: ${error}`); + console.error( + `Failed to build bytecode for chain ${chain.chainId}. Error: ${stringifyError(error)}`, + ); + continue; + } + + const deployedCompilerVersion = inferCompilerVersion(deployedBytecode); + const expectedCompilerVersion = inferCompilerVersion(expectedBytecode); + if (deployedCompilerVersion !== expectedCompilerVersion) { + console.error( + chalk.red( + `Bytecode verification failed for chain ${chain.chainId}! Expected the compiler version ${expectedCompilerVersion} but got ${deployedCompilerVersion}`, + ), + ); continue; } - const deployedBytecodeHash = sha256sum(deployedBytecode); - const expectedByteCodeHash = sha256sum(expectedByteCode); + // We'll ignore the metadata section in this comparison since it's immaterial to the semantics of the contract. + const deployedMetadataLength = getMetadataSectionLength(deployedBytecode); + const expectedMetadataLength = getMetadataSectionLength(expectedBytecode); - if (deployedBytecodeHash !== expectedByteCodeHash) { + // We'll check that their sizes are the same because we don't expect variation in the metadata section format. + if (deployedMetadataLength !== expectedMetadataLength) { console.error( chalk.red( - `Bytecode verification failed for chain ${chain.chainId}! Expected hash ${expectedByteCodeHash} but got ${deployedBytecodeHash}` - ) + `Bytecode verification failed for chain ${chain.chainId}! Expected the compiler version ${expectedCompilerVersion} but got ${deployedCompilerVersion}`, + ), ); continue; } - console.log(chalk.green(`Bytecode verified for chain ${chain.chainId} matches. Hash: ${deployedBytecodeHash}`)); + const deployedBytecodeTrimmed = deployedBytecode.subarray( + 0, + deployedMetadataLength + METADATA_LENGTH, + ); + const expectedBytecodeTrimmed = expectedBytecode.subarray( + 0, + expectedMetadataLength + METADATA_LENGTH, + ); + + const deployedBytecodeHash = sha256sum(deployedBytecodeTrimmed); + const expectedBytecodeHash = sha256sum(expectedBytecodeTrimmed); + + if (deployedBytecodeHash !== expectedBytecodeHash) { + console.error( + chalk.red( + `Bytecode verification failed for chain ${chain.chainId}! Expected hash ${expectedBytecodeHash} but got ${deployedBytecodeHash}`, + ), + ); + continue; + } + + console.log( + chalk.green( + `Bytecode verified for chain ${chain.chainId} matches. Hash: ${deployedBytecodeHash}`, + ), + ); } } @@ -108,26 +177,26 @@ interface SolidityCompilerOutput { }; ast: { nodes: AstNode[]; - } + }; } const knownRefs = { // the wormhole core contract address on the respective chain - "wormhole_": (chain: ChainInfo, valueLength: number): Buffer => { + wormhole_: (chain: ChainInfo, valueLength: number): Buffer => { return toBufferOfLength(strip0x(chain.wormholeAddress), valueLength); }, // the wormhole chain id of the respective chain - "chainId_": (chain: ChainInfo, valueLength: number): Buffer => { + chainId_: (chain: ChainInfo, valueLength: number): Buffer => { return uint16To32BytesBuffer(chain.chainId); }, -} +}; /** * The WormholeRelayer contract has two immutable references: * 1. the wormhole core contract address on the respective chain * 2. the wormhole chain id of the respective chain - * - * The contract deployed bytecode will have this values replaced by the values for the respective chain. - * + * + * The contract deployed bytecode will have these values replaced by the values for the respective chain. + * * The definitions of the references are in the WormholeRelayerBase contract, that's why we need the compiler * output of both contracts to build the bytecode. * @param chain wormhole chain id of the chain to build the bytecode for @@ -141,10 +210,13 @@ function buildByteCode( implementation: SolidityCompilerOutput, baseImplementation: SolidityCompilerOutput, ): Buffer { + let byteCodeWithImmutablesReplaced = Buffer.from( + strip0x(implementation.deployedBytecode.object), + "hex", + ); + const immutableReferences = + implementation.deployedBytecode.immutableReferences; - let byteCodeWithImmutablesReplaced = Buffer.from(strip0x(implementation.deployedBytecode.object), "hex"); - const immutableReferences = implementation.deployedBytecode.immutableReferences; - for (const [key, references] of Object.entries(immutableReferences)) { const ref = getAstNode(parseInt(key), baseImplementation.ast.nodes); @@ -167,15 +239,15 @@ function buildByteCode( byteCodeWithImmutablesReplaced = replaceImmutableReferences( byteCodeWithImmutablesReplaced, references, - referenceValue + referenceValue, ); } return byteCodeWithImmutablesReplaced; } -function getAstNode(id: number, nodes: AstNode[]): AstNode|null { - let node: AstNode|null = null; +function getAstNode(id: number, nodes: AstNode[]): AstNode | null { + let node: AstNode | null = null; for (const n of nodes) { if (n.id === id) { @@ -195,17 +267,29 @@ function getAstNode(id: number, nodes: AstNode[]): AstNode|null { function replaceImmutableReferences( deployedBytecode: Buffer, immutableReferences: ImmutableReference[], - referenceValue: Buffer //32 bytes + referenceValue: Buffer, //32 bytes ): Buffer { const byteCodeWithImmutablesReplaced = Buffer.from(deployedBytecode); for (const ref of immutableReferences) { if (ref.length !== 32) { throw new Error("Only 32 byte words supported for immutable references."); } - byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(0), ref.start); - byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(8), ref.start + 8); - byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(16), ref.start + 16); - byteCodeWithImmutablesReplaced.writeBigUInt64BE(referenceValue.readBigUInt64BE(24), ref.start + 24); + byteCodeWithImmutablesReplaced.writeBigUInt64BE( + referenceValue.readBigUInt64BE(0), + ref.start, + ); + byteCodeWithImmutablesReplaced.writeBigUInt64BE( + referenceValue.readBigUInt64BE(8), + ref.start + 8, + ); + byteCodeWithImmutablesReplaced.writeBigUInt64BE( + referenceValue.readBigUInt64BE(16), + ref.start + 16, + ); + byteCodeWithImmutablesReplaced.writeBigUInt64BE( + referenceValue.readBigUInt64BE(24), + ref.start + 24, + ); } return byteCodeWithImmutablesReplaced; @@ -219,16 +303,14 @@ function toBufferOfLength(raw: string, length: number) { } const padding = Buffer.alloc(length - buffer.length); - const a = Buffer.concat([padding, buffer]); - - return a; + return Buffer.concat([padding, buffer]); } function uint16To32BytesBuffer(num: number): Buffer { const buff = Buffer.alloc(32); buff.writeUInt16BE(num, 30); return buff; -}; +} function strip0x(str: string) { return str.startsWith("0x") ? str.substring(2) : str; @@ -238,4 +320,12 @@ function sha256sum(buff: Buffer) { return crypto.createHash("sha256").update(buff).digest("hex"); } +function stringifyError(error: unknown): string { + if (error instanceof Error) { + return error.stack ?? error.message; + } + + return inspect(error); +} + run().then(() => console.log("Done! " + processName)); From 5cb6e1f965fa29c9994d9008952606ada14b2c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 8 May 2024 18:01:02 -0300 Subject: [PATCH 124/174] evm: changes default rpc URL for polygon --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index efd431d586..5769a38f6f 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -20,7 +20,7 @@ "description": "Polygon", "evmNetworkId": 137, "chainId": 5, - "rpc": "https://rpc-mainnet.maticvigil.com", + "rpc": "https://rpc.ankr.com/polygon", "wormholeAddress": "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7" }, { From 237d86de36868d761e9a491bd18ce6cbdd54a561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 8 May 2024 18:02:31 -0300 Subject: [PATCH 125/174] evm: `WormholeRelayer` verification checks implementation address --- .../verifyWormholeRelayerDeployedByteCode.ts | 58 +++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts index 7959e9235e..50956a4ce9 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.ts @@ -15,6 +15,7 @@ import { getProvider, loadWormholeRelayerImplementations, ChainInfo, + getWormholeRelayer, } from "../helpers/env"; const processName = "verifyWormholeRelayerDeployedByteCode"; @@ -29,11 +30,19 @@ const WORMHOLE_RELAYER_BASE_SOLIDITY_COMPILER_OUTPUT = async function run() { console.log("Start! " + processName); - const implementationAddresses: Deployment[] = + const expectedImplementationAddresses: Deployment[] = loadWormholeRelayerImplementations(); + // Taken from https://eips.ethereum.org/EIPS/eip-1967#logic-contract-address + // Also found in the reference implementation `ERC1967Upgrade` contract from openzeppelin contracts. + const implementationStorageSlot = + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; + for (const chain of operation.operatingChains) { - const deployedImplementationAddress = implementationAddresses.find( + const provider = getProvider(chain); + const proxy = await getWormholeRelayer(chain, provider); + + const deployedImplementationAddress = expectedImplementationAddresses.find( (deploy) => { return deploy.chainId === chain.chainId; }, @@ -46,12 +55,28 @@ async function run() { continue; } + const rawAddress = await provider.getStorageAt( + proxy.address, + implementationStorageSlot, + ); + const actualAddress = decodeAddressFrom32ByteWord(rawAddress); + + if ( + actualAddress.toLowerCase() !== + deployedImplementationAddress.address.toLowerCase() + ) { + console.error( + `Implementation address in proxy does not match expected address. +Actual address: ${actualAddress.toLowerCase()} +Expected address: ${deployedImplementationAddress.address.toLowerCase()} ${chain.chainId}`, + ); + continue; + } + console.log( `Verifying bytecode deployed at ${deployedImplementationAddress.address} on chain ${chain.chainId}...`, ); - const provider = getProvider(chain); - let deployedBytecode: Buffer; try { deployedBytecode = Buffer.from( @@ -306,6 +331,31 @@ function toBufferOfLength(raw: string, length: number) { return Buffer.concat([padding, buffer]); } +function decodeAddressFrom32ByteWord(word: string) { + const buffer = Buffer.from(strip0x(word), "hex"); + + if (buffer.length !== 32) { + throw new Error(`Buffer is not word sized. Actual size: ${buffer.length}`); + } + + const twelveZeroBytes = Buffer.alloc(12, 0); + if ( + buffer.compare( + twelveZeroBytes, + 0, + twelveZeroBytes.length, + 0, + twelveZeroBytes.length, + ) !== 0 + ) { + throw new Error( + `Could not decode word ${word} as an address. First twelve bytes are not zeroed out.`, + ); + } + + return `0x${buffer.subarray(twelveZeroBytes.length, buffer.length).toString("hex")}`; +} + function uint16To32BytesBuffer(num: number): Buffer { const buff = Buffer.alloc(32); buff.writeUInt16BE(num, 30); From 66d506d091cc7f1f33761fdebcd9faded8b8dc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 16 May 2024 17:43:51 -0300 Subject: [PATCH 126/174] misc: removes unused file --- .../configureDeliveryProvider.js | 173 ------------------ 1 file changed, 173 deletions(-) delete mode 100644 ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js deleted file mode 100644 index 4951c0fdca..0000000000 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.js +++ /dev/null @@ -1,173 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const wormhole_sdk_1 = require("@certusone/wormhole-sdk"); -const ethers_1 = require("ethers"); -const env_1 = require("../helpers/env"); -const deployments_1 = require("../helpers/deployments"); -const zeroAddress = "0x0000000000000000000000000000000000000000"; -const whZeroAddress = "0x0000000000000000000000000000000000000000000000000000000000000000"; -const processName = "configureDeliveryProvider"; -(0, env_1.init)(); -const operatingChains = (0, env_1.getOperatingChains)(); -const allChains = (0, env_1.loadChains)(); -const config = (0, env_1.loadScriptConfig)(processName); -async function run() { - console.log(`Start! ${processName}`); - const updateTasks = operatingChains.map((chain) => updateDeliveryProviderConfiguration(config, chain)); - const results = await Promise.allSettled(updateTasks); - for (const result of results) { - if (result.status === "rejected") { - console.log(`Price update failed: ${result.reason?.stack || result.reason}`); - } - else { - // Print update details; this reflects the exact updates requested to the contract. - // Note that we assume that this update element was added because - // some modification was requested to the contract. - // This depends on the behaviour of the process functions. - for (const update of result.value?.updates || []) { - if (result.value?.chain) { - printUpdate(update, result.value.chain); - } - } - } - } -} -function printUpdate(update, { chainId }) { - let messages = [ - `Updates for operating chain ${chainId} and target chain ${update.chainId}:`, - ]; - if (update.updatePrice) { - const assetPrice = ethers_1.utils.formatUnits(update.nativeCurrencyPrice, 6); - const gasPrice = ethers_1.utils.formatUnits(update.gasPrice, "gwei"); - messages.push(` Asset price update: $${assetPrice}`); - messages.push(` Gas price update: ${gasPrice} gwei`); - } - if (update.updateDeliverGasOverhead) { - messages.push(` Deliver gas overhead update: ${update.newGasOverhead}`); - } - if (update.updateMaximumBudget) { - const maximumBudget = ethers_1.utils.formatEther(update.maximumTotalBudget); - messages.push(` Maximum budget update: ${maximumBudget}`); - } - console.log(messages.join("\n")); -} -async function updateDeliveryProviderConfiguration(config, chain) { - const deliveryProvider = await (0, env_1.getDeliveryProvider)(chain); - const updates = []; - for (const priceUpdate of config.pricingInfo) { - console.log(`Processing price update for operating chain ${chain.chainId} and target chain ${priceUpdate.chainId}`); - await processPriceUpdate(updates, deliveryProvider, priceUpdate); - } - for (const gasOverheadUpdate of config.deliveryGasOverheads) { - console.log(`Processing gas overhead update for operating chain ${chain.chainId} and target chain ${gasOverheadUpdate.chainId}`); - await processGasOverheadUpdate(updates, deliveryProvider, gasOverheadUpdate); - } - for (const maximumBudgetUpdate of config.maximumBudgets) { - console.log(`Processing maximum budget update for operating chain ${chain.chainId} and target chain ${maximumBudgetUpdate.chainId}`); - await processMaximumBudgetUpdate(updates, deliveryProvider, maximumBudgetUpdate); - } - for (const targetChain of allChains) { - console.log(`Processing targetChainAddress update for operating chain ${chain.chainId} and target chain ${targetChain.chainId}`); - await processTargetChainAddressUpdate(updates, deliveryProvider, targetChain); - } - const coreConfig = await processCoreConfigUpdates(config.rewardAddresses, deliveryProvider, chain); - const overrides = await (0, deployments_1.buildOverrides)(() => deliveryProvider.estimateGas.updateConfig(updates, coreConfig), chain); - console.log(`Sending update tx for operating chain ${chain.chainId}`); - console.log(JSON.stringify(updates)); - const tx = await deliveryProvider.updateConfig(updates, coreConfig, overrides); - const receipt = await tx.wait(); - if (receipt.status !== 1) { - throw new Error(`Updates failed on operating chain ${chain.chainId}. Tx id ${receipt.transactionHash}`); - } - return { updates, chain }; -} -async function processPriceUpdate(updates, deliveryProvider, { chainId, updatePriceGas, updatePriceNative }) { - const currentGasPrice = await deliveryProvider.gasPrice(chainId); - const currentNativeAssetPrice = await deliveryProvider.nativeCurrencyPrice(chainId); - if (!currentGasPrice.eq(updatePriceGas) || - !currentNativeAssetPrice.eq(updatePriceNative)) { - const update = getUpdateConfig(updates, chainId); - update.updatePrice = true; - update.nativeCurrencyPrice = updatePriceNative; - update.gasPrice = updatePriceGas; - } -} -async function processGasOverheadUpdate(updates, deliveryProvider, { chainId, updateGasOverhead }) { - const currentGasOverhead = await deliveryProvider.deliverGasOverhead(chainId); - if (!currentGasOverhead.eq(updateGasOverhead)) { - const update = getUpdateConfig(updates, chainId); - update.updateDeliverGasOverhead = true; - update.newGasOverhead = updateGasOverhead; - } -} -async function processMaximumBudgetUpdate(updates, deliveryProvider, { chainId, updateMaximumBudget }) { - const currentMaximumBudget = await deliveryProvider.maximumBudget(chainId); - if (!currentMaximumBudget.eq(updateMaximumBudget)) { - const update = getUpdateConfig(updates, chainId); - update.updateMaximumBudget = true; - update.maximumTotalBudget = updateMaximumBudget; - } -} -async function processTargetChainAddressUpdate(updates, deliveryProvider, chain) { - const currentTargetChainAddress = await deliveryProvider.getTargetChainAddress(chain.chainId); - const targetChainAddress = "0x" + (0, wormhole_sdk_1.tryNativeToHexString)((0, env_1.getDeliveryProviderAddress)(chain), "ethereum"); - if (currentTargetChainAddress !== targetChainAddress) { - const update = getUpdateConfig(updates, chain.chainId); - update.updateTargetChainAddress = true; - update.targetChainAddress = targetChainAddress; - } -} -async function processCoreConfigUpdates(rewardAddresses, deliveryProvider, chain) { - const coreConfig = { - updateRewardAddress: false, - updateWormholeRelayer: false, - updateSupportedKeyTypes: false, - coreRelayer: zeroAddress, - rewardAddress: zeroAddress, - supportedKeyTypesBitmap: 0, - }; - const rewardAddress = rewardAddresses.find((element) => { - return element.chainId === chain.chainId; - })?.rewardAddress; - if (!rewardAddress) { - throw new Error("Failed to find reward address info for chain " + chain.chainId); - } - const currentRewardAddress = await deliveryProvider.rewardAddress(); - console.log("currentRewardAddress: " + currentRewardAddress); - console.log("rewardAddress: " + rewardAddress); - if (currentRewardAddress !== rewardAddress) { - coreConfig.updateRewardAddress = true; - coreConfig.rewardAddress = rewardAddress; - } - return coreConfig; -} -function getUpdateConfig(updates, chainId) { - let update = updates.find((element) => { - return element.chainId === chainId; - }); - if (update === undefined) { - update = createEmptyUpdateConfig(chainId); - updates.push(update); - } - return update; -} -function createEmptyUpdateConfig(chainId) { - return { - chainId, - updateAssetConversionBuffer: false, - updateDeliverGasOverhead: false, - updatePrice: false, - updateMaximumBudget: false, - updateTargetChainAddress: false, - updateSupportedChain: false, - isSupported: false, - buffer: 0, - bufferDenominator: 0, - newGasOverhead: 0, - gasPrice: 0, - nativeCurrencyPrice: 0, - targetChainAddress: whZeroAddress, - maximumTotalBudget: 0, - }; -} -run().then(() => console.log(`Done! ${processName}`)); From 31de78d040ce9b75ac55f9a944f1d7b13fe35902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 16 May 2024 17:45:42 -0300 Subject: [PATCH 127/174] evm: adds typescript build script --- ethereum/.gitignore | 3 ++- ethereum/package.json | 1 + ethereum/tsconfig.json | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ethereum/.gitignore b/ethereum/.gitignore index ac7dbbf81c..408855977e 100644 --- a/ethereum/.gitignore +++ b/ethereum/.gitignore @@ -3,4 +3,5 @@ lib/* !lib/README.md flattened ethers-contracts -build-forge/ \ No newline at end of file +build-forge/ +build-ts/ \ No newline at end of file diff --git a/ethereum/package.json b/ethereum/package.json index 48dffdf458..2f86f84bd2 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -39,6 +39,7 @@ "abigen": "truffle run abigen", "deploy-relayers-evm1": "ENV=kubernetes CONTAINER=evm1 bash ./ts-scripts/relayer/shell/deployInContainer.sh", "deploy-relayers-evm2": "ENV=kubernetes CONTAINER=evm2 bash ./ts-scripts/relayer/shell/deployInContainer.sh", + "build:typescript": "tsc --skipLibCheck", "typecheck": "tsc --noEmit --skipLibCheck" }, "author": "", diff --git a/ethereum/tsconfig.json b/ethereum/tsconfig.json index 407bf0378e..80cb9de7b7 100644 --- a/ethereum/tsconfig.json +++ b/ethereum/tsconfig.json @@ -9,6 +9,7 @@ "esModuleInterop": true, "strict": true, "resolveJsonModule": true, - "moduleResolution": "node" + "moduleResolution": "node", + "outDir": "build-ts" } } From 544e79d6ab2867fd68fb341401aa7e5a430d5f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 16 May 2024 21:59:53 -0300 Subject: [PATCH 128/174] evm: adds docker image to verify `WormholeRelayer` bytecode --- ethereum/Dockerfile.verifyRelayer | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 ethereum/Dockerfile.verifyRelayer diff --git a/ethereum/Dockerfile.verifyRelayer b/ethereum/Dockerfile.verifyRelayer new file mode 100644 index 0000000000..c743ce10b3 --- /dev/null +++ b/ethereum/Dockerfile.verifyRelayer @@ -0,0 +1,20 @@ +FROM node:iron-slim@sha256:cffed8cd39d6a380434e6d08116d188c53e70611175cd5ec7700f93f32a935a6 + +RUN mkdir -p /home/node/app/ethereum + +WORKDIR /home/node/app/ethereum +RUN apt-get update && apt-get -y install \ + git make curl + +RUN curl -L https://foundry.paradigm.xyz | bash +RUN $HOME/.foundry/bin/foundryup --version nightly-7469d79cca59e0bb5f23563ac5a6bd5f2ec8c5e4 +RUN cp $HOME/.foundry/bin/* /bin/ + +COPY . . +ENV ENV=mainnet +ENV DEV=False +RUN make build + +RUN npm run build:typescript + +CMD ["node", "build-ts/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.js"] From fcb363383fa0394653dd6184c04fa948f961b49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 24 May 2024 10:23:19 -0300 Subject: [PATCH 129/174] evm: adds scroll and blast `WormholeRelayer` VAAs --- .../relayer/wormholeRelayer/registerChainsWormholeRelayer.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts index ad7b89910e..c9717dc0b0 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts @@ -37,6 +37,9 @@ const base64RegistrationVaas = [ "AQAAAAQSAQ7Hjw2pAy7aO/OfeT9hKh+RpAunsnkXJrXXi4Zp1jwtU87T6Nr5rXx6nu1oueT8fEGEA8Dna63hzvpdCOne16YBAiVBYdlhyfjk+Ey0jBLkXLQN3dQ6PHIVxIDj0pXXAY5RY88nrS1T9pLq9UYf5g/wsO3TPmmJ8xPfgC7V/6CmZHgAA9YLGo7CtM4n4rcpi7PLUDAIuUVIDVN1RtuioLGv3IDia8CwfZ7k8+9ABI4l1y0j3ibSLbvHwj327vA2cRHqRm0ABJkIQ0gaHwcxJBjYIuuBfSTKgNelNGSvmx9L+Bdy3KR+M+tG3VeXA8SuMfuRZOVQj0dLQFWqcDsKfI7r5vYL4EsABTVC+o26a2IHI3K/ku9WbxreKpX3q+l2ktIL7InJrSIOSXGOvM0Gl8pZJFjXmnPD9Im6e1v8UdnK/J/TtU5dgvoABrH037fuS7MFnA+fuBxq/Vt3A9fgtUcgBn1/98YnVao/DoBsQmxacjiRf4nP2jC4DnYzz/YAWlllz2E1b1UZZKUAB1iD0PkIgA9Uqf60IRgQ4UoKDWWCfAUfN5PRURBI3u+Le2hwA0VfL/B6M5XxKXk23heF/qdWj9ti00fvG2oVAtMBCOvnyZoug6dRWSckasCsytl2o4gkWszh9BqxmNN7MtzXJxfhfdczngTQuXqJNW+plOWxoDbsgOtoGpw0csJt+hQACQ6YrMzxLLqDt7tluI9TKvoPhrwGjhMT4Ya0nphQZQx8brrMwC5ie110cO+QNcCMro2HTcSzcZRbKJcG3qx9kAgBCqDye8/GNxWQJEb981JVTqaZ42G449y8V7hA+LX33HReAoR9gzF9ICm3PUfayoiFLxvrKkkATBwenvS1AfQX3MYBCwjKa6v4KOaeO1/dDbnDTco1/2/SorsmGgEhar/THLlSOa9xnPK6KUosG0Xf09kB9ovKOkTRzHGhgOxt3GFyKC8BDHJKpgwIS8wVmvNanVgHjWZ1NMtnvPyl+VngXrGwlW1KAu+Yq8msZ3t3mx+9dQWxYhsJNdGljXNzw2uWuZ+MwPsADTE5slBpUgpL2cYZBef9g84h61eGsmseW5Z3LkkzpusWPdQDGhvtDMZeOeANCgAMkXtpAVaWyx7tgWvoZLZav7IADnlCYOXXNK4g5T/zR5myqaOfD3kjcfjyfnDNXBSj14GBa33Io9prqIbywhswRkjFHBaJLaa6zRB3YYLLZcnEawEBD/m9hieRkxQJechGBSupnW+ehBHaf3AEqOAnKFefIoOpUQwJBGbvcZIqWBhLW+VYp5CGYSW9diEfMIqqcPCAvssAEA78egjLgSqwR71n5iQZfoJErcahzg2e8wxGm7WRhgblXjrKZQVOD0bm5+yo8gucQSh5G6BElq6XE8UkKIN3emcBETdBam9KkZsrTfr7VcOGabk9ZoEKsMd82Shccf46PjijaxjE+x9uBwC4mvuPdPBW3ViEb7jQREw7QFr7d1X6o5kAEnR/CPumKqN0NzpcNrb7KaNtTjgu+ysKVLA5rrj3b8dkaDsCxSmAIpdCnQ+1MgseblxjrPMJ4D4PFfeh/nTv8w8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLIgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAFwAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", "AQAAAAQRAYhHS4EzDA+i23TqQBORRt5MP2L6PrI98lElomFChF0BHeGqnYRGBajRE70RQuRUNPFpCBJobXFhqt41iOlKxpgBAxHoSKrqcyPN3+nR9FGJrPSQ0xMLmWGFWqAMIOcUk5WhfxM85EzUoWB48viEgG2QHrPFbH+hGmxiiuZZumApE+oBBGqHs0FsNWmixB/Ksk//ZrB3AaX9bfcqPm0EQ5gFTgSHQv66tbX4kDcDxsc+oykC3JTH7hxPMdz7BMUuDyfZOyEABZ2DC4EQY5KVoGRHtPVO1yWFowJWv2ALfw/KSPcbMLdPAqTmTB8sQVKi87forCjoApwPYP5MkvAPXP+OXa8jlSEABt0IqJuTkgKSuvyjq5Y9Fx6ITNO7ubhXv2+HqyetJ5IVDtW/A4aT5sy4VdI3b8CkCHdH/RFU3MTCC3XfBadYGW8BB3GhYlALJ4PHQiOrXSjgTxJp5JJUYwpEC7nw6s2LWVhvAa317Lx8mr4L2DI1qBO0ECaxn1ceCvMbv3mfxU5UvT8BCAnWoIIXBrL9oOc8TdtVGYHa2dwcLI6FqQIZXOvR2FZeUo/QeABd/tlf25LcrVlxzmj3tfiX9yVEo0agcxKaxqcACY8kt+DlomQQxmsbGUVJTTa5//bazxbFpqIvAanswCGVH9b5ksC6eraItakPzZ+Wp/0ovwRKV21Ysam4X2lk1DAACgMj1GcXIcAmImWjf/njRZGW67kow1aO9LFfWBKuQR8eTPms8Cvg9m04Cr3L0c7eTDVIPmgKDDMNT6BFUeezmmMAC9A99EYn5sxDEmFVOVNREQbB1FGxLPUMl34CgBF6dQZzQKZx3it1XMI91gl+X3+SK8LLwreMSZJW4E7HXo9rzD4ADE0OMt7LkoUgPsdj7WyrFaH9kfqL+vO/r0SaCOUreb23ahD+KmeXTKV1SYEc6mtR852KvEe3zZlp59bzuGw5SaYADfi4hEoU7QlDkxHPRYh2DoCtKmxGB1moUUXe1mPFA4gqNnqOpHJ+FHgiu2OWEC0M5rkNHmuHts5yfV/cICuDV58ADuoGD3SDMNjDHlILjDtohz5Hptq+m9CInc11JXALkBNLSJK7lz7TrKlTQ2ROXoezYVQJ8qhyvpe5qKqjVmE1RlAAD9ZNkUAx8ZHg10iBfrj2gtr4FXxGwQHWXtts2oojvME9EBGCAAQrMzWDSgLgwmVCLSz/5q1DDRaxIBaqgiZvkuABEF98ZUcipnxnhSjo1qZKJvWZnHDPM62s0c+2TQ+LDCb4GBC6hirIiq+qkKtaBmmq0mEN160WsRM/TA3NTUkaRi8BEbaY8v582DTSvf9dTi8CidljG7kQ2z5kuRaJt67gmyc2ecTMQNqD8KV5oGx1arua2dK6FQpNGL40xeiAEMRtzmcAEg/xnYT0nYTK3wwn+RlVs2mAJxpXHBeshdrxIbttBJCFfNeaieteFTK3RDmIfqD2al+a6AT/BjuJayTVAUuOlf8AAAAAAP3tKfYAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM4AEo3/czLMgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAGAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", "AQAAAAQPAkfo9KWh5aT4WERKUPQZpHeGb3rRCvlNYiUf9af0pCqSFQAta1p5OSJNYiHXQ6AQd5K0oe/UJhlzKjTHws3EQBEAA2+275+cUGV9d5G7NEuUjWyBLxtAcDgQA6lCQZsXTE/JTLjWPOx54TmComQteJBU0HRkmIB9oD08WaOe+ikjLb8BBLvwJ7JjE3V46iQFdvEuPcFHDO2mM5Hf6q8Pca8K36dkdyogaEeqEGRq7y69uoyiG2wICIy1iULyFFxRIOD5S4YABnRxmEPJnhLNK5s3+YQx+N2L0tdLB5QpH9jXuLV1vMiWTuLHmC+0kyYhmW1YfrT/SGHh0ObYc+4e6Ln2hPCEJiUBBxJDd0VSvXr28TJbhpZVRrlglV4sWUsiWrLfUb1Yt+xTMfF9cbACmFNigZdykO1tXRU0zGaTE3mIq6JcGb4ylQIACPM+2WFjnsgsG+BVKLinX2ZXvOvsaIJ+jylYmeQUI+IiBTEuXnu2RTAE3w6tvhHreViO4W9bNfyNsvfcfUV7+qIACeQ55bN9rN7CXRLLoVMe/OsvEwqBLS2Z/LcoKCvOBtvpH6sRIocW6h1DCuigjswkguMLQ5uRK3sNzJXMgOmP5toBClIkUZ8Dz4O2ftbTGlSV7c9mrBDaLZS6xUIQm+LQdfcjC2PBV2ZBrW2aVLH71fp/vjwIzQj2czGEdqr5/O9IxuUBC6J35ppxk4+LEZfLaXWWj35HgP2o5hNtI9LJ9cu7FdKuaCMh64tfaDxYJbdEkueipNGKwgzYww/j+nEr1xyLYDMBDQb7poN1399tdsl9Oi4OocmyQ9j3o3EUQG/GfLdUXHF0Avr1F1kH0czZQ/INU5uBXrk21DD8Pfs1wzFqI0Lbo40BDkyjKbXGH3+qQiNZX+PdTRTXdQbDYBPGzo40g01IOA91U20S46nO9URqM3ZqUApnbD1ZsJ6YTg8xvngL1zaoFQsADxUaay3jMWMczdoSzyFYaLk7Eta8qZKDLOVTHSxXspC3LDI8O/8RUPFgbnOKDFFlrv/2SJ2NHGGUVmypH9yIK/MAEHiNY2IXc3glj5jAoaWoWyKbIxbkOyigjGjgMD/iuuSifPEJ8H7W76a+AjebB7S6AsnYHEeCY+2no8J5ry1Jh/oBEZAx3K9zQ2GF+IU64nO6I+RPj7tu0xt1BoT/5F2sNPEYE8N5FvC9bHKCscr0kgbm35AE4EUAEPn5PJ4OIBB8I18AEtW09ah2dPjEpoasZ4BqRUQNMIYaQxkexy5fdaczqLUcGJZZ6O2P975z06FHgKRss0pYpTCPc4HWaOjbWBmPGFUBAAAAAGtFoakAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVVcE3NUEbMQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAHgAAAAAAAAAAAAAAAHBvgum7WwgTUBcUq1l0IWcEmA4x", + // These are for scroll and blast, note that they are not "full" VAAs, some observations are missing. They just have enough signatures for quorum. + "AQAAAAQNAfa6t3rS41iVIJs6+RdW6A3iLamk6MoIcau+oR4TeyWkKsu9ncqYw6b9yFDhoqMXV8NRyaJxK1n+x9Rgezw+y94AAwpWK7g9YfFGyd53lFX1d2OHWE9fcBCf2RxcXegl/tNdVs+K4YjUb5cu39A7Gs5jhzU+aBS5KULpyMzp5kAMFBABBIzq9TFU28yBlMeYbB2MmVGavYrPG0rdcXjQzHq0dcM7OXnvCj6wXsHmkAT729KHHc1/eZXq/X8A0rQ27ltVO1wABjlqV02sK+vjZ1oeDduQ+77PAOtyS8Rvc6xnOkbh2kPff2O/GVQJZM+Xws38ep717WXfdyaHNDeSpIeLkryZhaQBCAU7zEMGbDZuAeYs1QSROQ9Zk15BsxIlPf/sN8+l+2LvZxNsinEvgnP3f4CffgBk7FZAp9iMefOVYiHawMb5WPUBCtgxHS1fl5Sv7p3yks9LP1lc3xfzIvNtShU7/Q9RI6MfS45FkMMXw+ZN6Vog5Yz4fj/ufCR12hijH6Al3MqwDOsACzN4Ygp/jsuVjDMVlAb71zKsFP+2bTgcoWASXj4/Pob/CawVWJPP+OW4sG6+XhVRp1fpjbLn5MyxwA0T12Mv3GkADfv5wKoeQjKVIN+HbR6ZRXkEhQIq1Ob2w6Fmi0q53ga3emcyzgxXlqDbbq/56tJoI59XkGp5VBTQYghVq/phKxkBDkwFGOknrMG94mvhmv5PxCdlZrWX7E9TCk+meOnq5cJeT3SGnEdvAWQmBc95DNedBrpLlKdHVGU1hNXSUU2rrkYBD+faMlpdCflMIaJGsZDonqMyZZnbv9VZSFND4NN7JYNaM+rcktw+vLFDAduOIh+FA/WhXTKvJwNScVkcsvL05LAAEMilsmRtAhTt+NJG9cpT1pytl9XzfOQsBBqQbegJPnArLWecuhqJl51PMtlIiehMxRz8yYn+H50AOXzkqfmVUtIBESYWBm+ZOuTmttEOHl2Zuphd9+3Sk23PwNRFJ2RANoXqe6o2ar74vW+WAwd4PBhQYVwoa1/uTzsTvxwUbhZCJDIAEuMh/pjR2LKucVE7KQHozGJrFZ1O9qHn2kd6k0GGVVOOEo4s4k0yKKEby3VRRI+mYisF9l1nny216eZE/sP8atwAAAAAAJtyws4AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsRkL6/JsZqQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAIgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + "AQAAAAQNAb3T6B6CJHDv4K3SSI11jESfUn/XZJAVDGiyKp+5c2qCfI2MllG+g0mQZkqoVx9UkNFAK/5Yn+X73yAgTDaii+wAA9htLAudbQZYJMQc1l+XeZN7EwrWYpp7/5vmkiUvK44QBl20jqCPnIgcrd63GdqZQ2LcY6eDTpbaDCTps0c03xUABCk0Ge0lcG+UizNMVNqMAzTqGEvhgzE1295jXf4hLVFqGj7mMDjzh53x8iuJi6zHD12X6ZH8eeTpcwq4laG0e40ABkuskXaqaroieih2dNAqqCfP5pUgg2VTHYSsfHKRzwDCDBriOCwCaz08f2gtfbP93SQauRWrAMONa8UaR2ZkZwEBCPQkO5BgMAtNhsA4k0asiVwQ7VVwIlRI0F5v4eg1bRwqT3/3Wy/ifUKWNF6X+GiQnYrJQYqh+7rw+/O9opZAaLYBCt9wGSF01pFHnIeYD3xqEpdA6dzRnSjMUR1XPf5+5kVOLirhkOjROGeQMH/XPo5VXfhZgUpjphJ30Qti4lCQlpEBC2Cq8WtbAOiGJsXxn2BeIVSLZNbzj6H1OvNKBn9vt27lSp0ZlF6zvID6wp82oEOKlEzrufuOMUWQmarSDDgirRQBDTtmxx/+MMi3phTslhwbnTZZAU5sD31HW78lpnATw0UsYW0u8PxdaZx3/IctOXDLQejwL6x1EtRForGkyV6Vtv0ADof3+8AS/9VZ2K1SrlaUmkoTpBdrnraRO4K12m9+QmkLM4jPmjdKU9ZwtxOYjnSYSRuiysYqqWIF07/yal+5IwoAD8B+I+TECXYTxQQKaGta7uRyDsLn3Zt1xBPT/4u0Um12cz7Zg9gQVlfokZXYfehvEEauYHkfCdYffpU2sxBMTjoAEF7VkcOUXJAtMDXiCmKCF8ivz0PVwrXJbzofoQ0IAO87dZP6Nb1rtZvoMR4o84L546zhRfbM0H+tdP70LvcdrZEBEZO9HApjLQBj1KWLg6I0d03bLsZmszzYcJnoqQItpgvAQl+uC3vAiNCMuOYWNR4ihyp2tDdsfwA+kV3HYejjPMsAEk9cdl9aIhba0TPszRM7S14kU57hrI7DiD1SFrDpvkhQPaxxK8WzjX2MQdr0TemlwvlaDWrjXyUXyXLmAgd+lSgAAAAAANY41EgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESnKcss97Qw0gAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAJAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", ]; async function run() { From cf3911a8ea7492f151124e2cc8e4498d627b354d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 24 May 2024 11:02:51 -0300 Subject: [PATCH 130/174] evm: adjusts gas prices for blast --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 3c5fb4ee31..45944768fe 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -331,8 +331,8 @@ export async function buildOverrides( overrides.type = 0; } else if (chain.chainId === 36) { overrides.type = 2; - overrides.maxFeePerGas = ethers.utils.parseUnits("0.005", "gwei"); - overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.001", "gwei"); + overrides.maxFeePerGas = ethers.utils.parseUnits("0.08", "gwei"); + overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.000000001", "gwei"); } return overrides; } From 54c4031f094b4682b37cca920e8f6f1e16ab5206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 29 May 2024 13:22:02 -0300 Subject: [PATCH 131/174] evm: sources foundry binaries from oficial docker image in verification --- ethereum/Dockerfile.verifyRelayer | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ethereum/Dockerfile.verifyRelayer b/ethereum/Dockerfile.verifyRelayer index c743ce10b3..1743e3f937 100644 --- a/ethereum/Dockerfile.verifyRelayer +++ b/ethereum/Dockerfile.verifyRelayer @@ -6,9 +6,12 @@ WORKDIR /home/node/app/ethereum RUN apt-get update && apt-get -y install \ git make curl -RUN curl -L https://foundry.paradigm.xyz | bash -RUN $HOME/.foundry/bin/foundryup --version nightly-7469d79cca59e0bb5f23563ac5a6bd5f2ec8c5e4 -RUN cp $HOME/.foundry/bin/* /bin/ +COPY --from=ghcr.io/foundry-rs/foundry:nightly-7469d79cca59e0bb5f23563ac5a6bd5f2ec8c5e4@sha256:f84eabbe85ec74dd59464816bf65b8d1ec707c8fa78003aca66c13dad3a6fa42 \ + /usr/local/bin/forge \ + /usr/local/bin/cast \ + /usr/local/bin/anvil \ + /usr/local/bin/chisel \ + /bin/ COPY . . ENV ENV=mainnet From 22f294041873803e4ae1f9ee38bb2a2223bb8b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 29 May 2024 14:19:29 -0300 Subject: [PATCH 132/174] evm: adds compiler input for the deployed `Create2Factory` in mainnet --- ethereum/Create2Factory.compiler-input.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 ethereum/Create2Factory.compiler-input.json diff --git a/ethereum/Create2Factory.compiler-input.json b/ethereum/Create2Factory.compiler-input.json new file mode 100644 index 0000000000..3d7086c01c --- /dev/null +++ b/ethereum/Create2Factory.compiler-input.json @@ -0,0 +1 @@ +{"language":"Solidity","sources":{"contracts/relayer/create2Factory/Create2Factory.sol":{"content":"// SPDX-License-Identifier: Apache 2\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/Create2.sol\";\nimport \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\";\n\n/**\n * Contract factory that facilitates predfictable deployment addresses\n */\ncontract Create2Factory {\n event Created(address addr);\n\n address public immutable init;\n bytes32 immutable proxyBytecodeHash;\n\n constructor() {\n address initAddr = address(new Init());\n init = initAddr;\n proxyBytecodeHash = keccak256(\n abi.encodePacked(type(SimpleProxy).creationCode, abi.encode(address(initAddr)))\n );\n }\n\n /// @dev create2 hashes the userSalt with msg.sender, then uses the CREATE2 opcode to deterministically create a contract\n function create2(\n bytes memory userSalt,\n bytes memory bytecode\n ) public payable returns (address payable) {\n address addr = Create2.deploy(msg.value, salt(msg.sender, userSalt), bytecode);\n emit Created(addr);\n return payable(addr);\n }\n\n function create2Proxy(\n bytes memory userSalt,\n address impl,\n bytes memory call\n ) public payable returns (address payable) {\n address payable proxy = create2(\n userSalt, abi.encodePacked(type(SimpleProxy).creationCode, abi.encode(address(init)))\n );\n\n Init(proxy).upgrade(impl, call);\n return proxy;\n }\n\n function computeProxyAddress(\n address creator,\n bytes memory userSalt\n ) public view returns (address) {\n return Create2.computeAddress(salt(creator, userSalt), proxyBytecodeHash);\n }\n\n function computeAddress(\n address creator,\n bytes memory userSalt,\n bytes32 bytecodeHash\n ) public view returns (address) {\n return Create2.computeAddress(salt(creator, userSalt), bytecodeHash);\n }\n\n function salt(address creator, bytes memory userSalt) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(creator, userSalt));\n }\n}\n\ncontract SimpleProxy is ERC1967Proxy {\n constructor(address impl) ERC1967Proxy(impl, new bytes(0)) {}\n}\n\ncontract Init is ERC1967Upgrade {\n constructor() {}\n\n function upgrade(address impl, bytes memory call) external {\n _upgradeToAndCall(impl, call, false);\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/Create2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n * `CREATE2` can be used to compute in advance the address where a smart\n * contract will be deployed, which allows for interesting new mechanisms known\n * as 'counterfactual interactions'.\n *\n * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n * information.\n */\nlibrary Create2 {\n /**\n * @dev Deploys a contract using `CREATE2`. The address where the contract\n * will be deployed can be known in advance via {computeAddress}.\n *\n * The bytecode for a contract can be obtained from Solidity with\n * `type(contractName).creationCode`.\n *\n * Requirements:\n *\n * - `bytecode` must not be empty.\n * - `salt` must have not been used for `bytecode` already.\n * - the factory must have a balance of at least `amount`.\n * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.\n */\n function deploy(\n uint256 amount,\n bytes32 salt,\n bytes memory bytecode\n ) internal returns (address) {\n address addr;\n require(address(this).balance >= amount, \"Create2: insufficient balance\");\n require(bytecode.length != 0, \"Create2: bytecode length is zero\");\n assembly {\n addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n }\n require(addr != address(0), \"Create2: Failed on deploy\");\n return addr;\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n * `bytecodeHash` or `salt` will result in a new destination address.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {\n return computeAddress(salt, bytecodeHash, address(this));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.\n */\n function computeAddress(\n bytes32 salt,\n bytes32 bytecodeHash,\n address deployer\n ) internal pure returns (address) {\n bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash));\n return address(uint160(uint256(_data)));\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallSecure(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n address oldImplementation = _getImplementation();\n\n // Initial upgrade and setup call\n _setImplementation(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n\n // Perform rollback test if not already in progress\n StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);\n if (!rollbackTesting.value) {\n // Trigger rollback using upgradeTo from the new implementation\n rollbackTesting.value = true;\n Address.functionDelegateCall(\n newImplementation,\n abi.encodeWithSignature(\"upgradeTo(address)\", oldImplementation)\n );\n rollbackTesting.value = false;\n // Check rollback was effective\n require(oldImplementation == _getImplementation(), \"ERC1967Upgrade: upgrade breaks further upgrades\");\n // Finally reset to the new implementation and log the upgrade\n _upgradeTo(newImplementation);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Emitted when the beacon is upgraded.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(\n address newBeacon,\n bytes memory data,\n bool forceCall\n ) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n"}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@solidity-parser/=node_modules/@solidity-parser/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","truffle/=node_modules/truffle/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"]}},"evmVersion":"paris","viaIR":true,"libraries":{}}} From 3d7c99797f96117217bf11f2d9518a31935729be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 29 May 2024 16:53:30 -0300 Subject: [PATCH 133/174] evm: retrieves the creation bytecode of `Create2Factory` from Ethereum This only applies to mainnet. The retrieved bytecode must match a specific hash and the transaction receipt needs to create the currently configured `Create2Factory` for Ethereum. --- .../ts-scripts/relayer/helpers/deployments.ts | 72 ++++++++----------- ethereum/ts-scripts/relayer/helpers/env.ts | 2 +- 2 files changed, 31 insertions(+), 43 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 45944768fe..9c2b743bf4 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -16,6 +16,7 @@ import { env, getChain, getProvider, + getCreate2FactoryAddress, } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; @@ -110,7 +111,7 @@ export async function deployMockIntegration( return { address: receipt.contractAddress, chainId: chain.chainId }; } -let ethC2Promise: Promise; +let ethC2Promise: Promise; /** * Deploys `Create2Factory` with the old (account, nonce) tuple hashing creation mechanism. @@ -123,60 +124,47 @@ export async function deployCreate2Factory( console.log("deployCreate2Factory " + chain.chainId); const signer = await getSigner(chain); - const factory = new Create2Factory__factory(signer); + let factory = new Create2Factory__factory(); const signerAddress = await signer.getAddress(); const ethChain = getChain(2); const ethChainProvider = getProvider(ethChain); const ethNetwork = await ethChainProvider.getNetwork(); if (ethNetwork.chainId === 1 && signerAddress.toLowerCase() === "0x5623bdf52b51085c807a5dc39152eed05825f5fd") { - // Here we check that the bytecode matches against Ethereum. + // Here we fetch the creation bytecode from Ethereum. + // We also perform a few sanity checks to ensure that the retrieved creation bytecode looks good: + // 1. The transaction receipt should contain the expected address for the `Create2Factory`. + // 2. The bytecode hash should be a specific one. + // + // Why do this? The creation bytecode of `SimpleProxy` is part of the hash function that derives the address. + // This means that to reproduce the same address on a different chain, you need to create the exact same `SimpleProxy` contract. + // Since the compiler inserts metadata hashes, and potentially other properties, that don't impact the functionality, + // we reuse the same creation bytecode that we originally used instead of attempting to tune newer compiler versions to produce the same bytecode. if (ethC2Promise === undefined) { - // we assign the promise immediately to avoid race conditions + // We assign the promise immediately to avoid race conditions ethC2Promise = (async () => { - const ethFactory = await getCreate2Factory(ethChain, ethChainProvider); - return ethFactory.provider.getCode(ethFactory.address); + const factoryCreationTxid = "0xfd6551a91a2e9f423285a2e86f7f480341a658dda1ff1d8bc9167b2b7ec77caa"; + const ethFactoryAddress = getCreate2FactoryAddress(chain); + const factoryReceipt = await ethChainProvider.getTransactionReceipt(factoryCreationTxid); + if (factoryReceipt.contractAddress !== ethFactoryAddress) { + throw new Error("Wrong txid for the transaction that created the Create2Factory in Ethereum mainnet."); + } + const ethFactoryTx = await ethChainProvider.getTransaction(factoryCreationTxid); + + const expectedCreationCodeHash = "0x4b72c18c9a1a24d8406bde2edc283025bd33513d13c51601bb02dd4f298ada7d"; + const fetchedCreationCodeHash = ethers.utils.sha256(ethFactoryTx.data); + if (expectedCreationCodeHash !== fetchedCreationCodeHash) { + throw new Error(`Creation code mismatch for Create2Factory. Found: ${fetchedCreationCodeHash} Expected: ${expectedCreationCodeHash}`); + } + return new Create2Factory__factory(Create2Factory__factory.createInterface(), ethFactoryTx.data); })(); } - const ethCreate2FactoryCodeStr = strip0x(await ethC2Promise); - // Note that we're looking up the deployed bytecode within the "init" bytecode, - // i.e. bytecode that contains both the constructor and the object to be deployed. - - // The create 2 factory contract has these immutables (taken from the compiler output for Create2Factory): - // "immutableReferences": { - // "20558": [ - // { - // "start": 704, - // "length": 32 - // }, - // { - // "start": 1007, - // "length": 32 - // } - // ], - // "20560": [ - // { - // "start": 1134, - // "length": 32 - // } - // ] - // } - // These are set as soon as the constructor executes and they only depend on the account where the constructor executes. - // The constructor has no parameters. - // Thus, we'll just zero out these locations in the ethereum bytecode so that we can look up the deployed bytecode within the deployable bytecode that we are about to use. - const ethCreate2FactoryCode = Buffer.from(ethCreate2FactoryCodeStr, "hex"); - const zeroWord = Buffer.alloc(32, 0); - ethCreate2FactoryCode.set(zeroWord, 704); - ethCreate2FactoryCode.set(zeroWord, 1007); - ethCreate2FactoryCode.set(zeroWord, 1134); - const comparableEthCode = ethCreate2FactoryCode.toString("hex"); - - if (!factory.bytecode.includes(comparableEthCode)) { - throw new Error("Factory contract bytecode doesn't match the factory deployed in Ethereum. Aborting deployment."); - } + factory = await ethC2Promise; } + // We need to connect the signer here because we're overwriting the factory when deploying to mainnet. + factory = factory.connect(signer); const overrides = await buildOverridesDeploy(factory, chain, []); const contract = await factory.deploy(overrides).then(deployed); console.log(`Successfully deployed contract at ${contract.address}`); diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index cac411feb9..44560ef7ca 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -416,7 +416,7 @@ export function getCreate2FactoryAddress(chain: ChainInfo): string { chain.chainId, ); } - return address; + return ethers.utils.getAddress(address); } export const getCreate2Factory = async ( From e84a419a786539296744a795705a368a15483abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 30 May 2024 09:55:27 -0300 Subject: [PATCH 134/174] evm: configuration interface for message keys is more friendly now --- .../configureDeliveryProvider.json | 4 ++-- .../configureDeliveryProvider.ts | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 85d99c88d9..7642b39af3 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -297,11 +297,11 @@ "supportedKeysByChain": [ { "chainId": 34, - "supportedKeys": [1], + "supportedKeys": ["vaa"] }, { "chainId": 36, - "supportedKeys": [1], + "supportedKeys": ["vaa"] } ] } diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index a34ec38a4d..b67ee66e61 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -60,11 +60,11 @@ interface SupportedKeys { * List of bit indices for each key. * Bit 0 is for Wormhole VAA key. * Bit 1 is for CCTP message key. - * E.g. [0, 1] means "set Wormhole VAA and CCTP message supported flags" - * E.g. [0] means "set Wormhole VAA supported flag" + * E.g. ["vaa", "cctp"] means "set Wormhole VAA and CCTP message supported flags" + * E.g. ["vaa"] means "set Wormhole VAA supported flag" * Note that all supported keys must be set in this array since it overwrites the bitmap every time. */ - supportedKeys: number[]; + supportedKeys: string[]; } interface RewardAddress { @@ -77,6 +77,9 @@ interface SupportedChain { isSupported: boolean; } +const vaaKey = 2n << 0n; +const cctpKey = 2n << 1n; + const zeroAddress = "0x0000000000000000000000000000000000000000"; const whZeroAddress = "0x0000000000000000000000000000000000000000000000000000000000000000"; @@ -471,10 +474,15 @@ function extractKeys(bitmap: bigint): bigint[] { return keys; } -function generateBitmap(keys: number[]): bigint { +function generateBitmap(keys: string[]): bigint { let bitmap = 0n; for (const key of keys) { - bitmap |= 1n << BigInt(key); + let i; + if (key === "vaa") i = vaaKey; + else if (key === "cctp") i = cctpKey; + else throw new Error(`Unknown message key ${key}`); + + bitmap |= i; } return bitmap; } From bedf29ddebaa583fcde5798327d40d54bdf8fae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 30 May 2024 10:46:02 -0300 Subject: [PATCH 135/174] evm: prints message keys as string description --- .../relayer/deliveryProvider/configureDeliveryProvider.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index b67ee66e61..e1d6e8cc95 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -125,7 +125,7 @@ function printUpdate(updates: UpdateStruct[], coreConfig: CoreConfigStruct, { ch const bitmap = BigNumber.isBigNumber(coreConfig.supportedKeyTypesBitmap) ? coreConfig.supportedKeyTypesBitmap.toBigInt() : BigNumber.from(coreConfig.supportedKeyTypesBitmap).toBigInt(); - const supportedKeys = extractKeys(bitmap); + const supportedKeys = extractKeys(bitmap).map(supportedKeyBitDescription); messages.push(` Supported key types: [${supportedKeys.join(", ")}]`); } @@ -487,4 +487,10 @@ function generateBitmap(keys: string[]): bigint { return bitmap; } +function supportedKeyBitDescription(i: bigint): "vaa" | "cctp" { + if (i === vaaKey) return "vaa"; + else if (i === cctpKey) return "cctp"; + else throw new Error(`Unknown message key bit ${i}`); +} + run().then(() => console.log(`Done! ${processName}`)); From ab9bbc5a341d80fb64d89f0004812de7d9fea237 Mon Sep 17 00:00:00 2001 From: solanoe Date: Thu, 6 Jun 2024 19:37:39 -0300 Subject: [PATCH 136/174] wormhole-relayer: delivery-provider testnet configuration -> maximum budget/100 --- .../configureDeliveryProvider.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 80787a45c1..4052b6d412 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -63,98 +63,98 @@ "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 4, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 5, "deliverGasOverhead": "350000", "updatePriceGas": "7322000000", "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 6, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 10, "deliverGasOverhead": "350000", "updatePriceGas": "3000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 14, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 16, "deliverGasOverhead": "350000", "updatePriceGas": "10000000000", "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 23, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 24, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 30, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 10002, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 10003, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 10004, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" }, { "chainId": 10005, "deliverGasOverhead": "350000", "updatePriceGas": "30000000000", "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "maximumBudget": "10000000000000000" } ] } \ No newline at end of file From 2d4278b26c2688daace4ce8363ebc2dbec742ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 10 Jun 2024 17:08:50 -0300 Subject: [PATCH 137/174] evm: adds suport for Mantle and X Layer in SR deployment --- .../ts-scripts/relayer/config/mainnet/chains.json | 14 ++++++++++++++ ethereum/ts-scripts/relayer/helpers/deployments.ts | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 5769a38f6f..a5f8096b30 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -86,12 +86,26 @@ "rpc": "https://rpc.ankr.com/scroll", "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" }, + { + "description": "Mantle", + "evmNetworkId": 5000, + "chainId": 35, + "rpc": "https://rpc.ankr.com/mantle", + "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" + }, { "description": "Blast", "evmNetworkId": 81457, "chainId": 36, "rpc": "https://rpc.ankr.com/blast", "wormholeAddress": "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6" + }, + { + "description": "XLayer", + "evmNetworkId": 196, + "chainId": 37, + "rpc": "https://xlayerrpc.okx.com", + "wormholeAddress": "0x194B123c5E96B9b2E49763619985790Dc241CAC0" } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 9c2b743bf4..1e37078fe1 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -317,10 +317,16 @@ export async function buildOverrides( overrides.maxPriorityFeePerGas = 0; } else if (chain.chainId === 34) { overrides.type = 0; + } else if (chain.chainId === 35) { + overrides.type = 2; + overrides.maxFeePerGas = ethers.utils.parseUnits("0.1", "gwei"); + overrides.maxPriorityFeePerGas = 0; } else if (chain.chainId === 36) { overrides.type = 2; overrides.maxFeePerGas = ethers.utils.parseUnits("0.08", "gwei"); overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.000000001", "gwei"); + } else if (chain.chainId === 37) { + overrides.type = 0; } return overrides; } From ccbe8a58d2dcadac9fa3c93aee15127ec3d93f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Mon, 10 Jun 2024 17:09:36 -0300 Subject: [PATCH 138/174] evm: makes `Create2Factory` deployment reproducible on all accounts This allows smoke testing with a throwaway account before performing the actual deployment to minimize issues with gas limit estimation among other things. --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 1e37078fe1..460247c29c 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -123,14 +123,12 @@ export async function deployCreate2Factory( ): Promise { console.log("deployCreate2Factory " + chain.chainId); - const signer = await getSigner(chain); let factory = new Create2Factory__factory(); - const signerAddress = await signer.getAddress(); const ethChain = getChain(2); const ethChainProvider = getProvider(ethChain); const ethNetwork = await ethChainProvider.getNetwork(); - if (ethNetwork.chainId === 1 && signerAddress.toLowerCase() === "0x5623bdf52b51085c807a5dc39152eed05825f5fd") { + if (ethNetwork.chainId === 1) { // Here we fetch the creation bytecode from Ethereum. // We also perform a few sanity checks to ensure that the retrieved creation bytecode looks good: // 1. The transaction receipt should contain the expected address for the `Create2Factory`. @@ -164,6 +162,7 @@ export async function deployCreate2Factory( } // We need to connect the signer here because we're overwriting the factory when deploying to mainnet. + const signer = await getSigner(chain); factory = factory.connect(signer); const overrides = await buildOverridesDeploy(factory, chain, []); const contract = await factory.deploy(overrides).then(deployed); From c29f2f7d58d1fd4fba6be673d1554ec1cea1b2be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 18 Jun 2024 10:26:49 -0300 Subject: [PATCH 139/174] evm: adds `Create2Factory` addresses for mainnet --- ethereum/ts-scripts/relayer/config/mainnet/contracts.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 8f38b1ef15..f97d5fed80 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -319,9 +319,17 @@ "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", "chainId": 34 }, + { + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", + "chainId": 35 + }, { "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", "chainId": 36 + }, + { + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", + "chainId": 37 } ], "wormholeRelayerImplementations": [ From 8eefb92de7886141f2da0412cb388fb8b785e8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 18 Jun 2024 10:27:05 -0300 Subject: [PATCH 140/174] evm: fixes typo in deployment script --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 460247c29c..fcc9178843 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -142,7 +142,7 @@ export async function deployCreate2Factory( // We assign the promise immediately to avoid race conditions ethC2Promise = (async () => { const factoryCreationTxid = "0xfd6551a91a2e9f423285a2e86f7f480341a658dda1ff1d8bc9167b2b7ec77caa"; - const ethFactoryAddress = getCreate2FactoryAddress(chain); + const ethFactoryAddress = getCreate2FactoryAddress(ethChain); const factoryReceipt = await ethChainProvider.getTransactionReceipt(factoryCreationTxid); if (factoryReceipt.contractAddress !== ethFactoryAddress) { throw new Error("Wrong txid for the transaction that created the Create2Factory in Ethereum mainnet."); From d321f8e3e5c1b59b9c638ade7cfda52f19f5ca25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 2 Jul 2024 19:18:50 -0300 Subject: [PATCH 141/174] evm: adds mantle and x layer SR delivery provider configs --- .../configureDeliveryProvider.json | 184 ++++++++++++++---- 1 file changed, 144 insertions(+), 40 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 7642b39af3..0179659943 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -2,68 +2,78 @@ "pricingInfo": [ { "chainId": 2, - "updatePriceGas": "45000000000", - "updatePriceNative": "2985580000" + "updatePriceGas": "7000000000", + "updatePriceNative": "3415400000" }, { "chainId": 4, - "updatePriceGas": "3000000000", - "updatePriceNative": "300730000" + "updatePriceGas": "1000000000", + "updatePriceNative": "577360000" }, { "chainId": 5, - "updatePriceGas": "250000000000", - "updatePriceNative": "789900" + "updatePriceGas": "31000000000", + "updatePriceNative": "571500" }, { "chainId": 6, - "updatePriceGas": "30000000000", - "updatePriceNative": "34410000" + "updatePriceGas": "25000000000", + "updatePriceNative": "28720000" }, { "chainId": 10, - "updatePriceGas": "30000000000", - "updatePriceNative": "357400" + "updatePriceGas": "15000000000", + "updatePriceNative": "587000" }, { "chainId": 13, - "updatePriceGas": "45000000000", - "updatePriceNative": "193100" + "updatePriceGas": "25000000000", + "updatePriceNative": "156200" }, { "chainId": 14, - "updatePriceGas": "10000000000", - "updatePriceNative": "677600" + "updatePriceGas": "5000000000", + "updatePriceNative": "590400" }, { "chainId": 16, - "updatePriceGas": "1000000000000", - "updatePriceNative": "666400" + "updatePriceGas": "150000000000", + "updatePriceNative": "224900" }, { "chainId": 23, "updatePriceGas": "1200000", - "updatePriceNative": "2985580000" + "updatePriceNative": "3415400000" }, { "chainId": 24, "updatePriceGas": "1200000", - "updatePriceNative": "2985580000" + "updatePriceNative": "3415400000" }, { "chainId": 30, "updatePriceGas": "1200000", - "updatePriceNative": "2985580000" + "updatePriceNative": "3415400000" }, { "chainId": 34, "updatePriceGas": "1200000", - "updatePriceNative": "2985580000" + "updatePriceNative": "3415400000" + }, + { + "chainId": 35, + "updatePriceGas": "1200000", + "updatePriceNative": "780000" }, { "chainId": 36, "updatePriceGas": "1200000", - "updatePriceNative": "2985580000" + "updatePriceNative": "3415400000" + }, + { + "chainId": 37, + "updatePriceGas": "1200000", + "updatePriceNative": "3415400000" } ], "deliveryGasOverheads": [ @@ -101,78 +111,94 @@ }, { "chainId": 23, - "updateGasOverhead": "558238824" + "updateGasOverhead": "243992895" }, { "chainId": 24, - "updateGasOverhead": "586150765" + "updateGasOverhead": "243992895" }, { "chainId": 30, - "updateGasOverhead": "781534353" + "updateGasOverhead": "243992895" }, { "chainId": 34, - "updateGasOverhead": "558238824" + "updateGasOverhead": "243992895" + }, + { + "chainId": 35, + "updateGasOverhead": "1068376068376" }, { "chainId": 36, - "updateGasOverhead": "558238824" + "updateGasOverhead": "243992895" + }, + { + "chainId": 37, + "updateGasOverhead": "243992895" } ], "maximumBudgets": [ { "chainId": 2, - "updateMaximumBudget": "225000000000000000" + "updateMaximumBudget": "58558294782455900" }, { "chainId": 4, - "updateMaximumBudget": "665048382269810000" + "updateMaximumBudget": "346404323125953000" }, { "chainId": 5, - "updateMaximumBudget": "253196607165464000000" + "updateMaximumBudget": "349956255468067000000" }, { "chainId": 6, - "updateMaximumBudget": "5812263876780010000" + "updateMaximumBudget": "6963788300835660000" }, { "chainId": 10, - "updateMaximumBudget": "559597090095132000000" + "updateMaximumBudget": "340715502555366000000" }, { "chainId": 13, - "updateMaximumBudget": "1035732780942520000000" + "updateMaximumBudget": "1280409731113960000000" }, { "chainId": 14, - "updateMaximumBudget": "295159386068477000000" + "updateMaximumBudget": "338753387533875000000" }, { "chainId": 16, - "updateMaximumBudget": "300120048019208000000" + "updateMaximumBudget": "889284126278346000000" }, { "chainId": 23, - "updateMaximumBudget": "87398071998531700" + "updateMaximumBudget": "58558294782455900" }, { "chainId": 24, - "updateMaximumBudget": "87398071998531700" + "updateMaximumBudget": "58558294782455900" }, { "chainId": 30, - "updateMaximumBudget": "87398071998531700" + "updateMaximumBudget": "58558294782455900" }, { "chainId": 34, - "updateMaximumBudget": "66988658820061800" + "updateMaximumBudget": "58558294782455900" + }, + { + "chainId": 35, + "updateMaximumBudget": "256410256410256000000" }, { "chainId": 36, - "updateMaximumBudget": "66988658820061800" - } + "updateMaximumBudget": "58558294782455900" + }, + { + "chainId": 37, + "updateMaximumBudget": "58558294782455900" + }, ], "conversionBuffers": [ { @@ -180,10 +206,20 @@ "buffer": 5, "bufferDenominator": 100 }, + { + "chainId": 35, + "buffer": 5, + "bufferDenominator": 100 + }, { "chainId": 36, "buffer": 5, "bufferDenominator": 100 + }, + { + "chainId": 37, + "buffer": 5, + "bufferDenominator": 100 } ], "rewardAddresses": [ @@ -235,9 +271,17 @@ "chainId": 34, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" }, + { + "chainId": 35, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, { "chainId": 36, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 37, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "supportedChains": [ @@ -289,19 +333,79 @@ "chainId": 34, "isSupported": true }, + { + "chainId": 35, + "isSupported": true + }, { "chainId": 36, "isSupported": true + }, + { + "chainId": 37, + "isSupported": true } ], "supportedKeysByChain": [ + { + "chainId": 2, + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 4, + "supportedKeys": ["vaa"] + }, + { + "chainId": 5, + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 6, + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 10, + "supportedKeys": ["vaa"] + }, + { + "chainId": 13, + "supportedKeys": ["vaa"] + }, + { + "chainId": 14, + "supportedKeys": ["vaa"] + }, + { + "chainId": 16, + "supportedKeys": ["vaa"] + }, + { + "chainId": 23, + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 24, + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 30, + "supportedKeys": ["vaa", "cctp"] + }, { "chainId": 34, "supportedKeys": ["vaa"] }, + { + "chainId": 35, + "supportedKeys": ["vaa"] + }, { "chainId": 36, "supportedKeys": ["vaa"] + }, + { + "chainId": 37, + "supportedKeys": ["vaa"] } ] } From 5d307acf79c403afc9d519567492220f785270d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 2 Jul 2024 20:55:02 -0300 Subject: [PATCH 142/174] evm: adds support for mantle and x layer in verification scripts --- .../relayer/shell/verifyCreate2Factory.sh | 20 +++++++- .../relayer/shell/verifyDeliveryProvider.sh | 48 ++++++++++++++----- .../relayer/shell/verifyWormholeRelayer.sh | 26 ++++++++-- 3 files changed, 76 insertions(+), 18 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh index 47d06e9116..31e862db74 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh @@ -54,8 +54,24 @@ for chain in $chain_ids echo "Please manually submit the compiler input files at celoscan.io" echo "- $create2_factory_address: Create2Factory.compiler-input.json" echo "- $init_contract_address: Init.compiler-input.json" + else if test $chain -eq 35 + set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" + + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ + $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ + $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init + else if test $chain -eq 37 + set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" + + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init else - forge verify-contract $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory --watch - forge verify-contract $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init --watch + forge verify-contract --watch \ + $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory + forge verify-contract --watch \ + $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init end end diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index 28074916ad..03af792dfc 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -36,16 +36,16 @@ for chain in $chain_ids set setup_address (jq --raw-output ".deliveryProviderSetups[] | select(.chainId == $chain) | .address" $contracts_file) set proxy_address (jq --raw-output ".deliveryProviders[] | select(.chainId == $chain) | .address" $contracts_file) + # These two are documented in `forge verify-contract` as accepted environment variables. # We need the token to be unquoted when passed to `forge verify-contract` - set scan_token (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) + set --export ETHERSCAN_API_KEY (jq --raw-output ".[] | select(.chainId == $chain) | .etherscan" $scan_tokens_file) - # if we dont have a scan token echo a warning and continue - if test -z $scan_token - echo "Error: No scan token found for chain $chain. Chain will not be verified." - continue + # Some explorers like mantle.explorer.xyz don't have an API token + if test -z $ETHERSCAN_API_KEY + echo "Warning: No scan token found for chain $chain." end - set evm_chain_id (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) + set --export CHAIN (jq ".chains[] | select(.chainId == $chain) | .evmNetworkId" $chains_file) # We're using the production profile for delivery providers on mainnet and testnet set --export FOUNDRY_PROFILE production @@ -54,17 +54,41 @@ for chain in $chain_ids # Celo has a verification API but it currently doesn't work with `forge verify-contract` # We print the compiler input to a file instead for manual verification if test $chain -eq 14 - forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderImplementation.compiler-input.json - forge verify-contract $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderSetup.compiler-input.json - forge verify-contract $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy --chain-id $evm_chain_id --watch --constructor-args $proxy_constructor_args --etherscan-api-key $scan_token --show-standard-json-input > DeliveryProviderProxy.compiler-input.json + forge verify-contract --watch --show-standard-json-input \ + $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation > DeliveryProviderImplementation.compiler-input.json + forge verify-contract --watch --show-standard-json-input \ + $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup > DeliveryProviderSetup.compiler-input.json + forge verify-contract --watch --show-standard-json-input --constructor-args $proxy_constructor_args \ + $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy > DeliveryProviderProxy.compiler-input.json echo "Please manually submit the compiler input files at celoscan.io" echo "- $implementation_address: DeliveryProviderImplementation.compiler-input.json" echo "- $setup_address: DeliveryProviderSetup.compiler-input.json" echo "- $proxy_address: DeliveryProviderProxy.compiler-input.json" + else if test $chain -eq 35 + set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" + + forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation + forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup + forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy + else if test $chain -eq 37 + set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" + + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy else - forge verify-contract $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token - forge verify-contract $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup --chain-id $evm_chain_id --watch --etherscan-api-key $scan_token - forge verify-contract $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy --chain-id $evm_chain_id --watch --constructor-args $proxy_constructor_args --etherscan-api-key $scan_token + forge verify-contract --watch \ + $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation + forge verify-contract --watch \ + $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup + forge verify-contract --watch --constructor-args $proxy_constructor_args \ + $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy end end \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index 8ea26eba46..4f86f1d696 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -62,15 +62,33 @@ for chain in $chain_ids # Celo has a verification API but it currently doesn't work with `forge verify-contract` # We print the compiler input to a file instead for manual verification if test $chain -eq 14 - forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address --show-standard-json-input > WormholeRelayerProxy.compiler-input.json - forge verify-contract $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer --watch --constructor-args $wormhole_address --show-standard-json-input > WormholeRelayerImplementation.compiler-input.json + forge verify-contract --watch --show-standard-json-input --constructor-args $init_contract_address \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy > WormholeRelayerProxy.compiler-input.json + forge verify-contract --watch --show-standard-json-input --constructor-args $wormhole_address \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer > WormholeRelayerImplementation.compiler-input.json echo "Please manually submit the compiler input files at celoscan.io" echo "- $implementation_address: WormholeRelayerImplementation.compiler-input.json" echo "- $proxy_address: WormholeRelayerProxy.compiler-input.json" + else if test $chain -eq 35 + set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" + + forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy + forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer + else if test $chain -eq 37 + set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" + + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy + forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer else - forge verify-contract $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy --watch --constructor-args $init_contract_address - forge verify-contract $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer --watch --constructor-args $wormhole_address + forge verify-contract --watch --constructor-args $init_contract_address \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy + forge verify-contract --watch --constructor-args $wormhole_address \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer end end From 71b7a7e3511d30f97ee39a47b13de6f69ae3be4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 3 Jul 2024 15:38:07 -0300 Subject: [PATCH 143/174] evm: fixes SR prices for x layer --- .../mainnet/scriptConfigs/configureDeliveryProvider.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 0179659943..893a175252 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -73,7 +73,7 @@ { "chainId": 37, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "41860000" } ], "deliveryGasOverheads": [ @@ -135,7 +135,7 @@ }, { "chainId": 37, - "updateGasOverhead": "243992895" + "updateGasOverhead": "19907628603" } ], "maximumBudgets": [ @@ -197,7 +197,7 @@ }, { "chainId": 37, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "4777830864787390000" }, ], "conversionBuffers": [ From b521da93e3ae4ef035c1298390682a8bc97ce5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 3 Jul 2024 15:38:29 -0300 Subject: [PATCH 144/174] evm: removes unnecessary type annotation --- .../relayer/deliveryProvider/initializeDeliveryProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts index 90ce2fb984..8026ff471f 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts @@ -75,7 +75,7 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { // Set the entire relay provider configuration for (const targetChain of allChains) { const targetChainPriceUpdate = (config.pricingInfo as PricingInfo[]).find( - (x: any) => x.chainId == targetChain.chainId + (x) => x.chainId == targetChain.chainId ); if (!targetChainPriceUpdate) { throw new Error( From 1019addf41e34ae5bf0b71e53209445bcd097753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 4 Jul 2024 16:57:11 -0300 Subject: [PATCH 145/174] evm: adds mainnet SR contracts for Mantle and X Layer --- .../relayer/config/mainnet/contracts.json | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index f97d5fed80..9b6d54fc89 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -49,9 +49,17 @@ "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", "chainId": 34 }, + { + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", + "chainId": 35 + }, { "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", "chainId": 36 + }, + { + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", + "chainId": 37 } ], "deliveryProviderImplementations": [ @@ -103,9 +111,17 @@ "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", "chainId": 34 }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 35 + }, { "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", "chainId": 36 + }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 37 } ], "deliveryProviderSetups": [ @@ -157,9 +173,17 @@ "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", "chainId": 34 }, + { + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", + "chainId": 35 + }, { "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", "chainId": 36 + }, + { + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", + "chainId": 37 } ], "wormholeRelayers": [ @@ -211,9 +235,17 @@ "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", "chainId": 34 }, + { + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", + "chainId": 35 + }, { "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", "chainId": 36 + }, + { + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", + "chainId": 37 } ], "mockIntegrations": [ @@ -265,9 +297,17 @@ "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", "chainId": 34 }, + { + "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", + "chainId": 35 + }, { "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", "chainId": 36 + }, + { + "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", + "chainId": 37 } ], "create2Factories": [ @@ -381,9 +421,17 @@ "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", "chainId": 34 }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 35 + }, { "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", "chainId": 36 + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 37 } ] } \ No newline at end of file From 13c04b95e0ab400193c6f3b6a0dc1d6c67b3d48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 4 Jul 2024 17:19:42 -0300 Subject: [PATCH 146/174] evm: fixes prices for Mantle and X Layer --- .../scriptConfigs/configureDeliveryProvider.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 893a175252..de3906fcb5 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -62,7 +62,7 @@ }, { "chainId": 35, - "updatePriceGas": "1200000", + "updatePriceGas": "2000000000", "updatePriceNative": "780000" }, { @@ -72,7 +72,7 @@ }, { "chainId": 37, - "updatePriceGas": "1200000", + "updatePriceGas": "120000000", "updatePriceNative": "41860000" } ], @@ -127,7 +127,7 @@ }, { "chainId": 35, - "updateGasOverhead": "1068376068376" + "updateGasOverhead": "192307692" }, { "chainId": 36, @@ -135,7 +135,7 @@ }, { "chainId": 37, - "updateGasOverhead": "19907628603" + "updateGasOverhead": "199076286" } ], "maximumBudgets": [ @@ -198,7 +198,7 @@ { "chainId": 37, "updateMaximumBudget": "4777830864787390000" - }, + } ], "conversionBuffers": [ { From 24fb37b3684288b18901085514395486c82eb57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 4 Jul 2024 17:20:44 -0300 Subject: [PATCH 147/174] evm: removes redundant prints in `configureDeliveryProvider` --- .../deliveryProvider/configureDeliveryProvider.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index e1d6e8cc95..2c2b71994c 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -144,12 +144,6 @@ function printUpdate(updates: UpdateStruct[], coreConfig: CoreConfigStruct, { ch const maximumBudget = utils.formatEther(update.maximumTotalBudget); messages.push(` Maximum budget update: ${maximumBudget}`); } - if (update.updateTargetChainAddress) { - messages.push(` Target chain address update: ${update.targetChainAddress}`); - } - if (update.updateSupportedChain) { - messages.push(` Supported chain update: ${update.isSupported}`); - } if (update.updateAssetConversionBuffer) { const bufferDenominator = BigNumber.isBigNumber(update.bufferDenominator) ? update.bufferDenominator : BigNumber.from(update.bufferDenominator); const buffer = BigNumber.isBigNumber(update.buffer) ? update.buffer : BigNumber.from(update.buffer); @@ -161,11 +155,6 @@ function printUpdate(updates: UpdateStruct[], coreConfig: CoreConfigStruct, { ch if (update.updateTargetChainAddress) { messages.push(` Target chain address update: ${utils.hexlify(update.targetChainAddress)}`); } - if (update.updateAssetConversionBuffer) { - messages.push(` Asset conversion buffer update:`); - messages.push(` buffer: ${update.buffer}`); - messages.push(` buffer denominator: ${update.bufferDenominator}`); - } } console.log(messages.join("\n")); From 3ba32e82f47e554f4843f4ea857584d87b8b0446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 4 Jul 2024 17:21:31 -0300 Subject: [PATCH 148/174] evm: uses `operatingChains` for verification scripts --- .../relayer/shell/verifyCreate2Factory.sh | 4 ++-- .../relayer/shell/verifyDeliveryProvider.sh | 14 +++++++------- .../relayer/shell/verifyWormholeRelayer.sh | 10 +++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh index 31e862db74..634917919f 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh @@ -64,9 +64,9 @@ for chain in $chain_ids else if test $chain -eq 37 set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init else forge verify-contract --watch \ diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index 03af792dfc..cb70e3f715 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -23,7 +23,7 @@ if not test -e $contracts_file exit 1 end -set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) +set chain_ids (string split \n --no-empty -- (jq '.operatingChains[]' $chains_file)) for chain in $chain_ids # Klaytn, Karura and Acala don't have a verification API yet @@ -68,20 +68,20 @@ for chain in $chain_ids else if test $chain -eq 35 set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" - forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation - forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup - forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy else if test $chain -eq 37 set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy else forge verify-contract --watch \ diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index 4f86f1d696..208c9ee6ad 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -21,7 +21,7 @@ set scan_tokens_file $_flag_scan_tokens set chains_file "ts-scripts/relayer/config/$ENV/chains.json" set contracts_file "ts-scripts/relayer/config/$ENV/contracts.json" -set chain_ids (string split \n --no-empty -- (jq '.chains[] | .chainId' $chains_file)) +set chain_ids (string split \n --no-empty -- (jq '.operatingChains[]' $chains_file)) for chain in $chain_ids # Klaytn, Karura and Acala don't have a verification API yet @@ -73,16 +73,16 @@ for chain in $chain_ids else if test $chain -eq 35 set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" - forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy - forge verify-contract --verifier blockscout --verifier-url "$mantle_explorer_url" --watch \ + forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer else if test $chain -eq 37 set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy - forge verify-contract --verifier-url $xlayer_explorer_url --watch \ + forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer else forge verify-contract --watch --constructor-args $init_contract_address \ From e4cff15fdc8ca6b96151425d7f0526f561d748df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 4 Jul 2024 18:11:12 -0300 Subject: [PATCH 149/174] evm: updates foudnry version in dockerfile for SR verification --- ethereum/Dockerfile.verifyRelayer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/Dockerfile.verifyRelayer b/ethereum/Dockerfile.verifyRelayer index 1743e3f937..c24b41d86d 100644 --- a/ethereum/Dockerfile.verifyRelayer +++ b/ethereum/Dockerfile.verifyRelayer @@ -6,7 +6,7 @@ WORKDIR /home/node/app/ethereum RUN apt-get update && apt-get -y install \ git make curl -COPY --from=ghcr.io/foundry-rs/foundry:nightly-7469d79cca59e0bb5f23563ac5a6bd5f2ec8c5e4@sha256:f84eabbe85ec74dd59464816bf65b8d1ec707c8fa78003aca66c13dad3a6fa42 \ +COPY --from=ghcr.io/foundry-rs/foundry:nightly-d9e51e4807b62f101221a2fd36076c502399dbf9@sha256:f3237e283abbacec56edf54c2e422c5fe4d3b444eb10203e1e6d7ee089b11c4d \ /usr/local/bin/forge \ /usr/local/bin/cast \ /usr/local/bin/anvil \ From c62cc32b3b20307de6ca60eabce5733200b6e1b5 Mon Sep 17 00:00:00 2001 From: solanoe Date: Mon, 19 Aug 2024 16:24:05 -0300 Subject: [PATCH 150/174] evm: adds snax configuration for relayer deployment scripts --- ethereum/env/.env.snax.mainnet | 22 +++++++++++++++ .../relayer/config/mainnet/chains.json | 7 +++++ .../relayer/config/mainnet/contracts.json | 28 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 ethereum/env/.env.snax.mainnet diff --git a/ethereum/env/.env.snax.mainnet b/ethereum/env/.env.snax.mainnet new file mode 100644 index 0000000000..5fbe40c26c --- /dev/null +++ b/ethereum/env/.env.snax.mainnet @@ -0,0 +1,22 @@ +# Snax mainnet env +# Rename to .env + +# Common config for forge deployment +RPC_URL=https://mainnet.snaxchain.io +# --with-gas-price 5.1gwei +FORGE_ARGS="--slow --legacy --gas-estimate-multiplier 130" + +# Wormhole Core Migrations +INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"] +INIT_CHAIN_ID=43 +INIT_GOV_CHAIN_ID=1 +INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +INIT_EVM_CHAIN_ID=2192 + +# Bridge Migrations +BRIDGE_INIT_CHAIN_ID=43 +BRIDGE_INIT_GOV_CHAIN_ID=1 +BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 + +BRIDGE_INIT_WETH=0x4200000000000000000000000000000000000006 +BRIDGE_INIT_FINALITY=1 diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index a5f8096b30..3b425f23df 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -106,6 +106,13 @@ "chainId": 37, "rpc": "https://xlayerrpc.okx.com", "wormholeAddress": "0x194B123c5E96B9b2E49763619985790Dc241CAC0" + }, + { + "description": "Snax", + "evmNetworkId": 2192, + "chainId": 43, + "rpc": "https://mainnet.snaxchain.io", + "wormholeAddress": "0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4" } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 9b6d54fc89..4871bcd7ab 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -60,6 +60,10 @@ { "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", "chainId": 37 + }, + { + "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", + "chainId": 43 } ], "deliveryProviderImplementations": [ @@ -122,6 +126,10 @@ { "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", "chainId": 37 + }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 43 } ], "deliveryProviderSetups": [ @@ -184,6 +192,10 @@ { "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", "chainId": 37 + }, + { + "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", + "chainId": 43 } ], "wormholeRelayers": [ @@ -246,6 +258,10 @@ { "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", "chainId": 37 + }, + { + "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", + "chainId": 43 } ], "mockIntegrations": [ @@ -308,6 +324,10 @@ { "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", "chainId": 37 + }, + { + "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", + "chainId": 43 } ], "create2Factories": [ @@ -370,6 +390,10 @@ { "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", "chainId": 37 + }, + { + "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", + "chainId": 43 } ], "wormholeRelayerImplementations": [ @@ -432,6 +456,10 @@ { "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", "chainId": 37 + }, + { + "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", + "chainId": 43 } ] } \ No newline at end of file From 83716af9a46637626ec2016fa365189a509ba933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 30 Aug 2024 11:48:43 -0300 Subject: [PATCH 151/174] evm: adds verification logic for snax in `verifyWormholeRelayer` script --- ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index 208c9ee6ad..b6a5144611 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -84,6 +84,13 @@ for chain in $chain_ids $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy forge verify-contract --verifier oklink --verifier-url $xlayer_explorer_url --watch \ $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer + else if test $chain -eq 43 + set snaxchain_explorer_url "https://explorer.snaxchain.io/api?module=contract&action=verify" + + forge verify-contract --verifier blockscout --verifier-url $snaxchain_explorer_url --watch \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy + forge verify-contract --verifier blockscout --verifier-url $snaxchain_explorer_url --watch \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer else forge verify-contract --watch --constructor-args $init_contract_address \ $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy From 7b700d08d425fab9644458924d59ae6a525e3b64 Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 30 Aug 2024 15:17:34 -0300 Subject: [PATCH 152/174] adds delivery provider price assistant config --- ...nfigureDeliveryProviderPriceAssistant.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json index 73865df9b3..a8e6b1ad40 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProviderPriceAssistant.json @@ -43,6 +43,26 @@ { "chainId": 30, "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 34, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 35, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 36, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 37, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" + }, + { + "chainId": 43, + "address": "0xE8af07A8Eff87B99B7C8C2c18ea95a1FE86D0ACD" } ] } From 15cb1eafa10b40c817bf163ca5771cbe8061f9bd Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 30 Aug 2024 15:20:08 -0300 Subject: [PATCH 153/174] adds delivery provider snax configuration --- .../configureDeliveryProvider.json | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index de3906fcb5..9df2521542 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -74,6 +74,11 @@ "chainId": 37, "updatePriceGas": "120000000", "updatePriceNative": "41860000" + }, + { + "chainId": 43, + "updatePriceGas": "250000", + "updatePriceNative": "2608840000" } ], "deliveryGasOverheads": [ @@ -136,6 +141,10 @@ { "chainId": 37, "updateGasOverhead": "199076286" + }, + { + "chainId": 43, + "updateGasOverhead": "243992895" } ], "maximumBudgets": [ @@ -198,6 +207,10 @@ { "chainId": 37, "updateMaximumBudget": "4777830864787390000" + }, + { + "chainId": 43, + "updateMaximumBudget": "58558294782455900" } ], "conversionBuffers": [ @@ -220,6 +233,11 @@ "chainId": 37, "buffer": 5, "bufferDenominator": 100 + }, + { + "chainId": 43, + "buffer": 5, + "bufferDenominator": 100 } ], "rewardAddresses": [ @@ -282,6 +300,10 @@ { "chainId": 37, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 43, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "supportedChains": [ @@ -344,6 +366,10 @@ { "chainId": 37, "isSupported": true + }, + { + "chainId": 43, + "isSupported": true } ], "supportedKeysByChain": [ @@ -406,6 +432,10 @@ { "chainId": 37, "supportedKeys": ["vaa"] + }, + { + "chainId": 43, + "supportedKeys": ["vaa"] } ] } From 6ee5bb013ea275be954e62776b055e528dc27138 Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 30 Aug 2024 15:20:30 -0300 Subject: [PATCH 154/174] adds snax SR governance VAA --- .../relayer/wormholeRelayer/registerChainsWormholeRelayer.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts index c9717dc0b0..6e9fb1f8ce 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayer.ts @@ -40,6 +40,9 @@ const base64RegistrationVaas = [ // These are for scroll and blast, note that they are not "full" VAAs, some observations are missing. They just have enough signatures for quorum. "AQAAAAQNAfa6t3rS41iVIJs6+RdW6A3iLamk6MoIcau+oR4TeyWkKsu9ncqYw6b9yFDhoqMXV8NRyaJxK1n+x9Rgezw+y94AAwpWK7g9YfFGyd53lFX1d2OHWE9fcBCf2RxcXegl/tNdVs+K4YjUb5cu39A7Gs5jhzU+aBS5KULpyMzp5kAMFBABBIzq9TFU28yBlMeYbB2MmVGavYrPG0rdcXjQzHq0dcM7OXnvCj6wXsHmkAT729KHHc1/eZXq/X8A0rQ27ltVO1wABjlqV02sK+vjZ1oeDduQ+77PAOtyS8Rvc6xnOkbh2kPff2O/GVQJZM+Xws38ep717WXfdyaHNDeSpIeLkryZhaQBCAU7zEMGbDZuAeYs1QSROQ9Zk15BsxIlPf/sN8+l+2LvZxNsinEvgnP3f4CffgBk7FZAp9iMefOVYiHawMb5WPUBCtgxHS1fl5Sv7p3yks9LP1lc3xfzIvNtShU7/Q9RI6MfS45FkMMXw+ZN6Vog5Yz4fj/ufCR12hijH6Al3MqwDOsACzN4Ygp/jsuVjDMVlAb71zKsFP+2bTgcoWASXj4/Pob/CawVWJPP+OW4sG6+XhVRp1fpjbLn5MyxwA0T12Mv3GkADfv5wKoeQjKVIN+HbR6ZRXkEhQIq1Ob2w6Fmi0q53ga3emcyzgxXlqDbbq/56tJoI59XkGp5VBTQYghVq/phKxkBDkwFGOknrMG94mvhmv5PxCdlZrWX7E9TCk+meOnq5cJeT3SGnEdvAWQmBc95DNedBrpLlKdHVGU1hNXSUU2rrkYBD+faMlpdCflMIaJGsZDonqMyZZnbv9VZSFND4NN7JYNaM+rcktw+vLFDAduOIh+FA/WhXTKvJwNScVkcsvL05LAAEMilsmRtAhTt+NJG9cpT1pytl9XzfOQsBBqQbegJPnArLWecuhqJl51PMtlIiehMxRz8yYn+H50AOXzkqfmVUtIBESYWBm+ZOuTmttEOHl2Zuphd9+3Sk23PwNRFJ2RANoXqe6o2ar74vW+WAwd4PBhQYVwoa1/uTzsTvxwUbhZCJDIAEuMh/pjR2LKucVE7KQHozGJrFZ1O9qHn2kd6k0GGVVOOEo4s4k0yKKEby3VRRI+mYisF9l1nny216eZE/sP8atwAAAAAAJtyws4AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsRkL6/JsZqQgAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAIgAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", "AQAAAAQNAb3T6B6CJHDv4K3SSI11jESfUn/XZJAVDGiyKp+5c2qCfI2MllG+g0mQZkqoVx9UkNFAK/5Yn+X73yAgTDaii+wAA9htLAudbQZYJMQc1l+XeZN7EwrWYpp7/5vmkiUvK44QBl20jqCPnIgcrd63GdqZQ2LcY6eDTpbaDCTps0c03xUABCk0Ge0lcG+UizNMVNqMAzTqGEvhgzE1295jXf4hLVFqGj7mMDjzh53x8iuJi6zHD12X6ZH8eeTpcwq4laG0e40ABkuskXaqaroieih2dNAqqCfP5pUgg2VTHYSsfHKRzwDCDBriOCwCaz08f2gtfbP93SQauRWrAMONa8UaR2ZkZwEBCPQkO5BgMAtNhsA4k0asiVwQ7VVwIlRI0F5v4eg1bRwqT3/3Wy/ifUKWNF6X+GiQnYrJQYqh+7rw+/O9opZAaLYBCt9wGSF01pFHnIeYD3xqEpdA6dzRnSjMUR1XPf5+5kVOLirhkOjROGeQMH/XPo5VXfhZgUpjphJ30Qti4lCQlpEBC2Cq8WtbAOiGJsXxn2BeIVSLZNbzj6H1OvNKBn9vt27lSp0ZlF6zvID6wp82oEOKlEzrufuOMUWQmarSDDgirRQBDTtmxx/+MMi3phTslhwbnTZZAU5sD31HW78lpnATw0UsYW0u8PxdaZx3/IctOXDLQejwL6x1EtRForGkyV6Vtv0ADof3+8AS/9VZ2K1SrlaUmkoTpBdrnraRO4K12m9+QmkLM4jPmjdKU9ZwtxOYjnSYSRuiysYqqWIF07/yal+5IwoAD8B+I+TECXYTxQQKaGta7uRyDsLn3Zt1xBPT/4u0Um12cz7Zg9gQVlfokZXYfehvEEauYHkfCdYffpU2sxBMTjoAEF7VkcOUXJAtMDXiCmKCF8ivz0PVwrXJbzofoQ0IAO87dZP6Nb1rtZvoMR4o84L546zhRfbM0H+tdP70LvcdrZEBEZO9HApjLQBj1KWLg6I0d03bLsZmszzYcJnoqQItpgvAQl+uC3vAiNCMuOYWNR4ihyp2tDdsfwA+kV3HYejjPMsAEk9cdl9aIhba0TPszRM7S14kU57hrI7DiD1SFrDpvkhQPaxxK8WzjX2MQdr0TemlwvlaDWrjXyUXyXLmAgd+lSgAAAAAANY41EgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESnKcss97Qw0gAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAJAAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR", + + // snaxchain: + "AQAAAAQOALSX6mrKxPQ5qGnRBc+b0jmlANbDAU0/aH81X3WZkCBtB5zIUfFR30LglHUK8qdzjSX2gXVIh2eOQpNgENdEaAwAAQyY6EgE+getem+b9D0cxju6d7cfSWR4InDygl6gVDAEOBTwqAvUWSUo/ArjBpIxCYr/YBDqYU+1mCvt7kLfucUAAyMOmpeHk94JhQ+FymU4PvNWpmiAqsGEXW6XixTSTI4bS7VJP3ulIkFoulSH037r8d3G/f6UR/RjPWSaEbwZOPcABU+6DT8Vb6BDl1nNoHVC/nSknP6py+S8+OIB7FKljMZMXI0FETWyE77DDFXfySBcQg6QQxPWm/89Sk4PMRsARH8BBvvnFxYH3dtWcHjWl/BdFrT0Uf/v4CIztjrhMSrmDkRMKdbfdO23Re5indn/6flVTPwxLNropw/c75HKUOMUNc0AB0XIk95PvtbiKMFfZWK0qrGczInjJHb0vJd2Fw9SpJgmeRy4jd9A5Yq0RZjAjA4Wvj0cE7aTC7DZhrTFKB/OgHcACf6wVO16qL9+HKPvLjdmQIWBxBP5N3dX97E7bsJWaoulBBnpfuRBDQLmqU12VOEWmpiZ1P51ak8R3KiIG0Gu2wwACngAtrBdfzcVLSbhBc9lMyfws8dPxyOZPjNiEjxOPbFKE2AA1tGEx/m2AqbInW/XQ82UtvheSZYEgaN5SNbCSuMBC/P8640HFcbwYyuB5z2d9jkixURRuTModH1Yaql3Rn2WfCJtX1svbm5dEX2oyv+DiGrhLyWcHxlcVISlRn0eXRIBDXCv7hgdmaYEolvIUY0szULTI46BlkQsoKUUsAa3/F98cmXicHoNIOde0lH1hqLCB1tECYP3oKlmp6YOdQMV2DUADrdOO82zND0sllMx9mlzOdvRJZVsxeG/gIjKb4c4ZrGzNdImZfXu6m9ac7UywFfBN6EU0yE135wCTE4E1IpjgpgAD4/iZ7VaTm1V/ovxHMixE6/bGTJ3/CCq5ffQ+M02RFxacm0PddWs8BQzEZQDk/Kyx0n6B2L8duKl5wbe5MZio0sAEfooSm6Le6s0SZ4kCeYIJlysOBqgoB3AC/Y6T/ku/uDPWUpm2x3Q0WV9kpkNnk5EUjHlz1YKyI0aGOqyymJWiDQBEgeRnuhjfF5is6mE5tlEa7yRL7cjKxLbxCILYCp19VFXXAxuS3JKkDHV0R2PGuTmTAlfC5TDYz0SDezVeDZvDhgAAAAAACum6JcAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6wA7Mol5sOggAAAAAAAAAAAAAAAAAAAAAABXb3JtaG9sZVJlbGF5ZXIBAAAAKwAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkR" ]; async function run() { From e9180319b338d17339d90e19f2424afc2cd58884 Mon Sep 17 00:00:00 2001 From: solanoe Date: Fri, 30 Aug 2024 15:20:55 -0300 Subject: [PATCH 155/174] adds initialize delivery provider configuration --- .../initializeDeliveryProvider.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json new file mode 100644 index 0000000000..a190a1594e --- /dev/null +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json @@ -0,0 +1,122 @@ +{ + "addresses": [ + { + "chainId": 43, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + } + ], + "pricingInfo": [ + { + "chainId": 2, + "deliverGasOverhead": "350000", + "updatePriceGas": "20000000000", + "updatePriceNative": "2600000000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 4, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 5, + "deliverGasOverhead": "350000", + "updatePriceGas": "7322000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 6, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10, + "deliverGasOverhead": "350000", + "updatePriceGas": "3000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 13, + "deliverGasOverhead": "350000", + "updatePriceGas": "3000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 14, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 16, + "deliverGasOverhead": "350000", + "updatePriceGas": "10000000000", + "updatePriceNative": "100000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 23, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 24, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 30, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 34, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 35, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 36, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 37, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + }, + { + "chainId": 43, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" + } + ] +} From a7e6b192fa4b39830ab22844806fc638ccf0b73a Mon Sep 17 00:00:00 2001 From: hernandp Date: Fri, 25 Oct 2024 09:57:11 -0300 Subject: [PATCH 156/174] chains.json: removed obsolete chains, added Monad --- .../relayer/config/testnet/chains.json | 35 ++++--------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 6b0ecfa347..7a6d2bc0ba 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -3,13 +3,6 @@ "description": "This file contains the chains against which all the scripts should run.", "useLastRun": true, "chains": [ - { - "description": "Ethereum Goerli", - "evmNetworkId": 5, - "chainId": 2, - "rpc": "https://ethereum-goerli.publicnode.com", - "wormholeAddress": "0x706abc4E45D419950511e474C7B9Ed348A4a716c" - }, { "description": "BSC Testnet", "evmNetworkId": 97, @@ -17,13 +10,6 @@ "rpc": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", "wormholeAddress": "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D" }, - { - "description": "Mumbai", - "evmNetworkId": 80001, - "chainId": 5, - "rpc": "https://rpc.ankr.com/polygon_mumbai", - "wormholeAddress": "0x0CBE91CF822c73C2315FB05100C2F714765d5c20" - }, { "description": "Avalanche testnet fuji", "evmNetworkId": 43113, @@ -52,20 +38,6 @@ "rpc": "https://rpc.testnet.moonbeam.network", "wormholeAddress": "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901" }, - { - "description": "Arbitrum Goerli", - "evmNetworkId": 421613, - "chainId": 23, - "rpc": "https://arbitrum-goerli.publicnode.com", - "wormholeAddress": "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e" - }, - { - "description": "Optimism Goerli", - "evmNetworkId": 420, - "chainId": 24, - "rpc": "https://goerli.optimism.io", - "wormholeAddress": "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35" - }, { "description": "Base Testnet", "evmNetworkId": 84531, @@ -100,6 +72,13 @@ "chainId": 10005, "rpc": "https://sepolia.optimism.io", "wormholeAddress": "0x31377888146f3253211EFEf5c676D41ECe7D58Fe" + }, + { + "description": "Monad Devnet", + "evmNetworkId": 41454, + "chainId": 10008, + "rpc": "!!! https://no_public_rpc_key_override_with_private", + "wormholeAddress": "0x376428e7f26D5867e69201b275553C45B09EE090" } ] } From 87258a5f09b559d8db6b017f0f13906122c0b83f Mon Sep 17 00:00:00 2001 From: hernandp Date: Mon, 28 Oct 2024 14:51:45 -0300 Subject: [PATCH 157/174] Updated contract data and fixups for successful Monad deployments. --- .../relayer/config/testnet/chains.json | 11 +- .../relayer/config/testnet/contracts.json | 110 +++--- .../configureDeliveryProvider.json | 334 ++++++++++++++---- .../initializeDeliveryProvider.json | 11 + .../ts-scripts/relayer/helpers/deployments.ts | 14 +- .../relayer/shell/verifyCreate2Factory.sh | 10 + .../relayer/shell/verifyDeliveryProvider.sh | 13 + .../relayer/shell/verifyWormholeRelayer.sh | 10 + 8 files changed, 381 insertions(+), 132 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 7a6d2bc0ba..232705e356 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -7,7 +7,7 @@ "description": "BSC Testnet", "evmNetworkId": 97, "chainId": 4, - "rpc": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", + "rpc": "https://bsc-testnet.blockpi.network/v1/rpc/public", "wormholeAddress": "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D" }, { @@ -38,13 +38,6 @@ "rpc": "https://rpc.testnet.moonbeam.network", "wormholeAddress": "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901" }, - { - "description": "Base Testnet", - "evmNetworkId": 84531, - "chainId": 30, - "rpc": "https://goerli.base.org", - "wormholeAddress": "0x23908A62110e21C04F3A4e011d24F901F911744A" - }, { "description": "Ethereum Sepolia", "evmNetworkId": 11155111, @@ -77,7 +70,7 @@ "description": "Monad Devnet", "evmNetworkId": 41454, "chainId": 10008, - "rpc": "!!! https://no_public_rpc_key_override_with_private", + "rpc": "https://devnet1.monad.xyz/rpc/8XQAiNSsPCrIdVttyeFLC6StgvRNTdf", "wormholeAddress": "0x376428e7f26D5867e69201b275553C45B09EE090" } ] diff --git a/ethereum/ts-scripts/relayer/config/testnet/contracts.json b/ethereum/ts-scripts/relayer/config/testnet/contracts.json index dd6e10b38f..78f6141fd9 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/testnet/contracts.json @@ -57,6 +57,10 @@ { "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", "chainId": 10005 + }, + { + "address": "0x01796ad8B928df313A6Da96D101D941bCcC6f787", + "chainId": 10008 } ], "wormholeRelayers": [ @@ -115,79 +119,79 @@ { "address": "0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE", "chainId": 10005 + }, + { + "address": "0x362fca37E45fe1096b42021b543f462D49a5C8df", + "chainId": 10008 } ], "wormholeRelayerImplementations": [ { - "address":"0x501dfADfF70dfdB72fE41cbD242613716600bafF", - "chainId":2 + "address": "0x501dfADfF70dfdB72fE41cbD242613716600bafF", + "chainId": 2 }, { - "address":"0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", - "chainId":4 + "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId": 4 }, { - "address":"0x9a1aA99018C7Cb689e41066ACbD7CFB2b27EF5E3", - "chainId":5 + "address": "0x9a1aA99018C7Cb689e41066ACbD7CFB2b27EF5E3", + "chainId": 5 }, { - "address":"0xcb32823B33e5c099609788a50B8768eDf922bB1c", - "chainId":6 + "address": "0xcb32823B33e5c099609788a50B8768eDf922bB1c", + "chainId": 6 }, { - "address":"0x5364FA2a8ebcd0CAD0E12dfd25246365FB94874A", - "chainId":10 + "address": "0x5364FA2a8ebcd0CAD0E12dfd25246365FB94874A", + "chainId": 10 }, { - "address":"0xd9C241330eC2E2bdf3a862B40eEF473b80b30723", - "chainId":14 + "address": "0xd9C241330eC2E2bdf3a862B40eEF473b80b30723", + "chainId": 14 }, { - "address":"0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", - "chainId":16 + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId": 16 }, { - "address":"0x41B9fE6b7B77349a3AD2Ee83e7EF55951C35ea88", - "chainId":23 + "address": "0x41B9fE6b7B77349a3AD2Ee83e7EF55951C35ea88", + "chainId": 23 }, { - "address":"0x1e507e74Cc89d7D1a573524B9Cd8ceDe82eb8d85", - "chainId":24 + "address": "0x1e507e74Cc89d7D1a573524B9Cd8ceDe82eb8d85", + "chainId": 24 + }, + { + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId": 30 }, { - "address":"0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", - "chainId":30 + "address": "0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", + "chainId": 10002 }, { - "address":"0xDbbAcbDA8685353ED4DDf7945B4Ea920d9119A90", - "chainId":10002 + "address": "0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId": 10003 }, { - "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", - "chainId":10003 + "address": "0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId": 10004 }, { - "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", - "chainId":10004 + "address": "0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", + "chainId": 10005 }, { - "address":"0x1EfA946b0Ac2e3357a38124Fd1bAa7139048d689", - "chainId":10005 + "address": "0xc1340aFB29aa7bCb654C0d3d433d43d28d762f81", + "chainId": 10008 } ], "mockIntegrations": [ - { - "address": "0xb81bc199b73AB34c393a4192C163252116a03370", - "chainId": 2 - }, { "address": "0xb6A04D6672F005787147472Be20d39741929Aa03", "chainId": 4 }, - { - "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56", - "chainId": 5 - }, { "address": "0x5E52f3eB0774E5e5f37760BD3Fca64951D8F74Ae", "chainId": 6 @@ -204,18 +208,6 @@ "address": "0x3bF0c43d88541BBCF92bE508ec41e540FbF28C56", "chainId": 16 }, - { - "address": "0x0de48f34E14d08934DA1eA2286Be1b2BED5c062a", - "chainId": 23 - }, - { - "address": "0x421e0bb71dDeeC727Af79766423d33D8FD7dB963", - "chainId": 24 - }, - { - "address": "0x9Ee656203B0DC40cc1bA3f4738527779220e3998", - "chainId": 30 - }, { "address": "0x68b7Cd0d27a6F04b2F65e11DD06182EFb255c9f0", "chainId": 10002 @@ -231,6 +223,10 @@ { "address": "0xA404B69582bac287a7455FFf315938CCd92099c1", "chainId": 10005 + }, + { + "address": "0x27C472d1DB89aFd6F41A61EEc0F4db996800f8cD", + "chainId": 10008 } ], "create2Factories": [ @@ -289,6 +285,22 @@ { "address": "0xe9918f582a972613ac5700d2346a97b8ebad48a2", "chainId": 10005 + }, + { + "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", + "chainId": 10008 + } + ], + "deliveryProviderImplementations": [ + { + "address": "0x4BD5B6F2d001D1547801F49270f2Df96Ab362b3C", + "chainId": 10008 + } + ], + "deliveryProviderSetups": [ + { + "address": "0xEcF494351C8ACd8fF0Bb7751337BF52e40cD6f86", + "chainId": 10008 } ] -} +} \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index 4052b6d412..a62c6da0fa 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -1,9 +1,143 @@ { - "addresses": [ + "pricingInfo": [ { - "chainId": 2, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "chainId": 4, + "updatePriceGas": "30000000000", + "updatePriceNative": "100000" + }, + { + "chainId": 6, + "updatePriceGas": "30000000000", + "updatePriceNative": "100000" + }, + { + "chainId": 10, + "updatePriceGas": "3000000000", + "updatePriceNative": "200000" + }, + { + "chainId": 14, + "updatePriceGas": "30000000000", + "updatePriceNative": "100000" + }, + { + "chainId": 16, + "updatePriceGas": "10000000000", + "updatePriceNative": "100000" + }, + { + "chainId": 10002, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" + }, + { + "chainId": 10003, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" + }, + { + "chainId": 10004, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" + }, + { + "chainId": 10005, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" + }, + { + "chainId": 10008, + "updatePriceGas": "30000000000", + "updatePriceNative": "200000" + } + ], + "deliveryGasOverheads": [ + { + "chainId": 4, + "updateGasOverhead": "350000" + }, + { + "chainId": 6, + "updateGasOverhead": "350000" + }, + { + "chainId": 10, + "updateGasOverhead": "350000" + }, + { + "chainId": 14, + "updateGasOverhead": "350000" + }, + { + "chainId": 16, + "updateGasOverhead": "350000" + }, + { + "chainId": 10002, + "updateGasOverhead": "350000" + }, + { + "chainId": 10003, + "updateGasOverhead": "350000" + }, + { + "chainId": 10004, + "updateGasOverhead": "350000" + }, + { + "chainId": 10005, + "updateGasOverhead": "350000" + }, + { + "chainId": 10008, + "updateGasOverhead": "350000" + } + ], + "maximumBudgets": [ + { + "chainId": 4, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 6, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 10, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 14, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 16, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 10002, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 10003, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 10004, + "updateMaximumBudget": "10000000000000000" + }, + { + "chainId": 10005, + "updateMaximumBudget": "10000000000000000" }, + { + "chainId": 10008, + "updateMaximumBudget": "10000000000000000" + } + ], + "conversionBuffers": [ + ], + "rewardAddresses": [ { "chainId": 4, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" @@ -29,132 +163,196 @@ "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 23, + "chainId": 10002, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 24, + "chainId": 10003, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 30, + "chainId": 10004, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 10002, + "chainId": 10005, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" }, { - "chainId": 10003, + "chainId": 10008, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + } + ], + "supportedChains": [ + { + "chainId": 2, + "isSupported": false + }, + { + "chainId": 4, + "isSupported": true + }, + { + "chainId": 5, + "isSupported": false + }, + { + "chainId": 6, + "isSupported": true + }, + { + "chainId": 10, + "isSupported": true + }, + { + "chainId": 13, + "isSupported": false + }, + { + "chainId": 14, + "isSupported": true + }, + { + "chainId": 16, + "isSupported": true + }, + { + "chainId": 23, + "isSupported": false + }, + { + "chainId": 24, + "isSupported": false + }, + { + "chainId": 30, + "isSupported": false + }, + { + "chainId": 34, + "isSupported": true + }, + { + "chainId": 35, + "isSupported": true + }, + { + "chainId": 36, + "isSupported": true + }, + { + "chainId": 37, + "isSupported": true + }, + { + "chainId": 43, + "isSupported": true + }, + { + "chainId": 10002, + "isSupported": true + }, + { + "chainId": 10003, + "isSupported": true }, { "chainId": 10004, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "isSupported": true }, { "chainId": 10005, - "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + "isSupported": true + }, + { + "chainId": 10008, + "isSupported": true } ], - "pricingInfo": [ + "supportedKeysByChain": [ { "chainId": 2, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] }, { "chainId": 4, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] }, { "chainId": 5, - "deliverGasOverhead": "350000", - "updatePriceGas": "7322000000", - "updatePriceNative": "100000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] }, { "chainId": 6, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 10, - "deliverGasOverhead": "350000", - "updatePriceGas": "3000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] + }, + { + "chainId": 13, + "supportedKeys": ["vaa"] }, { "chainId": 14, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] }, { "chainId": 16, - "deliverGasOverhead": "350000", - "updatePriceGas": "10000000000", - "updatePriceNative": "100000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa"] }, { "chainId": 23, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 24, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 30, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 34, + "supportedKeys": ["vaa"] + }, + { + "chainId": 35, + "supportedKeys": ["vaa"] + }, + { + "chainId": 36, + "supportedKeys": ["vaa"] + }, + { + "chainId": 37, + "supportedKeys": ["vaa"] + }, + { + "chainId": 43, + "supportedKeys": ["vaa"] }, { "chainId": 10002, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 10003, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 10004, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] }, { "chainId": 10005, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "10000000000000000" + "supportedKeys": ["vaa", "cctp"] + }, + { + "chainId": 10008, + "supportedKeys": ["vaa"] } ] -} \ No newline at end of file +} diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json index f813d9c80a..9c31d988b8 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/initializeDeliveryProvider.json @@ -55,6 +55,10 @@ { "chainId": 10005, "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" + }, + { + "chainId": 10008, + "rewardAddress": "0x734D539a7efEE15714a2755caa4280e12EF3d7e4" } ], "pricingInfo": [ @@ -155,6 +159,13 @@ "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" + }, + { + "chainId": 10008, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" } ] } diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index fcc9178843..fe9b51db05 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -125,7 +125,7 @@ export async function deployCreate2Factory( let factory = new Create2Factory__factory(); - const ethChain = getChain(2); + const ethChain = getChain(chain.chainId); const ethChainProvider = getProvider(ethChain); const ethNetwork = await ethChainProvider.getNetwork(); if (ethNetwork.chainId === 1) { @@ -304,11 +304,13 @@ export async function buildOverrides( // If this is Polygon or Fantom, use the legacy tx envelope to avoid bad gas price feeds. if (chain.chainId === 5 || chain.chainId === 10) { overrides.type = 0; - } else if (chain.chainId === 4) { - // This is normally autodetected in bsc but we want to set the gas price to a fixed value. - // We need to ensure we are using the correct tx envelope in that case. - overrides.type = 0; - overrides.gasPrice = ethers.utils.parseUnits("1", "gwei"); + } else if (chain.chainId === 4) { + // This is normally autodetected in bsc but we want to set the gas price to a fixed value. + // We need to ensure we are using the correct tx envelope in that case. + overrides.type = 0; + + // Use 5 gwei for testnet (chainId 97), 1 otherwise. + overrides.gasPrice = ethers.utils.parseUnits(chain.evmNetworkId === 97 ? "5" : "1", "gwei"); } else if (chain.chainId === 23) { // Arbitrum gas price feeds are excessive on public endpoints too apparently. overrides.type = 2; diff --git a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh index 634917919f..5e756154b2 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyCreate2Factory.sh @@ -61,6 +61,16 @@ for chain in $chain_ids $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory forge verify-contract --verifier blockscout --verifier-url $mantle_explorer_url --watch \ $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init + else if test $chain -eq 10008 + set monad_devnet_explorer_url "https://brightstar-884.devnet1.monad.xyz/api/" + set monad_devnet_rpc_url "https://brightstar-884.devnet1.monad.xyz/api/eth-rpc" + + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $create2_factory_address contracts/relayer/create2Factory/Create2Factory.sol:Create2Factory + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $init_contract_address contracts/relayer/create2Factory/Create2Factory.sol:Init else if test $chain -eq 37 set xlayer_explorer_url "https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/XLAYER" diff --git a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh index cb70e3f715..93c9a37a8f 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyDeliveryProvider.sh @@ -65,6 +65,19 @@ for chain in $chain_ids echo "- $implementation_address: DeliveryProviderImplementation.compiler-input.json" echo "- $setup_address: DeliveryProviderSetup.compiler-input.json" echo "- $proxy_address: DeliveryProviderProxy.compiler-input.json" + else if test $chain -eq 10008 + set monad_devnet_explorer_url "https://brightstar-884.devnet1.monad.xyz/api/" + set monad_devnet_rpc_url "https://brightstar-884.devnet1.monad.xyz/api/eth-rpc" + + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $implementation_address contracts/relayer/deliveryProvider/DeliveryProviderImplementation.sol:DeliveryProviderImplementation + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $setup_address contracts/relayer/deliveryProvider/DeliveryProviderSetup.sol:DeliveryProviderSetup + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $proxy_address contracts/relayer/deliveryProvider/DeliveryProviderProxy.sol:DeliveryProviderProxy else if test $chain -eq 35 set mantle_explorer_url "https://explorer.mantle.xyz/api?module=contract&action=verify" diff --git a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh index b6a5144611..a09719b9a1 100755 --- a/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh +++ b/ethereum/ts-scripts/relayer/shell/verifyWormholeRelayer.sh @@ -91,6 +91,16 @@ for chain in $chain_ids $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy forge verify-contract --verifier blockscout --verifier-url $snaxchain_explorer_url --watch \ $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer + else if test $chain -eq 10008 + set monad_devnet_explorer_url "https://brightstar-884.devnet1.monad.xyz/api/" + set monad_devnet_rpc_url "https://brightstar-884.devnet1.monad.xyz/api/eth-rpc" + + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy + forge verify-contract --verifier blockscout --verifier-url $monad_devnet_explorer_url --watch \ + --rpc-url $monad_devnet_rpc_url \ + $implementation_address contracts/relayer/wormholeRelayer/WormholeRelayer.sol:WormholeRelayer else forge verify-contract --watch --constructor-args $init_contract_address \ $proxy_address contracts/relayer/create2Factory/Create2Factory.sol:SimpleProxy From f96bc901f86c86913fe8d22b4aabfe570c2ef4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20Di=20Pietro?= Date: Mon, 28 Oct 2024 15:43:35 -0300 Subject: [PATCH 158/174] Update chains.json --- ethereum/ts-scripts/relayer/config/testnet/chains.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/chains.json b/ethereum/ts-scripts/relayer/config/testnet/chains.json index 232705e356..deae4e7fb6 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/testnet/chains.json @@ -70,7 +70,7 @@ "description": "Monad Devnet", "evmNetworkId": 41454, "chainId": 10008, - "rpc": "https://devnet1.monad.xyz/rpc/8XQAiNSsPCrIdVttyeFLC6StgvRNTdf", + "rpc": "https://devnet1.monad.xyz/rpc/your_api_key", "wormholeAddress": "0x376428e7f26D5867e69201b275553C45B09EE090" } ] From 47bca105739eaf03f26050efb905a90c67efc881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Tue, 29 Oct 2024 11:34:36 -0300 Subject: [PATCH 159/174] evm: increases maximum budget for SR testnet --- .../configureDeliveryProvider.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json index a62c6da0fa..e5ccbf2228 100644 --- a/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/testnet/scriptConfigs/configureDeliveryProvider.json @@ -96,43 +96,43 @@ "maximumBudgets": [ { "chainId": 4, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 6, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 14, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 16, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10002, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10003, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10004, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10005, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" }, { "chainId": 10008, - "updateMaximumBudget": "10000000000000000" + "updateMaximumBudget": "2000000000000000000" } ], "conversionBuffers": [ From 0bf616083a3726c7838d495cccd1ba300eeef10a Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 01:13:52 -0300 Subject: [PATCH 160/174] Script migration to new SDK WIP --- ethereum/package-lock.json | 7825 +++++++++-------- ethereum/package.json | 5 +- .../relayer/config/checkNetworks.ts | 4 +- .../configureDeliveryProvider.ts | 6 +- ...configureDeliveryProviderPriceAssistant.ts | 2 +- .../initializeDeliveryProvider.ts | 7 +- .../ts-scripts/relayer/helpers/deployments.ts | 9 +- ethereum/ts-scripts/relayer/helpers/env.ts | 2 +- ethereum/ts-scripts/relayer/helpers/utils.ts | 5 + ethereum/ts-scripts/relayer/helpers/vaa.ts | 11 +- .../mockIntegration/deployMockIntegration.ts | 4 +- .../relayer/mockIntegration/messageUtils.ts | 16 +- .../registerMockIntegration.ts | 5 +- .../registerChainsWormholeRelayerSelfSign.ts | 6 +- ...mitWormholeRelayerImplementationUpgrade.ts | 3 +- 15 files changed, 4045 insertions(+), 3865 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index fb98b8c3f0..d47709bdd1 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -9,8 +9,11 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", + "@wormhole-foundation/sdk": "^1.0.3", + "@wormhole-foundation/sdk-base": "^1.0.3", + "@wormhole-foundation/sdk-definitions": "^1.0.3", + "@wormhole-foundation/sdk-evm": "^1.0.3", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", @@ -37,19 +40,55 @@ "typescript": "^5.4.5" } }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz", + "integrity": "sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.16", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", + "license": "MIT", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "license": "MIT" + }, "node_modules/@apollo/client": { - "version": "3.8.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz", - "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==", - "optional": true, + "version": "3.11.10", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.11.10.tgz", + "integrity": "sha512-IfGc+X4il0rDqVQBBWdxIKM+ciDCiDzBq9+Bg9z4tJMi87uF6po4v+ddiac1wP0ARgVPsFwEIGxK7jhN4pW8jg==", + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", "optimism": "^0.18.0", "prop-types": "^15.7.2", + "rehackt": "^0.1.0", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", "ts-invariant": "^0.10.3", @@ -57,10 +96,10 @@ "zen-observable-ts": "^1.2.5" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql": "^15.0.0 || ^16.0.0", "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "peerDependenciesMeta": { @@ -82,16 +121,16 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "optional": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/@apollo/client/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/@apollo/protobufjs": { "version": "1.2.7", @@ -270,6 +309,261 @@ "xss": "^1.0.8" } }, + "node_modules/@aptos-labs/aptos-client": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aptos-labs/aptos-client/-/aptos-client-0.1.1.tgz", + "integrity": "sha512-kJsoy4fAPTOhzVr7Vwq8s/AUg6BQiJDa7WOqRzev4zsuIS3+JCuIZ6vUd7UBsjnxtmguJJulMRs9qWCzVBt2XA==", + "license": "Apache-2.0", + "dependencies": { + "axios": "1.7.4", + "got": "^11.8.6" + }, + "engines": { + "node": ">=15.10.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/axios": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/@aptos-labs/aptos-client/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -1020,11 +1314,12 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -1066,169 +1361,148 @@ "to-fast-properties": "^2.0.0" } }, - "node_modules/@certusone/wormhole-sdk": { - "version": "0.10.15", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.15.tgz", - "integrity": "sha512-XECfrvdYjsGPZWyR1bqWCPOiRw7+6upszpSvAXjKIqEnTNXOCYRkt5ae8TVh5oZxPjpts2X3t4Oi9WGcEssHpQ==", - "dependencies": { - "@certusone/wormhole-sdk-proto-web": "0.0.7", - "@certusone/wormhole-sdk-wasm": "^0.0.1", - "@coral-xyz/borsh": "0.2.6", - "@mysten/sui.js": "0.32.2", - "@project-serum/anchor": "^0.25.0", - "@solana/spl-token": "^0.3.5", - "@solana/web3.js": "^1.66.2", - "@terra-money/terra.js": "3.1.9", - "@xpla/xpla.js": "^0.2.1", - "algosdk": "^2.4.0", - "aptos": "1.5.0", - "axios": "^0.24.0", - "bech32": "^2.0.0", - "binary-parser": "^2.2.1", - "bs58": "^4.0.1", - "elliptic": "^6.5.4", - "js-base64": "^3.6.1", - "near-api-js": "^1.0.0" - }, - "optionalDependencies": { - "@injectivelabs/networks": "1.10.12", - "@injectivelabs/sdk-ts": "1.10.72", - "@injectivelabs/utils": "1.10.12" + "node_modules/@chainsafe/truffle-plugin-abigen": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@chainsafe/truffle-plugin-abigen/-/truffle-plugin-abigen-0.0.1.tgz", + "integrity": "sha512-/8wPXE2HCEdngSQCXJdjMtzpPVjjG9RGR+GwOZf4ve0o2LpOc2gPzxYvd67g6IOkI6pJwfAHoFb3L+qtc9G5pQ==", + "dev": true, + "dependencies": { + "cli-logger": "^0.5.40", + "eslint": "^6.8.0" } }, - "node_modules/@certusone/wormhole-sdk-proto-web": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz", - "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==", + "node_modules/@confio/ics23": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", + "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", + "license": "Apache-2.0", "dependencies": { - "@improbable-eng/grpc-web": "^0.15.0", - "protobufjs": "^7.0.0", - "rxjs": "^7.5.6" + "@noble/hashes": "^1.0.0", + "protobufjs": "^6.8.8" } }, - "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "hasInstallScript": true, + "node_modules/@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" + "node": ">=11" } }, - "node_modules/@certusone/wormhole-sdk-proto-web/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@coral-xyz/anchor/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, - "node_modules/@certusone/wormhole-sdk-wasm": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz", - "integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==", + "node_modules/@coral-xyz/anchor/node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "license": "MIT", "dependencies": { - "@types/long": "^4.0.2", - "@types/node": "^18.0.3" + "node-fetch": "^2.6.12" } }, - "node_modules/@certusone/wormhole-sdk/node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "node_modules/@coral-xyz/anchor/node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.4" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/@certusone/wormhole-sdk/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } + "node_modules/@coral-xyz/anchor/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, - "node_modules/@chainsafe/truffle-plugin-abigen": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@chainsafe/truffle-plugin-abigen/-/truffle-plugin-abigen-0.0.1.tgz", - "integrity": "sha512-/8wPXE2HCEdngSQCXJdjMtzpPVjjG9RGR+GwOZf4ve0o2LpOc2gPzxYvd67g6IOkI6pJwfAHoFb3L+qtc9G5pQ==", - "dev": true, + "node_modules/@coral-xyz/anchor/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", "dependencies": { - "cli-logger": "^0.5.40", - "eslint": "^6.8.0" + "tslib": "^2.0.3" } }, - "node_modules/@classic-terra/terra.proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@classic-terra/terra.proto/-/terra.proto-1.1.0.tgz", - "integrity": "sha512-bYhQG5LUaGF0KPRY9hYT/HEcd1QExZPQd6zLV/rQkCe/eDxfwFRLzZHpaaAdfWoAAZjsRWqJbUCqCg7gXBbJpw==", + "node_modules/@coral-xyz/anchor/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", "dependencies": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/@classic-terra/terra.proto/node_modules/@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", + "node_modules/@coral-xyz/anchor/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { - "browser-headers": "^0.4.1" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "google-protobuf": "^3.14.0" + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/@confio/ics23": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", - "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", - "optional": true, + "node_modules/@coral-xyz/anchor/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/@coral-xyz/anchor/node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", "dependencies": { - "@noble/hashes": "^1.0.0", - "protobufjs": "^6.8.8" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, + "node_modules/@coral-xyz/anchor/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@coral-xyz/borsh": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.2.6.tgz", - "integrity": "sha512-y6nmHw1bFcJib7sMHsQPpC8r47xhqDZVvhUdna7NUPzpSbOZG6f46N21+aXsQ2w/tG8Ggls488J/ZmwbgVmyjg==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "license": "Apache-2.0", "dependencies": { "bn.js": "^5.1.2", "buffer-layout": "^1.2.0" @@ -1237,79 +1511,98 @@ "node": ">=10" }, "peerDependencies": { - "@solana/web3.js": "^1.2.0" + "@solana/web3.js": "^1.68.0" } }, "node_modules/@coral-xyz/borsh/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, "node_modules/@cosmjs/amino": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz", - "integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", + "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", + "license": "Apache-2.0", "dependencies": { - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1" + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4" } }, + "node_modules/@cosmjs/cosmwasm-stargate": { + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz", + "integrity": "sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@cosmjs/cosmwasm-stargate/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/@cosmjs/crypto": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz", - "integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.4.tgz", + "integrity": "sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==", + "license": "Apache-2.0", "dependencies": { - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", - "libsodium-wrappers": "^0.7.6" + "libsodium-wrappers-sumo": "^0.7.11" } }, "node_modules/@cosmjs/crypto/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "license": "MIT" }, "node_modules/@cosmjs/encoding": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz", - "integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.4.tgz", + "integrity": "sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==", + "license": "Apache-2.0", "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", "readonly-date": "^1.0.0" } }, - "node_modules/@cosmjs/encoding/node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "optional": true - }, "node_modules/@cosmjs/json-rpc": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz", - "integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz", + "integrity": "sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==", + "license": "Apache-2.0", "dependencies": { - "@cosmjs/stream": "^0.30.1", + "@cosmjs/stream": "^0.32.4", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/math": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz", - "integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.4.tgz", + "integrity": "sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==", + "license": "Apache-2.0", "dependencies": { "bn.js": "^5.2.0" } @@ -1318,40 +1611,39 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "license": "MIT" }, "node_modules/@cosmjs/proto-signing": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz", - "integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", + "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", + "license": "Apache-2.0", "dependencies": { - "@cosmjs/amino": "^0.30.1", - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "cosmjs-types": "^0.7.1", - "long": "^4.0.0" + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0" } }, "node_modules/@cosmjs/socket": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz", - "integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.4.tgz", + "integrity": "sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==", + "license": "Apache-2.0", "dependencies": { - "@cosmjs/stream": "^0.30.1", + "@cosmjs/stream": "^0.32.4", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/socket/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "optional": true, + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -1369,98 +1661,72 @@ } }, "node_modules/@cosmjs/stargate": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz", - "integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.4.tgz", + "integrity": "sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==", + "license": "Apache-2.0", "dependencies": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/proto-signing": "^0.30.1", - "@cosmjs/stream": "^0.30.1", - "@cosmjs/tendermint-rpc": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "cosmjs-types": "^0.7.1", - "long": "^4.0.0", - "protobufjs": "~6.11.3", + "@cosmjs/amino": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0", "xstream": "^11.14.0" } }, - "node_modules/@cosmjs/stargate/node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, "node_modules/@cosmjs/stream": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz", - "integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.4.tgz", + "integrity": "sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==", + "license": "Apache-2.0", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz", - "integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==", - "optional": true, - "dependencies": { - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/json-rpc": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/socket": "^0.30.1", - "@cosmjs/stream": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "axios": "^0.21.2", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz", + "integrity": "sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/json-rpc": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/socket": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "axios": "^1.6.0", "readonly-date": "^1.0.0", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/@cosmjs/tendermint-rpc/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "optional": true, + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -1470,11 +1736,25 @@ } } }, + "node_modules/@cosmjs/tendermint-rpc/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@cosmjs/utils": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz", - "integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==", - "optional": true + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.4.tgz", + "integrity": "sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==", + "license": "Apache-2.0" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.11", @@ -1848,7 +2128,7 @@ "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "devOptional": true, + "dev": true, "dependencies": { "crc-32": "^1.2.0", "ethereumjs-util": "^7.1.5" @@ -1858,7 +2138,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "devOptional": true, + "dev": true, "dependencies": { "@types/node": "*" } @@ -1867,13 +2147,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "devOptional": true + "dev": true }, "node_modules/@ethereumjs/common/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "devOptional": true, + "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -1889,7 +2169,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "devOptional": true, + "dev": true, "dependencies": { "@ethereumjs/common": "^2.6.4", "ethereumjs-util": "^7.1.5" @@ -1899,7 +2179,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "devOptional": true, + "dev": true, "dependencies": { "@types/node": "*" } @@ -1908,13 +2188,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "devOptional": true + "dev": true }, "node_modules/@ethereumjs/tx/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "devOptional": true, + "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -2257,12 +2537,6 @@ "ws": "7.4.6" } }, - "node_modules/@ethersproject/providers/node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "peer": true - }, "node_modules/@ethersproject/providers/node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -2734,6 +3008,45 @@ "integrity": "sha512-XcdMT5PSZHiuf7LJIhzKIe+RyYa25S3LHRRvLnZc6iFjwXkrSDJ8J/HWO6VT8d2ZTbawp3VcLEjRF/VN8glCrA==", "dev": true }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", + "license": "MIT", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, "node_modules/@graphql-tools/batch-execute": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", @@ -2927,7 +3240,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "optional": true, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } @@ -2966,22 +3278,11 @@ "node": ">=6" } }, - "node_modules/@improbable-eng/grpc-web": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz", - "integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==", - "dependencies": { - "browser-headers": "^0.4.1" - }, - "peerDependencies": { - "google-protobuf": "^3.14.0" - } - }, "node_modules/@injectivelabs/core-proto-ts": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.14.tgz", - "integrity": "sha512-NZWlgBzgVrXow9IknFQHvcYKX4QkUD25taRigoNYQK8PDn4+VXd9xM5WFUDRhzm2smTCguyl/+MghpEp4oTPWw==", - "optional": true, + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-1.13.3.tgz", + "integrity": "sha512-G7gr9pJM/bDDtmW8fuXlUQZ+pNjFsypxM8gpd6bA7BbbBnZArdC8NlZvqfHgKYcaI27/CwIix2jlnz0okstjMg==", + "license": "MIT", "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -2993,14 +3294,14 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "license": "Apache-2.0" }, "node_modules/@injectivelabs/core-proto-ts/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "hasInstallScript": true, - "optional": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3023,28 +3324,26 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@injectivelabs/core-proto-ts/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/@injectivelabs/exceptions": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.5.tgz", - "integrity": "sha512-WQ+hxpKz4g4+ZXNTXLFKpf9D9uosleZLqC++2+wK81IQ/lcwi5GrTLYdasOhJeu3c+LKWxHQRHJfSsvt8TQWbA==", - "hasInstallScript": true, - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.19.tgz", + "integrity": "sha512-QwU6Q6jLWjQ11pUFcEczvmQodDXtOBVQr4Q19k+6M4Te5AfF6qRkwaQxUZWpTelRHwrL6zHj8OBbePso7TKhaQ==", + "license": "Apache-2.0", "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.19", "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, @@ -3052,7 +3351,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web/-/grpc-web-0.0.1.tgz", "integrity": "sha512-Pu5YgaZp+OvR5UWfqbrPdHer3+gDf+b5fQoY+t2VZx1IAVHX8bzbN9EreYTvTYtFeDpYRWM8P7app2u4EX5wTw==", - "optional": true, + "license": "Apache-2.0", "dependencies": { "browser-headers": "^0.4.1" }, @@ -3064,7 +3363,7 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-node-http-transport/-/grpc-web-node-http-transport-0.0.2.tgz", "integrity": "sha512-rpyhXLiGY/UMs6v6YmgWHJHiO9l0AgDyVNv+jcutNVt4tQrmNvnpvz2wCAGOFtq5LuX/E9ChtTVpk3gWGqXcGA==", - "optional": true, + "license": "Apache-2.0", "peerDependencies": { "@injectivelabs/grpc-web": ">=0.0.1" } @@ -3073,16 +3372,16 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-react-native-transport/-/grpc-web-react-native-transport-0.0.2.tgz", "integrity": "sha512-mk+aukQXnYNgPsPnu3KBi+FD0ZHQpazIlaBZ2jNZG7QAVmxTWtv3R66Zoq99Wx2dnE946NsZBYAoa0K5oSjnow==", - "optional": true, + "license": "Apache-2.0", "peerDependencies": { "@injectivelabs/grpc-web": ">=0.0.1" } }, "node_modules/@injectivelabs/indexer-proto-ts": { - "version": "1.10.8-rc.4", - "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.10.8-rc.4.tgz", - "integrity": "sha512-IwbepTfsHHAv3Z36As6yH/+HIplOEpUu6SFHBCVgdSIaQ8GuvTib4HETiVnV4mjYqoyVgWs+zLSAfih46rdMJQ==", - "optional": true, + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.13.1.tgz", + "integrity": "sha512-w5C2qREyNZyc7bvGUvxzl5JetUkChFDTzZqW55qox+Iy6jiCkNILPTiArlHMlv/i04ymJ3B70Ftsr1j7V4lZrA==", + "license": "MIT", "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -3094,14 +3393,14 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "license": "Apache-2.0" }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "hasInstallScript": true, - "optional": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3124,22 +3423,22 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@injectivelabs/indexer-proto-ts/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/@injectivelabs/mito-proto-ts": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.9.tgz", - "integrity": "sha512-+TZMvJ4SHwcn6SFPdqaiQFZdNhjH7hyRFozY15nOTC2utdGij9jEsjz1NsyOejfYDA0s1z5Wm1SgrMYKaVpAmQ==", - "optional": true, + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.13.0.tgz", + "integrity": "sha512-DE9iK7PkEnkWAMTDJDH01R8jxkxVCNuurfVp/09Te9wY3dm3mRx9M6R756JywP2Sd/ggJl2UbavGAQe2pZ7v1w==", + "license": "MIT", "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -3151,14 +3450,14 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "license": "Apache-2.0" }, "node_modules/@injectivelabs/mito-proto-ts/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "hasInstallScript": true, - "optional": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -3181,106 +3480,183 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@injectivelabs/mito-proto-ts/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/@injectivelabs/networks": { - "version": "1.10.12", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.12.tgz", - "integrity": "sha512-tTHyLls1Nik5QTs/S03qqG2y/ITvNwI8CJOQbMmmsr1CL2CdjJBtzRYn9Dyx2p8XgzRFf9hmlybpe20tq9O3SA==", - "hasInstallScript": true, - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.19.tgz", + "integrity": "sha512-U6rdOTZSnZlvMF1iJCgL1QQ77tyZhNZ83e0+pdS1v51KW/i2Q4+1gnaNoUYySoVpgeIbJRN1FItAHfK5wLM2EA==", + "license": "Apache-2.0", "dependencies": { - "@injectivelabs/exceptions": "^1.10.12", - "@injectivelabs/ts-types": "^1.10.12", - "@injectivelabs/utils": "^1.10.12", - "link-module-alias": "^1.2.0", + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", "shx": "^0.3.2" } }, - "node_modules/@injectivelabs/sdk-ts": { - "version": "1.10.72", - "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz", - "integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==", + "node_modules/@injectivelabs/olp-proto-ts": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@injectivelabs/olp-proto-ts/-/olp-proto-ts-1.13.1.tgz", + "integrity": "sha512-dKxse7mZpmvRhm00Wn8Yy93EVEvFD7FPWeWFfxga0Patow3HK0D7k43VV7fE5kX9CDM1bxTatEVQ7WYGq4w0Eg==", + "license": "MIT", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@injectivelabs/olp-proto-ts/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, + "node_modules/@injectivelabs/olp-proto-ts/node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "hasInstallScript": true, - "optional": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@injectivelabs/olp-proto-ts/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", "dependencies": { - "@apollo/client": "^3.5.8", - "@cosmjs/amino": "^0.30.1", - "@cosmjs/proto-signing": "^0.30.1", - "@cosmjs/stargate": "^0.30.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@injectivelabs/olp-proto-ts/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@injectivelabs/sdk-ts": { + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.19.tgz", + "integrity": "sha512-cNmE7nEobZSSxbrnygmSqBASGXmEkk0ftA06qhQTwK/GiYJI6GK5ihRehsSbtatibopqBXB2s3TfsB2cN/IVzQ==", + "license": "Apache-2.0", + "dependencies": { + "@apollo/client": "^3.11.9", + "@cosmjs/amino": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stargate": "^0.32.3", "@ethersproject/bytes": "^5.7.0", - "@injectivelabs/core-proto-ts": "^0.0.14", - "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/core-proto-ts": "1.13.3", + "@injectivelabs/exceptions": "^1.14.19", "@injectivelabs/grpc-web": "^0.0.1", "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", - "@injectivelabs/indexer-proto-ts": "1.10.8-rc.4", - "@injectivelabs/mito-proto-ts": "1.0.9", - "@injectivelabs/networks": "^1.10.12", - "@injectivelabs/test-utils": "^1.10.12", - "@injectivelabs/token-metadata": "^1.10.42", - "@injectivelabs/ts-types": "^1.10.12", - "@injectivelabs/utils": "^1.10.12", + "@injectivelabs/indexer-proto-ts": "1.13.1", + "@injectivelabs/mito-proto-ts": "1.13.0", + "@injectivelabs/networks": "^1.14.19", + "@injectivelabs/olp-proto-ts": "1.13.1", + "@injectivelabs/test-utils": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", "@metamask/eth-sig-util": "^4.0.0", - "axios": "^0.27.2", + "@noble/curves": "^1.4.0", + "axios": "^1.6.4", "bech32": "^2.0.0", "bip39": "^3.0.4", - "cosmjs-types": "^0.7.1", - "eth-crypto": "^2.6.0", + "cosmjs-types": "^0.9.0", "ethereumjs-util": "^7.1.4", - "ethers": "^5.7.2", + "ethers": "^6.5.1", "google-protobuf": "^3.21.0", "graphql": "^16.3.0", "http-status-codes": "^2.2.0", "js-sha3": "^0.8.0", "jscrypto": "^1.0.3", "keccak256": "^1.0.6", - "link-module-alias": "^1.2.0", - "rxjs": "^7.8.0", "secp256k1": "^4.0.3", "shx": "^0.3.2", "snakecase-keys": "^5.4.1" } }, + "node_modules/@injectivelabs/sdk-ts/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@injectivelabs/sdk-ts/node_modules/@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "optional": true, + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@injectivelabs/sdk-ts/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, "node_modules/@injectivelabs/sdk-ts/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "node_modules/@injectivelabs/sdk-ts/node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, "node_modules/@injectivelabs/sdk-ts/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "license": "MIT" }, "node_modules/@injectivelabs/sdk-ts/node_modules/ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "optional": true, + "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -3292,17 +3668,57 @@ "node": ">=10.0.0" } }, + "node_modules/@injectivelabs/sdk-ts/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@injectivelabs/sdk-ts/node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@injectivelabs/sdk-ts/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "optional": true, + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3313,10 +3729,10 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3327,10 +3743,10 @@ } }, "node_modules/@injectivelabs/sdk-ts/node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", - "optional": true, + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -3339,82 +3755,83 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "optional": true - }, - "node_modules/@injectivelabs/sdk-ts/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - } + "license": "MIT" }, - "node_modules/@injectivelabs/sdk-ts/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, + "node_modules/@injectivelabs/sdk-ts/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@injectivelabs/sdk-ts/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@injectivelabs/sdk-ts/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true - }, "node_modules/@injectivelabs/test-utils": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.3.tgz", - "integrity": "sha512-dVe262sACa7YkRr7mfXx58yI/ieuQqm3IMGq7EMweFKI6Kh2gh8FAM2bsDgm1cGewEIhJ9tWh6OM5uNheeVamg==", - "hasInstallScript": true, - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.19.tgz", + "integrity": "sha512-6y0v0FeNGeJJN2sCkOw6BypozaKnf07DtzoomTsev1+6CKMEmO8xryta+aI15Z+2LpQtMaiJi1cqQMEcya6r3Q==", + "license": "Apache-2.0", "dependencies": { - "axios": "^0.21.1", + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/networks": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", + "axios": "^1.6.4", "bignumber.js": "^9.0.1", - "link-module-alias": "^1.2.0", "shx": "^0.3.2", "snakecase-keys": "^5.1.2", "store2": "^2.12.0" } }, "node_modules/@injectivelabs/test-utils/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/@injectivelabs/test-utils/node_modules/bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/@injectivelabs/test-utils/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "optional": true, + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3424,154 +3841,76 @@ } } }, - "node_modules/@injectivelabs/token-metadata": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.5.tgz", - "integrity": "sha512-GiIiNDixfvbfEjzZG7ixtGYmJllFIcA2Xl1LnsK5yawT8Q+/SoSIJig4tE+0CC/AaGHS1GxDKySrIdMse7PZ0w==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/networks": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "@injectivelabs/utils": "^1.14.5", - "@types/lodash.values": "^4.3.6", - "copyfiles": "^2.4.1", - "jsonschema": "^1.4.0", - "link-module-alias": "^1.2.0", - "lodash": "^4.17.21", - "lodash.values": "^4.3.0", - "shx": "^0.3.2" - } - }, - "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/networks": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.5.tgz", - "integrity": "sha512-9GINd/pPBX6Jyc26pmlLC54s7nLlXsBLZ/1fo8a0nvHkrrODRDE4IldP6KsA9OLVomMPk5TyBUgYLGgM3ST9GA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "@injectivelabs/utils": "^1.14.5", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2" - } - }, - "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/utils": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.5.tgz", - "integrity": "sha512-L2ul/7rgop8RLJBhlXjt6Q/A6fXeRZ3hhCZFXGXmA63vz9RSqOFHILiRp6hAFsuZbiITjmVx0eubFPaQU0MymA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "axios": "^0.21.1", - "bignumber.js": "^9.0.1", - "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2", - "snakecase-keys": "^5.1.2", - "store2": "^2.12.0" - } - }, - "node_modules/@injectivelabs/token-metadata/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "node_modules/@injectivelabs/test-utils/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@injectivelabs/token-metadata/node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/@injectivelabs/token-metadata/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "optional": true, - "engines": { - "node": ">=4.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">= 6" } }, "node_modules/@injectivelabs/ts-types": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.5.tgz", - "integrity": "sha512-dwmEJE90vMr1zkQhz5lX2280sBMe2GvAj98vOHoL2RLTo0OQkJZrirUHwsTkexJf7sFZIT2PlmLCfix9Ulcp5A==", - "hasInstallScript": true, - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.19.tgz", + "integrity": "sha512-nQVJrHC+yDPK4IaYKWZ/CUZPJ4oeKLUwArObvJhlNGMtsypthDGj1MLctc0otMigdTc64ZEpVcdrT9Q3g5P6wQ==", + "license": "Apache-2.0", "dependencies": { - "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "node_modules/@injectivelabs/utils": { - "version": "1.10.12", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz", - "integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==", - "hasInstallScript": true, - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.19.tgz", + "integrity": "sha512-iiUanV6Y7cUlH5PBoyYpHd4HWDRHlo806DyRZP7IZCpIIvWhyrKRn1JOtzz4j4XDYxH34/99vN3TsK+VUmrQzQ==", + "license": "Apache-2.0", "dependencies": { - "@injectivelabs/exceptions": "^1.10.12", - "@injectivelabs/ts-types": "^1.10.12", - "axios": "^0.21.1", + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "axios": "^1.6.4", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", "shx": "^0.3.2", "snakecase-keys": "^5.1.2", "store2": "^2.12.0" } }, "node_modules/@injectivelabs/utils/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/@injectivelabs/utils/node_modules/bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/@injectivelabs/utils/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "optional": true, + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3581,6 +3920,20 @@ } } }, + "node_modules/@injectivelabs/utils/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@josephg/resolvable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", @@ -3843,7 +4196,7 @@ "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==", - "optional": true, + "license": "ISC", "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -3859,7 +4212,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true + "license": "Unlicense" }, "node_modules/@morgan-stanley/ts-mocking-bird": { "version": "0.6.4", @@ -3897,9 +4250,10 @@ "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, "node_modules/@mysten/bcs": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.7.1.tgz", - "integrity": "sha512-wFPb8bkhwrbiStfZMV5rFM7J+umpke59/dNjDp+UYJKykNlW23LCk2ePyEUvGdb62HGJM1jyOJ8g4egE3OmdKA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "license": "Apache-2.0", "dependencies": { "bs58": "^5.0.0" } @@ -3907,29 +4261,35 @@ "node_modules/@mysten/bcs/node_modules/base-x": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" }, "node_modules/@mysten/bcs/node_modules/bs58": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", "dependencies": { "base-x": "^4.0.0" } }, "node_modules/@mysten/sui.js": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz", - "integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==", - "dependencies": { - "@mysten/bcs": "0.7.1", - "@noble/curves": "^1.0.0", - "@noble/hashes": "^1.3.0", - "@scure/bip32": "^1.3.0", - "@scure/bip39": "^1.2.0", + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "deprecated": "This package has been renamed to @mysten/sui, please update to use the renamed package.", + "license": "Apache-2.0", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", "@suchipi/femver": "^1.0.0", - "jayson": "^4.0.0", - "rpc-websockets": "^7.5.1", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", "superstruct": "^1.0.3", "tweetnacl": "^1.0.3" }, @@ -3937,52 +4297,26 @@ "node": ">=16" } }, - "node_modules/@mysten/sui.js/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@mysten/sui.js/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "node_modules/@mysten/sui.js/node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" }, - "node_modules/@mysten/sui.js/node_modules/jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", - "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.4.5" - }, - "bin": { - "jayson": "bin/jayson.js" - }, + "node_modules/@mysten/sui.js/node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/@mysten/sui.js/node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -3990,80 +4324,36 @@ "node_modules/@mysten/sui.js/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "node_modules/@mysten/sui.js/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@mysten/sui.js/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "license": "MIT", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/ed25519": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", - "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@openzeppelin/cli": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/@openzeppelin/cli/-/cli-2.8.2.tgz", @@ -4338,141 +4628,6 @@ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true }, - "node_modules/@project-serum/anchor": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.25.0.tgz", - "integrity": "sha512-E6A5Y/ijqpfMJ5psJvbw0kVTzLZFUcOFgs6eSM2M2iWE1lVRF18T6hWZVNl6zqZsoz98jgnNHtVGJMs+ds9A7A==", - "dependencies": { - "@project-serum/borsh": "^0.2.5", - "@solana/web3.js": "^1.36.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^5.3.1", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@project-serum/anchor/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/@project-serum/anchor/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@project-serum/anchor/node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/@project-serum/anchor/node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@project-serum/anchor/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/@project-serum/anchor/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@project-serum/anchor/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@project-serum/anchor/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@project-serum/anchor/node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "node_modules/@project-serum/anchor/node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@project-serum/anchor/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@project-serum/borsh": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz", - "integrity": "sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.2.0" - } - }, - "node_modules/@project-serum/borsh/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -4636,52 +4791,41 @@ } }, "node_modules/@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "license": "MIT", "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", - "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "license": "MIT", "dependencies": { - "@noble/hashes": "~1.1.1", - "@scure/base": "~1.1.0" + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", - "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -4695,6 +4839,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", "dependencies": { "buffer": "~6.0.3" }, @@ -4706,6 +4851,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", + "license": "Apache-2.0", "dependencies": { "@solana/buffer-layout": "^4.0.0", "@solana/web3.js": "^1.32.0", @@ -4717,9 +4863,10 @@ } }, "node_modules/@solana/buffer-layout-utils/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "license": "MIT", "engines": { "node": "*" } @@ -4742,15 +4889,17 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "node_modules/@solana/spl-token": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.7.tgz", - "integrity": "sha512-bKGxWTtIw6VDdCBngjtsGlKGLSmiu/8ghSt/IOYJV24BsymRbgq7r12GToeetpxmPaZYLddKwAz7+EwprLfkfg==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.9.tgz", + "integrity": "sha512-1EXHxKICMnab35MvvY/5DBc/K/uQAOJCYnDZXw83McCAYUAfi+rwq6qfd6MmITmSTEhcfBcl/zYxmW/OSN0RmA==", + "license": "Apache-2.0", "dependencies": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", @@ -4781,43 +4930,54 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "node_modules/@solana/web3.js": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.74.0.tgz", - "integrity": "sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@noble/ed25519": "^1.7.0", - "@noble/hashes": "^1.1.2", - "@noble/secp256k1": "^1.6.3", - "@solana/buffer-layout": "^4.0.0", - "agentkeepalive": "^4.2.1", + "version": "1.95.4", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.4.tgz", + "integrity": "sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", - "bn.js": "^5.0.0", + "bn.js": "^5.2.1", "borsh": "^0.7.0", "bs58": "^4.0.1", - "buffer": "6.0.1", + "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", - "jayson": "^3.4.4", - "node-fetch": "^2.6.7", - "rpc-websockets": "^7.5.1", - "superstruct": "^0.14.2" + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" } }, "node_modules/@solana/web3.js/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, "node_modules/@solana/web3.js/node_modules/buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", - "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -4832,15 +4992,23 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, + "node_modules/@solana/web3.js/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/@solana/web3.js/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -4856,161 +5024,58 @@ } } }, - "node_modules/@solana/web3.js/node_modules/superstruct": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" - }, - "node_modules/@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, + "node_modules/@solana/web3.js/node_modules/rpc-websockets": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.4.tgz", + "integrity": "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==", + "license": "LGPL-3.0-only", "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@suchipi/femver": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", - "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@terra-money/legacy.proto": { - "name": "@terra-money/terra.proto", - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", - "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", - "dependencies": { - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "node_modules/@terra-money/terra.js": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.9.tgz", - "integrity": "sha512-JulSvOHLM56fL7s+cIjIbZeWPBluq883X1soWxA4TG5rKkDythT/DHeLXr3jP5Ld/26VENPSg6lNvK7cEYKpiw==", - "dependencies": { - "@classic-terra/terra.proto": "^1.1.0", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.27.2", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "decimal.js": "^10.2.1", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.9" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@terra-money/terra.js/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/@terra-money/terra.js/node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "uuid": "^8.3.2", + "ws": "^8.5.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/@terra-money/terra.js/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" }, - "engines": { - "node": ">= 6" + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" } }, - "node_modules/@terra-money/terra.js/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/@solana/web3.js/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=14.0.0" } }, - "node_modules/@terra-money/terra.js/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, + "node_modules/@solana/web3.js/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@terra-money/terra.js/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" + "uuid": "dist/bin/uuid" } }, - "node_modules/@terra-money/terra.js/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/@solana/web3.js/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -5021,26 +5086,46 @@ } } }, - "node_modules/@terra-money/terra.proto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-2.1.0.tgz", - "integrity": "sha512-rhaMslv3Rkr+QsTQEZs64FKA4QlfO0DfQHaR6yct/EovenMkibDEQ63dEL6yJA6LCaEQGYhyVB9JO9pTUA8ybw==", + "node_modules/@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, "dependencies": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" + "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/@terra-money/terra.proto/node_modules/@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", "dependencies": { - "browser-headers": "^0.4.1" + "tslib": "^2.8.0" + } + }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" }, - "peerDependencies": { - "google-protobuf": "^3.14.0" + "engines": { + "node": ">=6" } }, "node_modules/@truffle/abi-utils": { @@ -8079,7 +8164,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -8161,33 +8245,16 @@ "node_modules/@types/http-cache-semantics": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, "dependencies": { "@types/node": "*" } }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", - "optional": true - }, - "node_modules/@types/lodash.values": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.9.tgz", - "integrity": "sha512-IJ20OEfqNwm3k8ENwoM3q0yOs4UMpgtD4GqxB4lwBHToGthHWqhyh5DdSgQjioocz0QK2SSBkJfCq95ZTV8BTw==", - "optional": true, - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -8216,9 +8283,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } }, "node_modules/@types/npm": { "version": "2.0.31", @@ -8270,7 +8341,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -8311,10 +8381,17 @@ "@types/node": "*" } }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "license": "MIT" + }, "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8442,223 +8519,567 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "optional": true, + "node_modules/@wormhole-foundation/sdk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.0.3.tgz", + "integrity": "sha512-2R/6W0Cdhst74dsqFq+LzSHSn3/E+IYRAnRqeF3xRvYEjleEbuk1pLTtQ+cfJ/TFxefv/VwG4nrUdK42Kxaoqg==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.3.0" + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-algorand-core": "1.0.3", + "@wormhole-foundation/sdk-algorand-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-aptos-core": "1.0.3", + "@wormhole-foundation/sdk-aptos-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-base": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-ibc": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-definitions": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-cctp": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-evm-portico": "1.0.3", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3", + "@wormhole-foundation/sdk-solana-cctp": "1.0.3", + "@wormhole-foundation/sdk-solana-core": "1.0.3", + "@wormhole-foundation/sdk-solana-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3", + "@wormhole-foundation/sdk-sui-core": "1.0.3", + "@wormhole-foundation/sdk-sui-tokenbridge": "1.0.3" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@wry/caches/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "node_modules/@wormhole-foundation/sdk-algorand": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.0.3.tgz", + "integrity": "sha512-DWq1Nbi8hUtiPabpm1NZQ5OJwokWTH4Qp2xwbKtIT1zJvvi6VFVyXwzygh5VrFkxDpmYqsz7pQB8Iqa5pJXL1w==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "algosdk": "2.7.0" + }, + "engines": { + "node": ">=16" + } }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "optional": true, + "node_modules/@wormhole-foundation/sdk-algorand-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.0.3.tgz", + "integrity": "sha512-ZuoQdSqq8ScsfxKAIK0r0zIrhfVF3rHcRgTwLgYc1/sH9/FoJG/DH9SxebXIiC8yBGMRfhKEhncNS8oZd6/4CQ==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.3.0" + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@wry/context/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "node_modules/@wormhole-foundation/sdk-algorand-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.0.3.tgz", + "integrity": "sha512-DqfD+x7bPDViWq5EcKIX2NIQUYtMC+Lrewe/jmldmTwxrZLQzwMi7F+UnqyUacmVhRQ45MsTBoZ0ec6/XUgWvw==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-algorand-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + }, + "engines": { + "node": ">=16" + } }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "optional": true, + "node_modules/@wormhole-foundation/sdk-aptos": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.0.3.tgz", + "integrity": "sha512-fE2SnqQs2zcrg6BnagBSAS6SlkXkcfZi7CWBsOrMgmEjuwKUBXyM/fjjUJPCHgDTWwUPd1j3Kr10gdhxDffmVw==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.3.0" + "@wormhole-foundation/sdk-connect": "1.0.3", + "aptos": "1.21.0" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@wry/equality/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "node_modules/@wormhole-foundation/sdk-aptos-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.0.3.tgz", + "integrity": "sha512-IMFqPmENwqwTFIKpCDeVbaTzc8RuUWEZmvi40yhF0fu4SWahSBoh/G0q0iwf/yUpDRyEO8ynrcUOU+AoQta4Qw==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + }, + "engines": { + "node": ">=16" + } }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "optional": true, + "node_modules/@wormhole-foundation/sdk-aptos-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.0.3.tgz", + "integrity": "sha512-KlEqzHg9SkSaNgRpIEcjXOYVt7/ra/kJtYG0F/6wt3YwjsM3mTANTSGUqoF1z9VsViPdffcCwfxKt2U92dZqJA==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.3.0" + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@wry/trie/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "node_modules/@wormhole-foundation/sdk-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.0.3.tgz", + "integrity": "sha512-zhieqHzyopDN9Z60tqa1EBaJhjRsY56qgP9qpaXT7GkMgp5HI1j2msTaJrpVtVOnTKBt78uJXatKP7+pFDKiJA==", + "license": "Apache-2.0", + "dependencies": { + "@scure/base": "^1.1.3" + } }, - "node_modules/@xlabs-xyz/ledger-signer": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@xlabs-xyz/ledger-signer/-/ledger-signer-0.0.3.tgz", - "integrity": "sha512-DSr7YPVTj0mX4lYFmj8PefNcOSTVliUHoWV8BGnWJshEyuqUMgCDKCR+nYw2Hrr0R0xWnDUCacAkPHUw2usVDA==", - "dev": true, + "node_modules/@wormhole-foundation/sdk-connect": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.0.3.tgz", + "integrity": "sha512-edXkPv2NDe1CSs9dcxC03lbknl1pI3YC/IEEmmn3BXD8xDL9wdvOsOzXifOhHAwUO8mGJiSVuTFRzfxiBIs56w==", + "license": "Apache-2.0", "dependencies": { - "@ledgerhq/hw-app-eth": "6.33.4", - "@ledgerhq/hw-transport": "6.28.4", - "@ledgerhq/hw-transport-node-hid": "6.27.15", - "ethers": "^5.7.0" + "@wormhole-foundation/sdk-base": "1.0.3", + "@wormhole-foundation/sdk-definitions": "1.0.3", + "axios": "^1.4.0" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@xpla/xpla.js": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@xpla/xpla.js/-/xpla.js-0.2.3.tgz", - "integrity": "sha512-Tfk7hCGWXtwr08reY3Pi6dmzIqFbzri9jcyzJdfNmdo4cN0PMwpRJuZZcPmtxiIUnNef3AN1E/6nJUD5MKniuA==", - "dependencies": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/signing-key": "^5.6.2", - "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.26.1", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "crypto-addr-codec": "^0.1.7", - "decimal.js": "^10.2.1", - "elliptic": "^6.5.4", - "ethereumjs-util": "^7.1.5", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.8" + "node_modules/@wormhole-foundation/sdk-connect/node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-connect/node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-connect/node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=14" + "node": ">= 6" } }, - "node_modules/@xpla/xpla.js/node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "node_modules/@wormhole-foundation/sdk-cosmwasm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.0.3.tgz", + "integrity": "sha512-0nP9ZASRyrP/lyRGHof9QQNPLngoP/Ic0R8r+r9/UQyydJhNVzYLtf6YWMqUZzpkugFCpMhz04nKMocnto1I4A==", + "license": "Apache-2.0", "dependencies": { - "@types/node": "*" + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/proto-signing": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "cosmjs-types": "^0.9.0" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@xpla/xpla.js/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "node_modules/@wormhole-foundation/sdk-cosmwasm-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.0.3.tgz", + "integrity": "sha512-RzrJktyotuHi/2esFFqFgoHqppIZfbjJizYVB6BNtYTGHu/3X9hTedVaMGyLzagAyaxWSCuS4OCN4K1LpqNX9g==", + "license": "Apache-2.0", "dependencies": { - "follow-redirects": "^1.14.8" + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@xpla/xpla.js/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.0.3.tgz", + "integrity": "sha512-4SDKVr3/gLJUsvNwMFa74KbIdSW5tm4QQVEys/Y0PfRKSSmGlcn9hgj+e7wfvyR8t6TFjkllypuoJYe6o5dybA==", + "license": "Apache-2.0", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "cosmjs-types": "^0.9.0" + }, + "engines": { + "node": ">=16" + } }, - "node_modules/@xpla/xpla.js/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.0.3.tgz", + "integrity": "sha512-DQU31rPOloLj3iBqsz9MAzNnCIawyN7mN0uCto441+RRMYGyyW/knVIY05rQyB/xDXXhuToCwQNxtEnu75uuwg==", + "license": "Apache-2.0", "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3" }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-definitions": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.0.3.tgz", + "integrity": "sha512-ni7msDLSCKOHSTyTTxEI9IPXlOtKtkpdyJ1i4LweOKP5qcncvLo4IJJU69C+kKc+8KwCpmz+VS+z9YAE6e+QHA==", + "dependencies": { + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.1", + "@wormhole-foundation/sdk-base": "1.0.3" + } + }, + "node_modules/@wormhole-foundation/sdk-evm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.0.3.tgz", + "integrity": "sha512-RI9t/s1AnuqMQzzGXjqCegKoOGo3RGH79uwj/u4xttkkQ2yxjZw8zXt/QwNQjBaa8F7OnOAMt9T5gAyl49BTGg==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.0.3.tgz", + "integrity": "sha512-UfMyrZ4SNbKX+szw7NNPC8qSrP9jO3yEa+y2zVS67TyM0HB6/+pvg+vDaRN4H52kFmqRkIQDZjTNb7FbE5Z/ZA==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@xpla/xpla.js/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/@wormhole-foundation/sdk-evm-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.0.3.tgz", + "integrity": "sha512-jpk2kamEMP9TAhAOaaD+yJhGVKm3h8yfEUPdyBKAcUvBMuRmf1RY410Z1PPqW9fOLaynFmzukd44ITsh8wsnIQ==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", "funding": [ { "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, "engines": { - "node": ">=4.0" + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "debug": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/@xpla/xpla.js/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@wormhole-foundation/sdk-evm-portico": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.0.3.tgz", + "integrity": "sha512-j0fXggpWb7OR4xDHiQtI5imd620akTVUMw7gL4TLYyAFg4nPDeXyLe3uG7uyfvMoJd6hhhSkVQE2AEZFok0WsA==", + "license": "Apache-2.0", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "ethers": "^6.5.1" }, "engines": { - "node": ">= 6" + "node": ">=16" } }, - "node_modules/@xpla/xpla.js/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "@noble/hashes": "1.3.2" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@xpla/xpla.js/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "rimraf": "^3.0.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" }, "engines": { - "node": ">=8.17.0" + "node": ">=14.0.0" } }, - "node_modules/@xpla/xpla.js/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -8669,6 +9090,383 @@ } } }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.0.3.tgz", + "integrity": "sha512-2Fuxui8JET3chLs98WZAx2lqjGa4U8Gi3ulDFyCRGic/OkLRaWQhwKHW0+9qUYQgzbd5upvVBwMHtmcBzK3aiw==", + "license": "Apache-2.0", + "dependencies": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-solana": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.0.3.tgz", + "integrity": "sha512-HRR13E9qfgoYpcijc+UZU16ZRfB01Z4GqXyc1HuNpQRMvkwGWzBaBZOcmehmCITvU8izIW7DhGgSLWXraWL3hg==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "rpc-websockets": "^7.10.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-cctp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.0.3.tgz", + "integrity": "sha512-eyhvxRTcKwpj5KFWIbdyRN7xds16g/IT65ctJgUv5wdd+tEoESuVIK0Ad+11Ep5JtwmSdF6IiwcN0Sfl6ckG1Q==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.0.3.tgz", + "integrity": "sha512-k65W7URd0vAw58UmIKibz+CkXijpVtAER46F9D+HZzSPGggcf/Ps9xfY285+fYMgAKSkyMqlLNrwsTR2STM/0w==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.0.3.tgz", + "integrity": "sha512-2ifcR3PZu/ggGrkzqlbgMlEEEELWBzOJXpPhE4gmMdynXMlZYl5HYOcx4qBnOTI336VjawPnTG+EFc54VeJoZA==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3", + "@wormhole-foundation/sdk-solana-core": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.0.3.tgz", + "integrity": "sha512-dsZ8ymv/sV0N6nmbcIquQJazBi1YNsqtKvIlhMqes0uS2iv+YvpPLfLKLzxn3KGWlXbteuJWdZtwOl/v3zhySQ==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.0.3.tgz", + "integrity": "sha512-5JzbJpg81XWKcY3HsCDX17dxaEgs8wMzDwZhNI2cnyBDXD8rhhDMcbTfiOLxygPtjjrplTMW6JE/QHurdXEJWw==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.0.3.tgz", + "integrity": "sha512-lN8MLanfGUM7P3ISORITx9nYJTkFahrbd108pp8QTA6uA0kU4AW5FHLaNZoYxPGQZOhvQV6C94s3fQZFAYSi1w==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3", + "@wormhole-foundation/sdk-sui-core": "1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/caches/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/context/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@wry/trie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@xlabs-xyz/ledger-signer": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@xlabs-xyz/ledger-signer/-/ledger-signer-0.0.3.tgz", + "integrity": "sha512-DSr7YPVTj0mX4lYFmj8PefNcOSTVliUHoWV8BGnWJshEyuqUMgCDKCR+nYw2Hrr0R0xWnDUCacAkPHUw2usVDA==", + "dev": true, + "dependencies": { + "@ledgerhq/hw-app-eth": "6.33.4", + "@ledgerhq/hw-transport": "6.28.4", + "@ledgerhq/hw-transport-node-hid": "6.27.15", + "ethers": "^5.7.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -8741,47 +9539,17 @@ "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, "node_modules/agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { "node": ">= 8.0.0" } }, - "node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/agentkeepalive/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -8859,6 +9627,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/algo-msgpack-with-bigint/-/algo-msgpack-with-bigint-2.1.1.tgz", "integrity": "sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==", + "license": "ISC", "engines": { "node": ">= 10" } @@ -8867,6 +9636,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.7.0.tgz", "integrity": "sha512-sBE9lpV7bup3rZ+q2j3JQaFAE9JwZvjWKX00vPlG8e9txctXbgLL56jZhSWZndqhDI9oI+0P4NldkuQIWdrUyg==", + "license": "MIT", "dependencies": { "algo-msgpack-with-bigint": "^2.1.1", "buffer": "^6.0.3", @@ -8900,6 +9670,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -8908,12 +9679,14 @@ "node_modules/algosdk/node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" }, "node_modules/algosdk/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, "node_modules/ansi-colors": { "version": "4.1.1", @@ -9238,13 +10011,16 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/aptos": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.5.0.tgz", - "integrity": "sha512-N7OuRtU7IYHkDkNx+4QS3g/QQGCp+36KzYn3oXPmT7Kttfuv+UKliQVdjy3cLmwd/DCQSh9ObTovwdxnHjUn0g==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.21.0.tgz", + "integrity": "sha512-PRKjoFgL8tVEc9+oS7eJUv8GNxx8n3+0byH2+m7CP3raYOD6yFKOecuwjVMIJmgfpjp6xH0P0HDMGZAXmSyU0Q==", + "deprecated": "Package aptos is no longer supported, please migrate to https://www.npmjs.com/package/@aptos-labs/ts-sdk", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "1.1.3", - "@scure/bip39": "1.1.0", - "axios": "0.27.2", + "@aptos-labs/aptos-client": "^0.1.0", + "@noble/hashes": "1.3.3", + "@scure/bip39": "1.2.1", + "eventemitter3": "^5.0.1", "form-data": "4.0.0", "tweetnacl": "1.0.3" }, @@ -9253,48 +10029,41 @@ } }, "node_modules/aptos/node_modules/@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/aptos/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/aptos/node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" + "node_modules/aptos/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, + "node_modules/aptos/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/aptos/node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -9307,7 +10076,8 @@ "node_modules/aptos/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, "node_modules/argparse": { "version": "1.0.10", @@ -9699,17 +10469,10 @@ } }, "node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, - "node_modules/big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "engines": { - "node": ">=0.6" - } + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", @@ -9724,6 +10487,7 @@ "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "bindings": "^1.3.0" }, @@ -9748,14 +10512,6 @@ "node": ">=8" } }, - "node_modules/binary-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/binary-parser/-/binary-parser-2.2.1.tgz", - "integrity": "sha512-5ATpz/uPDgq5GgEDxTB4ouXCde7q2lqAQlSdBRQVl/AJnxmQmhIfyxJx+0MGu//D5rHQifkfGbWWlaysG0o9NA==", - "engines": { - "node": ">=12" - } - }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -9764,44 +10520,15 @@ "file-uri-to-path": "1.0.0" } }, - "node_modules/bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "dependencies": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bip32/node_modules/@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - }, "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "license": "ISC", "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" + "@noble/hashes": "^1.2.0" } }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - }, "node_modules/bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -9884,6 +10611,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", "dependencies": { "bn.js": "^5.2.0", "bs58": "^4.0.0", @@ -9893,7 +10621,8 @@ "node_modules/borsh/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -9923,7 +10652,8 @@ "node_modules/browser-headers": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", - "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==", + "license": "Apache-2.0" }, "node_modules/browser-stdout": { "version": "1.3.1", @@ -10129,6 +10859,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", + "license": "MIT", "engines": { "node": ">=4.5" } @@ -10147,6 +10878,7 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "devOptional": true, "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -10309,6 +11041,18 @@ "upper-case": "^1.1.1" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001299", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz", @@ -10318,11 +11062,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/capability": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/capability/-/capability-0.2.5.tgz", - "integrity": "sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==" - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -10777,7 +11516,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, "dependencies": { "mimic-response": "^1.0.0" } @@ -11188,182 +11926,6 @@ "node": ">=0.10.0" } }, - "node_modules/copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "optional": true, - "dependencies": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "bin": { - "copyfiles": "copyfiles", - "copyup": "copyfiles" - } - }, - "node_modules/copyfiles/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/copyfiles/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "optional": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/copyfiles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/copyfiles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "node_modules/copyfiles/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "optional": true - }, - "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "optional": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/copyfiles/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "optional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/copyfiles/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "optional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/copyfiles/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "optional": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/copyfiles/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "optional": true, - "engines": { - "node": ">=10" - } - }, "node_modules/core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -11411,20 +11973,16 @@ } }, "node_modules/cosmjs-types": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", - "integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==", - "optional": true, - "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==", + "license": "Apache-2.0" }, "node_modules/crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "devOptional": true, + "dev": true, "dependencies": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -11518,20 +12076,6 @@ "which": "bin/which" } }, - "node_modules/crypto-addr-codec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz", - "integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==", - "dependencies": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -11557,6 +12101,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -11682,11 +12227,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -11854,16 +12394,38 @@ "abstract-leveldown": "~2.6.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "devOptional": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { @@ -11907,6 +12469,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, "engines": { "node": ">= 0.6" } @@ -12103,60 +12666,6 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/eccrypto": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", - "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "acorn": "7.1.1", - "elliptic": "6.5.4", - "es6-promise": "4.2.8", - "nan": "2.14.0" - }, - "optionalDependencies": { - "secp256k1": "3.7.1" - } - }, - "node_modules/eccrypto/node_modules/acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eccrypto/node_modules/nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "optional": true - }, - "node_modules/eccrypto/node_modules/secp256k1": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", - "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.4.1", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -12368,16 +12877,6 @@ "errno": "cli.js" } }, - "node_modules/error-polyfill": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/error-polyfill/-/error-polyfill-0.1.3.tgz", - "integrity": "sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==", - "dependencies": { - "capability": "^0.2.5", - "o3": "^1.0.3", - "u3": "^0.1.1" - } - }, "node_modules/es-abstract": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", @@ -12426,6 +12925,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -12469,6 +12989,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", "dependencies": { "es6-promise": "^4.0.3" } @@ -13038,76 +13559,6 @@ "node": ">=4" } }, - "node_modules/eth-crypto": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", - "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", - "optional": true, - "dependencies": { - "@babel/runtime": "7.20.13", - "@ethereumjs/tx": "3.5.2", - "@types/bn.js": "5.1.1", - "eccrypto": "1.1.6", - "ethereumjs-util": "7.1.5", - "ethers": "5.7.2", - "secp256k1": "5.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/pubkey" - } - }, - "node_modules/eth-crypto/node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/eth-crypto/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true - }, - "node_modules/eth-crypto/node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "optional": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/eth-crypto/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "optional": true - }, - "node_modules/eth-crypto/node_modules/secp256k1": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", - "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", @@ -13751,11 +14202,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "node_modules/ethers/node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, "node_modules/ethers/node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -13856,7 +14302,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.8" } @@ -14232,7 +14678,8 @@ "node_modules/fast-stable-stringify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" }, "node_modules/faye-websocket": { "version": "0.11.3", @@ -14691,10 +15138,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -15325,14 +15775,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15473,12 +15928,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "optional": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -15488,9 +15944,22 @@ } }, "node_modules/google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/got": { "version": "9.6.0", @@ -15514,6 +15983,25 @@ "node": ">=8.6" } }, + "node_modules/gql.tada": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.3", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -15529,7 +16017,6 @@ "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "optional": true, "engines": { "node": ">= 10.x" } @@ -15538,7 +16025,6 @@ "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "optional": true, "dependencies": { "tslib": "^2.1.0" }, @@ -15552,8 +16038,7 @@ "node_modules/graphql-tag/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "optional": true + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "node_modules/growl": { "version": "1.10.5", @@ -15614,6 +16099,30 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", @@ -15624,10 +16133,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15745,6 +16254,18 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -15766,7 +16287,8 @@ "node_modules/hi-base32": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", - "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" + "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==", + "license": "MIT" }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -15782,7 +16304,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "optional": true, + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -15835,13 +16357,13 @@ "node_modules/http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "node_modules/http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -15856,7 +16378,8 @@ "node_modules/http-errors/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "node_modules/http-https": { "version": "1.0.0", @@ -15887,7 +16410,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", - "optional": true + "license": "MIT" }, "node_modules/http2-wrapper": { "version": "2.2.0", @@ -15911,6 +16434,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -16692,9 +17216,10 @@ } }, "node_modules/jayson": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", - "integrity": "sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.2.tgz", + "integrity": "sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==", + "license": "MIT", "dependencies": { "@types/connect": "^3.4.33", "@types/node": "^12.12.54", @@ -16706,9 +17231,8 @@ "isomorphic-ws": "^4.0.1", "json-stringify-safe": "^5.0.1", "JSONStream": "^1.3.5", - "lodash": "^4.17.20", "uuid": "^8.3.2", - "ws": "^7.4.5" + "ws": "^7.5.10" }, "bin": { "jayson": "bin/jayson.js" @@ -16720,20 +17244,23 @@ "node_modules/jayson/node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" }, "node_modules/jayson/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/jayson/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -16750,15 +17277,11 @@ } } }, - "node_modules/js-base64": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", - "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==" - }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" }, "node_modules/js-sha3": { "version": "0.5.7", @@ -16768,7 +17291,8 @@ "node_modules/js-sha512": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", - "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -16797,6 +17321,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/jscrypto/-/jscrypto-1.0.3.tgz", "integrity": "sha512-lryZl0flhodv4SZHOqyb1bx5sKcJxj0VBo0Kzb4QMAg3L021IC9uGpl0RCZa+9KJwlRGSK2C80ITcwbe19OKLQ==", + "license": "MIT", "bin": { "jscrypto": "bin/cli.js" } @@ -16816,6 +17341,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", "dependencies": { "bignumber.js": "^9.0.0" } @@ -16824,6 +17350,7 @@ "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "license": "MIT", "engines": { "node": "*" } @@ -16941,21 +17468,14 @@ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "engines": [ "node >= 0.2.0" - ] - }, - "node_modules/jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "optional": true, - "engines": { - "node": "*" - } + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -17012,7 +17532,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "optional": true, + "license": "MIT", "dependencies": { "bn.js": "^5.2.0", "buffer": "^6.0.3", @@ -17023,7 +17543,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "license": "MIT" }, "node_modules/keccak256/node_modules/buffer": { "version": "6.0.3", @@ -17043,7 +17563,7 @@ "url": "https://feross.org/support" } ], - "optional": true, + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -17502,48 +18022,19 @@ "node": ">= 0.8.0" } }, - "node_modules/libsodium": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", - "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==", - "optional": true - }, - "node_modules/libsodium-wrappers": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", - "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", - "optional": true, - "dependencies": { - "libsodium": "^0.7.13" - } - }, - "node_modules/link-module-alias": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/link-module-alias/-/link-module-alias-1.2.0.tgz", - "integrity": "sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==", - "optional": true, - "dependencies": { - "chalk": "^2.4.1" - }, - "bin": { - "link-module-alias": "index.js" - }, - "engines": { - "node": "> 8.0.0" - } + "node_modules/libsodium-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==", + "license": "ISC" }, - "node_modules/link-module-alias/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "optional": true, + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", + "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", + "license": "ISC", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "libsodium-sumo": "^0.7.15" } }, "node_modules/loader-utils": { @@ -17625,12 +18116,6 @@ "dev": true, "optional": true }, - "node_modules/lodash.values": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", - "optional": true - }, "node_modules/log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -17665,7 +18150,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "devOptional": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -17762,7 +18246,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "optional": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -18641,14 +19125,6 @@ "buffer": "^5.5.0" } }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "bin": { - "mustache": "bin/mustache" - } - }, "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -18717,61 +19193,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/near-api-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-1.1.0.tgz", - "integrity": "sha512-qYKv1mYsaDZc2uYndhS+ttDhR9+60qFc+ZjD6lWsAxr3ZskMjRwPffDGQZYhC7BRDQMe1HEbk6d5mf+TVm0Lqg==", - "dependencies": { - "bn.js": "5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.0", - "depd": "^2.0.0", - "error-polyfill": "^0.1.3", - "http-errors": "^1.7.2", - "js-sha256": "^0.9.0", - "mustache": "^4.0.0", - "node-fetch": "^2.6.1", - "text-encoding-utf-8": "^1.0.2", - "tweetnacl": "^1.0.1" - } - }, - "node_modules/near-api-js/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/near-api-js/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/near-api-js/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/near-api-js/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -19000,40 +19421,6 @@ "node": ">=8" } }, - "node_modules/noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", - "optional": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - } - }, - "node_modules/noms/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "optional": true - }, - "node_modules/noms/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/noms/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "optional": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -19087,14 +19474,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" }, - "node_modules/o3": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/o3/-/o3-1.0.3.tgz", - "integrity": "sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==", - "dependencies": { - "capability": "^0.2.5" - } - }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -19208,7 +19587,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true, "engines": { "node": ">= 0.4" } @@ -19283,7 +19661,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", - "optional": true, + "license": "MIT", "dependencies": { "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", @@ -19295,7 +19673,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", - "optional": true, + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -19304,10 +19682,10 @@ } }, "node_modules/optimism/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/optionator": { "version": "0.8.3", @@ -20374,7 +20752,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "devOptional": true, + "dev": true, "bin": { "printj": "bin/printj.njs" }, @@ -20431,7 +20809,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "optional": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -20479,8 +20857,7 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/prr": { "version": "1.0.1", @@ -20633,7 +21010,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "engines": { "node": ">=10" }, @@ -20743,7 +21119,7 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "optional": true + "license": "MIT" }, "node_modules/readable-stream": { "version": "2.3.7", @@ -20779,13 +21155,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", - "optional": true + "license": "Apache-2.0" }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "optional": true, "dependencies": { "resolve": "^1.1.6" }, @@ -20823,9 +21198,10 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regex-not": { "version": "1.0.2", @@ -20848,6 +21224,24 @@ "node": ">=6.5.0" } }, + "node_modules/rehackt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -20952,8 +21346,7 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "node_modules/resolve-cwd": { "version": "2.0.0", @@ -21053,7 +21446,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", - "optional": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -21118,14 +21511,6 @@ "inherits": "^2.0.1" } }, - "node_modules/ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", - "engines": { - "node": ">=8" - } - }, "node_modules/rlp": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", @@ -21138,11 +21523,11 @@ } }, "node_modules/rpc-websockets": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", - "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.11.2.tgz", + "integrity": "sha512-pL9r5N6AVHlMN/vT98+fcO+5+/UcPLf/4tq+WUaid/PPUGS/ttJ3y8e9IqmaWKtShNAysMSjkczuEA49NuV7UQ==", + "license": "LGPL-3.0-only", "dependencies": { - "@babel/runtime": "^7.17.2", "eventemitter3": "^4.0.7", "uuid": "^8.3.2", "ws": "^8.5.0" @@ -21159,20 +21544,23 @@ "node_modules/rpc-websockets/node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, "node_modules/rpc-websockets/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/rpc-websockets/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -21290,19 +21678,41 @@ "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" }, "node_modules/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "hasInstallScript": true, + "license": "MIT", "dependencies": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, + "node_modules/secp256k1/node_modules/elliptic": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz", + "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -21492,7 +21902,8 @@ "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true }, "node_modules/sha.js": { "version": "2.4.11", @@ -21506,37 +21917,6 @@ "sha.js": "bin.js" } }, - "node_modules/sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/sha3/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -21566,7 +21946,7 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "optional": true, + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -21583,7 +21963,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "optional": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -21667,7 +22047,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.5.0.tgz", "integrity": "sha512-r3kRtnoPu3FxGJ3fny6PKNnU3pteb29o6qAa0ugzhSseKNWRkw1dw8nIjXMyyKaU9vQxxVIE62Mb3bKbdrgpiw==", - "optional": true, + "license": "MIT", "dependencies": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", @@ -21681,7 +22061,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "optional": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -21691,7 +22071,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -21700,7 +22080,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -21710,23 +22090,23 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "optional": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/snakecase-keys/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/snakecase-keys/node_modules/type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "optional": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -22178,15 +22558,16 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/store2": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", - "optional": true + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", + "license": "MIT" }, "node_modules/stream-each": { "version": "1.2.3", @@ -22384,7 +22765,8 @@ "node_modules/superstruct": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", - "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", + "license": "MIT" }, "node_modules/supports-color": { "version": "5.5.0", @@ -22754,22 +23136,6 @@ "node": ">=0.6.0" } }, - "node_modules/tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/tiny-typed-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", @@ -22883,6 +23249,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, "engines": { "node": ">=0.6" } @@ -22890,7 +23257,8 @@ "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" }, "node_modules/toposort": { "version": "2.0.2", @@ -24294,11 +24662,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/truffle-hdwallet-provider-klaytn/node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, "node_modules/truffle-hdwallet-provider-klaytn/node_modules/bignumber.js": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.0.2.tgz", @@ -26880,7 +27243,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "optional": true, + "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, @@ -26889,10 +27252,10 @@ } }, "node_modules/ts-invariant/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tslib": { "version": "1.13.0", @@ -26949,8 +27312,7 @@ "node_modules/tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "devOptional": true + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "node_modules/type": { "version": "1.2.0", @@ -27678,11 +28040,6 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" - }, "node_modules/typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", @@ -27727,11 +28084,6 @@ "node": ">=8" } }, - "node_modules/u3": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/u3/-/u3-0.1.1.tgz", - "integrity": "sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==" - }, "node_modules/ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -27768,6 +28120,12 @@ "integrity": "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA==", "dev": true }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -27879,15 +28237,6 @@ "node": ">=0.10.0" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -28008,6 +28357,7 @@ "version": "5.0.10", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "devOptional": true, "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -28101,7 +28451,8 @@ "node_modules/vlq": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/vlq/-/vlq-2.0.4.tgz", - "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==" + "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==", + "license": "MIT" }, "node_modules/vm-browserify": { "version": "1.1.2", @@ -29027,14 +29378,6 @@ "string-width": "^1.0.2 || 2" } }, - "node_modules/wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", - "dependencies": { - "bs58check": "<3.0.0" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -29256,7 +29599,7 @@ "version": "11.14.0", "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", - "optional": true, + "license": "MIT", "dependencies": { "globalthis": "^1.0.1", "symbol-observable": "^2.0.3" @@ -29266,7 +29609,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", - "optional": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -29345,17 +29688,6 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", @@ -29413,32 +29745,53 @@ "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "optional": true + "license": "MIT" }, "node_modules/zen-observable-ts": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "optional": true, + "license": "MIT", "dependencies": { "zen-observable": "0.8.15" } } }, "dependencies": { + "@0no-co/graphql.web": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz", + "integrity": "sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==", + "requires": {} + }, + "@0no-co/graphqlsp": { + "version": "1.12.16", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", + "requires": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + } + }, + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, "@apollo/client": { - "version": "3.8.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz", - "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==", - "optional": true, + "version": "3.11.10", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.11.10.tgz", + "integrity": "sha512-IfGc+X4il0rDqVQBBWdxIKM+ciDCiDzBq9+Bg9z4tJMi87uF6po4v+ddiac1wP0ARgVPsFwEIGxK7jhN4pW8jg==", "requires": { "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", "optimism": "^0.18.0", "prop-types": "^15.7.2", + "rehackt": "^0.1.0", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", "ts-invariant": "^0.10.3", @@ -29449,14 +29802,12 @@ "symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "optional": true + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -29593,6 +29944,163 @@ "xss": "^1.0.8" } }, + "@aptos-labs/aptos-client": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aptos-labs/aptos-client/-/aptos-client-0.1.1.tgz", + "integrity": "sha512-kJsoy4fAPTOhzVr7Vwq8s/AUg6BQiJDa7WOqRzev4zsuIS3+JCuIZ6vUd7UBsjnxtmguJJulMRs9qWCzVBt2XA==", + "requires": { + "axios": "1.7.4", + "got": "^11.8.6" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "axios": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + } + } + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -30216,11 +30724,11 @@ } }, "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "requires": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" } }, "@babel/template": { @@ -30255,107 +30763,6 @@ "to-fast-properties": "^2.0.0" } }, - "@certusone/wormhole-sdk": { - "version": "0.10.15", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.15.tgz", - "integrity": "sha512-XECfrvdYjsGPZWyR1bqWCPOiRw7+6upszpSvAXjKIqEnTNXOCYRkt5ae8TVh5oZxPjpts2X3t4Oi9WGcEssHpQ==", - "requires": { - "@certusone/wormhole-sdk-proto-web": "0.0.7", - "@certusone/wormhole-sdk-wasm": "^0.0.1", - "@coral-xyz/borsh": "0.2.6", - "@injectivelabs/networks": "1.10.12", - "@injectivelabs/sdk-ts": "1.10.72", - "@injectivelabs/utils": "1.10.12", - "@mysten/sui.js": "0.32.2", - "@project-serum/anchor": "^0.25.0", - "@solana/spl-token": "^0.3.5", - "@solana/web3.js": "^1.66.2", - "@terra-money/terra.js": "3.1.9", - "@xpla/xpla.js": "^0.2.1", - "algosdk": "^2.4.0", - "aptos": "1.5.0", - "axios": "^0.24.0", - "bech32": "^2.0.0", - "binary-parser": "^2.2.1", - "bs58": "^4.0.1", - "elliptic": "^6.5.4", - "js-base64": "^3.6.1", - "near-api-js": "^1.0.0" - }, - "dependencies": { - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - } - } - }, - "@certusone/wormhole-sdk-proto-web": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz", - "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==", - "requires": { - "@improbable-eng/grpc-web": "^0.15.0", - "protobufjs": "^7.0.0", - "rxjs": "^7.5.6" - }, - "dependencies": { - "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - } - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - } - } - }, - "@certusone/wormhole-sdk-wasm": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-wasm/-/wormhole-sdk-wasm-0.0.1.tgz", - "integrity": "sha512-LdIwLhOyr4pPs2jqYubqC7d4UkqYBX0EG/ppspQlW3qlVE0LZRMrH6oVzzLMyHtV0Rw7O9sIKzORW/T3mrJv2w==", - "requires": { - "@types/long": "^4.0.2", - "@types/node": "^18.0.3" - } - }, "@chainsafe/truffle-plugin-abigen": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@chainsafe/truffle-plugin-abigen/-/truffle-plugin-abigen-0.0.1.tgz", @@ -30366,41 +30773,113 @@ "eslint": "^6.8.0" } }, - "@classic-terra/terra.proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@classic-terra/terra.proto/-/terra.proto-1.1.0.tgz", - "integrity": "sha512-bYhQG5LUaGF0KPRY9hYT/HEcd1QExZPQd6zLV/rQkCe/eDxfwFRLzZHpaaAdfWoAAZjsRWqJbUCqCg7gXBbJpw==", - "requires": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - }, - "dependencies": { - "@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "requires": { - "browser-headers": "^0.4.1" - } - } - } - }, "@confio/ics23": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", - "optional": true, "requires": { "@noble/hashes": "^1.0.0", "protobufjs": "^6.8.8" } }, + "@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "requires": { + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, "@coral-xyz/borsh": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.2.6.tgz", - "integrity": "sha512-y6nmHw1bFcJib7sMHsQPpC8r47xhqDZVvhUdna7NUPzpSbOZG6f46N21+aXsQ2w/tG8Ggls488J/ZmwbgVmyjg==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", "requires": { "bn.js": "^5.1.2", "buffer-layout": "^1.2.0" @@ -30414,74 +30893,84 @@ } }, "@cosmjs/amino": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz", - "integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", + "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", "requires": { - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1" + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4" + } + }, + "@cosmjs/cosmwasm-stargate": { + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz", + "integrity": "sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==", + "requires": { + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + }, + "dependencies": { + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + } } }, "@cosmjs/crypto": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz", - "integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.4.tgz", + "integrity": "sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==", "requires": { - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", - "libsodium-wrappers": "^0.7.6" + "libsodium-wrappers-sumo": "^0.7.11" }, "dependencies": { "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" } } }, "@cosmjs/encoding": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz", - "integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.4.tgz", + "integrity": "sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==", "requires": { "base64-js": "^1.3.0", "bech32": "^1.1.4", "readonly-date": "^1.0.0" - }, - "dependencies": { - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "optional": true - } } }, "@cosmjs/json-rpc": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz", - "integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz", + "integrity": "sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==", "requires": { - "@cosmjs/stream": "^0.30.1", + "@cosmjs/stream": "^0.32.4", "xstream": "^11.14.0" } }, "@cosmjs/math": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz", - "integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.4.tgz", + "integrity": "sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==", "requires": { "bn.js": "^5.2.0" }, @@ -30489,139 +30978,115 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" } } }, "@cosmjs/proto-signing": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz", - "integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", + "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", "requires": { - "@cosmjs/amino": "^0.30.1", - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "cosmjs-types": "^0.7.1", - "long": "^4.0.0" + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0" } }, "@cosmjs/socket": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz", - "integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.4.tgz", + "integrity": "sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==", "requires": { - "@cosmjs/stream": "^0.30.1", + "@cosmjs/stream": "^0.32.4", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" }, "dependencies": { "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "optional": true, + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "requires": {} } } }, "@cosmjs/stargate": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz", - "integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.4.tgz", + "integrity": "sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==", "requires": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/proto-signing": "^0.30.1", - "@cosmjs/stream": "^0.30.1", - "@cosmjs/tendermint-rpc": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "cosmjs-types": "^0.7.1", - "long": "^4.0.0", - "protobufjs": "~6.11.3", + "@cosmjs/amino": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "cosmjs-types": "^0.9.0", "xstream": "^11.14.0" - }, - "dependencies": { - "protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "optional": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - } - } } }, "@cosmjs/stream": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz", - "integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==", - "optional": true, + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.4.tgz", + "integrity": "sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==", "requires": { "xstream": "^11.14.0" } }, "@cosmjs/tendermint-rpc": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz", - "integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==", - "optional": true, - "requires": { - "@cosmjs/crypto": "^0.30.1", - "@cosmjs/encoding": "^0.30.1", - "@cosmjs/json-rpc": "^0.30.1", - "@cosmjs/math": "^0.30.1", - "@cosmjs/socket": "^0.30.1", - "@cosmjs/stream": "^0.30.1", - "@cosmjs/utils": "^0.30.1", - "axios": "^0.21.2", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz", + "integrity": "sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==", + "requires": { + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/json-rpc": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/socket": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/utils": "^0.32.4", + "axios": "^1.6.0", "readonly-date": "^1.0.0", "xstream": "^11.14.0" }, "dependencies": { "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "optional": true + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } } } }, "@cosmjs/utils": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz", - "integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==", - "optional": true + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.4.tgz", + "integrity": "sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==" }, "@esbuild/aix-ppc64": { "version": "0.19.11", @@ -30788,7 +31253,7 @@ "version": "2.6.5", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "devOptional": true, + "dev": true, "requires": { "crc-32": "^1.2.0", "ethereumjs-util": "^7.1.5" @@ -30798,7 +31263,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "devOptional": true, + "dev": true, "requires": { "@types/node": "*" } @@ -30807,13 +31272,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "devOptional": true + "dev": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "devOptional": true, + "dev": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -30828,7 +31293,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "devOptional": true, + "dev": true, "requires": { "@ethereumjs/common": "^2.6.4", "ethereumjs-util": "^7.1.5" @@ -30838,7 +31303,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "devOptional": true, + "dev": true, "requires": { "@types/node": "*" } @@ -30847,13 +31312,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "devOptional": true + "dev": true }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "devOptional": true, + "dev": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -31049,12 +31514,6 @@ "ws": "7.4.6" }, "dependencies": { - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "peer": true - }, "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -31447,6 +31906,24 @@ "integrity": "sha512-XcdMT5PSZHiuf7LJIhzKIe+RyYa25S3LHRRvLnZc6iFjwXkrSDJ8J/HWO6VT8d2ZTbawp3VcLEjRF/VN8glCrA==", "dev": true }, + "@gql.tada/cli-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", + "requires": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + } + }, + "@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "requires": { + "@0no-co/graphql.web": "^1.0.5" + } + }, "@graphql-tools/batch-execute": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", @@ -31622,7 +32099,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "optional": true, "requires": {} }, "@grpc/grpc-js": { @@ -31652,19 +32128,10 @@ "protobufjs": "^6.8.6" } }, - "@improbable-eng/grpc-web": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz", - "integrity": "sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg==", - "requires": { - "browser-headers": "^0.4.1" - } - }, "@injectivelabs/core-proto-ts": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.14.tgz", - "integrity": "sha512-NZWlgBzgVrXow9IknFQHvcYKX4QkUD25taRigoNYQK8PDn4+VXd9xM5WFUDRhzm2smTCguyl/+MghpEp4oTPWw==", - "optional": true, + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-1.13.3.tgz", + "integrity": "sha512-G7gr9pJM/bDDtmW8fuXlUQZ+pNjFsypxM8gpd6bA7BbbBnZArdC8NlZvqfHgKYcaI27/CwIix2jlnz0okstjMg==", "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31675,14 +32142,12 @@ "long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "optional": true, + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31702,29 +32167,25 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, "@injectivelabs/exceptions": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.5.tgz", - "integrity": "sha512-WQ+hxpKz4g4+ZXNTXLFKpf9D9uosleZLqC++2+wK81IQ/lcwi5GrTLYdasOhJeu3c+LKWxHQRHJfSsvt8TQWbA==", - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.19.tgz", + "integrity": "sha512-QwU6Q6jLWjQ11pUFcEczvmQodDXtOBVQr4Q19k+6M4Te5AfF6qRkwaQxUZWpTelRHwrL6zHj8OBbePso7TKhaQ==", "requires": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.14.5", + "@injectivelabs/ts-types": "^1.14.19", "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, @@ -31732,7 +32193,6 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web/-/grpc-web-0.0.1.tgz", "integrity": "sha512-Pu5YgaZp+OvR5UWfqbrPdHer3+gDf+b5fQoY+t2VZx1IAVHX8bzbN9EreYTvTYtFeDpYRWM8P7app2u4EX5wTw==", - "optional": true, "requires": { "browser-headers": "^0.4.1" } @@ -31741,21 +32201,18 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-node-http-transport/-/grpc-web-node-http-transport-0.0.2.tgz", "integrity": "sha512-rpyhXLiGY/UMs6v6YmgWHJHiO9l0AgDyVNv+jcutNVt4tQrmNvnpvz2wCAGOFtq5LuX/E9ChtTVpk3gWGqXcGA==", - "optional": true, "requires": {} }, "@injectivelabs/grpc-web-react-native-transport": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/@injectivelabs/grpc-web-react-native-transport/-/grpc-web-react-native-transport-0.0.2.tgz", "integrity": "sha512-mk+aukQXnYNgPsPnu3KBi+FD0ZHQpazIlaBZ2jNZG7QAVmxTWtv3R66Zoq99Wx2dnE946NsZBYAoa0K5oSjnow==", - "optional": true, "requires": {} }, "@injectivelabs/indexer-proto-ts": { - "version": "1.10.8-rc.4", - "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.10.8-rc.4.tgz", - "integrity": "sha512-IwbepTfsHHAv3Z36As6yH/+HIplOEpUu6SFHBCVgdSIaQ8GuvTib4HETiVnV4mjYqoyVgWs+zLSAfih46rdMJQ==", - "optional": true, + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.13.1.tgz", + "integrity": "sha512-w5C2qREyNZyc7bvGUvxzl5JetUkChFDTzZqW55qox+Iy6jiCkNILPTiArlHMlv/i04ymJ3B70Ftsr1j7V4lZrA==", "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31766,14 +32223,12 @@ "long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "optional": true, + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31793,24 +32248,21 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, "@injectivelabs/mito-proto-ts": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.9.tgz", - "integrity": "sha512-+TZMvJ4SHwcn6SFPdqaiQFZdNhjH7hyRFozY15nOTC2utdGij9jEsjz1NsyOejfYDA0s1z5Wm1SgrMYKaVpAmQ==", - "optional": true, + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.13.0.tgz", + "integrity": "sha512-DE9iK7PkEnkWAMTDJDH01R8jxkxVCNuurfVp/09Te9wY3dm3mRx9M6R756JywP2Sd/ggJl2UbavGAQe2pZ7v1w==", "requires": { "@injectivelabs/grpc-web": "^0.0.1", "google-protobuf": "^3.14.0", @@ -31821,14 +32273,12 @@ "long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "optional": true + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "optional": true, + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -31848,106 +32298,161 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, "requires": { "tslib": "^2.1.0" } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, "@injectivelabs/networks": { - "version": "1.10.12", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.10.12.tgz", - "integrity": "sha512-tTHyLls1Nik5QTs/S03qqG2y/ITvNwI8CJOQbMmmsr1CL2CdjJBtzRYn9Dyx2p8XgzRFf9hmlybpe20tq9O3SA==", - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.19.tgz", + "integrity": "sha512-U6rdOTZSnZlvMF1iJCgL1QQ77tyZhNZ83e0+pdS1v51KW/i2Q4+1gnaNoUYySoVpgeIbJRN1FItAHfK5wLM2EA==", "requires": { - "@injectivelabs/exceptions": "^1.10.12", - "@injectivelabs/ts-types": "^1.10.12", - "@injectivelabs/utils": "^1.10.12", - "link-module-alias": "^1.2.0", + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", "shx": "^0.3.2" } }, - "@injectivelabs/sdk-ts": { - "version": "1.10.72", - "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz", - "integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==", - "optional": true, + "@injectivelabs/olp-proto-ts": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@injectivelabs/olp-proto-ts/-/olp-proto-ts-1.13.1.tgz", + "integrity": "sha512-dKxse7mZpmvRhm00Wn8Yy93EVEvFD7FPWeWFfxga0Patow3HK0D7k43VV7fE5kX9CDM1bxTatEVQ7WYGq4w0Eg==", "requires": { - "@apollo/client": "^3.5.8", - "@cosmjs/amino": "^0.30.1", - "@cosmjs/proto-signing": "^0.30.1", - "@cosmjs/stargate": "^0.30.1", + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } + }, + "@injectivelabs/sdk-ts": { + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.19.tgz", + "integrity": "sha512-cNmE7nEobZSSxbrnygmSqBASGXmEkk0ftA06qhQTwK/GiYJI6GK5ihRehsSbtatibopqBXB2s3TfsB2cN/IVzQ==", + "requires": { + "@apollo/client": "^3.11.9", + "@cosmjs/amino": "^0.32.3", + "@cosmjs/proto-signing": "^0.32.3", + "@cosmjs/stargate": "^0.32.3", "@ethersproject/bytes": "^5.7.0", - "@injectivelabs/core-proto-ts": "^0.0.14", - "@injectivelabs/exceptions": "^1.10.12", + "@injectivelabs/core-proto-ts": "1.13.3", + "@injectivelabs/exceptions": "^1.14.19", "@injectivelabs/grpc-web": "^0.0.1", "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", - "@injectivelabs/indexer-proto-ts": "1.10.8-rc.4", - "@injectivelabs/mito-proto-ts": "1.0.9", - "@injectivelabs/networks": "^1.10.12", - "@injectivelabs/test-utils": "^1.10.12", - "@injectivelabs/token-metadata": "^1.10.42", - "@injectivelabs/ts-types": "^1.10.12", - "@injectivelabs/utils": "^1.10.12", + "@injectivelabs/indexer-proto-ts": "1.13.1", + "@injectivelabs/mito-proto-ts": "1.13.0", + "@injectivelabs/networks": "^1.14.19", + "@injectivelabs/olp-proto-ts": "1.13.1", + "@injectivelabs/test-utils": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", "@metamask/eth-sig-util": "^4.0.0", - "axios": "^0.27.2", + "@noble/curves": "^1.4.0", + "axios": "^1.6.4", "bech32": "^2.0.0", "bip39": "^3.0.4", - "cosmjs-types": "^0.7.1", - "eth-crypto": "^2.6.0", + "cosmjs-types": "^0.9.0", "ethereumjs-util": "^7.1.4", - "ethers": "^5.7.2", + "ethers": "^6.5.1", "google-protobuf": "^3.21.0", "graphql": "^16.3.0", "http-status-codes": "^2.2.0", "js-sha3": "^0.8.0", "jscrypto": "^1.0.3", "keccak256": "^1.0.6", - "link-module-alias": "^1.2.0", - "rxjs": "^7.8.0", "secp256k1": "^4.0.3", "shx": "^0.3.2", "snakecase-keys": "^5.4.1" }, "dependencies": { + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, "@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "optional": true, + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", "requires": { "@types/node": "*" } }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, + "bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "optional": true, "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -31956,17 +32461,39 @@ "rlp": "^2.2.4" } }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + } + } + }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "optional": true + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" }, "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -31974,201 +32501,128 @@ } }, "graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", - "optional": true + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==" }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "optional": true - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "optional": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} } } }, "@injectivelabs/test-utils": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.3.tgz", - "integrity": "sha512-dVe262sACa7YkRr7mfXx58yI/ieuQqm3IMGq7EMweFKI6Kh2gh8FAM2bsDgm1cGewEIhJ9tWh6OM5uNheeVamg==", - "optional": true, - "requires": { - "axios": "^0.21.1", + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.19.tgz", + "integrity": "sha512-6y0v0FeNGeJJN2sCkOw6BypozaKnf07DtzoomTsev1+6CKMEmO8xryta+aI15Z+2LpQtMaiJi1cqQMEcya6r3Q==", + "requires": { + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/networks": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "@injectivelabs/utils": "^1.14.19", + "axios": "^1.6.4", "bignumber.js": "^9.0.1", - "link-module-alias": "^1.2.0", "shx": "^0.3.2", "snakecase-keys": "^5.1.2", "store2": "^2.12.0" }, "dependencies": { "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "optional": true - } - } - }, - "@injectivelabs/token-metadata": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.5.tgz", - "integrity": "sha512-GiIiNDixfvbfEjzZG7ixtGYmJllFIcA2Xl1LnsK5yawT8Q+/SoSIJig4tE+0CC/AaGHS1GxDKySrIdMse7PZ0w==", - "optional": true, - "requires": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/networks": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "@injectivelabs/utils": "^1.14.5", - "@types/lodash.values": "^4.3.6", - "copyfiles": "^2.4.1", - "jsonschema": "^1.4.0", - "link-module-alias": "^1.2.0", - "lodash": "^4.17.21", - "lodash.values": "^4.3.0", - "shx": "^0.3.2" - }, - "dependencies": { - "@injectivelabs/networks": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.5.tgz", - "integrity": "sha512-9GINd/pPBX6Jyc26pmlLC54s7nLlXsBLZ/1fo8a0nvHkrrODRDE4IldP6KsA9OLVomMPk5TyBUgYLGgM3ST9GA==", - "optional": true, - "requires": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "@injectivelabs/utils": "^1.14.5", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2" - } + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" }, - "@injectivelabs/utils": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.5.tgz", - "integrity": "sha512-L2ul/7rgop8RLJBhlXjt6Q/A6fXeRZ3hhCZFXGXmA63vz9RSqOFHILiRp6hAFsuZbiITjmVx0eubFPaQU0MymA==", - "optional": true, - "requires": { - "@injectivelabs/exceptions": "^1.14.5", - "@injectivelabs/ts-types": "^1.14.5", - "axios": "^0.21.1", - "bignumber.js": "^9.0.1", - "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", - "shx": "^0.3.2", - "snakecase-keys": "^5.1.2", - "store2": "^2.12.0" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "requires": { - "follow-redirects": "^1.14.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } - }, - "bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true - }, - "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "optional": true } } }, "@injectivelabs/ts-types": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.5.tgz", - "integrity": "sha512-dwmEJE90vMr1zkQhz5lX2280sBMe2GvAj98vOHoL2RLTo0OQkJZrirUHwsTkexJf7sFZIT2PlmLCfix9Ulcp5A==", - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.19.tgz", + "integrity": "sha512-nQVJrHC+yDPK4IaYKWZ/CUZPJ4oeKLUwArObvJhlNGMtsypthDGj1MLctc0otMigdTc64ZEpVcdrT9Q3g5P6wQ==", "requires": { - "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "@injectivelabs/utils": { - "version": "1.10.12", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz", - "integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==", - "optional": true, + "version": "1.14.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.19.tgz", + "integrity": "sha512-iiUanV6Y7cUlH5PBoyYpHd4HWDRHlo806DyRZP7IZCpIIvWhyrKRn1JOtzz4j4XDYxH34/99vN3TsK+VUmrQzQ==", "requires": { - "@injectivelabs/exceptions": "^1.10.12", - "@injectivelabs/ts-types": "^1.10.12", - "axios": "^0.21.1", + "@injectivelabs/exceptions": "^1.14.19", + "@injectivelabs/ts-types": "^1.14.19", + "axios": "^1.6.4", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", - "link-module-alias": "^1.2.0", "shx": "^0.3.2", "snakecase-keys": "^5.1.2", "store2": "^2.12.0" }, "dependencies": { "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "optional": true, + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "optional": true + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", - "optional": true + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } } } }, @@ -32396,7 +32850,6 @@ "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==", - "optional": true, "requires": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -32408,8 +32861,7 @@ "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" } } }, @@ -32435,9 +32887,9 @@ "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, "@mysten/bcs": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.7.1.tgz", - "integrity": "sha512-wFPb8bkhwrbiStfZMV5rFM7J+umpke59/dNjDp+UYJKykNlW23LCk2ePyEUvGdb62HGJM1jyOJ8g4egE3OmdKA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", "requires": { "bs58": "^5.0.0" }, @@ -32458,100 +32910,58 @@ } }, "@mysten/sui.js": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz", - "integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==", - "requires": { - "@mysten/bcs": "0.7.1", - "@noble/curves": "^1.0.0", - "@noble/hashes": "^1.3.0", - "@scure/bip32": "^1.3.0", - "@scure/bip39": "^1.2.0", + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "requires": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", "@suchipi/femver": "^1.0.0", - "jayson": "^4.0.0", - "rpc-websockets": "^7.5.1", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", "superstruct": "^1.0.3", "tweetnacl": "^1.0.3" }, "dependencies": { - "@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "requires": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, - "jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", - "requires": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.4.5" - } + "graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==" }, "superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==" }, "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} } } }, "@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", "requires": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.5.0" } }, - "@noble/ed25519": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", - "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==" - }, "@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" - }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==" }, "@openzeppelin/cli": { "version": "2.8.2", @@ -32793,122 +33203,6 @@ } } }, - "@project-serum/anchor": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.25.0.tgz", - "integrity": "sha512-E6A5Y/ijqpfMJ5psJvbw0kVTzLZFUcOFgs6eSM2M2iWE1lVRF18T6hWZVNl6zqZsoz98jgnNHtVGJMs+ds9A7A==", - "requires": { - "@project-serum/borsh": "^0.2.5", - "@solana/web3.js": "^1.36.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^5.3.1", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@project-serum/borsh": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz", - "integrity": "sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==", - "requires": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -33070,34 +33364,27 @@ } }, "@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==" + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==" }, "@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", "requires": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" } }, "@scure/bip39": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", - "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", "requires": { - "@noble/hashes": "~1.1.1", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", - "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==" - } + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" } }, "@sindresorhus/is": { @@ -33137,16 +33424,16 @@ }, "dependencies": { "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" } } }, "@solana/spl-token": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.7.tgz", - "integrity": "sha512-bKGxWTtIw6VDdCBngjtsGlKGLSmiu/8ghSt/IOYJV24BsymRbgq7r12GToeetpxmPaZYLddKwAz7+EwprLfkfg==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.9.tgz", + "integrity": "sha512-1EXHxKICMnab35MvvY/5DBc/K/uQAOJCYnDZXw83McCAYUAfi+rwq6qfd6MmITmSTEhcfBcl/zYxmW/OSN0RmA==", "requires": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", @@ -33165,54 +33452,93 @@ } }, "@solana/web3.js": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.74.0.tgz", - "integrity": "sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg==", - "requires": { - "@babel/runtime": "^7.12.5", - "@noble/ed25519": "^1.7.0", - "@noble/hashes": "^1.1.2", - "@noble/secp256k1": "^1.6.3", - "@solana/buffer-layout": "^4.0.0", - "agentkeepalive": "^4.2.1", + "version": "1.95.4", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.4.tgz", + "integrity": "sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==", + "requires": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", - "bn.js": "^5.0.0", + "bn.js": "^5.2.1", "borsh": "^0.7.0", "bs58": "^4.0.1", - "buffer": "6.0.1", + "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", - "jayson": "^3.4.4", - "node-fetch": "^2.6.7", - "rpc-websockets": "^7.5.1", - "superstruct": "^0.14.2" + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" }, "dependencies": { + "@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "requires": { + "@types/node": "*" + } + }, "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", - "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" } }, + "rpc-websockets": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.4.tgz", + "integrity": "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==", + "requires": { + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "bufferutil": "^4.0.1", + "eventemitter3": "^5.0.1", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.2", + "ws": "^8.5.0" + } + }, "superstruct": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "requires": {} } } }, @@ -33230,123 +33556,28 @@ "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@terra-money/legacy.proto": { - "version": "npm:@terra-money/terra.proto@0.1.7", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", - "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", - "requires": { - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "@terra-money/terra.js": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@terra-money/terra.js/-/terra.js-3.1.9.tgz", - "integrity": "sha512-JulSvOHLM56fL7s+cIjIbZeWPBluq883X1soWxA4TG5rKkDythT/DHeLXr3jP5Ld/26VENPSg6lNvK7cEYKpiw==", + "@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "requires": { - "@classic-terra/terra.proto": "^1.1.0", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.27.2", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "decimal.js": "^10.2.1", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.9" + "tslib": "^2.8.0" }, "dependencies": { - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, - "@terra-money/terra.proto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-2.1.0.tgz", - "integrity": "sha512-rhaMslv3Rkr+QsTQEZs64FKA4QlfO0DfQHaR6yct/EovenMkibDEQ63dEL6yJA6LCaEQGYhyVB9JO9pTUA8ybw==", + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, "requires": { - "@improbable-eng/grpc-web": "^0.14.1", - "google-protobuf": "^3.17.3", - "long": "^4.0.0", - "protobufjs": "~6.11.2" - }, - "dependencies": { - "@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "requires": { - "browser-headers": "^0.4.1" - } - } + "defer-to-connect": "^1.0.1" } }, "@truffle/abi-utils": { @@ -35876,7 +36107,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, "requires": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -35958,33 +36188,16 @@ "@types/http-cache-semantics": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, "requires": { "@types/node": "*" } }, - "@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", - "optional": true - }, - "@types/lodash.values": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/lodash.values/-/lodash.values-4.3.9.tgz", - "integrity": "sha512-IJ20OEfqNwm3k8ENwoM3q0yOs4UMpgtD4GqxB4lwBHToGthHWqhyh5DdSgQjioocz0QK2SSBkJfCq95ZTV8BTw==", - "optional": true, - "requires": { - "@types/lodash": "*" - } - }, "@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -36013,9 +36226,12 @@ "dev": true }, "@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "requires": { + "undici-types": "~6.19.2" + } }, "@types/npm": { "version": "2.0.31", @@ -36067,7 +36283,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, "requires": { "@types/node": "*" } @@ -36108,6 +36323,11 @@ "@types/node": "*" } }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -36242,20 +36462,567 @@ } } }, + "@wormhole-foundation/sdk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.0.3.tgz", + "integrity": "sha512-2R/6W0Cdhst74dsqFq+LzSHSn3/E+IYRAnRqeF3xRvYEjleEbuk1pLTtQ+cfJ/TFxefv/VwG4nrUdK42Kxaoqg==", + "requires": { + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-algorand-core": "1.0.3", + "@wormhole-foundation/sdk-algorand-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-aptos-core": "1.0.3", + "@wormhole-foundation/sdk-aptos-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-base": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-ibc": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-definitions": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-cctp": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-evm-portico": "1.0.3", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3", + "@wormhole-foundation/sdk-solana-cctp": "1.0.3", + "@wormhole-foundation/sdk-solana-core": "1.0.3", + "@wormhole-foundation/sdk-solana-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3", + "@wormhole-foundation/sdk-sui-core": "1.0.3", + "@wormhole-foundation/sdk-sui-tokenbridge": "1.0.3" + } + }, + "@wormhole-foundation/sdk-algorand": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.0.3.tgz", + "integrity": "sha512-DWq1Nbi8hUtiPabpm1NZQ5OJwokWTH4Qp2xwbKtIT1zJvvi6VFVyXwzygh5VrFkxDpmYqsz7pQB8Iqa5pJXL1w==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "algosdk": "2.7.0" + } + }, + "@wormhole-foundation/sdk-algorand-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.0.3.tgz", + "integrity": "sha512-ZuoQdSqq8ScsfxKAIK0r0zIrhfVF3rHcRgTwLgYc1/sH9/FoJG/DH9SxebXIiC8yBGMRfhKEhncNS8oZd6/4CQ==", + "requires": { + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + } + }, + "@wormhole-foundation/sdk-algorand-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.0.3.tgz", + "integrity": "sha512-DqfD+x7bPDViWq5EcKIX2NIQUYtMC+Lrewe/jmldmTwxrZLQzwMi7F+UnqyUacmVhRQ45MsTBoZ0ec6/XUgWvw==", + "requires": { + "@wormhole-foundation/sdk-algorand": "1.0.3", + "@wormhole-foundation/sdk-algorand-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + } + }, + "@wormhole-foundation/sdk-aptos": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.0.3.tgz", + "integrity": "sha512-fE2SnqQs2zcrg6BnagBSAS6SlkXkcfZi7CWBsOrMgmEjuwKUBXyM/fjjUJPCHgDTWwUPd1j3Kr10gdhxDffmVw==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "aptos": "1.21.0" + } + }, + "@wormhole-foundation/sdk-aptos-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.0.3.tgz", + "integrity": "sha512-IMFqPmENwqwTFIKpCDeVbaTzc8RuUWEZmvi40yhF0fu4SWahSBoh/G0q0iwf/yUpDRyEO8ynrcUOU+AoQta4Qw==", + "requires": { + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + } + }, + "@wormhole-foundation/sdk-aptos-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.0.3.tgz", + "integrity": "sha512-KlEqzHg9SkSaNgRpIEcjXOYVt7/ra/kJtYG0F/6wt3YwjsM3mTANTSGUqoF1z9VsViPdffcCwfxKt2U92dZqJA==", + "requires": { + "@wormhole-foundation/sdk-aptos": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.0.3" + } + }, + "@wormhole-foundation/sdk-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.0.3.tgz", + "integrity": "sha512-zhieqHzyopDN9Z60tqa1EBaJhjRsY56qgP9qpaXT7GkMgp5HI1j2msTaJrpVtVOnTKBt78uJXatKP7+pFDKiJA==", + "requires": { + "@scure/base": "^1.1.3" + } + }, + "@wormhole-foundation/sdk-connect": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.0.3.tgz", + "integrity": "sha512-edXkPv2NDe1CSs9dcxC03lbknl1pI3YC/IEEmmn3BXD8xDL9wdvOsOzXifOhHAwUO8mGJiSVuTFRzfxiBIs56w==", + "requires": { + "@wormhole-foundation/sdk-base": "1.0.3", + "@wormhole-foundation/sdk-definitions": "1.0.3", + "axios": "^1.4.0" + }, + "dependencies": { + "axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@wormhole-foundation/sdk-cosmwasm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.0.3.tgz", + "integrity": "sha512-0nP9ZASRyrP/lyRGHof9QQNPLngoP/Ic0R8r+r9/UQyydJhNVzYLtf6YWMqUZzpkugFCpMhz04nKMocnto1I4A==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/proto-signing": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "cosmjs-types": "^0.9.0" + } + }, + "@wormhole-foundation/sdk-cosmwasm-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.0.3.tgz", + "integrity": "sha512-RzrJktyotuHi/2esFFqFgoHqppIZfbjJizYVB6BNtYTGHu/3X9hTedVaMGyLzagAyaxWSCuS4OCN4K1LpqNX9g==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + } + }, + "@wormhole-foundation/sdk-cosmwasm-ibc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.0.3.tgz", + "integrity": "sha512-4SDKVr3/gLJUsvNwMFa74KbIdSW5tm4QQVEys/Y0PfRKSSmGlcn9hgj+e7wfvyR8t6TFjkllypuoJYe6o5dybA==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "cosmjs-types": "^0.9.0" + } + }, + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.0.3.tgz", + "integrity": "sha512-DQU31rPOloLj3iBqsz9MAzNnCIawyN7mN0uCto441+RRMYGyyW/knVIY05rQyB/xDXXhuToCwQNxtEnu75uuwg==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.13-beta.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + } + }, + "@wormhole-foundation/sdk-definitions": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.0.3.tgz", + "integrity": "sha512-ni7msDLSCKOHSTyTTxEI9IPXlOtKtkpdyJ1i4LweOKP5qcncvLo4IJJU69C+kKc+8KwCpmz+VS+z9YAE6e+QHA==", + "requires": { + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.1", + "@wormhole-foundation/sdk-base": "1.0.3" + } + }, + "@wormhole-foundation/sdk-evm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.0.3.tgz", + "integrity": "sha512-RI9t/s1AnuqMQzzGXjqCegKoOGo3RGH79uwj/u4xttkkQ2yxjZw8zXt/QwNQjBaa8F7OnOAMt9T5gAyl49BTGg==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-cctp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.0.3.tgz", + "integrity": "sha512-UfMyrZ4SNbKX+szw7NNPC8qSrP9jO3yEa+y2zVS67TyM0HB6/+pvg+vDaRN4H52kFmqRkIQDZjTNb7FbE5Z/ZA==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.0.3.tgz", + "integrity": "sha512-jpk2kamEMP9TAhAOaaD+yJhGVKm3h8yfEUPdyBKAcUvBMuRmf1RY410Z1PPqW9fOLaynFmzukd44ITsh8wsnIQ==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-portico": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.0.3.tgz", + "integrity": "sha512-j0fXggpWb7OR4xDHiQtI5imd620akTVUMw7gL4TLYyAFg4nPDeXyLe3uG7uyfvMoJd6hhhSkVQE2AEZFok0WsA==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.0.3.tgz", + "integrity": "sha512-2Fuxui8JET3chLs98WZAx2lqjGa4U8Gi3ulDFyCRGic/OkLRaWQhwKHW0+9qUYQgzbd5upvVBwMHtmcBzK3aiw==", + "requires": { + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-evm-core": "1.0.3", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-solana": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.0.3.tgz", + "integrity": "sha512-HRR13E9qfgoYpcijc+UZU16ZRfB01Z4GqXyc1HuNpQRMvkwGWzBaBZOcmehmCITvU8izIW7DhGgSLWXraWL3hg==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "rpc-websockets": "^7.10.0" + } + }, + "@wormhole-foundation/sdk-solana-cctp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.0.3.tgz", + "integrity": "sha512-eyhvxRTcKwpj5KFWIbdyRN7xds16g/IT65ctJgUv5wdd+tEoESuVIK0Ad+11Ep5JtwmSdF6IiwcN0Sfl6ckG1Q==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3" + } + }, + "@wormhole-foundation/sdk-solana-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.0.3.tgz", + "integrity": "sha512-k65W7URd0vAw58UmIKibz+CkXijpVtAER46F9D+HZzSPGggcf/Ps9xfY285+fYMgAKSkyMqlLNrwsTR2STM/0w==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3" + } + }, + "@wormhole-foundation/sdk-solana-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.0.3.tgz", + "integrity": "sha512-2ifcR3PZu/ggGrkzqlbgMlEEEELWBzOJXpPhE4gmMdynXMlZYl5HYOcx4qBnOTI336VjawPnTG+EFc54VeJoZA==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "^1.95.2", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-solana": "1.0.3", + "@wormhole-foundation/sdk-solana-core": "1.0.3" + } + }, + "@wormhole-foundation/sdk-sui": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.0.3.tgz", + "integrity": "sha512-dsZ8ymv/sV0N6nmbcIquQJazBi1YNsqtKvIlhMqes0uS2iv+YvpPLfLKLzxn3KGWlXbteuJWdZtwOl/v3zhySQ==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3" + } + }, + "@wormhole-foundation/sdk-sui-core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.0.3.tgz", + "integrity": "sha512-5JzbJpg81XWKcY3HsCDX17dxaEgs8wMzDwZhNI2cnyBDXD8rhhDMcbTfiOLxygPtjjrplTMW6JE/QHurdXEJWw==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3" + } + }, + "@wormhole-foundation/sdk-sui-tokenbridge": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.0.3.tgz", + "integrity": "sha512-lN8MLanfGUM7P3ISORITx9nYJTkFahrbd108pp8QTA6uA0kU4AW5FHLaNZoYxPGQZOhvQV6C94s3fQZFAYSi1w==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-sui": "1.0.3", + "@wormhole-foundation/sdk-sui-core": "1.0.3" + } + }, "@wry/caches": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -36263,16 +37030,14 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -36280,16 +37045,14 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -36297,16 +37060,14 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "optional": true, "requires": { "tslib": "^2.3.0" }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -36322,105 +37083,6 @@ "ethers": "^5.7.0" } }, - "@xpla/xpla.js": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@xpla/xpla.js/-/xpla.js-0.2.3.tgz", - "integrity": "sha512-Tfk7hCGWXtwr08reY3Pi6dmzIqFbzri9jcyzJdfNmdo4cN0PMwpRJuZZcPmtxiIUnNef3AN1E/6nJUD5MKniuA==", - "requires": { - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/signing-key": "^5.6.2", - "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", - "@terra-money/terra.proto": "^2.1.0", - "axios": "^0.26.1", - "bech32": "^2.0.0", - "bip32": "^2.0.6", - "bip39": "^3.0.3", - "bufferutil": "^4.0.3", - "crypto-addr-codec": "^0.1.7", - "decimal.js": "^10.2.1", - "elliptic": "^6.5.4", - "ethereumjs-util": "^7.1.5", - "jscrypto": "^1.0.1", - "readable-stream": "^3.6.0", - "secp256k1": "^4.0.2", - "tmp": "^0.2.1", - "utf-8-validate": "^5.0.5", - "ws": "^7.5.8" - }, - "dependencies": { - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "requires": { - "@types/node": "*" - } - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} - } - } - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -36481,33 +37143,11 @@ "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, "agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "requires": { - "debug": "^4.1.0", - "depd": "^2.0.0", "humanize-ms": "^1.2.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "ajv": { @@ -36856,35 +37496,36 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "aptos": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.5.0.tgz", - "integrity": "sha512-N7OuRtU7IYHkDkNx+4QS3g/QQGCp+36KzYn3oXPmT7Kttfuv+UKliQVdjy3cLmwd/DCQSh9ObTovwdxnHjUn0g==", - "requires": { - "@noble/hashes": "1.1.3", - "@scure/bip39": "1.1.0", - "axios": "0.27.2", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.21.0.tgz", + "integrity": "sha512-PRKjoFgL8tVEc9+oS7eJUv8GNxx8n3+0byH2+m7CP3raYOD6yFKOecuwjVMIJmgfpjp6xH0P0HDMGZAXmSyU0Q==", + "requires": { + "@aptos-labs/aptos-client": "^0.1.0", + "@noble/hashes": "1.3.3", + "@scure/bip39": "1.2.1", + "eventemitter3": "^5.0.1", "form-data": "4.0.0", "tweetnacl": "1.0.3" }, "dependencies": { "@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" } }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "form-data": { "version": "4.0.0", @@ -37216,14 +37857,9 @@ } }, "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, - "big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "big.js": { "version": "5.2.2", @@ -37249,11 +37885,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, - "binary-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/binary-parser/-/binary-parser-2.2.1.tgz", - "integrity": "sha512-5ATpz/uPDgq5GgEDxTB4ouXCde7q2lqAQlSdBRQVl/AJnxmQmhIfyxJx+0MGu//D5rHQifkfGbWWlaysG0o9NA==" - }, "bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -37262,43 +37893,12 @@ "file-uri-to-path": "1.0.0" } }, - "bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "requires": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "dependencies": { - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - } - } - }, "bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - } + "@noble/hashes": "^1.2.0" } }, "bip66": { @@ -37604,6 +38204,7 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "devOptional": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -37739,16 +38340,16 @@ "upper-case": "^1.1.1" } }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, "caniuse-lite": { "version": "1.0.30001299", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz", "integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==" }, - "capability": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/capability/-/capability-0.2.5.tgz", - "integrity": "sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==" - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -38129,7 +38730,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, "requires": { "mimic-response": "^1.0.0" } @@ -38478,144 +39078,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "optional": true, - "requires": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "optional": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "optional": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "optional": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "optional": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "optional": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "optional": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "optional": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "optional": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "optional": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "optional": true - } - } - }, "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", @@ -38654,20 +39116,15 @@ } }, "cosmjs-types": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", - "integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==", - "optional": true, - "requires": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" }, "crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "devOptional": true, + "dev": true, "requires": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -38750,20 +39207,6 @@ } } }, - "crypto-addr-codec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz", - "integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==", - "requires": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -38886,11 +39329,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -39026,13 +39464,24 @@ "abstract-leveldown": "~2.6.0" } }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "devOptional": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -39063,7 +39512,8 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true }, "des.js": { "version": "1.0.1", @@ -39232,49 +39682,6 @@ "safer-buffer": "^2.1.0" } }, - "eccrypto": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", - "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", - "optional": true, - "requires": { - "acorn": "7.1.1", - "elliptic": "6.5.4", - "es6-promise": "4.2.8", - "nan": "2.14.0", - "secp256k1": "3.7.1" - }, - "dependencies": { - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "optional": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "optional": true - }, - "secp256k1": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", - "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.4.1", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - } - } - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -39454,16 +39861,6 @@ "prr": "~1.0.1" } }, - "error-polyfill": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/error-polyfill/-/error-polyfill-0.1.3.tgz", - "integrity": "sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==", - "requires": { - "capability": "^0.2.5", - "o3": "^1.0.3", - "u3": "^0.1.1" - } - }, "es-abstract": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", @@ -39502,6 +39899,19 @@ } } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -40000,68 +40410,6 @@ } } }, - "eth-crypto": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", - "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", - "optional": true, - "requires": { - "@babel/runtime": "7.20.13", - "@ethereumjs/tx": "3.5.2", - "@types/bn.js": "5.1.1", - "eccrypto": "1.1.6", - "ethereumjs-util": "7.1.5", - "ethers": "5.7.2", - "secp256k1": "5.0.0" - }, - "dependencies": { - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "optional": true, - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - }, - "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "optional": true - }, - "secp256k1": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", - "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", - "optional": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - } - } - } - }, "eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", @@ -40585,11 +40933,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -40666,7 +41009,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "devOptional": true + "dev": true }, "expand-brackets": { "version": "2.1.4", @@ -41351,10 +41694,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -41811,14 +42153,15 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-iterator": { @@ -41931,18 +42274,26 @@ } }, "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "optional": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "requires": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" } }, "google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } }, "got": { "version": "9.6.0", @@ -41963,6 +42314,17 @@ "url-parse-lax": "^3.0.0" } }, + "gql.tada": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", + "requires": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.3", + "@gql.tada/internal": "1.0.8" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -41977,14 +42339,12 @@ "graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "optional": true + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" }, "graphql-tag": { "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "optional": true, "requires": { "tslib": "^2.1.0" }, @@ -41992,8 +42352,7 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "optional": true + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" } } }, @@ -42037,6 +42396,19 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", @@ -42044,10 +42416,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-to-string-tag-x": { "version": "1.4.1", @@ -42141,6 +42512,14 @@ "minimalistic-assert": "^1.0.0" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -42175,7 +42554,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "optional": true, "requires": { "react-is": "^16.7.0" } @@ -42224,13 +42602,13 @@ "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -42242,7 +42620,8 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true } } }, @@ -42270,8 +42649,7 @@ "http-status-codes": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", - "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", - "optional": true + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" }, "http2-wrapper": { "version": "2.2.0", @@ -42858,9 +43236,9 @@ } }, "jayson": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", - "integrity": "sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.2.tgz", + "integrity": "sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==", "requires": { "@types/connect": "^3.4.33", "@types/node": "^12.12.54", @@ -42872,9 +43250,8 @@ "isomorphic-ws": "^4.0.1", "json-stringify-safe": "^5.0.1", "JSONStream": "^1.3.5", - "lodash": "^4.17.20", "uuid": "^8.3.2", - "ws": "^7.4.5" + "ws": "^7.5.10" }, "dependencies": { "@types/node": { @@ -42888,18 +43265,13 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "requires": {} } } }, - "js-base64": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", - "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==" - }, "js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -43066,12 +43438,6 @@ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" }, - "jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "optional": true - }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -43118,7 +43484,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "optional": true, "requires": { "bn.js": "^5.2.0", "buffer": "^6.0.3", @@ -43128,14 +43493,12 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "optional": true + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "optional": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -43529,41 +43892,17 @@ "type-check": "~0.3.2" } }, - "libsodium": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", - "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==", - "optional": true - }, - "libsodium-wrappers": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", - "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", - "optional": true, - "requires": { - "libsodium": "^0.7.13" - } + "libsodium-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==" }, - "link-module-alias": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/link-module-alias/-/link-module-alias-1.2.0.tgz", - "integrity": "sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==", - "optional": true, + "libsodium-wrappers-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", + "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", "requires": { - "chalk": "^2.4.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "optional": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } + "libsodium-sumo": "^0.7.15" } }, "loader-utils": { @@ -43638,12 +43977,6 @@ "dev": true, "optional": true }, - "lodash.values": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", - "optional": true - }, "log-symbols": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", @@ -43668,7 +44001,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "devOptional": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -43750,8 +44082,7 @@ "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "optional": true + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, "map-visit": { "version": "1.0.0", @@ -44474,11 +44805,6 @@ } } }, - "mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -44538,49 +44864,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "near-api-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-1.1.0.tgz", - "integrity": "sha512-qYKv1mYsaDZc2uYndhS+ttDhR9+60qFc+ZjD6lWsAxr3ZskMjRwPffDGQZYhC7BRDQMe1HEbk6d5mf+TVm0Lqg==", - "requires": { - "bn.js": "5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.0", - "depd": "^2.0.0", - "error-polyfill": "^0.1.3", - "http-errors": "^1.7.2", - "js-sha256": "^0.9.0", - "mustache": "^4.0.0", - "node-fetch": "^2.6.1", - "text-encoding-utf-8": "^1.0.2", - "tweetnacl": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - } - } - }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -44782,42 +45065,6 @@ "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", "dev": true }, - "noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", - "optional": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "optional": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "optional": true - } - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -44863,14 +45110,6 @@ } } }, - "o3": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/o3/-/o3-1.0.3.tgz", - "integrity": "sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==", - "requires": { - "capability": "^0.2.5" - } - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -44957,8 +45196,7 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -45015,7 +45253,6 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", - "optional": true, "requires": { "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", @@ -45027,16 +45264,14 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", - "optional": true, "requires": { "tslib": "^2.3.0" } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -45912,7 +46147,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "devOptional": true + "dev": true }, "process": { "version": "0.5.2", @@ -45954,7 +46189,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "optional": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -45994,8 +46228,7 @@ "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "prr": { "version": "1.0.1", @@ -46110,8 +46343,7 @@ "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "randombytes": { "version": "2.1.0", @@ -46198,8 +46430,7 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "optional": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "readable-stream": { "version": "2.3.7", @@ -46233,14 +46464,12 @@ "readonly-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", - "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", - "optional": true + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==" }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "optional": true, "requires": { "resolve": "^1.1.6" } @@ -46272,9 +46501,9 @@ } }, "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "regex-not": { "version": "1.0.2", @@ -46291,6 +46520,12 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "rehackt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "requires": {} + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -46379,8 +46614,7 @@ "resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "resolve-cwd": { "version": "2.0.0", @@ -46458,8 +46692,7 @@ "response-iterator": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", - "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", - "optional": true + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" }, "responselike": { "version": "1.0.2", @@ -46509,11 +46742,6 @@ "inherits": "^2.0.1" } }, - "ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==" - }, "rlp": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", @@ -46523,11 +46751,10 @@ } }, "rpc-websockets": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", - "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.11.2.tgz", + "integrity": "sha512-pL9r5N6AVHlMN/vT98+fcO+5+/UcPLf/4tq+WUaid/PPUGS/ttJ3y8e9IqmaWKtShNAysMSjkczuEA49NuV7UQ==", "requires": { - "@babel/runtime": "^7.17.2", "bufferutil": "^4.0.1", "eventemitter3": "^4.0.7", "utf-8-validate": "^5.0.2", @@ -46546,9 +46773,9 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "requires": {} } } @@ -46646,13 +46873,34 @@ "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" }, "secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "requires": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" + }, + "dependencies": { + "elliptic": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz", + "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + } } }, "seek-bzip": { @@ -46818,7 +47066,8 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true }, "sha.js": { "version": "2.4.11", @@ -46829,25 +47078,6 @@ "safe-buffer": "^5.0.1" } }, - "sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "requires": { - "buffer": "6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } - } - }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -46871,7 +47101,6 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "optional": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -46882,7 +47111,6 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "optional": true, "requires": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -46959,7 +47187,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.5.0.tgz", "integrity": "sha512-r3kRtnoPu3FxGJ3fny6PKNnU3pteb29o6qAa0ugzhSseKNWRkw1dw8nIjXMyyKaU9vQxxVIE62Mb3bKbdrgpiw==", - "optional": true, "requires": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", @@ -46970,7 +47197,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "optional": true, "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -46980,7 +47206,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, "requires": { "tslib": "^2.0.3" } @@ -46989,7 +47214,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -46999,23 +47223,20 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "optional": true, "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "optional": true + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==" } } }, @@ -47396,13 +47617,13 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true }, "store2": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", - "optional": true + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==" }, "stream-each": { "version": "1.2.3", @@ -47891,18 +48112,6 @@ "setimmediate": "^1.0.4" } }, - "tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "requires": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - } - }, "tiny-typed-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", @@ -47996,7 +48205,8 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true }, "toml": { "version": "3.0.0", @@ -49231,11 +49441,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, "bignumber.js": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.0.2.tgz", @@ -50971,16 +51176,14 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "optional": true, "requires": { "tslib": "^2.1.0" }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -51028,8 +51231,7 @@ "tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "devOptional": true + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "type": { "version": "1.2.0", @@ -51635,11 +51837,6 @@ "is-typedarray": "^1.0.0" } }, - "typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" - }, "typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", @@ -51674,11 +51871,6 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, - "u3": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/u3/-/u3-0.1.1.tgz", - "integrity": "sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==" - }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -51712,6 +51904,11 @@ "integrity": "sha512-QvjkYpiD+dJJraRA8+dGAU4i7aBbb2s0S3jA45TFOvg2VgqvdCDd/3N6CqA8gluk1W91GLoXg5enMUx560QzuA==", "dev": true }, + "undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -51802,12 +51999,6 @@ } } }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "optional": true - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -51910,6 +52101,7 @@ "version": "5.0.10", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "devOptional": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -52811,14 +53003,6 @@ "string-width": "^1.0.2 || 2" } }, - "wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", - "requires": { - "bs58check": "<3.0.0" - } - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -53017,7 +53201,6 @@ "version": "11.14.0", "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", - "optional": true, "requires": { "globalthis": "^1.0.1", "symbol-observable": "^2.0.3" @@ -53026,8 +53209,7 @@ "symbol-observable": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", - "optional": true + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" } } }, @@ -53107,11 +53289,6 @@ "is-plain-obj": "^2.1.0" }, "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, "decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", @@ -53142,14 +53319,12 @@ "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "optional": true + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" }, "zen-observable-ts": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "optional": true, "requires": { "zen-observable": "0.8.15" } diff --git a/ethereum/package.json b/ethereum/package.json index 2f86f84bd2..c33ad4f045 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -45,8 +45,11 @@ "author": "", "license": "ISC", "dependencies": { - "@certusone/wormhole-sdk": "^0.10.15", "@typechain/ethers-v5": "^10.2.0", + "@wormhole-foundation/sdk": "^1.0.3", + "@wormhole-foundation/sdk-base": "^1.0.3", + "@wormhole-foundation/sdk-definitions": "^1.0.3", + "@wormhole-foundation/sdk-evm": "^1.0.3", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", diff --git a/ethereum/ts-scripts/relayer/config/checkNetworks.ts b/ethereum/ts-scripts/relayer/config/checkNetworks.ts index c11d0f5f58..2969293db4 100644 --- a/ethereum/ts-scripts/relayer/config/checkNetworks.ts +++ b/ethereum/ts-scripts/relayer/config/checkNetworks.ts @@ -1,4 +1,3 @@ -import { coalesceChainName } from "@certusone/wormhole-sdk"; import { env, getSigner, @@ -6,6 +5,7 @@ import { loadChains, } from "../helpers/env"; import { readFileSync, writeFileSync } from "fs"; +import { toChain } from "@wormhole-foundation/sdk-base"; const processName = "checkNetworks"; @@ -29,7 +29,7 @@ async function main() { process.exit(1); } console.log(`Balance ${balance.toString()}`); - console.log(`Network ${coalesceChainName(chain.chainId)} (${chain.chainId}) checked`); + console.log(`Network ${toChain(chain.chainId)} (${chain.chainId}) checked`); } console.log(""); console.log("Networks checked"); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index 2c2b71994c..e1d996ba68 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -1,4 +1,3 @@ -import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; import { BigNumber, BigNumberish, utils, ContractReceipt } from 'ethers'; import { init, @@ -10,11 +9,13 @@ import { getDeliveryProviderAddress, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; +import { ChainId } from "@wormhole-foundation/sdk-base"; import type { DeliveryProvider, DeliveryProviderStructs, } from "../../../ethers-contracts/DeliveryProvider"; +import { nativeEvmAddressToHex } from '../helpers/utils'; type AwaitedProperties = { [K in keyof T]: Awaited; @@ -327,8 +328,7 @@ async function processTargetChainAddressUpdate( chain: ChainInfo, ) { const currentTargetChainAddress = await deliveryProvider.getTargetChainAddress(chain.chainId); - const targetChainAddress = - "0x" + tryNativeToHexString(getDeliveryProviderAddress(chain), "ethereum"); + const targetChainAddress = nativeEvmAddressToHex(getDeliveryProviderAddress(chain)); if (currentTargetChainAddress !== targetChainAddress) { const update = getUpdateConfig(updates, chain.chainId); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts index c87ff73bda..6db143a4af 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts @@ -1,4 +1,3 @@ -import { ChainId } from "@certusone/wormhole-sdk"; import { init, ChainInfo, @@ -9,6 +8,7 @@ import { import { buildOverrides } from "../helpers/deployments"; import type { DeliveryProvider } from "../../../ethers-contracts/DeliveryProvider"; +import { ChainId } from "@wormhole-foundation/sdk-base" type PricingWalletAction = { shouldUpdate: boolean; diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts index 8026ff471f..64369cbedc 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts @@ -1,4 +1,3 @@ -import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk"; import type { BigNumberish } from "ethers"; import { init, @@ -10,9 +9,10 @@ import { getOperatingChains, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { wait } from "../helpers/utils"; +import { nativeEvmAddressToHex, wait } from "../helpers/utils"; import type { DeliveryProviderStructs } from "../../../ethers-contracts/DeliveryProvider"; +import { ChainId } from "@wormhole-foundation/sdk-base" /** * Meant for `config.pricingInfo` @@ -83,8 +83,7 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { ); } const targetChainProviderAddress = getDeliveryProviderAddress(targetChain); - const remoteDeliveryProvider = - "0x" + tryNativeToHexString(targetChainProviderAddress, "ethereum"); + const remoteDeliveryProvider = nativeEvmAddressToHex(targetChainProviderAddress); const chainConfigUpdate: DeliveryProviderStructs.UpdateStruct = { chainId: targetChain.chainId, updateAssetConversionBuffer: true, diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index fe9b51db05..486772fd9a 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -20,7 +20,8 @@ import { } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; -import { CONTRACTS, ChainId, coalesceChainName } from "@certusone/wormhole-sdk"; +import { ChainId, toChain } from "@wormhole-foundation/sdk-base"; +import * as wh from "@wormhole-foundation/sdk"; export const setupContractSalt = Buffer.from("0xSetup"); export const proxyContractSalt = Buffer.from("0xGenericRelayer"); @@ -171,16 +172,16 @@ export async function deployCreate2Factory( } function checkCoreAddress(wormhole: string, env: string, chainId: ChainId) { - const chainName = coalesceChainName(chainId); + const chainName = toChain(chainId); if (chainName === undefined) { return; } // We assume other environments are local devnets - const contractSet = env === "mainnet" ? "MAINNET" : env === "testnet" ? "TESTNET" : undefined; + const contractSet = env === "mainnet" ? "Mainnet" : env === "testnet" ? "Testnet" : undefined; if (contractSet === undefined) return; - const sdkWormhole = CONTRACTS[contractSet][chainName].core; + const sdkWormhole = wh.getContracts(contractSet, chainName).coreBridge; if (sdkWormhole === undefined) { console.error(`Warning: SDK Wormhole address for chain ${chainId} is undefined.`); return; diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 44560ef7ca..21865f37c7 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -1,4 +1,3 @@ -import { ChainId } from "@certusone/wormhole-sdk"; import { ethers } from "ethers"; import fs from "fs"; @@ -13,6 +12,7 @@ import { Create2Factory, Create2Factory__factory, } from "../../../ethers-contracts"; +import { ChainId } from "@wormhole-foundation/sdk-base"; export interface ContractsJson { /** diff --git a/ethereum/ts-scripts/relayer/helpers/utils.ts b/ethereum/ts-scripts/relayer/helpers/utils.ts index 9ad9e7a107..80e1c254c0 100644 --- a/ethereum/ts-scripts/relayer/helpers/utils.ts +++ b/ethereum/ts-scripts/relayer/helpers/utils.ts @@ -1,5 +1,10 @@ import { ContractReceipt, ContractTransaction } from "ethers"; +import * as wh from "@wormhole-foundation/sdk"; export function wait(tx: ContractTransaction): Promise { return tx.wait(); } + +export function nativeEvmAddressToHex(address: string): string { + return (new wh.UniversalAddress(address, wh.platformToAddressFormat("Evm"))).toString(); +} diff --git a/ethereum/ts-scripts/relayer/helpers/vaa.ts b/ethereum/ts-scripts/relayer/helpers/vaa.ts index 4502d5e1dc..91365485f0 100644 --- a/ethereum/ts-scripts/relayer/helpers/vaa.ts +++ b/ethereum/ts-scripts/relayer/helpers/vaa.ts @@ -1,5 +1,5 @@ +import * as wh from "@wormhole-foundation/sdk"; import { ethers } from "ethers"; -import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { ChainInfo, getWormholeRelayerAddress, @@ -7,6 +7,7 @@ import { loadGuardianKeys, loadGuardianSetIndex, } from "./env"; +import { nativeEvmAddressToHex } from "./utils"; const elliptic = require("elliptic"); const governanceChainId = 1; @@ -16,6 +17,7 @@ const governanceContract = const wormholeRelayerModule = "0x0000000000000000000000000000000000576f726d686f6c6552656c61796572"; + export function createWormholeRelayerUpgradeVAA( chain: ChainInfo, newAddress: string, @@ -33,7 +35,7 @@ export function createWormholeRelayerUpgradeVAA( wormholeRelayerModule, 2, chain.chainId, - "0x" + tryNativeToHexString(newAddress, "ethereum"), + nativeEvmAddressToHex(newAddress) ], ); @@ -54,8 +56,7 @@ export function createDefaultDeliveryProviderVAA(chain: ChainInfo) { wormholeRelayerModule, 3, chain.chainId, - "0x" + - tryNativeToHexString(getDeliveryProviderAddress(chain), "ethereum"), + nativeEvmAddressToHex(getDeliveryProviderAddress(chain)) ], ); @@ -83,7 +84,7 @@ export async function createRegisterChainVAA( 1, 0, chain.chainId, - "0x" + tryNativeToHexString(coreRelayerAddress, "ethereum"), + nativeEvmAddressToHex(coreRelayerAddress) ], ); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 84feddad4b..3483bdf730 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -7,10 +7,10 @@ import { loadMockIntegrations, getChain, } from "../helpers/env"; -import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { deployMockIntegration } from "../helpers/deployments"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; +import { nativeEvmAddressToHex } from "../helpers/utils"; const processName = "deployMockIntegration"; init(); @@ -54,7 +54,7 @@ async function run() { const mockIntegrations = loadMockIntegrations(); const emitters = loadMockIntegrations().map(({ address, chainId }) => ({ chainId, - addr: "0x" + tryNativeToHexString(address, "ethereum"), + addr: nativeEvmAddressToHex(address) })) satisfies XAddressStruct[]; const registerTasks = await Promise.allSettled( diff --git a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts index 91913f44b4..750d36050a 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts @@ -1,6 +1,5 @@ -import * as wh from "@certusone/wormhole-sdk"; -//TODO address sdk version mismatch -//import { Implementation__factory, LogMessagePublishedEvent } from "@certusone/wormhole-sdk" +import { ChainId } from "@wormhole-foundation/sdk-base"; +import { VAA } from "@wormhole-foundation/sdk-definitions"; import { ChainInfo, getWormholeRelayer, @@ -108,13 +107,13 @@ async function queryMessageOnTarget( } export async function encodeEmitterAddress( - myChainId: wh.ChainId, + myChainId: ChainId, emitterAddressStr: string ): Promise { - if (myChainId === wh.CHAIN_ID_SOLANA || myChainId === wh.CHAIN_ID_PYTHNET) { + if (myChainId === Chain || myChainId === wh.CHAIN_ID_PYTHNET) { return wh.getEmitterAddressSolana(emitterAddressStr); } - if (wh.isTerraChain(myChainId)) { + if (isTerraChain(myChainId)) { return wh.getEmitterAddressTerra(emitterAddressStr); } if (wh.isEVMChain(myChainId)) { @@ -123,10 +122,11 @@ export async function encodeEmitterAddress( throw new Error(`Unrecognized wormhole chainId ${myChainId}`); } + function fetchVaaFromLog( bridgeLog: any, - chainId: wh.ChainId -): Promise { + chainId: ChainId +): Promise { throw Error("fetchVAA unimplemented"); // const iface = Implementation__factory.createInterface(); // const log = (iface.parseLog( diff --git a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts index f88c6c9243..db0410a092 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts @@ -4,9 +4,9 @@ import { getMockIntegrationAddress, getOperatingChains, } from "../helpers/env"; -import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; +import { nativeEvmAddressToHex } from "../helpers/utils"; const processName = "registerMockIntegration"; init(); @@ -18,8 +18,7 @@ async function run() { const emitters = allChains.map((chain) => ({ chainId: chain.chainId, - addr: - "0x" + tryNativeToHexString(getMockIntegrationAddress(chain), "ethereum"), + addr: nativeEvmAddressToHex(getMockIntegrationAddress(chain)), })) satisfies XAddressStruct[]; const results = await Promise.allSettled( diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index 9eab646491..c2d19d1666 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -1,4 +1,3 @@ -import { tryNativeToHexString } from "@certusone/wormhole-sdk"; import { inspect } from "util"; import { @@ -9,7 +8,7 @@ import { getWormholeRelayerAddress, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { wait } from "../helpers/utils"; +import { nativeEvmAddressToHex, wait } from "../helpers/utils"; import { createRegisterChainVAA } from "../helpers/vaa"; import type { WormholeRelayer } from "../../../ethers-contracts"; @@ -62,8 +61,7 @@ async function registerWormholeRelayer( const registration = await wormholeRelayer.getRegisteredWormholeRelayerContract(targetChain.chainId); if (registration !== zeroBytes32) { const registrationAddress = await getWormholeRelayerAddress(targetChain); - const expectedRegistration = - "0x" + tryNativeToHexString(registrationAddress, "ethereum"); + const expectedRegistration = nativeEvmAddressToHex(registrationAddress); if (registration.toLowerCase() !== expectedRegistration.toLowerCase()) { throw new Error(`Found an unexpected registration for chain ${targetChain.chainId} on chain ${operatingChain.chainId} Expected: ${expectedRegistration} diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts index b755bca7ef..fd835e71f0 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/submitWormholeRelayerImplementationUpgrade.ts @@ -1,4 +1,3 @@ -import { ChainId } from "@certusone/wormhole-sdk"; import { init, getOperatingChains, @@ -6,7 +5,7 @@ import { ChainInfo, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; - +import { ChainId } from "@wormhole-foundation/sdk-base"; import { inspect } from "util"; const processName = "submitWormholeRelayerImplementationUpgrade"; From bcccc775f34e9008b0f92293c1d85818b79aa058 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 11:25:02 -0300 Subject: [PATCH 161/174] More changes to scripts. --- ethereum/package-lock.json | 3 -- ethereum/package.json | 3 -- .../configureDeliveryProvider.ts | 6 ++-- ...configureDeliveryProviderPriceAssistant.ts | 2 +- .../initializeDeliveryProvider.ts | 4 +-- .../ts-scripts/relayer/helpers/deployments.ts | 5 ++-- ethereum/ts-scripts/relayer/helpers/env.ts | 12 ++++++-- ethereum/ts-scripts/relayer/helpers/utils.ts | 11 +++++-- ethereum/ts-scripts/relayer/helpers/vaa.ts | 8 ++--- .../mockIntegration/deployMockIntegration.ts | 4 +-- .../relayer/mockIntegration/messageUtils.ts | 29 +++++++++---------- .../registerMockIntegration.ts | 4 +-- .../registerChainsWormholeRelayerSelfSign.ts | 4 +-- 13 files changed, 49 insertions(+), 46 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index d47709bdd1..e2c2482d35 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -11,9 +11,6 @@ "dependencies": { "@typechain/ethers-v5": "^10.2.0", "@wormhole-foundation/sdk": "^1.0.3", - "@wormhole-foundation/sdk-base": "^1.0.3", - "@wormhole-foundation/sdk-definitions": "^1.0.3", - "@wormhole-foundation/sdk-evm": "^1.0.3", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", diff --git a/ethereum/package.json b/ethereum/package.json index c33ad4f045..8fab2cc921 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -47,9 +47,6 @@ "dependencies": { "@typechain/ethers-v5": "^10.2.0", "@wormhole-foundation/sdk": "^1.0.3", - "@wormhole-foundation/sdk-base": "^1.0.3", - "@wormhole-foundation/sdk-definitions": "^1.0.3", - "@wormhole-foundation/sdk-evm": "^1.0.3", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts index e1d996ba68..30430575bc 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProvider.ts @@ -9,13 +9,13 @@ import { getDeliveryProviderAddress, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { ChainId } from "@wormhole-foundation/sdk-base"; +import { ChainId } from "@wormhole-foundation/sdk"; import type { DeliveryProvider, DeliveryProviderStructs, } from "../../../ethers-contracts/DeliveryProvider"; -import { nativeEvmAddressToHex } from '../helpers/utils'; +import { nativeEthereumAddressToHex } from '../helpers/utils'; type AwaitedProperties = { [K in keyof T]: Awaited; @@ -328,7 +328,7 @@ async function processTargetChainAddressUpdate( chain: ChainInfo, ) { const currentTargetChainAddress = await deliveryProvider.getTargetChainAddress(chain.chainId); - const targetChainAddress = nativeEvmAddressToHex(getDeliveryProviderAddress(chain)); + const targetChainAddress = nativeEthereumAddressToHex(getDeliveryProviderAddress(chain)); if (currentTargetChainAddress !== targetChainAddress) { const update = getUpdateConfig(updates, chain.chainId); diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts index 6db143a4af..6b813089cc 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/configureDeliveryProviderPriceAssistant.ts @@ -8,7 +8,7 @@ import { import { buildOverrides } from "../helpers/deployments"; import type { DeliveryProvider } from "../../../ethers-contracts/DeliveryProvider"; -import { ChainId } from "@wormhole-foundation/sdk-base" +import { ChainId } from "@wormhole-foundation/sdk" type PricingWalletAction = { shouldUpdate: boolean; diff --git a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts index 64369cbedc..7227900773 100644 --- a/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts +++ b/ethereum/ts-scripts/relayer/deliveryProvider/initializeDeliveryProvider.ts @@ -9,7 +9,7 @@ import { getOperatingChains, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { nativeEvmAddressToHex, wait } from "../helpers/utils"; +import { nativeEthereumAddressToHex, wait } from "../helpers/utils"; import type { DeliveryProviderStructs } from "../../../ethers-contracts/DeliveryProvider"; import { ChainId } from "@wormhole-foundation/sdk-base" @@ -83,7 +83,7 @@ async function configureChainsDeliveryProvider(chain: ChainInfo) { ); } const targetChainProviderAddress = getDeliveryProviderAddress(targetChain); - const remoteDeliveryProvider = nativeEvmAddressToHex(targetChainProviderAddress); + const remoteDeliveryProvider = nativeEthereumAddressToHex(targetChainProviderAddress); const chainConfigUpdate: DeliveryProviderStructs.UpdateStruct = { chainId: targetChain.chainId, updateAssetConversionBuffer: true, diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 486772fd9a..c3fbf2f62c 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -20,8 +20,7 @@ import { } from "./env"; import { ethers } from "ethers"; import { wait } from "./utils"; -import { ChainId, toChain } from "@wormhole-foundation/sdk-base"; -import * as wh from "@wormhole-foundation/sdk"; +import { ChainId, getContracts, toChain } from "@wormhole-foundation/sdk"; export const setupContractSalt = Buffer.from("0xSetup"); export const proxyContractSalt = Buffer.from("0xGenericRelayer"); @@ -181,7 +180,7 @@ function checkCoreAddress(wormhole: string, env: string, chainId: ChainId) { const contractSet = env === "mainnet" ? "Mainnet" : env === "testnet" ? "Testnet" : undefined; if (contractSet === undefined) return; - const sdkWormhole = wh.getContracts(contractSet, chainName).coreBridge; + const sdkWormhole = getContracts(contractSet, chainName).coreBridge; if (sdkWormhole === undefined) { console.error(`Warning: SDK Wormhole address for chain ${chainId} is undefined.`); return; diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 21865f37c7..8c98a5b539 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -12,7 +12,7 @@ import { Create2Factory, Create2Factory__factory, } from "../../../ethers-contracts"; -import { ChainId } from "@wormhole-foundation/sdk-base"; +import { ChainId, isNetwork, networks } from "@wormhole-foundation/sdk"; export interface ContractsJson { /** @@ -70,7 +70,15 @@ export function init(): string { require("dotenv").config({ path: `./ts-scripts/relayer/.env${env != DEFAULT_ENV ? "." + env : ""}`, }); - return env; + + // The new Wormhole SDK only accepts capitalized env names. + env = env.charAt(0).toUpperCase() + env.slice(1).toLowerCase(); + + if (!isNetwork(env)) { + throw new Error(`Invalid network name: ${env}, must be one of ${networks.join(", ")}`); + } + + return env } function get_env_var(env: string): string { diff --git a/ethereum/ts-scripts/relayer/helpers/utils.ts b/ethereum/ts-scripts/relayer/helpers/utils.ts index 80e1c254c0..9e7d36a2c4 100644 --- a/ethereum/ts-scripts/relayer/helpers/utils.ts +++ b/ethereum/ts-scripts/relayer/helpers/utils.ts @@ -1,10 +1,15 @@ import { ContractReceipt, ContractTransaction } from "ethers"; -import * as wh from "@wormhole-foundation/sdk"; +import { chainToPlatform, UniversalAddress, toChainId, chainIdToChain, platformToAddressFormat, ChainId } from "@wormhole-foundation/sdk"; export function wait(tx: ContractTransaction): Promise { return tx.wait(); } -export function nativeEvmAddressToHex(address: string): string { - return (new wh.UniversalAddress(address, wh.platformToAddressFormat("Evm"))).toString(); +export function nativeEthereumAddressToHex(address: string): string { + return nativeAddressToHex(address, toChainId("Ethereum")); +} + +export function nativeAddressToHex(address: string, chainId: ChainId): string { + const platform = chainToPlatform(chainIdToChain(chainId)) + return (new UniversalAddress(address, platformToAddressFormat(platform))).toString(); } diff --git a/ethereum/ts-scripts/relayer/helpers/vaa.ts b/ethereum/ts-scripts/relayer/helpers/vaa.ts index 91365485f0..e3f3673e52 100644 --- a/ethereum/ts-scripts/relayer/helpers/vaa.ts +++ b/ethereum/ts-scripts/relayer/helpers/vaa.ts @@ -7,7 +7,7 @@ import { loadGuardianKeys, loadGuardianSetIndex, } from "./env"; -import { nativeEvmAddressToHex } from "./utils"; +import { nativeEthereumAddressToHex } from "./utils"; const elliptic = require("elliptic"); const governanceChainId = 1; @@ -35,7 +35,7 @@ export function createWormholeRelayerUpgradeVAA( wormholeRelayerModule, 2, chain.chainId, - nativeEvmAddressToHex(newAddress) + nativeEthereumAddressToHex(newAddress) ], ); @@ -56,7 +56,7 @@ export function createDefaultDeliveryProviderVAA(chain: ChainInfo) { wormholeRelayerModule, 3, chain.chainId, - nativeEvmAddressToHex(getDeliveryProviderAddress(chain)) + nativeEthereumAddressToHex(getDeliveryProviderAddress(chain)) ], ); @@ -84,7 +84,7 @@ export async function createRegisterChainVAA( 1, 0, chain.chainId, - nativeEvmAddressToHex(coreRelayerAddress) + nativeEthereumAddressToHex(coreRelayerAddress) ], ); diff --git a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts index 3483bdf730..17db4beb2f 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/deployMockIntegration.ts @@ -10,7 +10,7 @@ import { import { deployMockIntegration } from "../helpers/deployments"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; -import { nativeEvmAddressToHex } from "../helpers/utils"; +import { nativeEthereumAddressToHex } from "../helpers/utils"; const processName = "deployMockIntegration"; init(); @@ -54,7 +54,7 @@ async function run() { const mockIntegrations = loadMockIntegrations(); const emitters = loadMockIntegrations().map(({ address, chainId }) => ({ chainId, - addr: nativeEvmAddressToHex(address) + addr: nativeEthereumAddressToHex(address) })) satisfies XAddressStruct[]; const registerTasks = await Promise.allSettled( diff --git a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts index 750d36050a..064fac1c0f 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/messageUtils.ts @@ -1,12 +1,16 @@ -import { ChainId } from "@wormhole-foundation/sdk-base"; -import { VAA } from "@wormhole-foundation/sdk-definitions"; +import { ChainId, chainToPlatform, Network, network, platform, PlatformContext, toChain, VAA, wormhole } from "@wormhole-foundation/sdk"; +import evm from "@wormhole-foundation/sdk/evm"; + import { ChainInfo, getWormholeRelayer, getMockIntegration, getMockIntegrationAddress, + getChain, + env } from "../helpers/env"; import { ethers } from "ethers"; +import { nativeAddressToHex } from "../helpers/utils"; export async function sendMessage( sourceChain: ChainInfo, @@ -44,10 +48,12 @@ export async function sendMessage( } ); const rx = await tx.wait(); - const sequences = wh.parseSequencesFromLogEth( - rx, - sourceChain.wormholeAddress - ); + + + const wh = await wormhole(env as Network, [evm]); + const chainRef = wh.getChain(toChain(sourceChain.chainId)); + const sequences = await chainRef.parseTransaction(rx.transactionHash); + console.log("Tx hash: ", rx.transactionHash); console.log(`Sequences: ${sequences}`); if (fetchSignedVaa) { @@ -110,16 +116,7 @@ export async function encodeEmitterAddress( myChainId: ChainId, emitterAddressStr: string ): Promise { - if (myChainId === Chain || myChainId === wh.CHAIN_ID_PYTHNET) { - return wh.getEmitterAddressSolana(emitterAddressStr); - } - if (isTerraChain(myChainId)) { - return wh.getEmitterAddressTerra(emitterAddressStr); - } - if (wh.isEVMChain(myChainId)) { - return wh.getEmitterAddressEth(emitterAddressStr); - } - throw new Error(`Unrecognized wormhole chainId ${myChainId}`); + return nativeAddressToHex(emitterAddressStr, myChainId); } diff --git a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts index db0410a092..c785036f1d 100644 --- a/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts +++ b/ethereum/ts-scripts/relayer/mockIntegration/registerMockIntegration.ts @@ -6,7 +6,7 @@ import { } from "../helpers/env"; import { XAddressStruct } from "../../../ethers-contracts/MockRelayerIntegration"; import { printRegistration, registerMockIntegration } from "./mockIntegrationDeploy"; -import { nativeEvmAddressToHex } from "../helpers/utils"; +import { nativeEthereumAddressToHex } from "../helpers/utils"; const processName = "registerMockIntegration"; init(); @@ -18,7 +18,7 @@ async function run() { const emitters = allChains.map((chain) => ({ chainId: chain.chainId, - addr: nativeEvmAddressToHex(getMockIntegrationAddress(chain)), + addr: nativeEthereumAddressToHex(getMockIntegrationAddress(chain)), })) satisfies XAddressStruct[]; const results = await Promise.allSettled( diff --git a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts index c2d19d1666..b56f7f7ff2 100644 --- a/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts +++ b/ethereum/ts-scripts/relayer/wormholeRelayer/registerChainsWormholeRelayerSelfSign.ts @@ -8,7 +8,7 @@ import { getWormholeRelayerAddress, } from "../helpers/env"; import { buildOverrides } from "../helpers/deployments"; -import { nativeEvmAddressToHex, wait } from "../helpers/utils"; +import { nativeEthereumAddressToHex, wait } from "../helpers/utils"; import { createRegisterChainVAA } from "../helpers/vaa"; import type { WormholeRelayer } from "../../../ethers-contracts"; @@ -61,7 +61,7 @@ async function registerWormholeRelayer( const registration = await wormholeRelayer.getRegisteredWormholeRelayerContract(targetChain.chainId); if (registration !== zeroBytes32) { const registrationAddress = await getWormholeRelayerAddress(targetChain); - const expectedRegistration = nativeEvmAddressToHex(registrationAddress); + const expectedRegistration = nativeEthereumAddressToHex(registrationAddress); if (registration.toLowerCase() !== expectedRegistration.toLowerCase()) { throw new Error(`Found an unexpected registration for chain ${targetChain.chainId} on chain ${operatingChain.chainId} Expected: ${expectedRegistration} From 575c20b82b1b41ced5c2bca1cb6af0d51f6a6149 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 12:43:48 -0300 Subject: [PATCH 162/174] worldchain: added chains.json + deployment gas override --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 7 +++++++ ethereum/ts-scripts/relayer/helpers/deployments.ts | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index 3b425f23df..a86745cced 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -113,6 +113,13 @@ "chainId": 43, "rpc": "https://mainnet.snaxchain.io", "wormholeAddress": "0xc1BA3CC4bFE724A08FbbFbF64F8db196738665f4" + }, + { + "description": "Worldchain", + "evmNetworkId": 480, + "chainId": 45, + "rpc": "https://worldchain-mainnet.g.alchemy.com/public", + "wormholeAddress": "0xcbcEe4e081464A15d8Ad5f58BB493954421eB506" } ] } \ No newline at end of file diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index c3fbf2f62c..a4d31119e9 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -328,6 +328,10 @@ export async function buildOverrides( overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.000000001", "gwei"); } else if (chain.chainId === 37) { overrides.type = 0; + } else if (chain.chainId === 45) { + overrides.type = 2; + overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.0001", "gwei"); + overrides.maxFeePerGas = ethers.utils.parseUnits("0.0001", "gwei"); } return overrides; } From 91fa8ae33a361de06bcaff863f921208aad242b2 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 15:19:42 -0300 Subject: [PATCH 163/174] added gas-price/base-fee dump tool --- ethereum/gas-prices.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 ethereum/gas-prices.sh diff --git a/ethereum/gas-prices.sh b/ethereum/gas-prices.sh new file mode 100755 index 0000000000..235857a345 --- /dev/null +++ b/ethereum/gas-prices.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + echo "where is the name of the directory in ts-scripts/relayer/config" + echo " e.g: mainnet, testnet or devnet" + exit 1 +fi + +# Parse the JSON and loop through each entry to get `rpc` and `chainId` +jq -c '.chains[] | {chainId: .chainId, rpc: .rpc}' ts-scripts/relayer/config/$1/chains.json | while read -r entry; do + chainId=$(echo "$entry" | jq -r '.chainId') + rpc=$(echo "$entry" | jq -r '.rpc') + + echo "ChainId: $chainId" + echo " gas-price:$(cast gas-price -r "$rpc")" + echo " base fee: $(cast basefee -r "$rpc")" +done From 09f11c738aa6a6edaea93a225f433148ac2902a0 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 15:40:02 -0300 Subject: [PATCH 164/174] Added chain 45 entry to initializeDeliveryProvider.json --- .../scriptConfigs/initializeDeliveryProvider.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json index a190a1594e..336c28d952 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json @@ -3,6 +3,10 @@ { "chainId": 43, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 45, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "pricingInfo": [ @@ -117,6 +121,13 @@ "updatePriceGas": "30000000000", "updatePriceNative": "200000", "maximumBudget": "1000000000000000000" + }, + { + "chainId": 45, + "deliverGasOverhead": "350000", + "updatePriceGas": "30000000000", + "updatePriceNative": "200000", + "maximumBudget": "1000000000000000000" } ] } From 49d08e90b21bed6c06b40c34ae25c5c35385e458 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 16:32:40 -0300 Subject: [PATCH 165/174] Submitted initialize+Configure Delivery Provider --- .../configureDeliveryProvider.json | 112 ++++++++------ .../initializeDeliveryProvider.json | 138 +++++++++--------- 2 files changed, 140 insertions(+), 110 deletions(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json index 9df2521542..92f09158b1 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/configureDeliveryProvider.json @@ -2,82 +2,87 @@ "pricingInfo": [ { "chainId": 2, - "updatePriceGas": "7000000000", - "updatePriceNative": "3415400000" + "updatePriceGas": "68655039215", + "updatePriceNative": "3280000000" }, { "chainId": 4, "updatePriceGas": "1000000000", - "updatePriceNative": "577360000" + "updatePriceNative": "632000000" }, { "chainId": 5, "updatePriceGas": "31000000000", - "updatePriceNative": "571500" + "updatePriceNative": "393700" }, { "chainId": 6, "updatePriceGas": "25000000000", - "updatePriceNative": "28720000" + "updatePriceNative": "34440000" }, { "chainId": 10, - "updatePriceGas": "15000000000", - "updatePriceNative": "587000" + "updatePriceGas": "11194230573", + "updatePriceNative": "371000" }, { "chainId": 13, "updatePriceGas": "25000000000", - "updatePriceNative": "156200" + "updatePriceNative": "121000" }, { "chainId": 14, "updatePriceGas": "5000000000", - "updatePriceNative": "590400" + "updatePriceNative": "681000" }, { "chainId": 16, "updatePriceGas": "150000000000", - "updatePriceNative": "224900" + "updatePriceNative": "184600" }, { "chainId": 23, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "3280000000" }, { "chainId": 24, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "3280000000" }, { "chainId": 30, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "3280000000" }, { "chainId": 34, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "3280000000" }, { "chainId": 35, "updatePriceGas": "2000000000", - "updatePriceNative": "780000" + "updatePriceNative": "732300" }, { "chainId": 36, "updatePriceGas": "1200000", - "updatePriceNative": "3415400000" + "updatePriceNative": "3280000000" }, { "chainId": 37, "updatePriceGas": "120000000", - "updatePriceNative": "41860000" + "updatePriceNative": "45430000" }, { "chainId": 43, - "updatePriceGas": "250000", + "updatePriceGas": "252", + "updatePriceNative": "2480024674" + }, + { + "chainId": 45, + "updatePriceGas": "265", "updatePriceNative": "2608840000" } ], @@ -116,101 +121,109 @@ }, { "chainId": 23, - "updateGasOverhead": "243992895" + "updateGasOverhead": "254065041" }, { "chainId": 24, - "updateGasOverhead": "243992895" + "updateGasOverhead": "254065041" }, { "chainId": 30, - "updateGasOverhead": "243992895" + "updateGasOverhead": "254065041" }, { "chainId": 34, - "updateGasOverhead": "243992895" + "updateGasOverhead": "254065041" }, { "chainId": 35, - "updateGasOverhead": "192307692" + "updateGasOverhead": "204834084" }, { "chainId": 36, - "updateGasOverhead": "243992895" + "updateGasOverhead": "254065041" }, { "chainId": 37, - "updateGasOverhead": "199076286" + "updateGasOverhead": "183432387" }, { "chainId": 43, "updateGasOverhead": "243992895" + }, + { + "chainId": 45, + "updateGasOverhead": "243992895" } ], "maximumBudgets": [ { "chainId": 2, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "343275196075000000" }, { "chainId": 4, - "updateMaximumBudget": "346404323125953000" + "updateMaximumBudget": "316455696202532000" }, { "chainId": 5, - "updateMaximumBudget": "349956255468067000000" + "updateMaximumBudget": "508001016002032000000" }, { "chainId": 6, - "updateMaximumBudget": "6963788300835660000" + "updateMaximumBudget": "5807200929152150000" }, { "chainId": 10, - "updateMaximumBudget": "340715502555366000000" + "updateMaximumBudget": "539083557951483000000" }, { "chainId": 13, - "updateMaximumBudget": "1280409731113960000000" + "updateMaximumBudget": "1652892561983470000000" }, { "chainId": 14, - "updateMaximumBudget": "338753387533875000000" + "updateMaximumBudget": "293599530240752000000" }, { "chainId": 16, - "updateMaximumBudget": "889284126278346000000" + "updateMaximumBudget": "1083423618634890000000" }, { "chainId": 23, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "60975609756097600" }, { "chainId": 24, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "60975609756097600" }, { "chainId": 30, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "60975609756097600" }, { "chainId": 34, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "60975609756097600" }, { "chainId": 35, - "updateMaximumBudget": "256410256410256000000" + "updateMaximumBudget": "273112112522190000000" }, { "chainId": 36, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "60975609756097600" }, { "chainId": 37, - "updateMaximumBudget": "4777830864787390000" + "updateMaximumBudget": "4402377283733220000" }, { "chainId": 43, - "updateMaximumBudget": "58558294782455900" + "updateMaximumBudget": "80644358943986900" + }, + { + "chainId": 45, + "updateMaximumBudget": "60975609756097600" } ], "conversionBuffers": [ @@ -238,6 +251,11 @@ "chainId": 43, "buffer": 5, "bufferDenominator": 100 + }, + { + "chainId": 45, + "buffer": 5, + "bufferDenominator": 100 } ], "rewardAddresses": [ @@ -304,6 +322,10 @@ { "chainId": 43, "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" + }, + { + "chainId": 45, + "rewardAddress": "0x53207E216540125e322CdA8A693b0b89576DEb46" } ], "supportedChains": [ @@ -370,6 +392,10 @@ { "chainId": 43, "isSupported": true + }, + { + "chainId": 45, + "isSupported": true } ], "supportedKeysByChain": [ @@ -436,6 +462,10 @@ { "chainId": 43, "supportedKeys": ["vaa"] + }, + { + "chainId": 45, + "supportedKeys": ["vaa"] } ] } diff --git a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json index 336c28d952..5744be6a29 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/scriptConfigs/initializeDeliveryProvider.json @@ -12,122 +12,122 @@ "pricingInfo": [ { "chainId": 2, - "deliverGasOverhead": "350000", - "updatePriceGas": "20000000000", - "updatePriceNative": "2600000000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "280000", + "updatePriceGas": "68655039215", + "updatePriceNative": "3280000000", + "maximumBudget": "343275196075000000" }, { "chainId": 4, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "1000000000", + "updatePriceNative": "632000000", + "maximumBudget": "316455696202532000" }, { "chainId": 5, - "deliverGasOverhead": "350000", - "updatePriceGas": "7322000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "31000000000", + "updatePriceNative": "393000", + "maximumBudget": "508001016002032000000" }, { "chainId": 6, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "25000000000", + "updatePriceNative": "34440000", + "maximumBudget": "5807200929152150000" }, { "chainId": 10, - "deliverGasOverhead": "350000", - "updatePriceGas": "3000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "11194230573", + "updatePriceNative": "371000", + "maximumBudget": "539083557951483000000" }, { "chainId": 13, - "deliverGasOverhead": "350000", - "updatePriceGas": "3000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "25000000000", + "updatePriceNative": "121000", + "maximumBudget": "1652892561983470000000" }, { "chainId": 14, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "5000000000", + "updatePriceNative": "681200", + "maximumBudget": "293599530240752000000" }, { "chainId": 16, - "deliverGasOverhead": "350000", - "updatePriceGas": "10000000000", - "updatePriceNative": "100000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "320000", + "updatePriceGas": "150000000000", + "updatePriceNative": "184600", + "maximumBudget": "1083423618634890000000" }, { "chainId": 23, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "254065041", + "updatePriceGas": "1200000", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" }, { "chainId": 24, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "254065041", + "updatePriceGas": "1200000", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" }, { "chainId": 30, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "254065041", + "updatePriceGas": "1200000", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" }, { "chainId": 34, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "254065041", + "updatePriceGas": "1200000", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" }, { "chainId": 35, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "204834084", + "updatePriceGas": "2000000000", + "updatePriceNative": "732300", + "maximumBudget": "273112112522190000000" }, { "chainId": 36, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "254065041", + "updatePriceGas": "1200000", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" }, { - "chainId": 37, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "chainId": 37, + "deliverGasOverhead": "183432387", + "updatePriceGas": "120000000", + "updatePriceNative": "45430000", + "maximumBudget": "4402377283733220000" }, { "chainId": 43, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "243992895", + "updatePriceGas": "252", + "updatePriceNative": "2480024674", + "maximumBudget": "80644358943986900" }, { "chainId": 45, - "deliverGasOverhead": "350000", - "updatePriceGas": "30000000000", - "updatePriceNative": "200000", - "maximumBudget": "1000000000000000000" + "deliverGasOverhead": "243992895", + "updatePriceGas": "265", + "updatePriceNative": "3280000000", + "maximumBudget": "60975609756097600" } ] } From 13477e75adee11ce372814e82e6ab08e2b6fb53a Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 16:32:59 -0300 Subject: [PATCH 166/174] Fix in Environment handling --- ethereum/ts-scripts/relayer/helpers/env.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/env.ts b/ethereum/ts-scripts/relayer/helpers/env.ts index 8c98a5b539..bea31c9073 100644 --- a/ethereum/ts-scripts/relayer/helpers/env.ts +++ b/ethereum/ts-scripts/relayer/helpers/env.ts @@ -71,14 +71,16 @@ export function init(): string { path: `./ts-scripts/relayer/.env${env != DEFAULT_ENV ? "." + env : ""}`, }); - // The new Wormhole SDK only accepts capitalized env names. - env = env.charAt(0).toUpperCase() + env.slice(1).toLowerCase(); + // Return the capitalized env name accepted for Wormhole. + // The internal env var should be forced to lowercase to use it in file paths. + const capEnv = env.charAt(0).toUpperCase() + env.slice(1).toLowerCase(); + env = env.toLowerCase(); - if (!isNetwork(env)) { + if (!isNetwork(capEnv)) { throw new Error(`Invalid network name: ${env}, must be one of ${networks.join(", ")}`); } - return env + return capEnv } function get_env_var(env: string): string { @@ -91,13 +93,13 @@ function get_env_var(env: string): string { */ export function readChains() { - const filepath = `./ts-scripts/relayer/config/${env}/chains.json`; + const filepath = `./ts-scripts/relayer/config/${env.toLowerCase()}/chains.json`; const chainFile = fs.readFileSync(filepath, "utf8"); return JSON.parse(chainFile); } export function readContracts(): ContractsJson { - const filepath = `./ts-scripts/relayer/config/${env}/contracts.json`; + const filepath = `./ts-scripts/relayer/config/${env.toLowerCase()}/contracts.json`; const contractsFile = fs.readFileSync(filepath, "utf8"); if (!contractsFile) { throw Error(`Failed to find contracts file at ${filepath}!`); From 3e679b8d1257167fbd866af949e010aea130417c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 13 Nov 2024 18:13:21 -0300 Subject: [PATCH 167/174] evm: fixes create2 factory deploy --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index a4d31119e9..6437128018 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -125,7 +125,8 @@ export async function deployCreate2Factory( let factory = new Create2Factory__factory(); - const ethChain = getChain(chain.chainId); + // This needs to be the Ethereum chain. We want to check whether we are on mainnet or not. + const ethChain = getChain(2); const ethChainProvider = getProvider(ethChain); const ethNetwork = await ethChainProvider.getNetwork(); if (ethNetwork.chainId === 1) { From 9273a358966d9991058d6d939f4d3e0f3dd05604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Wed, 13 Nov 2024 18:25:32 -0300 Subject: [PATCH 168/174] evm: makes create2 factory deploy a bit more resilient --- .../ts-scripts/relayer/helpers/deployments.ts | 74 ++++++++++--------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 6437128018..d88fb97a53 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -126,40 +126,48 @@ export async function deployCreate2Factory( let factory = new Create2Factory__factory(); // This needs to be the Ethereum chain. We want to check whether we are on mainnet or not. - const ethChain = getChain(2); - const ethChainProvider = getProvider(ethChain); - const ethNetwork = await ethChainProvider.getNetwork(); - if (ethNetwork.chainId === 1) { - // Here we fetch the creation bytecode from Ethereum. - // We also perform a few sanity checks to ensure that the retrieved creation bytecode looks good: - // 1. The transaction receipt should contain the expected address for the `Create2Factory`. - // 2. The bytecode hash should be a specific one. - // - // Why do this? The creation bytecode of `SimpleProxy` is part of the hash function that derives the address. - // This means that to reproduce the same address on a different chain, you need to create the exact same `SimpleProxy` contract. - // Since the compiler inserts metadata hashes, and potentially other properties, that don't impact the functionality, - // we reuse the same creation bytecode that we originally used instead of attempting to tune newer compiler versions to produce the same bytecode. - if (ethC2Promise === undefined) { - // We assign the promise immediately to avoid race conditions - ethC2Promise = (async () => { - const factoryCreationTxid = "0xfd6551a91a2e9f423285a2e86f7f480341a658dda1ff1d8bc9167b2b7ec77caa"; - const ethFactoryAddress = getCreate2FactoryAddress(ethChain); - const factoryReceipt = await ethChainProvider.getTransactionReceipt(factoryCreationTxid); - if (factoryReceipt.contractAddress !== ethFactoryAddress) { - throw new Error("Wrong txid for the transaction that created the Create2Factory in Ethereum mainnet."); - } - const ethFactoryTx = await ethChainProvider.getTransaction(factoryCreationTxid); - - const expectedCreationCodeHash = "0x4b72c18c9a1a24d8406bde2edc283025bd33513d13c51601bb02dd4f298ada7d"; - const fetchedCreationCodeHash = ethers.utils.sha256(ethFactoryTx.data); - if (expectedCreationCodeHash !== fetchedCreationCodeHash) { - throw new Error(`Creation code mismatch for Create2Factory. Found: ${fetchedCreationCodeHash} Expected: ${expectedCreationCodeHash}`); - } - return new Create2Factory__factory(Create2Factory__factory.createInterface(), ethFactoryTx.data); - })(); - } + let ethChain; + try { + ethChain = getChain(2); + } catch { + if (env.toLowerCase() === "mainnet") throw new Error(`This is a mainnet deployment but the Ethereum chain is not defined in chains.json`); + console.log(`Couldn't retrieve the Ethereum chain. Make sure this is not a mainnet deployment.`); + } + if (ethChain !== undefined) { + const ethChainProvider = getProvider(ethChain); + const ethNetwork = await ethChainProvider.getNetwork(); + if (ethNetwork.chainId === 1) { + // Here we fetch the creation bytecode from Ethereum. + // We also perform a few sanity checks to ensure that the retrieved creation bytecode looks good: + // 1. The transaction receipt should contain the expected address for the `Create2Factory`. + // 2. The bytecode hash should be a specific one. + // + // Why do this? The creation bytecode of `SimpleProxy` is part of the hash function that derives the address. + // This means that to reproduce the same address on a different chain, you need to create the exact same `SimpleProxy` contract. + // Since the compiler inserts metadata hashes, and potentially other properties, that don't impact the functionality, + // we reuse the same creation bytecode that we originally used instead of attempting to tune newer compiler versions to produce the same bytecode. + if (ethC2Promise === undefined) { + // We assign the promise immediately to avoid race conditions + ethC2Promise = (async () => { + const factoryCreationTxid = "0xfd6551a91a2e9f423285a2e86f7f480341a658dda1ff1d8bc9167b2b7ec77caa"; + const ethFactoryAddress = getCreate2FactoryAddress(ethChain); + const factoryReceipt = await ethChainProvider.getTransactionReceipt(factoryCreationTxid); + if (factoryReceipt.contractAddress !== ethFactoryAddress) { + throw new Error("Wrong txid for the transaction that created the Create2Factory in Ethereum mainnet."); + } + const ethFactoryTx = await ethChainProvider.getTransaction(factoryCreationTxid); + + const expectedCreationCodeHash = "0x4b72c18c9a1a24d8406bde2edc283025bd33513d13c51601bb02dd4f298ada7d"; + const fetchedCreationCodeHash = ethers.utils.sha256(ethFactoryTx.data); + if (expectedCreationCodeHash !== fetchedCreationCodeHash) { + throw new Error(`Creation code mismatch for Create2Factory. Found: ${fetchedCreationCodeHash} Expected: ${expectedCreationCodeHash}`); + } + return new Create2Factory__factory(Create2Factory__factory.createInterface(), ethFactoryTx.data); + })(); + } - factory = await ethC2Promise; + factory = await ethC2Promise; + } } // We need to connect the signer here because we're overwriting the factory when deploying to mainnet. From 25607cc5e9fb377bb3a51827d94361eaa0ef2eb3 Mon Sep 17 00:00:00 2001 From: hernandp Date: Wed, 13 Nov 2024 18:27:42 -0300 Subject: [PATCH 169/174] Updated sdk to 1.1.0 for Worldchain mainnet support --- ethereum/package-lock.json | 608 ++++++++++++++++++------------------- ethereum/package.json | 2 +- 2 files changed, 305 insertions(+), 305 deletions(-) diff --git a/ethereum/package-lock.json b/ethereum/package-lock.json index e2c2482d35..b7eca906d4 100644 --- a/ethereum/package-lock.json +++ b/ethereum/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "@typechain/ethers-v5": "^10.2.0", - "@wormhole-foundation/sdk": "^1.0.3", + "@wormhole-foundation/sdk": "^1.1.0", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", @@ -8517,48 +8517,48 @@ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" }, "node_modules/@wormhole-foundation/sdk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.0.3.tgz", - "integrity": "sha512-2R/6W0Cdhst74dsqFq+LzSHSn3/E+IYRAnRqeF3xRvYEjleEbuk1pLTtQ+cfJ/TFxefv/VwG4nrUdK42Kxaoqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.1.0.tgz", + "integrity": "sha512-U2GZByFgvyU09ybJynDii/7Ke02PSzWOSvfUvcO1rb4GdBVMLej+BnBRC2dWTp/YW4t/r8+H0Bq++IErqJl1cQ==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-algorand-core": "1.0.3", - "@wormhole-foundation/sdk-algorand-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-aptos-core": "1.0.3", - "@wormhole-foundation/sdk-aptos-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-base": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-ibc": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-definitions": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-cctp": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", - "@wormhole-foundation/sdk-evm-portico": "1.0.3", - "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3", - "@wormhole-foundation/sdk-solana-cctp": "1.0.3", - "@wormhole-foundation/sdk-solana-core": "1.0.3", - "@wormhole-foundation/sdk-solana-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3", - "@wormhole-foundation/sdk-sui-core": "1.0.3", - "@wormhole-foundation/sdk-sui-tokenbridge": "1.0.3" + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-algorand-core": "1.1.0", + "@wormhole-foundation/sdk-algorand-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-aptos-core": "1.1.0", + "@wormhole-foundation/sdk-aptos-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-base": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-core": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-ibc": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-definitions": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-cctp": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", + "@wormhole-foundation/sdk-evm-portico": "1.1.0", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0", + "@wormhole-foundation/sdk-solana-cctp": "1.1.0", + "@wormhole-foundation/sdk-solana-core": "1.1.0", + "@wormhole-foundation/sdk-solana-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0", + "@wormhole-foundation/sdk-sui-core": "1.1.0", + "@wormhole-foundation/sdk-sui-tokenbridge": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-algorand": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.0.3.tgz", - "integrity": "sha512-DWq1Nbi8hUtiPabpm1NZQ5OJwokWTH4Qp2xwbKtIT1zJvvi6VFVyXwzygh5VrFkxDpmYqsz7pQB8Iqa5pJXL1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.1.0.tgz", + "integrity": "sha512-DoGmgKnnADNNCifd8Whlyi5ngZjmqC+X5QquYRaUOrsWU3w5mchGgMoKwxOMdpha/J7X+6YbHVn5Fu6DXOmGvA==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "algosdk": "2.7.0" }, "engines": { @@ -8566,39 +8566,39 @@ } }, "node_modules/@wormhole-foundation/sdk-algorand-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.0.3.tgz", - "integrity": "sha512-ZuoQdSqq8ScsfxKAIK0r0zIrhfVF3rHcRgTwLgYc1/sH9/FoJG/DH9SxebXIiC8yBGMRfhKEhncNS8oZd6/4CQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.1.0.tgz", + "integrity": "sha512-OhO3npBVHY0W6zB3XTe5JA3RrNOlOORVvsBc8E8qEFdqSqO3f9X8BqB4ECi3R2f/cK3JXIx1qx/oJarKZZr/FQ==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-algorand-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.0.3.tgz", - "integrity": "sha512-DqfD+x7bPDViWq5EcKIX2NIQUYtMC+Lrewe/jmldmTwxrZLQzwMi7F+UnqyUacmVhRQ45MsTBoZ0ec6/XUgWvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.1.0.tgz", + "integrity": "sha512-JSi9HTQLyYDK3TKO7X3jOwWDotb//Gvi383AYVPOcPx4GLUAkU4yNSthuRTpKKv/N/piquWJgrcDhZKudjijwQ==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-algorand-core": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-algorand-core": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-aptos": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.0.3.tgz", - "integrity": "sha512-fE2SnqQs2zcrg6BnagBSAS6SlkXkcfZi7CWBsOrMgmEjuwKUBXyM/fjjUJPCHgDTWwUPd1j3Kr10gdhxDffmVw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.1.0.tgz", + "integrity": "sha512-IMkJ1JUGGHLSx6X2C2j0j7Gy/dl2Eb8rRYh2OrvHTnNo7wMGzF7HFmc6JUX5IoEck3PyuSec01rbHzpdHMT0iA==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "aptos": "1.21.0" }, "engines": { @@ -8606,48 +8606,48 @@ } }, "node_modules/@wormhole-foundation/sdk-aptos-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.0.3.tgz", - "integrity": "sha512-IMFqPmENwqwTFIKpCDeVbaTzc8RuUWEZmvi40yhF0fu4SWahSBoh/G0q0iwf/yUpDRyEO8ynrcUOU+AoQta4Qw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.1.0.tgz", + "integrity": "sha512-vEWtR9wXzrQqWIqt90J6DrlIKNEifT64Akjnz25ME4AWxZzWe+ZcWb6V2f01afca0U8M/YZQj927ZRYJ1xEs/w==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-aptos-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.0.3.tgz", - "integrity": "sha512-KlEqzHg9SkSaNgRpIEcjXOYVt7/ra/kJtYG0F/6wt3YwjsM3mTANTSGUqoF1z9VsViPdffcCwfxKt2U92dZqJA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.1.0.tgz", + "integrity": "sha512-hPV5TL1OAM5x4OlX82+mMMkJSBUH1C6uD6CvBP9vbRby5Ge69vIZZyrzratldN4ARFFSbsWc57VTSnn5rY2rSA==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.0.3.tgz", - "integrity": "sha512-zhieqHzyopDN9Z60tqa1EBaJhjRsY56qgP9qpaXT7GkMgp5HI1j2msTaJrpVtVOnTKBt78uJXatKP7+pFDKiJA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.1.0.tgz", + "integrity": "sha512-QAdDzMTAMd2W9JLq4O7W4ChgBMM722nIyxdVvWNabeEb5fbPuMxjCwlKaUeju6RZER+iioVl1K8p3u5oWT4MmQ==", "license": "Apache-2.0", "dependencies": { "@scure/base": "^1.1.3" } }, "node_modules/@wormhole-foundation/sdk-connect": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.0.3.tgz", - "integrity": "sha512-edXkPv2NDe1CSs9dcxC03lbknl1pI3YC/IEEmmn3BXD8xDL9wdvOsOzXifOhHAwUO8mGJiSVuTFRzfxiBIs56w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.1.0.tgz", + "integrity": "sha512-xqAGxYrNfLEMzAU6y8G7DrJGnSKcgbASJyCI1S8k4ZC1AlzOPzlH2ja7Xdq5/gsVzYZn+WsnZrHH14IUBw3X+g==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-base": "1.0.3", - "@wormhole-foundation/sdk-definitions": "1.0.3", + "@wormhole-foundation/sdk-base": "1.1.0", + "@wormhole-foundation/sdk-definitions": "1.1.0", "axios": "^1.4.0" }, "engines": { @@ -8700,16 +8700,16 @@ } }, "node_modules/@wormhole-foundation/sdk-cosmwasm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.0.3.tgz", - "integrity": "sha512-0nP9ZASRyrP/lyRGHof9QQNPLngoP/Ic0R8r+r9/UQyydJhNVzYLtf6YWMqUZzpkugFCpMhz04nKMocnto1I4A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.1.0.tgz", + "integrity": "sha512-xD3xhvhqVNmx1jCI5F4kw7EG0der4najKh6LQmPJPhtSgiQGWkIqHLMFM21dxdVj1Aceb7yIAGgF+jDUXWzOMw==", "license": "Apache-2.0", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "cosmjs-types": "^0.9.0" }, "engines": { @@ -8717,33 +8717,33 @@ } }, "node_modules/@wormhole-foundation/sdk-cosmwasm-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.0.3.tgz", - "integrity": "sha512-RzrJktyotuHi/2esFFqFgoHqppIZfbjJizYVB6BNtYTGHu/3X9hTedVaMGyLzagAyaxWSCuS4OCN4K1LpqNX9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.1.0.tgz", + "integrity": "sha512-HP0S/SRyb8+5FbJah/H9qHzBQaScjOMxR3jBAuqSO8eV0uX58hDOoHU4+bMxW2IqDRDJVvrkKeajuYgTWDCEAA==", "license": "Apache-2.0", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.0.3.tgz", - "integrity": "sha512-4SDKVr3/gLJUsvNwMFa74KbIdSW5tm4QQVEys/Y0PfRKSSmGlcn9hgj+e7wfvyR8t6TFjkllypuoJYe6o5dybA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.1.0.tgz", + "integrity": "sha512-MoRYGtqKjdOTBnLNxbrcInomSFctxbnPFRZwnV04v4d/9+/LU3Q0Ytei76MQGBfeDCOpyeMKIata0ifhTQnMVA==", "license": "Apache-2.0", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-core": "1.1.0", "cosmjs-types": "^0.9.0" }, "engines": { @@ -8751,37 +8751,37 @@ } }, "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.0.3.tgz", - "integrity": "sha512-DQU31rPOloLj3iBqsz9MAzNnCIawyN7mN0uCto441+RRMYGyyW/knVIY05rQyB/xDXXhuToCwQNxtEnu75uuwg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.1.0.tgz", + "integrity": "sha512-KBPmmQRBDmPBwHuRx5wGT2lug0JRPfCXM47hePDnUTiA9IfF7TvqdLgSxbSxXWxFdL61IAjghJLJiKsolGFUlg==", "license": "Apache-2.0", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-definitions": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.0.3.tgz", - "integrity": "sha512-ni7msDLSCKOHSTyTTxEI9IPXlOtKtkpdyJ1i4LweOKP5qcncvLo4IJJU69C+kKc+8KwCpmz+VS+z9YAE6e+QHA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.1.0.tgz", + "integrity": "sha512-W7GvG5iqC1Yi3LzQweat6gL24SpwFv8kOVCbBQWMSnribvh56P5/B3v/6RxYcdIZCLCNZj6W6pDrJtJ1oNNVEQ==", "dependencies": { "@noble/curves": "^1.4.0", "@noble/hashes": "^1.3.1", - "@wormhole-foundation/sdk-base": "1.0.3" + "@wormhole-foundation/sdk-base": "1.1.0" } }, "node_modules/@wormhole-foundation/sdk-evm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.0.3.tgz", - "integrity": "sha512-RI9t/s1AnuqMQzzGXjqCegKoOGo3RGH79uwj/u4xttkkQ2yxjZw8zXt/QwNQjBaa8F7OnOAMt9T5gAyl49BTGg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.1.0.tgz", + "integrity": "sha512-gpu9+4oAcgyFZQDiylFWqnCWN6YroPqZRt4Ckz6U3l1cTXNchyxFVrxi+bS2qnQZ9izaUApqTMuF/zaIaY3psw==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "ethers": "^6.5.1" }, "engines": { @@ -8789,13 +8789,13 @@ } }, "node_modules/@wormhole-foundation/sdk-evm-cctp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.0.3.tgz", - "integrity": "sha512-UfMyrZ4SNbKX+szw7NNPC8qSrP9jO3yEa+y2zVS67TyM0HB6/+pvg+vDaRN4H52kFmqRkIQDZjTNb7FbE5Z/ZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.1.0.tgz", + "integrity": "sha512-RP6TMryqir45bkip6n7+O6LUubrCz+L7sosPcTWq/BLLw865TenTc3vHwOkh2lSc/hSjm7T65BeUNn0nbZZ9jg==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", "ethers": "^6.5.1" }, "engines": { @@ -8888,13 +8888,13 @@ } }, "node_modules/@wormhole-foundation/sdk-evm-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.0.3.tgz", - "integrity": "sha512-jpk2kamEMP9TAhAOaaD+yJhGVKm3h8yfEUPdyBKAcUvBMuRmf1RY410Z1PPqW9fOLaynFmzukd44ITsh8wsnIQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.1.0.tgz", + "integrity": "sha512-GDzG1LpGwPMPlH3mCq461K8qKgcFl5S7cWTWVM994lAkmm8xCb6WmYd6Ds6TlEoS2ldgASQKdtO5mu3xAp28PA==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", "ethers": "^6.5.1" }, "engines": { @@ -8987,15 +8987,15 @@ } }, "node_modules/@wormhole-foundation/sdk-evm-portico": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.0.3.tgz", - "integrity": "sha512-j0fXggpWb7OR4xDHiQtI5imd620akTVUMw7gL4TLYyAFg4nPDeXyLe3uG7uyfvMoJd6hhhSkVQE2AEZFok0WsA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.1.0.tgz", + "integrity": "sha512-H5H+kXpxs2+Bnvm62RIZyzhJb8vEf7rI2banXw1Yt+FWJHxvRC2qB80sWfZxS6B6S+oH+5TXXNVa0KQdEVSJkQ==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", - "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.1.0", "ethers": "^6.5.1" }, "engines": { @@ -9088,14 +9088,14 @@ } }, "node_modules/@wormhole-foundation/sdk-evm-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.0.3.tgz", - "integrity": "sha512-2Fuxui8JET3chLs98WZAx2lqjGa4U8Gi3ulDFyCRGic/OkLRaWQhwKHW0+9qUYQgzbd5upvVBwMHtmcBzK3aiw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.1.0.tgz", + "integrity": "sha512-phocegH1lacyabMvo1i3foEvqlX5AszphzrJLUu0+w+62gkRhLY3E1/apVuU0ZVVGPokPzG0R6FeHjcEUMPp1Q==", "license": "Apache-2.0", "dependencies": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", "ethers": "^6.5.1" }, "engines": { @@ -9273,16 +9273,16 @@ } }, "node_modules/@wormhole-foundation/sdk-solana": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.0.3.tgz", - "integrity": "sha512-HRR13E9qfgoYpcijc+UZU16ZRfB01Z4GqXyc1HuNpQRMvkwGWzBaBZOcmehmCITvU8izIW7DhGgSLWXraWL3hg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.1.0.tgz", + "integrity": "sha512-snkK/Phe1TTnA79Blu3Fodw311a7bB5F+yDG98O6rvOMmrTlm0lhCV8PX6+AJXNFEteCF8qF8WjVpqk1kvKpfQ==", "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "0.29.0", "@coral-xyz/borsh": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "rpc-websockets": "^7.10.0" }, "engines": { @@ -9290,91 +9290,91 @@ } }, "node_modules/@wormhole-foundation/sdk-solana-cctp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.0.3.tgz", - "integrity": "sha512-eyhvxRTcKwpj5KFWIbdyRN7xds16g/IT65ctJgUv5wdd+tEoESuVIK0Ad+11Ep5JtwmSdF6IiwcN0Sfl6ckG1Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.1.0.tgz", + "integrity": "sha512-I8IOPKt9difGkodN307BzP7rPKx8VlqwvaniJZzBEGv1xtt/uD7NubSJY90mm0NCcRU8Rj0UGKDs3Qurb2OT6g==", "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-solana-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.0.3.tgz", - "integrity": "sha512-k65W7URd0vAw58UmIKibz+CkXijpVtAER46F9D+HZzSPGggcf/Ps9xfY285+fYMgAKSkyMqlLNrwsTR2STM/0w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.1.0.tgz", + "integrity": "sha512-K9aB6eCuylv8DaqXYCGbiKRcOV/Ese/lZIGN2t0gDaRdnJJa34kLVAzxLOXRyBT0qXIu7BZ1FOrZxsnkpWPXuA==", "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "0.29.0", "@coral-xyz/borsh": "0.29.0", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-solana-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.0.3.tgz", - "integrity": "sha512-2ifcR3PZu/ggGrkzqlbgMlEEEELWBzOJXpPhE4gmMdynXMlZYl5HYOcx4qBnOTI336VjawPnTG+EFc54VeJoZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.1.0.tgz", + "integrity": "sha512-6cAxjaozUx3qzpG9UxZvLfrJ8ZwAapMNu/HzfaH4FrAYjVFyzNVgwNHloISyeyI6HmalMddc8ppIMA4DnwUjoQ==", "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3", - "@wormhole-foundation/sdk-solana-core": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0", + "@wormhole-foundation/sdk-solana-core": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-sui": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.0.3.tgz", - "integrity": "sha512-dsZ8ymv/sV0N6nmbcIquQJazBi1YNsqtKvIlhMqes0uS2iv+YvpPLfLKLzxn3KGWlXbteuJWdZtwOl/v3zhySQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.1.0.tgz", + "integrity": "sha512-NsAJTQpLExA9zWOTrtl7WXw5laBVEbGudj507F3jOUv+6nq9vP2ltPXfwlIWJuIVe+EU2ItFzNlH4O4hbtpeWQ==", "license": "Apache-2.0", "dependencies": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-sui-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.0.3.tgz", - "integrity": "sha512-5JzbJpg81XWKcY3HsCDX17dxaEgs8wMzDwZhNI2cnyBDXD8rhhDMcbTfiOLxygPtjjrplTMW6JE/QHurdXEJWw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.1.0.tgz", + "integrity": "sha512-CpolmoJ3QgD4ymWWX6ucILyYYYr9SUjfihBAeMAm16wM5IvqHBXVDqmaEpjXoLJqbBBABB+6r76kkSZ+6PqyQw==", "license": "Apache-2.0", "dependencies": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0" }, "engines": { "node": ">=16" } }, "node_modules/@wormhole-foundation/sdk-sui-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.0.3.tgz", - "integrity": "sha512-lN8MLanfGUM7P3ISORITx9nYJTkFahrbd108pp8QTA6uA0kU4AW5FHLaNZoYxPGQZOhvQV6C94s3fQZFAYSi1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.1.0.tgz", + "integrity": "sha512-/4HrAAWS8Vb+tJPhggqXYfTFiGcQ2pYhFPMRpCTwTDlM8+CcZ9zQnNgiroy+JOFpiZyP3T7U6AYRsHldB1WHIQ==", "license": "Apache-2.0", "dependencies": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3", - "@wormhole-foundation/sdk-sui-core": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0", + "@wormhole-foundation/sdk-sui-core": "1.1.0" }, "engines": { "node": ">=16" @@ -36460,107 +36460,107 @@ } }, "@wormhole-foundation/sdk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.0.3.tgz", - "integrity": "sha512-2R/6W0Cdhst74dsqFq+LzSHSn3/E+IYRAnRqeF3xRvYEjleEbuk1pLTtQ+cfJ/TFxefv/VwG4nrUdK42Kxaoqg==", - "requires": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-algorand-core": "1.0.3", - "@wormhole-foundation/sdk-algorand-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-aptos-core": "1.0.3", - "@wormhole-foundation/sdk-aptos-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-base": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-ibc": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-definitions": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-cctp": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", - "@wormhole-foundation/sdk-evm-portico": "1.0.3", - "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3", - "@wormhole-foundation/sdk-solana-cctp": "1.0.3", - "@wormhole-foundation/sdk-solana-core": "1.0.3", - "@wormhole-foundation/sdk-solana-tokenbridge": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3", - "@wormhole-foundation/sdk-sui-core": "1.0.3", - "@wormhole-foundation/sdk-sui-tokenbridge": "1.0.3" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-1.1.0.tgz", + "integrity": "sha512-U2GZByFgvyU09ybJynDii/7Ke02PSzWOSvfUvcO1rb4GdBVMLej+BnBRC2dWTp/YW4t/r8+H0Bq++IErqJl1cQ==", + "requires": { + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-algorand-core": "1.1.0", + "@wormhole-foundation/sdk-algorand-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-aptos-core": "1.1.0", + "@wormhole-foundation/sdk-aptos-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-base": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-core": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-ibc": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-definitions": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-cctp": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", + "@wormhole-foundation/sdk-evm-portico": "1.1.0", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0", + "@wormhole-foundation/sdk-solana-cctp": "1.1.0", + "@wormhole-foundation/sdk-solana-core": "1.1.0", + "@wormhole-foundation/sdk-solana-tokenbridge": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0", + "@wormhole-foundation/sdk-sui-core": "1.1.0", + "@wormhole-foundation/sdk-sui-tokenbridge": "1.1.0" } }, "@wormhole-foundation/sdk-algorand": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.0.3.tgz", - "integrity": "sha512-DWq1Nbi8hUtiPabpm1NZQ5OJwokWTH4Qp2xwbKtIT1zJvvi6VFVyXwzygh5VrFkxDpmYqsz7pQB8Iqa5pJXL1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-1.1.0.tgz", + "integrity": "sha512-DoGmgKnnADNNCifd8Whlyi5ngZjmqC+X5QquYRaUOrsWU3w5mchGgMoKwxOMdpha/J7X+6YbHVn5Fu6DXOmGvA==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "algosdk": "2.7.0" } }, "@wormhole-foundation/sdk-algorand-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.0.3.tgz", - "integrity": "sha512-ZuoQdSqq8ScsfxKAIK0r0zIrhfVF3rHcRgTwLgYc1/sH9/FoJG/DH9SxebXIiC8yBGMRfhKEhncNS8oZd6/4CQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-1.1.0.tgz", + "integrity": "sha512-OhO3npBVHY0W6zB3XTe5JA3RrNOlOORVvsBc8E8qEFdqSqO3f9X8BqB4ECi3R2f/cK3JXIx1qx/oJarKZZr/FQ==", "requires": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" } }, "@wormhole-foundation/sdk-algorand-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.0.3.tgz", - "integrity": "sha512-DqfD+x7bPDViWq5EcKIX2NIQUYtMC+Lrewe/jmldmTwxrZLQzwMi7F+UnqyUacmVhRQ45MsTBoZ0ec6/XUgWvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-1.1.0.tgz", + "integrity": "sha512-JSi9HTQLyYDK3TKO7X3jOwWDotb//Gvi383AYVPOcPx4GLUAkU4yNSthuRTpKKv/N/piquWJgrcDhZKudjijwQ==", "requires": { - "@wormhole-foundation/sdk-algorand": "1.0.3", - "@wormhole-foundation/sdk-algorand-core": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-algorand": "1.1.0", + "@wormhole-foundation/sdk-algorand-core": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" } }, "@wormhole-foundation/sdk-aptos": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.0.3.tgz", - "integrity": "sha512-fE2SnqQs2zcrg6BnagBSAS6SlkXkcfZi7CWBsOrMgmEjuwKUBXyM/fjjUJPCHgDTWwUPd1j3Kr10gdhxDffmVw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-1.1.0.tgz", + "integrity": "sha512-IMkJ1JUGGHLSx6X2C2j0j7Gy/dl2Eb8rRYh2OrvHTnNo7wMGzF7HFmc6JUX5IoEck3PyuSec01rbHzpdHMT0iA==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "aptos": "1.21.0" } }, "@wormhole-foundation/sdk-aptos-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.0.3.tgz", - "integrity": "sha512-IMFqPmENwqwTFIKpCDeVbaTzc8RuUWEZmvi40yhF0fu4SWahSBoh/G0q0iwf/yUpDRyEO8ynrcUOU+AoQta4Qw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-1.1.0.tgz", + "integrity": "sha512-vEWtR9wXzrQqWIqt90J6DrlIKNEifT64Akjnz25ME4AWxZzWe+ZcWb6V2f01afca0U8M/YZQj927ZRYJ1xEs/w==", "requires": { - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" } }, "@wormhole-foundation/sdk-aptos-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.0.3.tgz", - "integrity": "sha512-KlEqzHg9SkSaNgRpIEcjXOYVt7/ra/kJtYG0F/6wt3YwjsM3mTANTSGUqoF1z9VsViPdffcCwfxKt2U92dZqJA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-1.1.0.tgz", + "integrity": "sha512-hPV5TL1OAM5x4OlX82+mMMkJSBUH1C6uD6CvBP9vbRby5Ge69vIZZyrzratldN4ARFFSbsWc57VTSnn5rY2rSA==", "requires": { - "@wormhole-foundation/sdk-aptos": "1.0.3", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-aptos": "1.1.0", + "@wormhole-foundation/sdk-connect": "1.1.0" } }, "@wormhole-foundation/sdk-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.0.3.tgz", - "integrity": "sha512-zhieqHzyopDN9Z60tqa1EBaJhjRsY56qgP9qpaXT7GkMgp5HI1j2msTaJrpVtVOnTKBt78uJXatKP7+pFDKiJA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-1.1.0.tgz", + "integrity": "sha512-QAdDzMTAMd2W9JLq4O7W4ChgBMM722nIyxdVvWNabeEb5fbPuMxjCwlKaUeju6RZER+iioVl1K8p3u5oWT4MmQ==", "requires": { "@scure/base": "^1.1.3" } }, "@wormhole-foundation/sdk-connect": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.0.3.tgz", - "integrity": "sha512-edXkPv2NDe1CSs9dcxC03lbknl1pI3YC/IEEmmn3BXD8xDL9wdvOsOzXifOhHAwUO8mGJiSVuTFRzfxiBIs56w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-1.1.0.tgz", + "integrity": "sha512-xqAGxYrNfLEMzAU6y8G7DrJGnSKcgbASJyCI1S8k4ZC1AlzOPzlH2ja7Xdq5/gsVzYZn+WsnZrHH14IUBw3X+g==", "requires": { - "@wormhole-foundation/sdk-base": "1.0.3", - "@wormhole-foundation/sdk-definitions": "1.0.3", + "@wormhole-foundation/sdk-base": "1.1.0", + "@wormhole-foundation/sdk-definitions": "1.1.0", "axios": "^1.4.0" }, "dependencies": { @@ -36592,71 +36592,71 @@ } }, "@wormhole-foundation/sdk-cosmwasm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.0.3.tgz", - "integrity": "sha512-0nP9ZASRyrP/lyRGHof9QQNPLngoP/Ic0R8r+r9/UQyydJhNVzYLtf6YWMqUZzpkugFCpMhz04nKMocnto1I4A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-1.1.0.tgz", + "integrity": "sha512-xD3xhvhqVNmx1jCI5F4kw7EG0der4najKh6LQmPJPhtSgiQGWkIqHLMFM21dxdVj1Aceb7yIAGgF+jDUXWzOMw==", "requires": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "cosmjs-types": "^0.9.0" } }, "@wormhole-foundation/sdk-cosmwasm-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.0.3.tgz", - "integrity": "sha512-RzrJktyotuHi/2esFFqFgoHqppIZfbjJizYVB6BNtYTGHu/3X9hTedVaMGyLzagAyaxWSCuS4OCN4K1LpqNX9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-1.1.0.tgz", + "integrity": "sha512-HP0S/SRyb8+5FbJah/H9qHzBQaScjOMxR3jBAuqSO8eV0uX58hDOoHU4+bMxW2IqDRDJVvrkKeajuYgTWDCEAA==", "requires": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0" } }, "@wormhole-foundation/sdk-cosmwasm-ibc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.0.3.tgz", - "integrity": "sha512-4SDKVr3/gLJUsvNwMFa74KbIdSW5tm4QQVEys/Y0PfRKSSmGlcn9hgj+e7wfvyR8t6TFjkllypuoJYe6o5dybA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-1.1.0.tgz", + "integrity": "sha512-MoRYGtqKjdOTBnLNxbrcInomSFctxbnPFRZwnV04v4d/9+/LU3Q0Ytei76MQGBfeDCOpyeMKIata0ifhTQnMVA==", "requires": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm-core": "1.1.0", "cosmjs-types": "^0.9.0" } }, "@wormhole-foundation/sdk-cosmwasm-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.0.3.tgz", - "integrity": "sha512-DQU31rPOloLj3iBqsz9MAzNnCIawyN7mN0uCto441+RRMYGyyW/knVIY05rQyB/xDXXhuToCwQNxtEnu75uuwg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-1.1.0.tgz", + "integrity": "sha512-KBPmmQRBDmPBwHuRx5wGT2lug0JRPfCXM47hePDnUTiA9IfF7TvqdLgSxbSxXWxFdL61IAjghJLJiKsolGFUlg==", "requires": { "@cosmjs/cosmwasm-stargate": "^0.32.0", "@injectivelabs/sdk-ts": "^1.14.13-beta.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-cosmwasm": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-cosmwasm": "1.1.0" } }, "@wormhole-foundation/sdk-definitions": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.0.3.tgz", - "integrity": "sha512-ni7msDLSCKOHSTyTTxEI9IPXlOtKtkpdyJ1i4LweOKP5qcncvLo4IJJU69C+kKc+8KwCpmz+VS+z9YAE6e+QHA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-1.1.0.tgz", + "integrity": "sha512-W7GvG5iqC1Yi3LzQweat6gL24SpwFv8kOVCbBQWMSnribvh56P5/B3v/6RxYcdIZCLCNZj6W6pDrJtJ1oNNVEQ==", "requires": { "@noble/curves": "^1.4.0", "@noble/hashes": "^1.3.1", - "@wormhole-foundation/sdk-base": "1.0.3" + "@wormhole-foundation/sdk-base": "1.1.0" } }, "@wormhole-foundation/sdk-evm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.0.3.tgz", - "integrity": "sha512-RI9t/s1AnuqMQzzGXjqCegKoOGo3RGH79uwj/u4xttkkQ2yxjZw8zXt/QwNQjBaa8F7OnOAMt9T5gAyl49BTGg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-1.1.0.tgz", + "integrity": "sha512-gpu9+4oAcgyFZQDiylFWqnCWN6YroPqZRt4Ckz6U3l1cTXNchyxFVrxi+bS2qnQZ9izaUApqTMuF/zaIaY3psw==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "ethers": "^6.5.1" }, "dependencies": { @@ -36706,12 +36706,12 @@ } }, "@wormhole-foundation/sdk-evm-cctp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.0.3.tgz", - "integrity": "sha512-UfMyrZ4SNbKX+szw7NNPC8qSrP9jO3yEa+y2zVS67TyM0HB6/+pvg+vDaRN4H52kFmqRkIQDZjTNb7FbE5Z/ZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-1.1.0.tgz", + "integrity": "sha512-RP6TMryqir45bkip6n7+O6LUubrCz+L7sosPcTWq/BLLw865TenTc3vHwOkh2lSc/hSjm7T65BeUNn0nbZZ9jg==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", "ethers": "^6.5.1" }, "dependencies": { @@ -36761,12 +36761,12 @@ } }, "@wormhole-foundation/sdk-evm-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.0.3.tgz", - "integrity": "sha512-jpk2kamEMP9TAhAOaaD+yJhGVKm3h8yfEUPdyBKAcUvBMuRmf1RY410Z1PPqW9fOLaynFmzukd44ITsh8wsnIQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-1.1.0.tgz", + "integrity": "sha512-GDzG1LpGwPMPlH3mCq461K8qKgcFl5S7cWTWVM994lAkmm8xCb6WmYd6Ds6TlEoS2ldgASQKdtO5mu3xAp28PA==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", "ethers": "^6.5.1" }, "dependencies": { @@ -36816,14 +36816,14 @@ } }, "@wormhole-foundation/sdk-evm-portico": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.0.3.tgz", - "integrity": "sha512-j0fXggpWb7OR4xDHiQtI5imd620akTVUMw7gL4TLYyAFg4nPDeXyLe3uG7uyfvMoJd6hhhSkVQE2AEZFok0WsA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-1.1.0.tgz", + "integrity": "sha512-H5H+kXpxs2+Bnvm62RIZyzhJb8vEf7rI2banXw1Yt+FWJHxvRC2qB80sWfZxS6B6S+oH+5TXXNVa0KQdEVSJkQ==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", - "@wormhole-foundation/sdk-evm-tokenbridge": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", + "@wormhole-foundation/sdk-evm-tokenbridge": "1.1.0", "ethers": "^6.5.1" }, "dependencies": { @@ -36873,13 +36873,13 @@ } }, "@wormhole-foundation/sdk-evm-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.0.3.tgz", - "integrity": "sha512-2Fuxui8JET3chLs98WZAx2lqjGa4U8Gi3ulDFyCRGic/OkLRaWQhwKHW0+9qUYQgzbd5upvVBwMHtmcBzK3aiw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-1.1.0.tgz", + "integrity": "sha512-phocegH1lacyabMvo1i3foEvqlX5AszphzrJLUu0+w+62gkRhLY3E1/apVuU0ZVVGPokPzG0R6FeHjcEUMPp1Q==", "requires": { - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-evm": "1.0.3", - "@wormhole-foundation/sdk-evm-core": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-evm": "1.1.0", + "@wormhole-foundation/sdk-evm-core": "1.1.0", "ethers": "^6.5.1" }, "dependencies": { @@ -36929,83 +36929,83 @@ } }, "@wormhole-foundation/sdk-solana": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.0.3.tgz", - "integrity": "sha512-HRR13E9qfgoYpcijc+UZU16ZRfB01Z4GqXyc1HuNpQRMvkwGWzBaBZOcmehmCITvU8izIW7DhGgSLWXraWL3hg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-1.1.0.tgz", + "integrity": "sha512-snkK/Phe1TTnA79Blu3Fodw311a7bB5F+yDG98O6rvOMmrTlm0lhCV8PX6+AJXNFEteCF8qF8WjVpqk1kvKpfQ==", "requires": { "@coral-xyz/anchor": "0.29.0", "@coral-xyz/borsh": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", + "@wormhole-foundation/sdk-connect": "1.1.0", "rpc-websockets": "^7.10.0" } }, "@wormhole-foundation/sdk-solana-cctp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.0.3.tgz", - "integrity": "sha512-eyhvxRTcKwpj5KFWIbdyRN7xds16g/IT65ctJgUv5wdd+tEoESuVIK0Ad+11Ep5JtwmSdF6IiwcN0Sfl6ckG1Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-1.1.0.tgz", + "integrity": "sha512-I8IOPKt9difGkodN307BzP7rPKx8VlqwvaniJZzBEGv1xtt/uD7NubSJY90mm0NCcRU8Rj0UGKDs3Qurb2OT6g==", "requires": { "@coral-xyz/anchor": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0" } }, "@wormhole-foundation/sdk-solana-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.0.3.tgz", - "integrity": "sha512-k65W7URd0vAw58UmIKibz+CkXijpVtAER46F9D+HZzSPGggcf/Ps9xfY285+fYMgAKSkyMqlLNrwsTR2STM/0w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-1.1.0.tgz", + "integrity": "sha512-K9aB6eCuylv8DaqXYCGbiKRcOV/Ese/lZIGN2t0gDaRdnJJa34kLVAzxLOXRyBT0qXIu7BZ1FOrZxsnkpWPXuA==", "requires": { "@coral-xyz/anchor": "0.29.0", "@coral-xyz/borsh": "0.29.0", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0" } }, "@wormhole-foundation/sdk-solana-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.0.3.tgz", - "integrity": "sha512-2ifcR3PZu/ggGrkzqlbgMlEEEELWBzOJXpPhE4gmMdynXMlZYl5HYOcx4qBnOTI336VjawPnTG+EFc54VeJoZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-1.1.0.tgz", + "integrity": "sha512-6cAxjaozUx3qzpG9UxZvLfrJ8ZwAapMNu/HzfaH4FrAYjVFyzNVgwNHloISyeyI6HmalMddc8ppIMA4DnwUjoQ==", "requires": { "@coral-xyz/anchor": "0.29.0", "@solana/spl-token": "0.3.9", "@solana/web3.js": "^1.95.2", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-solana": "1.0.3", - "@wormhole-foundation/sdk-solana-core": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-solana": "1.1.0", + "@wormhole-foundation/sdk-solana-core": "1.1.0" } }, "@wormhole-foundation/sdk-sui": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.0.3.tgz", - "integrity": "sha512-dsZ8ymv/sV0N6nmbcIquQJazBi1YNsqtKvIlhMqes0uS2iv+YvpPLfLKLzxn3KGWlXbteuJWdZtwOl/v3zhySQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-1.1.0.tgz", + "integrity": "sha512-NsAJTQpLExA9zWOTrtl7WXw5laBVEbGudj507F3jOUv+6nq9vP2ltPXfwlIWJuIVe+EU2ItFzNlH4O4hbtpeWQ==", "requires": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0" } }, "@wormhole-foundation/sdk-sui-core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.0.3.tgz", - "integrity": "sha512-5JzbJpg81XWKcY3HsCDX17dxaEgs8wMzDwZhNI2cnyBDXD8rhhDMcbTfiOLxygPtjjrplTMW6JE/QHurdXEJWw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-1.1.0.tgz", + "integrity": "sha512-CpolmoJ3QgD4ymWWX6ucILyYYYr9SUjfihBAeMAm16wM5IvqHBXVDqmaEpjXoLJqbBBABB+6r76kkSZ+6PqyQw==", "requires": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0" } }, "@wormhole-foundation/sdk-sui-tokenbridge": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.0.3.tgz", - "integrity": "sha512-lN8MLanfGUM7P3ISORITx9nYJTkFahrbd108pp8QTA6uA0kU4AW5FHLaNZoYxPGQZOhvQV6C94s3fQZFAYSi1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-1.1.0.tgz", + "integrity": "sha512-/4HrAAWS8Vb+tJPhggqXYfTFiGcQ2pYhFPMRpCTwTDlM8+CcZ9zQnNgiroy+JOFpiZyP3T7U6AYRsHldB1WHIQ==", "requires": { "@mysten/sui.js": "^0.50.1", - "@wormhole-foundation/sdk-connect": "1.0.3", - "@wormhole-foundation/sdk-sui": "1.0.3", - "@wormhole-foundation/sdk-sui-core": "1.0.3" + "@wormhole-foundation/sdk-connect": "1.1.0", + "@wormhole-foundation/sdk-sui": "1.1.0", + "@wormhole-foundation/sdk-sui-core": "1.1.0" } }, "@wry/caches": { diff --git a/ethereum/package.json b/ethereum/package.json index 8fab2cc921..45ba61e71b 100644 --- a/ethereum/package.json +++ b/ethereum/package.json @@ -46,7 +46,7 @@ "license": "ISC", "dependencies": { "@typechain/ethers-v5": "^10.2.0", - "@wormhole-foundation/sdk": "^1.0.3", + "@wormhole-foundation/sdk": "^1.1.0", "cbor": "^9.0.2", "dotenv": "^10.0.0", "elliptic": "^6.5.2", From e6d16033d7c75af4e725ba8a67e766bac84456bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Thu, 14 Nov 2024 12:50:52 -0300 Subject: [PATCH 170/174] evm: logs when retrieving create2 factory from Ethereum --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index d88fb97a53..95de25d6d6 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -137,6 +137,7 @@ export async function deployCreate2Factory( const ethChainProvider = getProvider(ethChain); const ethNetwork = await ethChainProvider.getNetwork(); if (ethNetwork.chainId === 1) { + console.log(`Retrieving Create2Factory from Ethereum`); // Here we fetch the creation bytecode from Ethereum. // We also perform a few sanity checks to ensure that the retrieved creation bytecode looks good: // 1. The transaction receipt should contain the expected address for the `Create2Factory`. From 93306bb1ca66825a031dc493d48e298680b586e4 Mon Sep 17 00:00:00 2001 From: hernandp Date: Fri, 15 Nov 2024 11:51:28 -0300 Subject: [PATCH 171/174] Contracts.json: successful SR deploy on Worldchain --- .../relayer/config/mainnet/contracts.json | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json index 4871bcd7ab..22d07df230 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/contracts.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/contracts.json @@ -64,6 +64,10 @@ { "address": "0xedd08D4363820603fb1B261F7667B8ee170c37a5", "chainId": 43 + }, + { + "address": "0xc1340aFB29aa7bCb654C0d3d433d43d28d762f81", + "chainId": 45 } ], "deliveryProviderImplementations": [ @@ -130,6 +134,10 @@ { "address": "0xe9918f582A972613aC5700d2346a97B8ebAd48a2", "chainId": 43 + }, + { + "address": "0xEcF494351C8ACd8fF0Bb7751337BF52e40cD6f86", + "chainId": 45 } ], "deliveryProviderSetups": [ @@ -196,6 +204,10 @@ { "address": "0x401d3A2ec0a071e2A8f8Fc9B4C69313C1a04540c", "chainId": 43 + }, + { + "address": "0x01796ad8B928df313A6Da96D101D941bCcC6f787", + "chainId": 45 } ], "wormholeRelayers": [ @@ -262,6 +274,10 @@ { "address": "0x27428DD2d3DD32A4D7f7C497eAaa23130d894911", "chainId": 43 + }, + { + "address": "0x1520cC9e779c56dab5866BEbFb885C86840c33d3", + "chainId": 45 } ], "mockIntegrations": [ @@ -328,6 +344,10 @@ { "address": "0xd816176149b2F2d7ec3eD47Ae705C145a03F7AB6", "chainId": 43 + }, + { + "address": "0xa34FE08aD10C1B8420Af1c0d05eB258243039B73", + "chainId": 45 } ], "create2Factories": [ @@ -394,6 +414,10 @@ { "address": "0xD7456983aF303D8811D0503631b6197C8a29248F", "chainId": 43 + }, + { + "address": "0xE1435A3231F91B9925a07af65C7726cfA2F04dbc", + "chainId": 45 } ], "wormholeRelayerImplementations": [ @@ -460,6 +484,10 @@ { "address": "0x7A0a53847776f7e94Cc35742971aCb2217b0Db81", "chainId": 43 + }, + { + "address": "0x4B6DacC25F7E651409e7f1C87e7C097820837a4f", + "chainId": 45 } ] } \ No newline at end of file From a0f98c2a98d55468b811b041be8d298eccfb481f Mon Sep 17 00:00:00 2001 From: hernandp Date: Fri, 15 Nov 2024 14:24:51 -0300 Subject: [PATCH 172/174] fixed gas provision for chain 45 --- ethereum/ts-scripts/relayer/helpers/deployments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/helpers/deployments.ts b/ethereum/ts-scripts/relayer/helpers/deployments.ts index 95de25d6d6..2aad3d6ea0 100644 --- a/ethereum/ts-scripts/relayer/helpers/deployments.ts +++ b/ethereum/ts-scripts/relayer/helpers/deployments.ts @@ -341,7 +341,7 @@ export async function buildOverrides( } else if (chain.chainId === 45) { overrides.type = 2; overrides.maxPriorityFeePerGas = ethers.utils.parseUnits("0.0001", "gwei"); - overrides.maxFeePerGas = ethers.utils.parseUnits("0.0001", "gwei"); + overrides.maxFeePerGas = ethers.utils.parseUnits("0.001", "gwei"); } return overrides; } From 225073441486159ed4bab9693f1e9c067a6886cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 15 Nov 2024 15:57:12 -0300 Subject: [PATCH 173/174] evm: copies config after building contracts in verification image --- ethereum/Dockerfile.verifyRelayer | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ethereum/Dockerfile.verifyRelayer b/ethereum/Dockerfile.verifyRelayer index c24b41d86d..84b55bf15e 100644 --- a/ethereum/Dockerfile.verifyRelayer +++ b/ethereum/Dockerfile.verifyRelayer @@ -13,11 +13,16 @@ COPY --from=ghcr.io/foundry-rs/foundry:nightly-d9e51e4807b62f101221a2fd36076c502 /usr/local/bin/chisel \ /bin/ -COPY . . +COPY ./contracts ./contracts +COPY ./forge-test ./forge-test +COPY ./Makefile ./foundry.toml ./truffle-config.js ./package.json ./package-lock.json ./tsconfig.json . +COPY ./ts-scripts/relayer/eraseTypes.ts ./ts-scripts/relayer/eraseTypes.ts ENV ENV=mainnet ENV DEV=False RUN make build +# We copy the scripts with the configuration here to avoid rebuilding the contracts in case of an RPC URL failure +COPY ./ts-scripts ./ts-scripts RUN npm run build:typescript CMD ["node", "build-ts/ts-scripts/relayer/wormholeRelayer/verifyWormholeRelayerDeployedByteCode.js"] From 2d7ec9fb43b92f66d64b7039a690b560e379f4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 15 Nov 2024 16:03:15 -0300 Subject: [PATCH 174/174] evm: changes mainnet klaytn RPC endpoint --- ethereum/ts-scripts/relayer/config/mainnet/chains.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/ts-scripts/relayer/config/mainnet/chains.json b/ethereum/ts-scripts/relayer/config/mainnet/chains.json index a86745cced..c7dcdfd548 100644 --- a/ethereum/ts-scripts/relayer/config/mainnet/chains.json +++ b/ethereum/ts-scripts/relayer/config/mainnet/chains.json @@ -41,7 +41,7 @@ "description": "Klaytn", "evmNetworkId": 8217, "chainId": 13, - "rpc": "https://public-en-cypress.klaytn.net", + "rpc": "https://klaytn.blockpi.network/v1/rpc/public", "wormholeAddress": "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7" }, {