Description:
Support parsing and handling of extended ethereum:
URLs with RPC-style method calls, including optional chain identification and parameters, using the following syntax:
ethereum:<rpc_method>[:<chain_id>]?<rpc_method_params>
Example (single request):
ethereum:eth_sendTransaction:324?from=0x8082da67710c14e7f668efc73ac27ad6b2d7cafe&to=0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238&gas=0x76c0&gasPrice=0x4a817c800&value=0x0&data=0xa9059cbb000000000000000000000000ffce4d191cb5007ee9ad7226581f7e217b68cafe00000000000000000000000000000000000000000000000000000000000f4240636166656369746f
Example (multi-request, base64-encoded payload):
ethereum:multi-request:324?requests_b64=BASE64_ENCODED_JSON_ARRAY
This structure builds upon EIP-681 and EIP-4804, enabling advanced capabilities such as batched transactions and chain-specific context in a URL or QR code format.
Purpose:
To enhance MetaMask’s compatibility with modern wallet invocation flows via deep links and QR codes, and allow:
Flexible, RPC-style invocation via URLs
Embedded
chainId
for chain-aware requestsMulti-request support with base64 payloads
Seamless integration into physical-world interactions (e.g. POS, ticketing, dApps)
Add a new chain to MetaMask dynamically, just by scanning a QR (e.g. via
wallet_addEthereumChain
)
This format would be especially useful in real-world Web3 applications, where users scan a single QR code to switch chains, approve multiple transactions, or interact with a contract directly.
Extension/Mobile/Both:
Both
(With significant utility in mobile use cases involving QR code scanning.)