From 085e80813551b7f64791822a2e47f02a2636dad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Regadas?= Date: Wed, 24 Apr 2024 11:58:29 +0100 Subject: [PATCH 1/3] chore: adds mmi tem as codeowners (#24216) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** It adds MMI team as **codeowners** to the respective `institutional/` folders. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .github/CODEOWNERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f94c729355c4..8eee07734755 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -54,3 +54,9 @@ privacy-snapshot.json @MetaMask/extension-privacy-reviewers # Confirmations UX team to own code for confirmations on UI. ui/pages/confirmations @MetaMask/confirmations-ux @MetaMask/confirmations-system-team + +# MMI team is responsible for code related with Institutioanl version of MetaMask +ui/pages/institutional @MetaMask/mmi +ui/components/institutional @MetaMask/mmi +ui/ducks/institutional @MetaMask/mmi +ui/selectors/institutional @MetaMask/mmi \ No newline at end of file From 4b55476d744bb6f0aa3dc2126dd468793a704fc2 Mon Sep 17 00:00:00 2001 From: Ariella Vu <20778143+digiwand@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:08:43 +0400 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20add=20npm=20resolution=20@spruceid/s?= =?UTF-8?q?iwe-parser=201.1.3=20=E2=86=92=202.1.0=20with=20patch=20(#24138?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Resolves @spruceid/siwe-parser 1.1.3 → 2.1.0 The updated @spruceid/siwe-parser allows `http` and `https` schemas in a transaction message's URL. Additional changes are included in the @spruceid/siwe-parser upgrade from v1.1.3 → v2.1.0. One important update is the requirement of [EIP-55](https://npmfs.com/package/@spruceid/siwe-parser/1.1.3/lib/abnf.ts) complaint addresses. This means that if a dapp attempts to sign a `personal_sign` message with a from address that is not EIP-55 compliant, SIWE will not be detected. This is what we want as [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) enforces EIP-55 addresses. There's a separate ticket that'll warn users if a `personal_sign` message looks like a SIWE but doesn't parse to a SIWE message: https://github.com/MetaMask/metamask-extension/issues/24128 Issue to update test-dapp SIWE addresses to be EIP-55 complaint: https://github.com/MetaMask/test-dapp/issues/326 Related Links (Thanks @NicholasEllul for these): - https://app.warp.dev/block/4eE6QC12lVuwARbpFj62VJ - https://npmfs.com/package/@spruceid/siwe-parser/1.1.3/lib/abnf.ts ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/2256 Relates To: https://github.com/MetaMask/MetaMask-planning/issues/2278 Related to: https://github.com/MetaMask/metamask-extension/pull/24107 Related to: https://github.com/MetaMask/core/pull/4153 Related to: https://github.com/MetaMask/core/pull/4141 ## **Manual testing steps** 1. Go to the metamask test-dapp or run the test-dapp locally 2. When testing locally, optionally update the from addresses used by the buttons 3. Test Sign-in With Ethereum buttons 4. Observe MM ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot Co-authored-by: legobeat <109787230+legobeat@users.noreply.github.com> Co-authored-by: Nicholas Ellul --- ...eid-siwe-parser-npm-2.1.0-060b7ede7a.patch | 51 +++++++++++++++++++ lavamoat/browserify/beta/policy.json | 47 ++++------------- lavamoat/browserify/desktop/policy.json | 47 ++++------------- lavamoat/browserify/flask/policy.json | 49 ++++-------------- lavamoat/browserify/main/policy.json | 49 ++++-------------- lavamoat/browserify/mmi/policy.json | 49 ++++-------------- package.json | 4 +- yarn.lock | 17 ++++--- 8 files changed, 112 insertions(+), 201 deletions(-) create mode 100644 .yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch diff --git a/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch b/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch new file mode 100644 index 000000000000..220b6f5d6baf --- /dev/null +++ b/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch @@ -0,0 +1,51 @@ +diff --git a/dist/abnf.js b/dist/abnf.js +index 15caf986714ddc2276571d17c35bf392941fa346..0eeac1eeb94284e201fb0bbaea887c0f3d060aaa 100644 +--- a/dist/abnf.js ++++ b/dist/abnf.js +@@ -290,9 +290,6 @@ class ParsedMessage { + if (this.domain.length === 0) { + throw new Error("Domain cannot be empty."); + } +- if (!(0, utils_1.isEIP55Address)(this.address)) { +- throw new Error("Address not conformant to EIP-55."); +- } + } + } + exports.ParsedMessage = ParsedMessage; +diff --git a/dist/regex.js b/dist/regex.js +index 4740a7c271db7fb2b5f0885727053e1165e8e392..cbfa067030a975ae645ef68baa3b963059e89f2c 100644 +--- a/dist/regex.js ++++ b/dist/regex.js +@@ -55,9 +55,7 @@ class ParsedMessage { + throw new Error("Domain cannot be empty."); + } + this.address = (_b = match === null || match === void 0 ? void 0 : match.groups) === null || _b === void 0 ? void 0 : _b.address; +- if (!(0, utils_1.isEIP55Address)(this.address)) { +- throw new Error("Address not conformant to EIP-55."); +- } ++ + this.statement = (_c = match === null || match === void 0 ? void 0 : match.groups) === null || _c === void 0 ? void 0 : _c.statement; + this.uri = (_d = match === null || match === void 0 ? void 0 : match.groups) === null || _d === void 0 ? void 0 : _d.uri; + if (!uri.isUri(this.uri)) { +diff --git a/lib/abnf.ts b/lib/abnf.ts +index a7e5fcfaefdf39bac8bf0b5ee2d6e12cee4b07f0..6d022a2bd17ec5d7158b34e978a946465520aa74 100644 +--- a/lib/abnf.ts ++++ b/lib/abnf.ts +@@ -1,6 +1,6 @@ + import apgApi from "apg-js/src/apg-api/api"; + import apgLib from "apg-js/src/apg-lib/node-exports"; +-import { isEIP55Address, parseIntegerNumber } from "./utils"; ++import { parseIntegerNumber } from "./utils"; + + const GRAMMAR = ` + sign-in-with-ethereum = +@@ -358,9 +358,5 @@ export class ParsedMessage { + if (this.domain.length === 0) { + throw new Error("Domain cannot be empty."); + } +- +- if (!isEIP55Address(this.address)) { +- throw new Error("Address not conformant to EIP-55."); +- } + } + } diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 40d8a4c225ed..e6e9331b036c 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -741,7 +741,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -831,7 +831,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -968,7 +968,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -977,15 +977,6 @@ "eth-ens-namehash": true } }, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true - } - }, "@metamask/eth-json-rpc-filters": { "globals": { "console.error": true @@ -1604,7 +1595,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1781,7 +1772,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1931,7 +1922,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2012,7 +2003,7 @@ "setTimeout": true }, "packages": { - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/controller-utils>@ethereumjs/util": true, "@metamask/utils": true, @@ -2121,9 +2112,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2131,16 +2122,6 @@ "eth-ens-namehash": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": { "globals": { "clearInterval": true, @@ -2172,9 +2153,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2195,16 +2176,6 @@ "webpack>events": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 548ca778f28c..7b27ff05eb01 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -741,7 +741,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -831,7 +831,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1053,7 +1053,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1062,15 +1062,6 @@ "eth-ens-namehash": true } }, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true - } - }, "@metamask/eth-json-rpc-filters": { "globals": { "console.error": true @@ -1689,7 +1680,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1901,7 +1892,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2115,7 +2106,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2196,7 +2187,7 @@ "setTimeout": true }, "packages": { - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/controller-utils>@ethereumjs/util": true, "@metamask/utils": true, @@ -2305,9 +2296,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2315,16 +2306,6 @@ "eth-ens-namehash": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": { "globals": { "clearInterval": true, @@ -2356,9 +2337,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2379,16 +2360,6 @@ "webpack>events": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 505bcc78152b..117caac12462 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -741,7 +741,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -831,7 +831,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1053,7 +1053,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1062,15 +1062,6 @@ "eth-ens-namehash": true } }, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true - } - }, "@metamask/eth-json-rpc-filters": { "globals": { "console.error": true @@ -1689,7 +1680,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1901,7 +1892,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1975,7 +1966,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2167,7 +2158,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2248,7 +2239,7 @@ "setTimeout": true }, "packages": { - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/controller-utils>@ethereumjs/util": true, "@metamask/utils": true, @@ -2357,9 +2348,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2367,16 +2358,6 @@ "eth-ens-namehash": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": { "globals": { "clearInterval": true, @@ -2408,9 +2389,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2431,16 +2412,6 @@ "webpack>events": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 475227c41e57..00576e2208f3 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -741,7 +741,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -831,7 +831,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -968,7 +968,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -977,15 +977,6 @@ "eth-ens-namehash": true } }, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true - } - }, "@metamask/eth-json-rpc-filters": { "globals": { "console.error": true @@ -1604,7 +1595,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1816,7 +1807,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1890,7 +1881,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2082,7 +2073,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2163,7 +2154,7 @@ "setTimeout": true }, "packages": { - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/controller-utils>@ethereumjs/util": true, "@metamask/utils": true, @@ -2272,9 +2263,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2282,16 +2273,6 @@ "eth-ens-namehash": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": { "globals": { "clearInterval": true, @@ -2323,9 +2304,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2346,16 +2327,6 @@ "webpack>events": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index a26136605fc5..daa6245b1b90 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -880,7 +880,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -970,7 +970,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1107,7 +1107,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1116,15 +1116,6 @@ "eth-ens-namehash": true } }, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true - } - }, "@metamask/eth-json-rpc-filters": { "globals": { "console.error": true @@ -1743,7 +1734,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -1955,7 +1946,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2029,7 +2020,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2221,7 +2212,7 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/utils": true, "bn.js": true, @@ -2302,7 +2293,7 @@ "setTimeout": true }, "packages": { - "@metamask/ens-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/controller-utils>@ethereumjs/util": true, "@metamask/utils": true, @@ -2411,9 +2402,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2421,16 +2412,6 @@ "eth-ens-namehash": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller": { "globals": { "clearInterval": true, @@ -2462,9 +2443,9 @@ "setTimeout": true }, "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/ethjs>@metamask/ethjs-unit": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@ethereumjs/util": true, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": true, "@metamask/utils": true, "bn.js": true, "browserify>buffer": true, @@ -2485,16 +2466,6 @@ "webpack>events": true } }, - "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/controller-utils>@spruceid/siwe-parser": { - "globals": { - "console.error": true, - "console.log": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser>apg-js": true, - "@noble/hashes": true - } - }, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/gas-fee-controller>@metamask/polling-controller": { "globals": { "clearTimeout": true, diff --git a/package.json b/package.json index 28c534deaafc..dd63c9533a34 100644 --- a/package.json +++ b/package.json @@ -240,7 +240,9 @@ "@metamask/network-controller@npm:^18.0.1": "patch:@metamask/network-controller@npm%3A18.1.0#~/.yarn/patches/@metamask-network-controller-npm-18.1.0-680908c29a.patch", "@metamask/network-controller@npm:^17.2.1": "patch:@metamask/network-controller@npm%3A18.1.0#~/.yarn/patches/@metamask-network-controller-npm-18.1.0-680908c29a.patch", "@metamask/network-controller@npm:^18.1.0": "patch:@metamask/network-controller@npm%3A18.1.0#~/.yarn/patches/@metamask-network-controller-npm-18.1.0-680908c29a.patch", - "@metamask/keyring-controller@npm:^13.0.0": "patch:@metamask/keyring-controller@npm%3A13.0.0#~/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch" + "@metamask/keyring-controller@npm:^13.0.0": "patch:@metamask/keyring-controller@npm%3A13.0.0#~/.yarn/patches/@metamask-keyring-controller-npm-13.0.0-d94816a680.patch", + "@spruceid/siwe-parser@npm:1.1.3": "patch:@spruceid/siwe-parser@npm%3A2.1.0#~/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch", + "@spruceid/siwe-parser@npm:2.1.0": "patch:@spruceid/siwe-parser@npm%3A2.1.0#~/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch" }, "dependencies": { "@babel/runtime": "patch:@babel/runtime@npm%3A7.24.0#~/.yarn/patches/@babel-runtime-npm-7.24.0-7eb1dd11a2.patch", diff --git a/yarn.lock b/yarn.lock index 73d318fe1861..cbfc9788cf59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7278,24 +7278,27 @@ __metadata: languageName: node linkType: hard -"@spruceid/siwe-parser@npm:1.1.3": - version: 1.1.3 - resolution: "@spruceid/siwe-parser@npm:1.1.3" +"@spruceid/siwe-parser@npm:2.1.0": + version: 2.1.0 + resolution: "@spruceid/siwe-parser@npm:2.1.0" dependencies: + "@noble/hashes": "npm:^1.1.2" apg-js: "npm:^4.1.1" - checksum: c953fa1e79c633a92f030b68a44225b28c71396553dc5eb8d4d5b263e8b2e5b988131720170df2eaf202ee5251d4369ccff99c130b691a1accca2a1ff93b1111 + uri-js: "npm:^4.4.1" + valid-url: "npm:^1.0.9" + checksum: 12198f613f15000b5ec2e2f59c4c3c34918c88d48e0c2e2cfdb34ce926b89a13b6f18e7612777ffb8fa25ca2c226577e47c72592e76823b03770b67c54f78d38 languageName: node linkType: hard -"@spruceid/siwe-parser@npm:2.1.0": +"@spruceid/siwe-parser@patch:@spruceid/siwe-parser@npm%3A2.1.0#~/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch": version: 2.1.0 - resolution: "@spruceid/siwe-parser@npm:2.1.0" + resolution: "@spruceid/siwe-parser@patch:@spruceid/siwe-parser@npm%3A2.1.0#~/.yarn/patches/@spruceid-siwe-parser-npm-2.1.0-060b7ede7a.patch::version=2.1.0&hash=22ff08" dependencies: "@noble/hashes": "npm:^1.1.2" apg-js: "npm:^4.1.1" uri-js: "npm:^4.4.1" valid-url: "npm:^1.0.9" - checksum: 12198f613f15000b5ec2e2f59c4c3c34918c88d48e0c2e2cfdb34ce926b89a13b6f18e7612777ffb8fa25ca2c226577e47c72592e76823b03770b67c54f78d38 + checksum: 6a6f7fbf7a43a63a3e9cf7fadd4ef2bc700d3933ed65db1b5d57262cc1b502bb2d00e741b3b315c705897c34dcf6b9031c4963e6e72e8608d593f1bfdaf32169 languageName: node linkType: hard From f3c4676d45560db3ebff640a99a5a18f54005457 Mon Sep 17 00:00:00 2001 From: Brian Bergeron Date: Wed, 24 Apr 2024 08:47:02 -0700 Subject: [PATCH 3/3] feat: token detection on 7 more networks (#24121) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Adds support for erc20 token detection on 7 more networks. Patching this from core because it's small: https://github.com/MetaMask/core/pull/4184 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/24121?quickstart=1) ## **Related issues** https://consensyssoftware.atlassian.net/browse/MMASSETS-207 ## **Manual testing steps** 1. Visit one of the new chains (cronos, celo, gnosis, fantom, polygon zk, moonbeam, moonriver) on a wallet that has tokens on the network 2. They should be autodetected ## **Screenshots/Recordings** ### **Before** None of the chains support token lists or detection: Screenshot 2024-04-22 at 9 50 03 PM ### **After** All 7 chains support detection: https://github.com/MetaMask/metamask-extension/assets/3500406/16c8e763-ccc0-4070-8ac3-28a7dfa88e1f ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- ...-assets-controllers-patch-7616cc1669.patch | 57 +++++++++++++++++++ package.json | 2 +- shared/constants/network.ts | 7 ++- shared/modules/network.utils.ts | 7 +++ ui/selectors/selectors.js | 32 ++++++++++- yarn.lock | 46 ++++++++++++++- 6 files changed, 144 insertions(+), 7 deletions(-) create mode 100644 .yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch diff --git a/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch b/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch new file mode 100644 index 000000000000..6231d02d46f1 --- /dev/null +++ b/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch @@ -0,0 +1,57 @@ +diff --git a/dist/AssetsContractController.js b/dist/AssetsContractController.js +index e8bae0bc514db69398fc2c378ca42eeb8f135e60..33c1e894f0318a59ec43f1b0a51500118c49bef6 100644 +--- a/dist/AssetsContractController.js ++++ b/dist/AssetsContractController.js +@@ -40,6 +40,13 @@ exports.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID = { + [assetsUtil_1.SupportedTokenDetectionNetworks.optimism]: '0xB1c568e9C3E6bdaf755A60c7418C269eb11524FC', + [assetsUtil_1.SupportedTokenDetectionNetworks.base]: '0x6AA75276052D96696134252587894ef5FFA520af', + [assetsUtil_1.SupportedTokenDetectionNetworks.zksync]: '0x458fEd3144680a5b8bcfaa0F9594aa19B4Ea2D34', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.cronos]: '0x768ca200f0fc702ac9ea502498c18f5eff176378', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.celo]: '0x6aa75276052d96696134252587894ef5ffa520af', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.gnosis]: '0x6aa75276052d96696134252587894ef5ffa520af', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.fantom]: '0x6aa75276052d96696134252587894ef5ffa520af', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.polygon_zkevm]: '0x6aa75276052d96696134252587894ef5ffa520af', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.moonbeam]: '0x6aa75276052d96696134252587894ef5ffa520af', ++ [assetsUtil_1.SupportedTokenDetectionNetworks.moonriver]: '0x6aa75276052d96696134252587894ef5ffa520af', + }; + exports.MISSING_PROVIDER_ERROR = 'AssetsContractController failed to set the provider correctly. A provider must be set for this method to be available'; + /** +diff --git a/dist/assetsUtil.d.ts b/dist/assetsUtil.d.ts +index 85c85697971f08cd74cbb0fd9b305ee844a0519e..5d90c63f0cf8ab5d694467afc003c7e83ed8e64b 100644 +--- a/dist/assetsUtil.d.ts ++++ b/dist/assetsUtil.d.ts +@@ -53,7 +53,15 @@ export declare enum SupportedTokenDetectionNetworks { + arbitrum = "0xa4b1", + optimism = "0xa", + base = "0x2105", +- zksync = "0x144" ++ zksync = "0x144", ++ zksync = "0x144", ++ cronos = "0x19", ++ celo = "0xa4ec", ++ gnosis = "0x64", ++ fantom = "0xfa", ++ polygon_zkevm = "0x44d", ++ moonbeam = "0x504", ++ moonriver = "0x505" + } + /** + * Check if token detection is enabled for certain networks. +diff --git a/dist/assetsUtil.js b/dist/assetsUtil.js +index 27689263f0af453ac35c6f3240cc11e6b307458e..8d7098eff7080a4846c6b8c55650df102a6d8f2f 100644 +--- a/dist/assetsUtil.js ++++ b/dist/assetsUtil.js +@@ -119,6 +119,13 @@ var SupportedTokenDetectionNetworks; + SupportedTokenDetectionNetworks["optimism"] = "0xa"; + SupportedTokenDetectionNetworks["base"] = "0x2105"; + SupportedTokenDetectionNetworks["zksync"] = "0x144"; ++ SupportedTokenDetectionNetworks["cronos"] = "0x19"; ++ SupportedTokenDetectionNetworks["celo"] = "0xa4ec"; ++ SupportedTokenDetectionNetworks["gnosis"] = "0x64"; ++ SupportedTokenDetectionNetworks["fantom"] = "0xfa"; ++ SupportedTokenDetectionNetworks["polygon_zkevm"] = "0x44d"; ++ SupportedTokenDetectionNetworks["moonbeam"] = "0x504"; ++ SupportedTokenDetectionNetworks["moonriver"] = "0x505"; + })(SupportedTokenDetectionNetworks = exports.SupportedTokenDetectionNetworks || (exports.SupportedTokenDetectionNetworks = {})); + /** + * Check if token detection is enabled for certain networks. diff --git a/package.json b/package.json index dd63c9533a34..e3dac077e632 100644 --- a/package.json +++ b/package.json @@ -274,7 +274,7 @@ "@metamask/address-book-controller": "^3.1.7", "@metamask/announcement-controller": "^6.1.0", "@metamask/approval-controller": "^6.0.0", - "@metamask/assets-controllers": "patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@npm%253A26.0.0%23~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%3A%3Aversion=26.0.0&hash=cf1d54#~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch", + "@metamask/assets-controllers": "patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@patch%253A@metamask/assets-controllers@npm%25253A26.0.0%2523~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%253A%253Aversion=26.0.0&hash=cf1d54%23~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch%3A%3Aversion=26.0.0&hash=5c145e#~/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch", "@metamask/base-controller": "^4.1.0", "@metamask/browser-passworder": "^4.3.0", "@metamask/contract-metadata": "^2.5.0", diff --git a/shared/constants/network.ts b/shared/constants/network.ts index b22b0a51ceb8..abfcfe155e60 100644 --- a/shared/constants/network.ts +++ b/shared/constants/network.ts @@ -151,6 +151,7 @@ export const CHAIN_IDS = { ARBITRUM_GOERLI: '0x66eed', BLAST: '0x13e31', FILECOIN: '0x13a', + POLYGON_ZKEVM: '0x44d', SCROLL: '0x82750', SCROLL_SEPOLIA: '0x8274f', } as const; @@ -194,7 +195,6 @@ const CHAINLIST_CHAIN_IDS_MAP = { OASYS_MAINNET: '0xf8', OKXCHAIN_MAINNET: '0x42', PGN_PUBLIC_GOODS_NETWORK: '0x1a8', - POLYGON_ZKEVM: '0x44d', PULSECHAIN_MAINNET: '0x171', SHARDEUM_LIBERTY_2X: '0x1f91', SHARDEUM_SPHINX_1X: '0x1f92', @@ -248,6 +248,10 @@ export const GNOSIS_DISPLAY_NAME = 'Gnosis'; export const ZK_SYNC_ERA_DISPLAY_NAME = 'zkSync Era Mainnet'; export const BASE_DISPLAY_NAME = 'Base Mainnet'; export const AURORA_ETH_DISPLAY_NAME = 'Aurora'; +export const CRONOS_DISPLAY_NAME = 'Cronos'; +export const POLYGON_ZKEVM_DISPLAY_NAME = 'Polygon zkEVM'; +export const MOONBEAM_DISPLAY_NAME = 'Moonbeam'; +export const MOONRIVER_DISPLAY_NAME = 'Moonriver'; export const SCROLL_DISPLAY_NAME = 'Scroll'; export const SCROLL_SEPOLIA_DISPLAY_NAME = 'Scroll Sepolia'; @@ -895,6 +899,7 @@ export const BUYABLE_CHAINS_MAP: { | typeof CHAIN_IDS.ARBITRUM_GOERLI | typeof CHAIN_IDS.BLAST | typeof CHAIN_IDS.FILECOIN + | typeof CHAIN_IDS.POLYGON_ZKEVM | typeof CHAIN_IDS.SCROLL | typeof CHAIN_IDS.SCROLL_SEPOLIA >]: BuyableChainSettings; diff --git a/shared/modules/network.utils.ts b/shared/modules/network.utils.ts index e1d7279fd578..8985bdcf7f5a 100644 --- a/shared/modules/network.utils.ts +++ b/shared/modules/network.utils.ts @@ -48,6 +48,13 @@ export function isTokenDetectionEnabledForNetwork(chainId: string | undefined) { case CHAIN_IDS.OPTIMISM: case CHAIN_IDS.BASE: case CHAIN_IDS.ZKSYNC_ERA: + case CHAIN_IDS.CRONOS: + case CHAIN_IDS.CELO: + case CHAIN_IDS.GNOSIS: + case CHAIN_IDS.FANTOM: + case CHAIN_IDS.POLYGON_ZKEVM: + case CHAIN_IDS.MOONBEAM: + case CHAIN_IDS.MOONRIVER: return true; default: return false; diff --git a/ui/selectors/selectors.js b/ui/selectors/selectors.js index 33a14b72c1b3..12acbd14ffdd 100644 --- a/ui/selectors/selectors.js +++ b/ui/selectors/selectors.js @@ -41,6 +41,13 @@ import { CHAIN_ID_TOKEN_IMAGE_MAP, LINEA_SEPOLIA_TOKEN_IMAGE_URL, LINEA_SEPOLIA_DISPLAY_NAME, + CRONOS_DISPLAY_NAME, + CELO_DISPLAY_NAME, + GNOSIS_DISPLAY_NAME, + FANTOM_DISPLAY_NAME, + POLYGON_ZKEVM_DISPLAY_NAME, + MOONBEAM_DISPLAY_NAME, + MOONRIVER_DISPLAY_NAME, } from '../../shared/constants/network'; import { WebHIDConnectedStatuses, @@ -2048,14 +2055,26 @@ export const getTokenDetectionSupportNetworkByChainId = (state) => { return BASE_DISPLAY_NAME; case CHAIN_IDS.ZKSYNC_ERA: return ZK_SYNC_ERA_DISPLAY_NAME; + case CHAIN_IDS.CRONOS: + return CRONOS_DISPLAY_NAME; + case CHAIN_IDS.CELO: + return CELO_DISPLAY_NAME; + case CHAIN_IDS.GNOSIS: + return GNOSIS_DISPLAY_NAME; + case CHAIN_IDS.FANTOM: + return FANTOM_DISPLAY_NAME; + case CHAIN_IDS.POLYGON_ZKEVM: + return POLYGON_ZKEVM_DISPLAY_NAME; + case CHAIN_IDS.MOONBEAM: + return MOONBEAM_DISPLAY_NAME; + case CHAIN_IDS.MOONRIVER: + return MOONRIVER_DISPLAY_NAME; default: return ''; } }; /** - * To check if the chainId supports token detection, - * currently it returns true for Ethereum Mainnet, BSC, Polygon, - * Avalanche, Linea, Arbitrum, Optimism, Base, and zkSync + * Returns true if a token list is available for the current network. * * @param {*} state * @returns Boolean @@ -2074,6 +2093,13 @@ export function getIsDynamicTokenListAvailable(state) { CHAIN_IDS.OPTIMISM, CHAIN_IDS.BASE, CHAIN_IDS.ZKSYNC_ERA, + CHAIN_IDS.CRONOS, + CHAIN_IDS.CELO, + CHAIN_IDS.GNOSIS, + CHAIN_IDS.FANTOM, + CHAIN_IDS.POLYGON_ZKEVM, + CHAIN_IDS.MOONBEAM, + CHAIN_IDS.MOONRIVER, ].includes(chainId); } diff --git a/yarn.lock b/yarn.lock index cbfc9788cf59..b96625a0c8a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4098,7 +4098,7 @@ __metadata: languageName: node linkType: hard -"@metamask/assets-controllers@patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@npm%253A26.0.0%23~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%3A%3Aversion=26.0.0&hash=cf1d54#~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch": +"@metamask/assets-controllers@patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@npm%253A26.0.0%23~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%3A%3Aversion=26.0.0&hash=cf1d54#~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch::version=26.0.0&hash=5c145e": version: 26.0.0 resolution: "@metamask/assets-controllers@patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@npm%253A26.0.0%23~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%3A%3Aversion=26.0.0&hash=cf1d54#~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch::version=26.0.0&hash=5c145e" dependencies: @@ -4140,6 +4140,48 @@ __metadata: languageName: node linkType: hard +"@metamask/assets-controllers@patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@patch%253A@metamask/assets-controllers@npm%25253A26.0.0%2523~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%253A%253Aversion=26.0.0&hash=cf1d54%23~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch%3A%3Aversion=26.0.0&hash=5c145e#~/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch": + version: 26.0.0 + resolution: "@metamask/assets-controllers@patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@patch%253A@metamask/assets-controllers@npm%25253A26.0.0%2523~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%253A%253Aversion=26.0.0&hash=cf1d54%23~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch%3A%3Aversion=26.0.0&hash=5c145e#~/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch::version=26.0.0&hash=fd4d03" + dependencies: + "@ethereumjs/util": "npm:^8.1.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/contracts": "npm:^5.7.0" + "@ethersproject/providers": "npm:^5.7.0" + "@metamask/abi-utils": "npm:^2.0.2" + "@metamask/accounts-controller": "npm:^11.0.0" + "@metamask/approval-controller": "npm:^5.1.3" + "@metamask/base-controller": "npm:^4.1.1" + "@metamask/contract-metadata": "npm:^2.4.0" + "@metamask/controller-utils": "npm:^8.0.4" + "@metamask/eth-query": "npm:^4.0.0" + "@metamask/keyring-controller": "npm:^13.0.0" + "@metamask/metamask-eth-abis": "npm:3.0.0" + "@metamask/network-controller": "npm:^17.2.1" + "@metamask/polling-controller": "npm:^5.0.1" + "@metamask/preferences-controller": "npm:^8.0.0" + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/utils": "npm:^8.3.0" + "@types/bn.js": "npm:^5.1.5" + "@types/uuid": "npm:^8.3.0" + async-mutex: "npm:^0.2.6" + bn.js: "npm:^5.2.1" + cockatiel: "npm:^3.1.2" + lodash: "npm:^4.17.21" + multiformats: "npm:^9.5.2" + single-call-balance-checker-abi: "npm:^1.0.0" + uuid: "npm:^8.3.2" + peerDependencies: + "@metamask/accounts-controller": ^11.0.0 + "@metamask/approval-controller": ^5.1.2 + "@metamask/keyring-controller": ^13.0.0 + "@metamask/network-controller": ^17.2.0 + "@metamask/preferences-controller": ^8.0.0 + checksum: 6614539d9f802a83b014469d806d34d72725d31f200914cf8db327828562a9c2559e79ff2103b8a58cf561fb00a0d0599704429b11c5e48708f557867117895e + languageName: node + linkType: hard + "@metamask/auto-changelog@npm:^2.1.0": version: 2.6.1 resolution: "@metamask/auto-changelog@npm:2.6.1" @@ -24824,7 +24866,7 @@ __metadata: "@metamask/address-book-controller": "npm:^3.1.7" "@metamask/announcement-controller": "npm:^6.1.0" "@metamask/approval-controller": "npm:^6.0.0" - "@metamask/assets-controllers": "patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@npm%253A26.0.0%23~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%3A%3Aversion=26.0.0&hash=cf1d54#~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch" + "@metamask/assets-controllers": "patch:@metamask/assets-controllers@patch%3A@metamask/assets-controllers@patch%253A@metamask/assets-controllers@npm%25253A26.0.0%2523~/.yarn/patches/@metamask-assets-controllers-npm-26.0.0-17c0e9432c.patch%253A%253Aversion=26.0.0&hash=cf1d54%23~/.yarn/patches/@metamask-assets-controllers-patch-0f46262fea.patch%3A%3Aversion=26.0.0&hash=5c145e#~/.yarn/patches/@metamask-assets-controllers-patch-7616cc1669.patch" "@metamask/auto-changelog": "npm:^2.1.0" "@metamask/base-controller": "npm:^4.1.0" "@metamask/browser-passworder": "npm:^4.3.0"