Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: CAIP Multichain (New) #27782

Draft
wants to merge 865 commits into
base: main
Choose a base branch
from
Draft

feat: CAIP Multichain (New) #27782

wants to merge 865 commits into from

Conversation

jiexi
Copy link
Contributor

@jiexi jiexi commented Oct 10, 2024

Description

This branch is the feature branch for CAIP-25, CAIP-27, CAIP stream bifurcation. TODO better PR desc.

Open in GitHub Codespaces

Related issues

Related: MetaMask/core#4813
Upstream: #27847

See: https://github.com/MetaMask/MetaMask-planning/issues/2360

Manual testing steps

yarn start:flask

Use the Multichain Test Dapp

OR

Form requests manually

// Setup
const EXTENSION_ID = 'nonfpcflonapegmnfeafnddgdniflbnk'; // replace this with your local extension ID
const extensionPort = chrome.runtime.connect(EXTENSION_ID)
extensionPort.onMessage.addListener((msg) => {
    // format wallet_notify events nicely so that we can read them more easily later
    if (msg.data.method === 'wallet_notify') {
        console.log('wallet_notify:', {
            scope: msg.data.params.scope,
            method: msg.data.params.notification.method,
            subscription: msg.data.params.notification.params.subscription,
            number: msg.data.params.notification.params.result.number
        })
        return;
    }
    console.log(msg.data)
})


// Initial Connection
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_createSession',
        params: {
            requiredScopes: {
            },
            optionalScopes: {
                'eip155:1': {
                    methods: [
                        'eth_blockNumber',
                        'eth_gasPrice',
                        'eth_getTransactionCount'
                    ],
                    notifications: [],
                    accounts: []
                }
            },
        },
    }
})


extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:1',
            request: {
                "method": "eth_blockNumber",
                "params": [],
            }
        }
    }
})

extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:1',
            request: {
                "method": "eth_gasPrice",
                "params": [],
            }
        }
    }
})

extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:1',
            request: {
                "method": "eth_getTransactionCount",
                "params": ["0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4", "latest"],
            }
        }
    }
})

// Not very interesting, let’s do this on Sepolia where I have some tx

extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:11155111',
            request: {
                "method": "eth_getTransactionCount",
                "params": ["0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4", "latest"],
            }
        }
    }
})


// Oh no, an error. Let’s fix that
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_createSession',
        params: {
            requiredScopes: {
            },
            optionalScopes: {
                'eip155:1': {
                    methods: [
                        'eth_blockNumber',
                        'eth_gasPrice',
                        'eth_getTransactionCount'
                    ],
                    notifications: [],
                    accounts: []
                },
                'eip155:11155111': {
                    methods: [
                        'eth_blockNumber',
                        'eth_gasPrice',
                        'eth_getTransactionCount'
                    ],
                    notifications: [],
                    accounts: []
                }
            },
        },
    }
})

// And try again
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:11155111',
            request: {
                "method": "eth_getTransactionCount",
                "params": ["0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4", "latest"],
            }
        }
    }
})

// What if I want even more chains and methods and subscriptions and preselected accounts?
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_createSession',
        params: {
            requiredScopes: {
            },
            optionalScopes: {
                'eip155:1': {
                    methods: [
                        'eth_blockNumber',
                        'eth_gasPrice',
                        'eth_getTransactionCount',
                        'eth_sendTransaction', 
                        'eth_subscribe'
                    ],
                    notifications: ['eth_subscription'],
                    accounts: []
                },
                'eip155:11155111': {
                    methods: [
                        'eth_blockNumber',
                        'eth_gasPrice',
                        'eth_getTransactionCount',
                        'eth_sendTransaction', 
                        'eth_subscribe'
                    ],
                    notifications: ['eth_subscription'],
                    accounts: ['eip155:11155111:0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4', 'eip155:11155111:0xEe166a3eec4796DeC6A1D314e7485a52bBe68e4d']
                },
                'eip155:59144': {
                    methods: [
                        'eth_estimateGas',
                    ],
                    notifications: [],
                    accounts: []
                },
            },
        },
    }
})










// What if I want to deny some requested chains and add extras?
// Rerun above, Remove Linea, add Linea Sepolia. Show how the added chains get the full permission set


// My dapp that just loaded / I forgot what my permissions look like / I want to check what my permissions currently look like.
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_getSession',
        params:{}
    }
})

// What if the user modifies the permission outside of my dapp? How will I know without checking wallet_getSession frequently?
// Modify permission in page. Check for wallet_sessionChanged event


