HomeEIPsNewsletter
EIPsERC-1328
ERC-1328

WalletConnect URI Format

Define URI format for initiating connections between applications and wallets
FinalStandards Track: ERC
Created: 2018-08-15
ligi (@ligi), Pedro Gomes (@pedrouid)
Discussions ForumOriginal Proposal LinkEdit
1 min read

The ERC-1328 proposal defines a URI format for connecting applications and wallets. This URI can be shown as a QR code or a link and includes parameters that depend on the version of the WalletConnect protocol being used. The proposal moves away from the JSON format used in the alpha version of the protocol to a URI format, which allows for more efficient parsing of the intent of the QR code and leverages the Android Intent system. The proposal also includes a versioning system to allow for backwards compatibility when new versions are introduced. The URI should not include any sensitive data that could compromise communication or allow control of the user's private keys. The proposal aims to keep backward compatibility with existing Ethereum URIs and not break existing things. Overall, the ERC-1328 proposal provides a standardized way for applications and wallets to connect and communicate securely.

Video
Anyone may contribute to propose contents.
Go propose
Original

Abstract

This standard defines how the data to connect some application and a wallet can be encoded with a URI. This URI can then be shown either as a QR code or as a link.

Specification

Syntax

WalletConnect request URI with the following parameters:

request       = "wc" ":" topic [ "@" version ][ "?" parameters ]
topic         = STRING
version       = 1*DIGIT
parameters    = parameter *( "&" parameter )
parameter     = key "=" value
key           = STRING
value         = STRING

Semantics

Required parameters are dependent on the WalletConnect protocol version:

For WalletConnect v1.0 protocol (version=1) the parameters are:

  • key - symmetric key used for encryption
  • bridge - url of the bridge server for relaying messages

For WalletConnect v2.0 protocol (version=2) the parameters are:

  • symKey - symmetric key used for encrypting messages over relay
  • methods - jsonrpc methods supported for pairing topic
  • relay-protocol - transport protocol for relaying messages
  • relay-data - (optional) transport data for relaying messages
  • expiryTimestamp - (optional) unix epoch in seconds when pairing expires

Example

# 1.0
wc:8a5e5bdc-a0e4-4702-ba63-8f1a5655744f@1?bridge=https%3A%2F%2Fbridge.walletconnect.org&key=41791102999c339c844880b23950704cc43aa840f3739e365323cda4dfa89e7a

# 2.0
wc:7f6e504bfad60b485450578e05678ed3e8e8c4751d3c6160be17160d63ec90f9@2?relay-protocol=irn&symKey=587d5484ce2a2a6ee3ba1962fdd7e8588e06200c46823bd18fbd67def96ad303&methods=[wc_sessionPropose],[wc_authRequest,wc_authBatchRequest]"&expiryTimestamp=1705934757

Rationale

This proposal moves away from the JSON format used in the alpha version of the WalletConnect protocol because it suffered from very inefficient parsing of the intent of the QR code, thereby making it easier to create better QR code parsers APIs for wallets to implement. Also by using a URI instead of JSON inside the QR-Code the Android Intent system can be leveraged.

Backwards Compatibility

Versioning is required as part of the syntax for this URI specification to allow the WalletConnect protocol to evolve and allow backwards-compatibility whenever a new version is introduced.

Security Considerations

URIs should be shared between user devices or applications and no sensitive data is shared within the URI that could compromise the communication or would allow control of the user's private keys.

Copyright and related rights waived via CC0.

Further reading
Anyone may contribute to propose contents.
Go propose
Adopted by projects
Anyone may contribute to propose contents.
Go propose

Not miss a beat of EIPs' update?

Subscribe EIPs Fun to receive the latest updates of EIPs Good for Buidlers to follow up.

View all
Serve Ethereum Builders, Scale the Community.
Resources
GitHub
Supported by