# Expose multiple injected providers: EIP-6963 Source: https://github.com/ethereum/EIPs/pull/6963 ## Summary EIP-6963 proposes a window-event-based pattern for discovering multiple injected EIP-1193 wallet providers, replacing the earlier EIP-5749. Unlike EIP-5749, it exposes providers in parallel rather than extending EIP-1193 with extra info, and each provider gets both a local and a global unique identifier. It omits provider descriptions to stay agnostic to localization but supports any URI-encoded icon format, such as data, IPFS, or HTTP. Reviewers raised concerns that prototype pollution remains unaddressed and that the design assumes wallets behave benevolently, and suggested a future move to PostMessage channels and externally_connectable. ## Article Introducing a new pattern to discover multiple injected providers using window events to announce EIP-1193 providers in a two-communication standard between Ethereum libraries and Wallet peoviders. NOTE: This EIP replaces the existing EIP5749 What changes from EIP-5749? EIP-6963 uses an event-based approach to discover multiple providers EIP-6963 does not extend EIP-1193 with info but instead exposes it in parallel EIP-6963 includes a local unique identifier and a global unique identifier for each provider EIP-6963 does not include provider description to stay agnostic to localization EIP-6963 supports any URI encoded image for icons (data, ipfs, http, etc) glitch-txs, bpierre, rekmarks, reepig, and xzilja reacted with thumbs up emoji darrylyeo, jxom, freeatnet, AlexBHarley, dylandesrosier, glitch-txs, bpierre, JFrankfurt, nixorokish, goosewobbler, and 7 more reacted with hooray emoji glitch-txs, bpierre, JFrankfurt, AlexGuG3, and ansumanshah reacted with heart emoji ✅ All reviewers have approved. eth-bot changed the title [EIP-6961] Multi Injected Provider Interface (aka MIPI) Add EIP: Multi Injected Provider Interface (aka MIPI) May 1, 2023 Fix the walidator issues, please. eth-bot changed the base branch from master to eipbot/6963 May 1, 2023 22:14 eth-bot changed the base branch from eipbot/6963 to master May 1, 2023 22:14 Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more. Left a few concerns here, most notably we're not addressing the concern of prototype pollution still and assuming that all wallets will behave benevolently which seems like a flawed assumption to make. One motivation to move off in-page injection is to reduce the amount of permissions required to install a wallet WebExtension (reducing the harm one can do!) This current approach still involves returning a JS object as the provider, and I think that will still require a contentscript. I think it would likely be a long-term improvement to establish a bidirectional message channel using PostMessage with the new provider, rather than returning a JS object (as convenient as that is). Maybe that's better left for a future improvement. I'll try to get more info on that topic here soon. That future browser API is externally_connectable. It does seem a bit further out, but just worth noting that we should also rally around migrating towards it. } ``` ### Ethereum library Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more. What does "Ethereum library" mean in this context? Is it talking about a wallet connection library like Web3 Onboard or Rainbowkit? That's correct @asciiman! This could include Web3Modal, Web3React, Web3Onboard, RainbowKit, ConnectKit, web3.js, wagmi.js, ethers.js, viem.js, etc Maybe "Wallet Consumer" would be better here. It could be any of the libraries above, and it could also conceivably be a dApp handling the selection on it's own. Co-authored-by: Pedro Gomes Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more. All Reviewers Have Approved; Performing Automatic Merge... eth-bot previously approved these changes May 16, 2023 Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more. All Reviewers Have Approved; Performing Automatic Merge... Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more. All Reviewers Have Approved; Performing Automatic Merge...