// What if I want to disconnect from the session entirely?
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_revokeSession',
        params:{}
    }
})


// Let’s send some transactions! On sepolia and linea sepolia

extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_createSession',
        params: {
            requiredScopes: {
            },
            optionalScopes: {
                'eip155:1': {
                    methods: [
                        'eth_sendTransaction', 
                        'eth_subscribe'
                    ],
                    notifications: ['eth_subscription'],
                    accounts: []
                },
                'eip155:11155111': {
                    methods: [
                        'eth_sendTransaction', 
                        'eth_subscribe'
                    ],
                    notifications: ['eth_subscription'],
                    accounts: ['eip155:11155111:0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4', 'eip155:11155111:0xEe166a3eec4796DeC6A1D314e7485a52bBe68e4d']
                },
                'eip155:59141': {
                    methods: [
                        'eth_sendTransaction',
                    ],
                    notifications: [],
                    accounts: []
                },
            },
        },
    }
})


extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:11155111',
            request: {
                "method": "eth_sendTransaction",
                 "params": [
                  {
                    from: "0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4",
                    to: "0x0000000000000000000000000000000000000000",
                    gas: "0x76c0",
                    value: "0x2bdbb64bc09000",
                    data: "0x",
                  }
                ],
            }
        }
    }
})


extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:59141',
            request: {
                "method": "eth_sendTransaction",
                 "params": [
                  {
                    from: "0x5bA08AF1bc30f17272178bDcACA1C74e94955cF4",
                    to: "0x0000000000000000000000000000000000000000",
                    gas: "0x76c0",
                    value: "0x2bdbb64bc09000",
                    data: "0x",
                  }
                ],
            }
        }
    }
})

// You can even be receive eth subscriptions events on multiple chains at the same time, previously impossible.
extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:1',
            request: {
                "method": "eth_subscribe",
                 "params": [
                     "newHeads"
                ],
            }
        }
    }
})



extensionPort.postMessage({
    type: 'caip-x',
    data: {
        "jsonrpc": "2.0",
        method: 'wallet_invokeMethod',
        params: {
            scope: 'eip155:11155111',
            request: {
                "method": "eth_subscribe",
                 "params": [
                     "newHeads"
                ],
            }
        }
    }
})

Locked Wallet Behavior

  • wallet_getSession returns full session with all accounts
  • wallet_revokeSession works as usual
  • wallet_createSession prompts for unlock
  • wallet_invokeMethod on signature methods fails with method or accounts not authorized
  • wallet_invokeMethod on non-signature methods work as usual
  • wallet_sessionChanged not being fired when locked and revokeSession is called (TODO need to fix this). Is being fired when unlocked and revokeSession is called.

Wallet Onboarding Behavior (fresh install, not setup yet)

  • wallet_createSession causes wallet setup screen to be shown instead
  • all other methods work as expected
    • wallet_getSession returns no session since there is none
    • wallet_invokeMethod fails for everything since there is no active session

Screenshots/Recordings

Before

After

Pre-merge author checklist

  • I’ve followed MetaMask Coding Standards.
  • I've completed the PR template to the best of my ability
  • I’ve included tests if applicable
  • I’ve documented my code using JSDoc format if applicable
  • I’ve applied the right labels on the PR (see labeling guidelines). Not required for external contributors.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@jiexi
Copy link
Contributor Author

jiexi commented Oct 14, 2024

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

Copy link

socket-security bot commented Oct 14, 2024

👍 Dependency issues cleared. Learn more about Socket for GitHub ↗︎

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring: npm/[email protected], npm/[email protected], npm/[email protected]

View full report↗︎

Next steps

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/[email protected] or ignore all packages with @SocketSecurity ignore-all

@shanejonas
Copy link
Contributor

this PR needs the patches from here: https://github.com/MetaMask/metamask-extension/pull/27847/files#r1801195961

@jiexi jiexi changed the base branch from caip-multichain to caip25-permission-migration October 15, 2024 16:18
@jiexi jiexi changed the title Multichain: migrate to core package feat: CAIP Multichain Oct 15, 2024
@jiexi
Copy link
Contributor Author

jiexi commented Oct 15, 2024

REMINDER: check the original feature branch PR for unresolved comments

@jiexi jiexi changed the title feat: CAIP Multichain feat: CAIP Multichain (New) Oct 15, 2024
.circleci/config.yml Outdated Show resolved Hide resolved
html-report-caip27/index.html Outdated Show resolved Hide resolved
Comment on lines 184 to 187
// TODO: Contact analytics team for how they would prefer to track this
// first time connection to dapp will lead to no log in the permissionHistory
// and if user has connected to dapp before, the dapp origin will be included in the permissionHistory state
// we will leverage that to identify `is_first_visit` for metrics
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

