diff --git a/app/scripts/lib/tx-verification/tx-verification-middleware.test.ts b/app/scripts/lib/tx-verification/tx-verification-middleware.test.ts new file mode 100644 index 000000000000..110a2dc3040e --- /dev/null +++ b/app/scripts/lib/tx-verification/tx-verification-middleware.test.ts @@ -0,0 +1,255 @@ +import { NetworkController } from '@metamask/network-controller'; +import { JsonRpcParams, jsonrpc2, Hex } from '@metamask/utils'; +import { + EXPERIENCES_TYPE, + FIRST_PARTY_CONTRACT_NAMES, +} from '../../../../shared/constants/first-party-contracts'; +import { + createTxVerificationMiddleware, + TxParams, +} from './tx-verification-middleware'; + +const getMockNetworkController = (chainId: `0x${string}` = '0x1') => + ({ state: { providerConfig: { chainId } } } as unknown as NetworkController); + +const mockTrustedSigners: Partial> = { + [EXPERIENCES_TYPE.METAMASK_BRIDGE]: + '0xe672B534ccf9876a7554a1dD1685a2a5C2Cc8e8C', +}; + +const jsonRpcTemplate = { jsonrpc: jsonrpc2, id: 1 }; + +const getMiddlewareParams = (method: string, params: JsonRpcParams = []) => { + const req = { ...jsonRpcTemplate, method, params }; + const res = { ...jsonRpcTemplate, result: null }; + const next = jest.fn(); + const end = jest.fn(); + return { req, res, next, end }; +}; + +const getBridgeTxParams = (txParams: Partial = {}): [TxParams] => { + return [ + { + data: '0x1', + from: '0x1', + to: '0x1', + value: '0x1', + ...txParams, + }, + ]; +}; + +describe('tx verification middleware', () => { + it('ignores methods other than eth_sendTransaction', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + const { req, res, next, end } = getMiddlewareParams('foo'); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }); + + // @ts-expect-error Our test types are broken + it.each([ + ['null', null], + ['string', 'foo'], + ['plain object', {}], + ['empty array', []], + ['array with non-object', ['foo']], + ['non-string "data"', [{ data: 1 }]], + ['non-string "from"', [{ data: 'data', from: 1 }]], + ['non-string "to"', [{ data: 'data', from: 'from', to: 1 }]], + [ + 'non-string "value"', + [{ data: 'data', from: 'from', to: 'to', value: 1 }], + ], + [ + 'non-string "chainId"', + [{ data: 'data', from: 'from', to: 'to', value: 'value', chainId: 1 }], + ], + [ + 'non-"0x"-prefixed "chainId"', + [{ data: 'data', from: 'from', to: 'to', value: 'value', chainId: '1' }], + ], + ])( + 'ignores invalid params: %s', + (_: string, invalidParams: JsonRpcParams) => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + invalidParams, + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }, + ); + + // @ts-expect-error Our test types are broken + it.each(Object.keys(FIRST_PARTY_CONTRACT_NAMES['MetaMask Bridge']))( + 'ignores transactions that are not addressed to the bridge contract for chain %s', + (chainId: `0x${string}`) => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ chainId, to: '0x1' }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }, + ); + + // @ts-expect-error Our test types are broken + it.each(['0x11111', '0x111', '0x222222'])( + 'ignores transactions that do not have a bridge contract deployed for chain %s', + (chainId: `0x${string}`) => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ chainId, to: '0x1' }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }, + ); + + it('calls next() if reverse address mapping look up is undefined', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ ...getFixtures().mapUndefined }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }); + + it('calls next() if chainId for `to` address does not match', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ ...getFixtures().mapIncorrectChain }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }); + + it('calls next() if experience type for `to` address is not an experience to verify', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ ...getFixtures().mapIncorrectExp }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }); + + it('passes through a valid bridge transaction', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ ...getFixtures().valid }), + ); + middleware(req, res, next, end); + + expect(next).toHaveBeenCalledTimes(1); + expect(end).not.toHaveBeenCalled(); + }); + + it('rejects modified bridge transactions', () => { + const middleware = createTxVerificationMiddleware( + getMockNetworkController(), + mockTrustedSigners, + ); + + const { req, res, next, end } = getMiddlewareParams( + 'eth_sendTransaction', + getBridgeTxParams({ ...getFixtures().invalid }), + ); + middleware(req, res, next, end); + + expect(next).not.toHaveBeenCalled(); + expect(end).toHaveBeenCalledTimes(1); + }); +}); + +/** + * Returns bridge transaction validation fixtures. + * + * @returns The fixtures. + */ +function getFixtures() { + return { + mapIncorrectExp: { + data: '0x3ce33bff0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b6574416461707465725632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000009f295cd5f000000000000000000000000000e6b738da243e8fa2a0ed5915645789add5de515200000000000000000000000000000000000000000000000000000000000001280000019fd025dec0000000000000000000000000e672b534ccf9876a7554a1dd1685a2a5c2cc8e8c000000000000000000000000b8901acb165ed027e32754e0ffe830802919727f000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000004614942c423e000000000000000000000000000000000000000000000000000000886c98b760000000000000000000000000000000000000000000000000000000019012a41ba800000000000000000000000000000000000000000000000000000000000000c40000000000000000000000000000000000000000000000005dedaf7e04c3f5c842c30ed9a4a19baceb915cdd3e865f0dad99ffca277743a20bac00e0f366e7265f1fcad502791ff49e9c5c98e1841a090df23ce5555051da1c', + from: '0xe672b534ccf9876a7554a1dd1685a2a5c2cc8e8c', + to: '0xc7bE520a13dC023A1b34C03F4Abdab8A43653F7B', + value: '0x470de4df820000', + }, + mapIncorrectChain: { + data: '0x3ce33bff0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b6574416461707465725632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000009f295cd5f000000000000000000000000000e6b738da243e8fa2a0ed5915645789add5de515200000000000000000000000000000000000000000000000000000000000001280000019fd025dec0000000000000000000000000e672b534ccf9876a7554a1dd1685a2a5c2cc8e8c000000000000000000000000b8901acb165ed027e32754e0ffe830802919727f000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000004614942c423e000000000000000000000000000000000000000000000000000000886c98b760000000000000000000000000000000000000000000000000000000019012a41ba800000000000000000000000000000000000000000000000000000000000000c40000000000000000000000000000000000000000000000005dedaf7e04c3f5c842c30ed9a4a19baceb915cdd3e865f0dad99ffca277743a20bac00e0f366e7265f1fcad502791ff49e9c5c98e1841a090df23ce5555051da1c', + from: '0xe672b534ccf9876a7554a1dd1685a2a5c2cc8e8c', + to: `0xaEc23140408534b378bf5832defc426dF8604B59`, + value: '0x470de4df820000', + }, + mapUndefined: { + data: '0x3ce33bff0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b6574416461707465725632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000009f295cd5f000000000000000000000000000e6b738da243e8fa2a0ed5915645789add5de515200000000000000000000000000000000000000000000000000000000000001280000019fd025dec0000000000000000000000000e672b534ccf9876a7554a1dd1685a2a5c2cc8e8c000000000000000000000000b8901acb165ed027e32754e0ffe830802919727f000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000004614942c423e000000000000000000000000000000000000000000000000000000886c98b760000000000000000000000000000000000000000000000000000000019012a41ba800000000000000000000000000000000000000000000000000000000000000c40000000000000000000000000000000000000000000000005dedaf7e04c3f5c842c30ed9a4a19baceb915cdd3e865f0dad99ffca277743a20bac00e0f366e7265f1fcad502791ff49e9c5c98e1841a090df23ce5555051da1c', + from: '0xe672b534ccf9876a7554a1dd1685a2a5c2cc8e8c', + to: '0x0439e60F02a8900a951603950d8D4527f400C3f9', + value: '0x470de4df820000', + }, + valid: { + data: '0x3ce33bff0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b6574416461707465725632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000009f295cd5f000000000000000000000000000e6b738da243e8fa2a0ed5915645789add5de515200000000000000000000000000000000000000000000000000000000000001280000019fd025dec0000000000000000000000000e672b534ccf9876a7554a1dd1685a2a5c2cc8e8c000000000000000000000000b8901acb165ed027e32754e0ffe830802919727f000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000004614942c423e000000000000000000000000000000000000000000000000000000886c98b760000000000000000000000000000000000000000000000000000000019012a41ba800000000000000000000000000000000000000000000000000000000000000c40000000000000000000000000000000000000000000000005dedaf7e04c3f5c842c30ed9a4a19baceb915cdd3e865f0dad99ffca277743a20bac00e0f366e7265f1fcad502791ff49e9c5c98e1841a090df23ce5555051da1c', + from: '0xe672b534ccf9876a7554a1dd1685a2a5c2cc8e8c', + to: FIRST_PARTY_CONTRACT_NAMES['MetaMask Bridge']['0x1'], + value: '0x470de4df820000', + }, + invalid: { + data: '0x3ce33bff0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000d6c6966694164617074657256320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000e397c4883ec89ed4fc9d258f00c689708b2799c9000000000000000000000000e397c4883ec89ed4fc9d258f00c689708b2799c9000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000466ebb82ac1000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000009f295cd5f000000000000000000000000000c8c0e780960f954c3426a32b6ab453248d632b59000000000000000000000000000000000000000000000000000000000000006c5a39b10a5d458d62482fa1e7e672b534ccf9876a7554a1dd1685a2a5c2cc8e8c0000a4b10002a9de92aa00576661f103ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd00dfeeddeadbeef8932eb23bad9bddb5cf81426f78279a53c6c3b710000000000000000000000000000000000000000', + from: '0xe672b534ccf9876a7554a1dd1685a2a5c2cc8e8c', + to: FIRST_PARTY_CONTRACT_NAMES['MetaMask Bridge']['0x1'], + value: '0x470de4df820000', + }, + } as const; +} diff --git a/app/scripts/lib/tx-verification/tx-verification-middleware.ts b/app/scripts/lib/tx-verification/tx-verification-middleware.ts new file mode 100644 index 000000000000..30782a98721b --- /dev/null +++ b/app/scripts/lib/tx-verification/tx-verification-middleware.ts @@ -0,0 +1,115 @@ +import { hashMessage } from '@ethersproject/hash'; +import { verifyMessage } from '@ethersproject/wallet'; +import type { NetworkController } from '@metamask/network-controller'; +import { rpcErrors } from '@metamask/rpc-errors'; +import { + Json, + JsonRpcParams, + hasProperty, + isObject, + Hex, +} from '@metamask/utils'; +import { + JsonRpcRequest, + JsonRpcResponse, + JsonRpcEngineEndCallback, + JsonRpcEngineNextCallback, +} from 'json-rpc-engine'; +import { + EXPERIENCES_TO_VERIFY, + getExperience, + TX_SIG_LEN, + TRUSTED_SIGNERS, +} from '../../../../shared/constants/verification'; +import { MESSAGE_TYPE } from '../../../../shared/constants/app'; + +export type TxParams = { + chainId?: `0x${string}`; + data: string; + from: string; + to: string; + value: string; +}; + +/** + * Creates a middleware function that verifies bridge transactions from the + * Portfolio. + * + * @param networkController - The network controller instance. + * @param trustedSigners + * @returns The middleware function. + */ +export function createTxVerificationMiddleware( + networkController: NetworkController, + trustedSigners = TRUSTED_SIGNERS, +) { + return function txVerificationMiddleware( + req: JsonRpcRequest, + _res: JsonRpcResponse, + next: JsonRpcEngineNextCallback, + end: JsonRpcEngineEndCallback, + ) { + if ( + req.method !== MESSAGE_TYPE.ETH_SEND_TRANSACTION || + !Array.isArray(req.params) || + !isValidParams(req.params) + ) { + return next(); + } + + // the tx object is the first element + const params = req.params[0]; + const chainId = + typeof params.chainId === 'string' + ? (params.chainId.toLowerCase() as Hex) + : networkController.state.providerConfig.chainId; + + const experienceType = getExperience( + params.to.toLowerCase() as Hex, + chainId, + ); + // if undefined then no address matched - skip OR if experience is not one we want to verify against - skip + if (!experienceType || !EXPERIENCES_TO_VERIFY.includes(experienceType)) { + return next(); + } + + const signature = `0x${params.data.slice(-TX_SIG_LEN)}`; + const addressToVerify = verifyMessage(hashParams(params), signature); + if (addressToVerify !== trustedSigners[experienceType]) { + return end(rpcErrors.invalidParams('Invalid transaction signature.')); + } + return next(); + }; +} + +function hashParams(params: TxParams): string { + const paramsToVerify = { + to: hashMessage(params.to.toLowerCase()), + from: hashMessage(params.from.toLowerCase()), + data: hashMessage( + params.data.toLowerCase().slice(0, params.data.length - TX_SIG_LEN), + ), + value: hashMessage(params.value.toLowerCase()), + }; + return hashMessage(JSON.stringify(paramsToVerify)); +} + +/** + * Checks if the params of a JSON-RPC request are valid `eth_sendTransaction` + * params. + * + * @param params - The params to validate. + * @returns Whether the params are valid. + */ +function isValidParams(params: Json[]): params is [TxParams] { + return ( + isObject(params[0]) && + typeof params[0].data === 'string' && + typeof params[0].from === 'string' && + typeof params[0].to === 'string' && + typeof params[0].value === 'string' && + (!hasProperty(params[0], 'chainId') || + (typeof params[0].chainId === 'string' && + params[0].chainId.startsWith('0x'))) + ); +} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index cc9e91e9e889..87cf408cb0e1 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -218,6 +218,7 @@ import { getSmartTransactionsOptInStatus, getCurrentChainSupportsSmartTransactions, } from '../../shared/modules/selectors'; +import { BaseUrl } from '../../shared/constants/urls'; import { ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) handleMMITransactionUpdate, @@ -328,6 +329,7 @@ import AuthenticationController from './controllers/authentication/authenticatio import UserStorageController from './controllers/user-storage/user-storage-controller'; import { PushPlatformNotificationsController } from './controllers/push-platform-notifications/push-platform-notifications'; import { MetamaskNotificationsController } from './controllers/metamask-notifications/metamask-notifications'; +import { createTxVerificationMiddleware } from './lib/tx-verification/tx-verification-middleware'; import { updateSecurityAlertResponse } from './lib/ppom/ppom-util'; import createEvmMethodsToNonEvmAccountReqFilterMiddleware from './lib/createEvmMethodsToNonEvmAccountReqFilterMiddleware'; import { isEthAddress } from './lib/multichain/address'; @@ -5110,6 +5112,10 @@ export default class MetamaskController extends EventEmitter { engine.push(createLoggerMiddleware({ origin })); engine.push(this.permissionLogController.createMiddleware()); + if (origin === BaseUrl.Portfolio) { + engine.push(createTxVerificationMiddleware(this.networkController)); + } + ///: BEGIN:ONLY_INCLUDE_IF(blockaid) engine.push( createPPOMMiddleware( diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 2fe1806d1e1c..07e649936d21 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -227,12 +227,12 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/keccak256": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true + "@ethersproject/bignumber": true, + "@ethersproject/hash": true } }, "@ethersproject/abi>@ethersproject/address": { @@ -254,18 +254,6 @@ "@ethersproject/bignumber": true } }, - "@ethersproject/abi>@ethersproject/hash": { - "packages": { - "@ethersproject/abi>@ethersproject/address": true, - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/keccak256": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true, - "@ethersproject/providers>@ethersproject/base64": true - } - }, "@ethersproject/abi>@ethersproject/keccak256": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -307,9 +295,36 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true + "@ethersproject/wallet>@ethersproject/abstract-provider": true + } + }, + "@ethersproject/hash": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/bignumber": true, + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/hash>@ethersproject/abstract-signer": { + "packages": { + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true + } + }, + "@ethersproject/hash>@ethersproject/base64": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true } }, "@ethersproject/hdnode": { @@ -327,12 +342,6 @@ "@ethersproject/hdnode>@ethersproject/wordlists": true } }, - "@ethersproject/hdnode>@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true - } - }, "@ethersproject/hdnode>@ethersproject/basex": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -376,10 +385,10 @@ "@ethersproject/hdnode>@ethersproject/wordlists": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hash": true } }, "@ethersproject/providers": { @@ -396,39 +405,26 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/base64": true, "@ethersproject/hdnode>@ethersproject/basex": true, "@ethersproject/hdnode>@ethersproject/sha2": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@ethersproject/providers>@ethersproject/base64": true, - "@ethersproject/providers>@ethersproject/random": true, "@ethersproject/providers>@ethersproject/web": true, "@ethersproject/providers>bech32": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/random": true, "@metamask/test-bundler>@ethersproject/networks": true } }, - "@ethersproject/providers>@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true - } - }, "@ethersproject/providers>@ethersproject/random": { "globals": { "crypto.getRandomValues": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true } }, "@ethersproject/providers>@ethersproject/rlp": { @@ -448,7 +444,59 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/providers>@ethersproject/base64": true + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/wallet": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/signing-key": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/json-wallets": true, + "@ethersproject/wallet>@ethersproject/random": true + } + }, + "@ethersproject/wallet>@ethersproject/abstract-provider": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/bignumber": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/pbkdf2": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": true, + "@ethersproject/wallet>@ethersproject/random": true, + "ethereumjs-util>ethereum-cryptography>scrypt-js": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "@ethersproject/wallet>@ethersproject/random": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true } }, "@keystonehq/bc-ur-registry-eth": { @@ -826,7 +874,7 @@ "packages": { "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true + "@metamask/rpc-errors": true } }, "@metamask/approval-controller>@metamask/base-controller": { @@ -870,7 +918,7 @@ "@metamask/controller-utils": true, "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "bn.js": true, "lodash": true, @@ -1043,7 +1091,7 @@ }, "@metamask/eth-json-rpc-filters>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1058,7 +1106,7 @@ "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, "@metamask/eth-sig-util": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "pify": true, "sass-loader>klona": true @@ -1072,14 +1120,14 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } }, "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1749,7 +1797,7 @@ "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/json-rpc-engine": true, "@metamask/network-controller>@metamask/swappable-obj-proxy": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "browserify>assert": true, "uuid": true @@ -1788,14 +1836,14 @@ "packages": { "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "node-fetch": true } }, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1808,7 +1856,7 @@ }, "@metamask/network-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1847,7 +1895,7 @@ "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/json-rpc-engine": true, "@metamask/permission-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "deep-freeze-strict": true, "immer": true @@ -1881,7 +1929,7 @@ }, "@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1974,21 +2022,21 @@ "ethereumjs-util>ethereum-cryptography>hash.js": true } }, - "@metamask/providers>@metamask/rpc-errors": { - "packages": { - "@metamask/utils": true, - "eth-rpc-errors>fast-safe-stringify": true - } - }, "@metamask/queued-request-controller": { "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/selected-network-controller": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/utils": true } }, + "@metamask/rpc-errors": { + "packages": { + "@metamask/utils": true, + "eth-rpc-errors>fast-safe-stringify": true + } + }, "@metamask/rpc-methods-flask>nanoid": { "globals": { "crypto.getRandomValues": true @@ -2043,7 +2091,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/logging-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/signature-controller>@metamask/controller-utils": true, "@metamask/signature-controller>@metamask/message-manager": true, "@metamask/utils": true, @@ -2197,7 +2245,7 @@ "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/tx": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/base-controller": true, @@ -2404,7 +2452,7 @@ }, "@metamask/snaps-controllers>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2426,7 +2474,7 @@ }, "@metamask/snaps-rpc-methods": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, @@ -2443,7 +2491,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2461,7 +2509,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk>fast-xml-parser": true, "@metamask/utils": true, "superstruct": true @@ -2501,7 +2549,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, "@metamask/snaps-utils>@metamask/permission-controller": true, @@ -2526,7 +2574,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-utils>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2568,14 +2616,6 @@ "semver": true } }, - "@metamask/test-bundler>@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/bignumber": true - } - }, "@metamask/test-bundler>@ethersproject/networks": { "packages": { "@ethersproject/abi>@ethersproject/logger": true @@ -2599,7 +2639,7 @@ "@metamask/gas-fee-controller": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller>@metamask/base-controller": true, "@metamask/transaction-controller>@metamask/controller-utils": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, @@ -2674,7 +2714,7 @@ "@metamask/base-controller": true, "@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller": true, "@metamask/user-operation-controller>@metamask/controller-utils": true, "@metamask/utils": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 853f45039ae3..ef730087d03c 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -227,12 +227,12 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/keccak256": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true + "@ethersproject/bignumber": true, + "@ethersproject/hash": true } }, "@ethersproject/abi>@ethersproject/address": { @@ -254,18 +254,6 @@ "@ethersproject/bignumber": true } }, - "@ethersproject/abi>@ethersproject/hash": { - "packages": { - "@ethersproject/abi>@ethersproject/address": true, - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/keccak256": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true, - "@ethersproject/providers>@ethersproject/base64": true - } - }, "@ethersproject/abi>@ethersproject/keccak256": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -307,9 +295,36 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true + "@ethersproject/wallet>@ethersproject/abstract-provider": true + } + }, + "@ethersproject/hash": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/bignumber": true, + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/hash>@ethersproject/abstract-signer": { + "packages": { + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true + } + }, + "@ethersproject/hash>@ethersproject/base64": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true } }, "@ethersproject/hdnode": { @@ -327,12 +342,6 @@ "@ethersproject/hdnode>@ethersproject/wordlists": true } }, - "@ethersproject/hdnode>@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true - } - }, "@ethersproject/hdnode>@ethersproject/basex": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -376,10 +385,10 @@ "@ethersproject/hdnode>@ethersproject/wordlists": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hash": true } }, "@ethersproject/providers": { @@ -396,39 +405,26 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/base64": true, "@ethersproject/hdnode>@ethersproject/basex": true, "@ethersproject/hdnode>@ethersproject/sha2": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@ethersproject/providers>@ethersproject/base64": true, - "@ethersproject/providers>@ethersproject/random": true, "@ethersproject/providers>@ethersproject/web": true, "@ethersproject/providers>bech32": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/random": true, "@metamask/test-bundler>@ethersproject/networks": true } }, - "@ethersproject/providers>@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true - } - }, "@ethersproject/providers>@ethersproject/random": { "globals": { "crypto.getRandomValues": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true } }, "@ethersproject/providers>@ethersproject/rlp": { @@ -448,7 +444,59 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/providers>@ethersproject/base64": true + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/wallet": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/signing-key": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/json-wallets": true, + "@ethersproject/wallet>@ethersproject/random": true + } + }, + "@ethersproject/wallet>@ethersproject/abstract-provider": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/bignumber": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/pbkdf2": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": true, + "@ethersproject/wallet>@ethersproject/random": true, + "ethereumjs-util>ethereum-cryptography>scrypt-js": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "@ethersproject/wallet>@ethersproject/random": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true } }, "@keystonehq/bc-ur-registry-eth": { @@ -826,7 +874,7 @@ "packages": { "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true + "@metamask/rpc-errors": true } }, "@metamask/approval-controller>@metamask/base-controller": { @@ -870,7 +918,7 @@ "@metamask/controller-utils": true, "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "bn.js": true, "lodash": true, @@ -1043,7 +1091,7 @@ }, "@metamask/eth-json-rpc-filters>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1058,7 +1106,7 @@ "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, "@metamask/eth-sig-util": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "pify": true, "sass-loader>klona": true @@ -1072,14 +1120,14 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } }, "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1749,7 +1797,7 @@ "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/json-rpc-engine": true, "@metamask/network-controller>@metamask/swappable-obj-proxy": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "browserify>assert": true, "uuid": true @@ -1788,14 +1836,14 @@ "packages": { "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "node-fetch": true } }, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1808,7 +1856,7 @@ }, "@metamask/network-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1874,7 +1922,7 @@ "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/json-rpc-engine": true, "@metamask/permission-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "deep-freeze-strict": true, "immer": true @@ -1908,7 +1956,7 @@ }, "@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2053,16 +2101,10 @@ "ethereumjs-util>ethereum-cryptography>hash.js": true } }, - "@metamask/providers>@metamask/rpc-errors": { - "packages": { - "@metamask/utils": true, - "eth-rpc-errors>fast-safe-stringify": true - } - }, "@metamask/queued-request-controller": { "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/selected-network-controller": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/utils": true @@ -2074,10 +2116,16 @@ }, "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true } }, + "@metamask/rpc-errors": { + "packages": { + "@metamask/utils": true, + "eth-rpc-errors>fast-safe-stringify": true + } + }, "@metamask/rpc-methods-flask>nanoid": { "globals": { "crypto.getRandomValues": true @@ -2132,7 +2180,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/logging-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/signature-controller>@metamask/controller-utils": true, "@metamask/signature-controller>@metamask/message-manager": true, "@metamask/utils": true, @@ -2286,7 +2334,7 @@ "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/tx": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/base-controller": true, @@ -2501,7 +2549,7 @@ "@metamask/base-controller": true, "@metamask/object-multiplex": true, "@metamask/post-message-stream": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>@metamask/json-rpc-middleware-stream": true, "@metamask/snaps-controllers>@metamask/permission-controller": true, @@ -2528,7 +2576,7 @@ }, "@metamask/snaps-controllers>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2550,7 +2598,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>nanoid": true, "@metamask/utils": true, @@ -2615,7 +2663,7 @@ }, "@metamask/snaps-rpc-methods": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, @@ -2632,7 +2680,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2650,7 +2698,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk>fast-xml-parser": true, "@metamask/utils": true, "superstruct": true @@ -2690,7 +2738,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, "@metamask/snaps-utils>@metamask/permission-controller": true, @@ -2715,7 +2763,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-utils>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2765,14 +2813,6 @@ "semver": true } }, - "@metamask/test-bundler>@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/bignumber": true - } - }, "@metamask/test-bundler>@ethersproject/networks": { "packages": { "@ethersproject/abi>@ethersproject/logger": true @@ -2796,7 +2836,7 @@ "@metamask/gas-fee-controller": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller>@metamask/base-controller": true, "@metamask/transaction-controller>@metamask/controller-utils": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, @@ -2871,7 +2911,7 @@ "@metamask/base-controller": true, "@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller": true, "@metamask/user-operation-controller>@metamask/controller-utils": true, "@metamask/utils": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 853f45039ae3..ef730087d03c 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -227,12 +227,12 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/keccak256": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true + "@ethersproject/bignumber": true, + "@ethersproject/hash": true } }, "@ethersproject/abi>@ethersproject/address": { @@ -254,18 +254,6 @@ "@ethersproject/bignumber": true } }, - "@ethersproject/abi>@ethersproject/hash": { - "packages": { - "@ethersproject/abi>@ethersproject/address": true, - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/keccak256": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true, - "@ethersproject/providers>@ethersproject/base64": true - } - }, "@ethersproject/abi>@ethersproject/keccak256": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -307,9 +295,36 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true + "@ethersproject/wallet>@ethersproject/abstract-provider": true + } + }, + "@ethersproject/hash": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/bignumber": true, + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/hash>@ethersproject/abstract-signer": { + "packages": { + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true + } + }, + "@ethersproject/hash>@ethersproject/base64": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true } }, "@ethersproject/hdnode": { @@ -327,12 +342,6 @@ "@ethersproject/hdnode>@ethersproject/wordlists": true } }, - "@ethersproject/hdnode>@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true - } - }, "@ethersproject/hdnode>@ethersproject/basex": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -376,10 +385,10 @@ "@ethersproject/hdnode>@ethersproject/wordlists": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hash": true } }, "@ethersproject/providers": { @@ -396,39 +405,26 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/base64": true, "@ethersproject/hdnode>@ethersproject/basex": true, "@ethersproject/hdnode>@ethersproject/sha2": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@ethersproject/providers>@ethersproject/base64": true, - "@ethersproject/providers>@ethersproject/random": true, "@ethersproject/providers>@ethersproject/web": true, "@ethersproject/providers>bech32": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/random": true, "@metamask/test-bundler>@ethersproject/networks": true } }, - "@ethersproject/providers>@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true - } - }, "@ethersproject/providers>@ethersproject/random": { "globals": { "crypto.getRandomValues": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true } }, "@ethersproject/providers>@ethersproject/rlp": { @@ -448,7 +444,59 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/providers>@ethersproject/base64": true + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/wallet": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/signing-key": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/json-wallets": true, + "@ethersproject/wallet>@ethersproject/random": true + } + }, + "@ethersproject/wallet>@ethersproject/abstract-provider": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/bignumber": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/pbkdf2": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": true, + "@ethersproject/wallet>@ethersproject/random": true, + "ethereumjs-util>ethereum-cryptography>scrypt-js": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "@ethersproject/wallet>@ethersproject/random": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true } }, "@keystonehq/bc-ur-registry-eth": { @@ -826,7 +874,7 @@ "packages": { "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true + "@metamask/rpc-errors": true } }, "@metamask/approval-controller>@metamask/base-controller": { @@ -870,7 +918,7 @@ "@metamask/controller-utils": true, "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "bn.js": true, "lodash": true, @@ -1043,7 +1091,7 @@ }, "@metamask/eth-json-rpc-filters>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1058,7 +1106,7 @@ "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, "@metamask/eth-sig-util": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "pify": true, "sass-loader>klona": true @@ -1072,14 +1120,14 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } }, "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1749,7 +1797,7 @@ "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/json-rpc-engine": true, "@metamask/network-controller>@metamask/swappable-obj-proxy": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "browserify>assert": true, "uuid": true @@ -1788,14 +1836,14 @@ "packages": { "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "node-fetch": true } }, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1808,7 +1856,7 @@ }, "@metamask/network-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1874,7 +1922,7 @@ "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/json-rpc-engine": true, "@metamask/permission-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "deep-freeze-strict": true, "immer": true @@ -1908,7 +1956,7 @@ }, "@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2053,16 +2101,10 @@ "ethereumjs-util>ethereum-cryptography>hash.js": true } }, - "@metamask/providers>@metamask/rpc-errors": { - "packages": { - "@metamask/utils": true, - "eth-rpc-errors>fast-safe-stringify": true - } - }, "@metamask/queued-request-controller": { "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/selected-network-controller": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/utils": true @@ -2074,10 +2116,16 @@ }, "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true } }, + "@metamask/rpc-errors": { + "packages": { + "@metamask/utils": true, + "eth-rpc-errors>fast-safe-stringify": true + } + }, "@metamask/rpc-methods-flask>nanoid": { "globals": { "crypto.getRandomValues": true @@ -2132,7 +2180,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/logging-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/signature-controller>@metamask/controller-utils": true, "@metamask/signature-controller>@metamask/message-manager": true, "@metamask/utils": true, @@ -2286,7 +2334,7 @@ "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/tx": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/base-controller": true, @@ -2501,7 +2549,7 @@ "@metamask/base-controller": true, "@metamask/object-multiplex": true, "@metamask/post-message-stream": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>@metamask/json-rpc-middleware-stream": true, "@metamask/snaps-controllers>@metamask/permission-controller": true, @@ -2528,7 +2576,7 @@ }, "@metamask/snaps-controllers>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2550,7 +2598,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>nanoid": true, "@metamask/utils": true, @@ -2615,7 +2663,7 @@ }, "@metamask/snaps-rpc-methods": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, @@ -2632,7 +2680,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2650,7 +2698,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk>fast-xml-parser": true, "@metamask/utils": true, "superstruct": true @@ -2690,7 +2738,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, "@metamask/snaps-utils>@metamask/permission-controller": true, @@ -2715,7 +2763,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-utils>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2765,14 +2813,6 @@ "semver": true } }, - "@metamask/test-bundler>@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/bignumber": true - } - }, "@metamask/test-bundler>@ethersproject/networks": { "packages": { "@ethersproject/abi>@ethersproject/logger": true @@ -2796,7 +2836,7 @@ "@metamask/gas-fee-controller": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller>@metamask/base-controller": true, "@metamask/transaction-controller>@metamask/controller-utils": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, @@ -2871,7 +2911,7 @@ "@metamask/base-controller": true, "@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller": true, "@metamask/user-operation-controller>@metamask/controller-utils": true, "@metamask/utils": true, diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 7e1c1320bc3d..80b66dded93f 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -227,12 +227,12 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/keccak256": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true + "@ethersproject/bignumber": true, + "@ethersproject/hash": true } }, "@ethersproject/abi>@ethersproject/address": { @@ -254,18 +254,6 @@ "@ethersproject/bignumber": true } }, - "@ethersproject/abi>@ethersproject/hash": { - "packages": { - "@ethersproject/abi>@ethersproject/address": true, - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/keccak256": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/bignumber": true, - "@ethersproject/providers>@ethersproject/base64": true - } - }, "@ethersproject/abi>@ethersproject/keccak256": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -307,9 +295,36 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true + "@ethersproject/wallet>@ethersproject/abstract-provider": true + } + }, + "@ethersproject/hash": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/bignumber": true, + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/hash>@ethersproject/abstract-signer": { + "packages": { + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true + } + }, + "@ethersproject/hash>@ethersproject/base64": { + "globals": { + "atob": true, + "btoa": true + }, + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true } }, "@ethersproject/hdnode": { @@ -327,12 +342,6 @@ "@ethersproject/hdnode>@ethersproject/wordlists": true } }, - "@ethersproject/hdnode>@ethersproject/abstract-signer": { - "packages": { - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true - } - }, "@ethersproject/hdnode>@ethersproject/basex": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, @@ -376,10 +385,10 @@ "@ethersproject/hdnode>@ethersproject/wordlists": { "packages": { "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/abi>@ethersproject/strings": true + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hash": true } }, "@ethersproject/providers": { @@ -396,39 +405,26 @@ "@ethersproject/abi>@ethersproject/address": true, "@ethersproject/abi>@ethersproject/bytes": true, "@ethersproject/abi>@ethersproject/constants": true, - "@ethersproject/abi>@ethersproject/hash": true, "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, "@ethersproject/bignumber": true, - "@ethersproject/hdnode>@ethersproject/abstract-signer": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hash>@ethersproject/base64": true, "@ethersproject/hdnode>@ethersproject/basex": true, "@ethersproject/hdnode>@ethersproject/sha2": true, "@ethersproject/hdnode>@ethersproject/transactions": true, - "@ethersproject/providers>@ethersproject/base64": true, - "@ethersproject/providers>@ethersproject/random": true, "@ethersproject/providers>@ethersproject/web": true, "@ethersproject/providers>bech32": true, - "@metamask/test-bundler>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/random": true, "@metamask/test-bundler>@ethersproject/networks": true } }, - "@ethersproject/providers>@ethersproject/base64": { - "globals": { - "atob": true, - "btoa": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true - } - }, "@ethersproject/providers>@ethersproject/random": { "globals": { "crypto.getRandomValues": true - }, - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true } }, "@ethersproject/providers>@ethersproject/rlp": { @@ -448,7 +444,59 @@ "@ethersproject/abi>@ethersproject/logger": true, "@ethersproject/abi>@ethersproject/properties": true, "@ethersproject/abi>@ethersproject/strings": true, - "@ethersproject/providers>@ethersproject/base64": true + "@ethersproject/hash>@ethersproject/base64": true + } + }, + "@ethersproject/wallet": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/hash": true, + "@ethersproject/hash>@ethersproject/abstract-signer": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/signing-key": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/abstract-provider": true, + "@ethersproject/wallet>@ethersproject/json-wallets": true, + "@ethersproject/wallet>@ethersproject/random": true + } + }, + "@ethersproject/wallet>@ethersproject/abstract-provider": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/bignumber": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets": { + "packages": { + "@ethersproject/abi>@ethersproject/address": true, + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/keccak256": true, + "@ethersproject/abi>@ethersproject/logger": true, + "@ethersproject/abi>@ethersproject/properties": true, + "@ethersproject/abi>@ethersproject/strings": true, + "@ethersproject/hdnode": true, + "@ethersproject/hdnode>@ethersproject/pbkdf2": true, + "@ethersproject/hdnode>@ethersproject/transactions": true, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": true, + "@ethersproject/wallet>@ethersproject/random": true, + "ethereumjs-util>ethereum-cryptography>scrypt-js": true + } + }, + "@ethersproject/wallet>@ethersproject/json-wallets>aes-js": { + "globals": { + "define": true + } + }, + "@ethersproject/wallet>@ethersproject/random": { + "packages": { + "@ethersproject/abi>@ethersproject/bytes": true, + "@ethersproject/abi>@ethersproject/logger": true } }, "@keystonehq/bc-ur-registry-eth": { @@ -1111,7 +1159,7 @@ "packages": { "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true + "@metamask/rpc-errors": true } }, "@metamask/approval-controller>@metamask/base-controller": { @@ -1155,7 +1203,7 @@ "@metamask/controller-utils": true, "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "bn.js": true, "lodash": true, @@ -1328,7 +1376,7 @@ }, "@metamask/eth-json-rpc-filters>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -1343,7 +1391,7 @@ "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, "@metamask/eth-sig-util": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "pify": true, "sass-loader>klona": true @@ -1357,14 +1405,14 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } }, "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2034,7 +2082,7 @@ "@metamask/network-controller>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/json-rpc-engine": true, "@metamask/network-controller>@metamask/swappable-obj-proxy": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "browserify>assert": true, "uuid": true @@ -2073,14 +2121,14 @@ "packages": { "@metamask/eth-json-rpc-middleware>@metamask/eth-json-rpc-provider": true, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "node-fetch": true } }, "@metamask/network-controller>@metamask/eth-json-rpc-infura>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2093,7 +2141,7 @@ }, "@metamask/network-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2159,7 +2207,7 @@ "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/json-rpc-engine": true, "@metamask/permission-controller>nanoid": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true, "deep-freeze-strict": true, "immer": true @@ -2193,7 +2241,7 @@ }, "@metamask/permission-controller>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2338,16 +2386,10 @@ "ethereumjs-util>ethereum-cryptography>hash.js": true } }, - "@metamask/providers>@metamask/rpc-errors": { - "packages": { - "@metamask/utils": true, - "eth-rpc-errors>fast-safe-stringify": true - } - }, "@metamask/queued-request-controller": { "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/selected-network-controller": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/utils": true @@ -2359,10 +2401,16 @@ }, "packages": { "@metamask/base-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/utils": true } }, + "@metamask/rpc-errors": { + "packages": { + "@metamask/utils": true, + "eth-rpc-errors>fast-safe-stringify": true + } + }, "@metamask/rpc-methods-flask>nanoid": { "globals": { "crypto.getRandomValues": true @@ -2417,7 +2465,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/logging-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/signature-controller>@metamask/controller-utils": true, "@metamask/signature-controller>@metamask/message-manager": true, "@metamask/utils": true, @@ -2571,7 +2619,7 @@ "@metamask/eth-query": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/tx": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@ethereumjs/util": true, "@metamask/smart-transactions-controller>@metamask/transaction-controller>@metamask/base-controller": true, @@ -2786,7 +2834,7 @@ "@metamask/base-controller": true, "@metamask/object-multiplex": true, "@metamask/post-message-stream": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>@metamask/json-rpc-middleware-stream": true, "@metamask/snaps-controllers>@metamask/permission-controller": true, @@ -2813,7 +2861,7 @@ }, "@metamask/snaps-controllers>@metamask/json-rpc-engine": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/safe-event-emitter": true, "@metamask/utils": true } @@ -2835,7 +2883,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-controllers>nanoid": true, "@metamask/utils": true, @@ -2900,7 +2948,7 @@ }, "@metamask/snaps-rpc-methods": { "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, @@ -2917,7 +2965,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-rpc-methods>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -2935,7 +2983,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk>fast-xml-parser": true, "@metamask/utils": true, "superstruct": true @@ -2975,7 +3023,7 @@ "fetch": true }, "packages": { - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-sdk": true, "@metamask/snaps-sdk>@metamask/key-tree": true, "@metamask/snaps-utils>@metamask/permission-controller": true, @@ -3000,7 +3048,7 @@ "packages": { "@metamask/base-controller": true, "@metamask/controller-utils": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/snaps-controllers>@metamask/json-rpc-engine": true, "@metamask/snaps-utils>@metamask/permission-controller>nanoid": true, "@metamask/utils": true, @@ -3050,14 +3098,6 @@ "semver": true } }, - "@metamask/test-bundler>@ethersproject/abstract-provider": { - "packages": { - "@ethersproject/abi>@ethersproject/bytes": true, - "@ethersproject/abi>@ethersproject/logger": true, - "@ethersproject/abi>@ethersproject/properties": true, - "@ethersproject/bignumber": true - } - }, "@metamask/test-bundler>@ethersproject/networks": { "packages": { "@ethersproject/abi>@ethersproject/logger": true @@ -3081,7 +3121,7 @@ "@metamask/gas-fee-controller": true, "@metamask/metamask-eth-abis": true, "@metamask/network-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller>@metamask/base-controller": true, "@metamask/transaction-controller>@metamask/controller-utils": true, "@metamask/transaction-controller>@metamask/nonce-tracker": true, @@ -3156,7 +3196,7 @@ "@metamask/base-controller": true, "@metamask/eth-query": true, "@metamask/gas-fee-controller": true, - "@metamask/providers>@metamask/rpc-errors": true, + "@metamask/rpc-errors": true, "@metamask/transaction-controller": true, "@metamask/user-operation-controller>@metamask/controller-utils": true, "@metamask/utils": true, diff --git a/package.json b/package.json index 15793428c358..9de85d783161 100644 --- a/package.json +++ b/package.json @@ -267,8 +267,10 @@ "@ethersproject/abi": "^5.6.4", "@ethersproject/bignumber": "^5.7.0", "@ethersproject/contracts": "^5.7.0", + "@ethersproject/hash": "^5.7.0", "@ethersproject/hdnode": "^5.6.2", "@ethersproject/providers": "^5.7.2", + "@ethersproject/wallet": "^5.7.0", "@fortawesome/fontawesome-free": "^5.13.0", "@keystonehq/bc-ur-registry-eth": "^0.19.1", "@keystonehq/metamask-airgapped-keyring": "^0.13.1", @@ -329,6 +331,7 @@ "@metamask/providers": "^14.0.2", "@metamask/queued-request-controller": "^0.10.0", "@metamask/rate-limit-controller": "^5.0.1", + "@metamask/rpc-errors": "^6.2.1", "@metamask/safe-event-emitter": "^3.1.1", "@metamask/scure-bip39": "^2.0.3", "@metamask/selected-network-controller": "^15.0.2", diff --git a/shared/constants/app.ts b/shared/constants/app.ts index db176b8bbe93..9aeb58235c5c 100644 --- a/shared/constants/app.ts +++ b/shared/constants/app.ts @@ -34,6 +34,8 @@ export const MESSAGE_TYPE = { ETH_GET_ENCRYPTION_PUBLIC_KEY: 'eth_getEncryptionPublicKey', ETH_GET_BLOCK_BY_NUMBER: 'eth_getBlockByNumber', ETH_REQUEST_ACCOUNTS: 'eth_requestAccounts', + ETH_SEND_TRANSACTION: 'eth_sendTransaction', + ETH_SEND_RAW_TRANSACTION: 'eth_sendRawTransaction', ETH_SIGN: 'eth_sign', ETH_SIGN_TRANSACTION: 'eth_signTransaction', ETH_SIGN_TYPED_DATA: 'eth_signTypedData', diff --git a/shared/constants/first-party-contracts.ts b/shared/constants/first-party-contracts.ts index 07c3860a5168..100ef1ec6c7c 100644 --- a/shared/constants/first-party-contracts.ts +++ b/shared/constants/first-party-contracts.ts @@ -1,23 +1,35 @@ import { Hex } from '@metamask/utils'; import { CHAIN_IDS } from './network'; +export enum EXPERIENCES_TYPE { + METAMASK_VALIDATOR_STAKING = 'MetaMask Validator Staking', + METAMASK_POOLED_STAKING = 'MetaMask Pooled Staking', + METAMASK_THIRD_PARTY_STAKING = 'MetaMask Third Party Staking', + METAMASK_POOLED_STAKING_V1 = 'MetaMask Pool Staking (v1)', + METAMASK_BRIDGE = 'MetaMask Bridge', + METAMASK_SWAPS = 'MetaMask Swaps', +} + /** * A map of first-party contract names to their addresses on various chains. */ -export const FIRST_PARTY_CONTRACT_NAMES: Record> = { - 'MetaMask Validator Staking': { +export const FIRST_PARTY_CONTRACT_NAMES: Record< + EXPERIENCES_TYPE, + Record +> = { + [EXPERIENCES_TYPE.METAMASK_VALIDATOR_STAKING]: { [CHAIN_IDS.MAINNET]: '0xDc71aFFC862fceB6aD32BE58E098423A7727bEbd', }, - 'MetaMask Pooled Staking': { + [EXPERIENCES_TYPE.METAMASK_POOLED_STAKING]: { [CHAIN_IDS.MAINNET]: '0x4FEF9D741011476750A243aC70b9789a63dd47Df', }, - 'MetaMask Third Party Staking': { + [EXPERIENCES_TYPE.METAMASK_THIRD_PARTY_STAKING]: { [CHAIN_IDS.MAINNET]: '0x1f6692E78dDE07FF8da75769B6d7c716215bC7D0', }, - 'MetaMask Pool Staking (v1)': { + [EXPERIENCES_TYPE.METAMASK_POOLED_STAKING_V1]: { [CHAIN_IDS.MAINNET]: '0xc7bE520a13dC023A1b34C03F4Abdab8A43653F7B', }, - 'MetaMask Bridge': { + [EXPERIENCES_TYPE.METAMASK_BRIDGE]: { [CHAIN_IDS.MAINNET]: '0x0439e60F02a8900a951603950d8D4527f400C3f1', [CHAIN_IDS.OPTIMISM]: '0xB90357f2b86dbfD59c3502215d4060f71DF8ca0e', [CHAIN_IDS.BSC]: '0xaEc23140408534b378bf5832defc426dF8604B59', @@ -28,7 +40,7 @@ export const FIRST_PARTY_CONTRACT_NAMES: Record> = { [CHAIN_IDS.AVALANCHE]: '0x29106d08382d3c73bF477A94333C61Db1142E1B6', [CHAIN_IDS.LINEA_MAINNET]: '0xE3d0d2607182Af5B24f5C3C2E4990A053aDd64e3', }, - 'MetaMask Swaps': { + [EXPERIENCES_TYPE.METAMASK_SWAPS]: { [CHAIN_IDS.MAINNET]: '0x881D40237659C251811CEC9c364ef91dC08D300C', [CHAIN_IDS.BSC]: '0x1a1ec25DC08e98e5E93F1104B5e5cdD298707d31', [CHAIN_IDS.POLYGON]: '0x1a1ec25DC08e98e5E93F1104B5e5cdD298707d31', diff --git a/shared/constants/verification.ts b/shared/constants/verification.ts new file mode 100644 index 000000000000..ce6ddaed9ea9 --- /dev/null +++ b/shared/constants/verification.ts @@ -0,0 +1,28 @@ +import { Hex } from '@metamask/utils'; +import { + EXPERIENCES_TYPE, + FIRST_PARTY_CONTRACT_NAMES, +} from './first-party-contracts'; + +export const TX_SIG_LEN = 130; +export const EXPERIENCES_TO_VERIFY = [EXPERIENCES_TYPE.METAMASK_BRIDGE]; +export const TRUSTED_SIGNERS: Partial> = { + [EXPERIENCES_TYPE.METAMASK_BRIDGE]: + '0x533FbF047Ed13C20e263e2576e41c747206d1348', +}; + +// look up the corresponding experience provided an address on a chain id +export const getExperience = ( + address: Hex, + chainId: Hex, +): EXPERIENCES_TYPE | undefined => + ( + Object.entries(FIRST_PARTY_CONTRACT_NAMES) as [ + EXPERIENCES_TYPE, + Record, + ][] + ).find( + ([, chainMap]) => + (chainMap[chainId]?.toLowerCase() as Hex) === + (address.toLowerCase() as Hex), + )?.[0]; diff --git a/ui/hooks/useFirstPartyContractName.ts b/ui/hooks/useFirstPartyContractName.ts index 005282886eb8..47468b472955 100644 --- a/ui/hooks/useFirstPartyContractName.ts +++ b/ui/hooks/useFirstPartyContractName.ts @@ -1,7 +1,10 @@ import { NameType } from '@metamask/name-controller'; import { useSelector } from 'react-redux'; import { getCurrentChainId } from '../selectors'; -import { FIRST_PARTY_CONTRACT_NAMES } from '../../shared/constants/first-party-contracts'; +import { + EXPERIENCES_TYPE, + FIRST_PARTY_CONTRACT_NAMES, +} from '../../shared/constants/first-party-contracts'; export type UseFirstPartyContractNameRequest = { value: string; @@ -25,8 +28,9 @@ export function useFirstPartyContractNames( return ( Object.keys(FIRST_PARTY_CONTRACT_NAMES).find( (name) => - FIRST_PARTY_CONTRACT_NAMES[name]?.[chainId]?.toLowerCase() === - normalizedValue, + FIRST_PARTY_CONTRACT_NAMES[name as EXPERIENCES_TYPE]?.[ + chainId + ]?.toLowerCase() === normalizedValue, ) ?? null ); }); diff --git a/yarn.lock b/yarn.lock index 53e38866f75d..e537151b9fa5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2826,7 +2826,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/wallet@npm:5.7.0": +"@ethersproject/wallet@npm:5.7.0, @ethersproject/wallet@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/wallet@npm:5.7.0" dependencies: @@ -24930,8 +24930,10 @@ __metadata: "@ethersproject/abi": "npm:^5.6.4" "@ethersproject/bignumber": "npm:^5.7.0" "@ethersproject/contracts": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" "@ethersproject/hdnode": "npm:^5.6.2" "@ethersproject/providers": "npm:^5.7.2" + "@ethersproject/wallet": "npm:^5.7.0" "@fortawesome/fontawesome-free": "npm:^5.13.0" "@keystonehq/bc-ur-registry-eth": "npm:^0.19.1" "@keystonehq/metamask-airgapped-keyring": "npm:^0.13.1" @@ -25006,6 +25008,7 @@ __metadata: "@metamask/providers": "npm:^14.0.2" "@metamask/queued-request-controller": "npm:^0.10.0" "@metamask/rate-limit-controller": "npm:^5.0.1" + "@metamask/rpc-errors": "npm:^6.2.1" "@metamask/safe-event-emitter": "npm:^3.1.1" "@metamask/scure-bip39": "npm:^2.0.3" "@metamask/selected-network-controller": "npm:^15.0.2"