may need to update the eth_requestAccounts version of this too

@jiexi
Copy link
Contributor Author

jiexi commented Oct 15, 2024

TODO: Convert BARAD_DUR flag into flask feature flag

Done here #29003

@shanejonas shanejonas mentioned this pull request Oct 17, 2024
7 tasks
adonesky1 pushed a commit that referenced this pull request Oct 17, 2024
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27940?quickstart=1)

## **Related issues**

Fixes:
#27782 (comment)

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
@jiexi
Copy link
Contributor Author

jiexi commented Oct 17, 2024

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

❌ Multichain API Spec Test Failed. View the report here.

Copy link

socket-security bot commented Oct 17, 2024

New, updated, and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@adobe/[email protected] None 0 190 kB adobe-admin
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 66.5 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 546 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 1.9 MB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 5.85 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 5.74 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 6.35 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 10.2 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 17.7 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.22 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 155 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 12.5 kB nicolo-ribaudo
npm/@babel/[email protected] 🔁 npm/@babel/[email protected] None 0 23.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 673 kB nicolo-ribaudo
npm/@eslint-community/[email protected] 🔁 npm/@eslint-community/[email protected] None 0 473 kB eslint-community-bot
npm/@humanwhocodes/[email protected] 🔁 npm/@humanwhocodes/[email protected] None 0 23.3 kB nzakas
npm/@jridgewell/[email protected] 🔁 npm/@jridgewell/[email protected] None 0 81.6 kB jridgewell
npm/@metamask/[email protected] None 0 1.69 MB metamaskbot
npm/@open-rpc/[email protected] 🔁 npm/@open-rpc/[email protected] Transitive: environment, eval +6 1.4 MB belfordz
npm/@pmmmwh/[email protected] 🔁 npm/@pmmmwh/[email protected] None 0 133 kB pmmmwh
npm/@rtsao/[email protected] None 0 3.61 kB rtsao
npm/@scure/[email protected] 🔁 npm/@scure/[email protected] None 0 133 kB paulmillr
npm/@sovpro/[email protected] None 0 7.18 kB sovpro
npm/@testing-library/[email protected] 🔁 npm/@testing-library/[email protected] None +2 339 kB testing-library-bot
npm/@types/[email protected] 🔁 npm/@types/[email protected] None 0 193 kB types
npm/@types/[email protected] 🔁 npm/@types/[email protected] None 0 3.9 kB types
npm/@types/[email protected] 🔁 npm/@types/[email protected] None 0 7.79 kB types
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 207 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 6.37 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 11.3 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 10.8 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 10.5 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 34.2 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 19.7 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 5.34 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 48.5 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 12.3 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None +1 172 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 28.1 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 14.4 kB xtuc
npm/@webassemblyjs/[email protected] 🔁 npm/@webassemblyjs/[email protected] None 0 39.6 kB xtuc
npm/[email protected] None 0 20 kB tjatse
npm/[email protected] 🔁 npm/[email protected] None 0 26.3 kB ljharb
npm/[email protected] None 0 29.1 kB ljharb
npm/[email protected] None 0 29.4 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None +1 2.41 MB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 20.9 kB ljharb
npm/[email protected] None 0 20.9 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 21.7 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 199 kB ai
npm/[email protected] 🔁 npm/[email protected] None 0 2.79 MB npmdeque
npm/[email protected] 🔁 npm/[email protected] None 0 131 kB florianwendelborn
npm/[email protected] 🔁 npm/[email protected] None 0 66.6 kB mdidon
npm/[email protected] None 0 162 kB achingbrain
npm/[email protected] 🔁 npm/[email protected] None 0 44.6 kB jonschlinkert
npm/[email protected] 🔁 npm/[email protected] None 0 64.2 kB ai
npm/[email protected] None 0 14.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 2.15 MB caniuse-lite
npm/[email protected] 🔁 npm/[email protected] None 0 1.26 MB zloirock
npm/[email protected] 🔁 npm/[email protected] None 0 31 kB sheetjs
npm/[email protected] 🔁 npm/[email protected] None 0 133 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 90.3 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 8.11 kB thlorenz
npm/[email protected] None 0 11.8 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 143 kB mde
npm/[email protected] 🔁 npm/[email protected] None 0 153 kB kilianvalkhof
npm/[email protected] None 0 10.2 kB ljharb
npm/[email protected] None 0 191 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 11 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 44.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 5.29 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 54.6 kB ljharb
npm/[email protected] 🔁 npm/[email protected] environment +3 1.73 MB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 118 kB react-bot
npm/[email protected] 🔁 npm/[email protected] Transitive: environment +1 1.08 MB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 1.17 MB zanechua
npm/[email protected] 🔁 npm/[email protected] None 0 16.7 kB jonschlinkert
npm/[email protected] 🔁 npm/[email protected] None 0 26.6 kB ljharb
npm/[email protected] eval +1 68.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 23.7 kB ljharb
npm/[email protected] None 0 9.87 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None +10 2.3 MB asmiller1989
npm/[email protected] None 0 14.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 23 kB ljharb
npm/[email protected] eval 0 19.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 17.9 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 25.4 kB ljharb
npm/[email protected] None 0 33.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 24.2 kB ljharb
npm/[email protected] None 0 16.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 25.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 35.7 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None +1 36 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 27 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 20.6 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 15.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 21.2 kB ljharb
npm/[email protected] None 0 13.5 kB hugomrdias
npm/[email protected] 🔁 npm/[email protected] None +1 139 kB oss-bot
npm/[email protected] None 0 12.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 1.95 MB pi0
npm/[email protected] None 0 7.66 kB hildjj
npm/[email protected] 🔁 npm/[email protected] None 0 236 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 17.1 kB soda
npm/[email protected] None 0 16.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 56.6 kB doowb
npm/[email protected] 🔁 npm/[email protected] None 0 134 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 37.2 kB chicoxyzzy
npm/[email protected] 🔁 npm/[email protected] None 0 101 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 32.6 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 16.3 kB ljharb
npm/[email protected] None 0 14.6 kB ljharb
npm/[email protected] None 0 31.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 11.2 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None +1 53.5 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 17.5 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 187 kB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 201 kB ai
npm/[email protected] 🔁 npm/[email protected] None 0 8.1 kB cmtegner
npm/[email protected] None 0 22.7 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 43.7 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 3.09 MB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 17.6 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 11.9 kB ljharb
npm/[email protected] 🔁 npm/[email protected] Transitive: eval +1 1.11 MB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 23.5 kB ljharb
npm/[email protected] None 0 14.7 kB ljharb
npm/[email protected] None 0 13.3 kB ljharb
npm/[email protected] None 0 14.7 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 21.5 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 140 kB 7rulnik
npm/[email protected] 🔁 npm/[email protected] None 0 38.5 kB ljharb
npm/[email protected] None 0 8.61 kB nicolo-ribaudo
npm/[email protected] 🔁 npm/[email protected] None 0 35.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 23.6 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 7.04 kB sindresorhus
npm/[email protected] 🔁 npm/[email protected] Transitive: environment, shell +2 178 kB evilebottnawi, jhnns, sokra
npm/[email protected] 🔁 npm/[email protected] Transitive: filesystem, shell +1 2.28 MB fabiosantoscode
npm/[email protected] 🔁 npm/[email protected] None 0 18.1 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 24.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None 0 5.21 MB evilebottnawi
npm/[email protected] 🔁 npm/[email protected] None 0 19.3 kB ljharb
npm/[email protected] None 0 30 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None +2 60.2 kB ljharb
npm/[email protected] 🔁 npm/[email protected] None +2 82.4 kB ljharb

🚮 Removed packages: npm/@types/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected]

View full report↗︎

@metamaskbot
Copy link
Collaborator

❌ Multichain API Spec Test Failed. View the report here.

@adonesky1
Copy link
Contributor

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

Builds ready [ad7169d]
Page Load Metrics (1633 ± 50 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint26419351567316152
domContentLoaded1467189216159646
load14761938163310550
domInteractive167236157
backgroundConnect884202010
firstReactRender1697402613
getState56113178
initialActions01000
loadScripts1030139811778842
setupStore685192512
uiStartup166623711921209100

Base automatically changed from caip25-permission-migration to main January 20, 2025 15:01
@jiexi
Copy link
Contributor Author

jiexi commented Jan 21, 2025

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@metamaskbot
Copy link
Collaborator

No policy changes

jiexi added 4 commits January 21, 2025 10:57
# Conflicts:
#	lavamoat/browserify/beta/policy.json
#	lavamoat/browserify/flask/policy.json
#	lavamoat/browserify/main/policy.json
#	lavamoat/browserify/mmi/policy.json
#	package.json
#	yarn.lock
@adonesky1
Copy link
Contributor

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

@jiexi jiexi mentioned this pull request Jan 23, 2025
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants