Yesterday we discovered the issue that occurred when scanning Coinbase's QR code with the DID wallet. In our announcement, we mentioned the concept of ERC-681, so this article will provide a more detailed explanation of what it is.
ERC-681 URL Format#
Simply put, ERC-681 is a protocol used by Ethereum to define transaction details in URLs. The draft of this protocol first appeared in 2017, but it was not officially merged into ERC until October 2023.
ERC-681 QR code vs Plain Ethereum account QR code#
Coinbase's deposit/recharge QR code uses ERC-681 URL format,e.g. here is a QR code from Coinbase:
The scanned information is...:
ethereum:0xb98d4c97425d9908e66e53a6fdf673acca0be986/transfer?address=0x58F2b573A24639A2B2F4f8A7Fb26595C1A017484
And similarly, if on Etherescan, or other websites that display Ethereum addresses, there is a QR code.:
The scanned information is...:
0x58F2b573A24639A2B2F4f8A7Fb26595C1A017484
You can see that there is a big difference between the two. The former includes two addresses, with the first being the ABT Token contract address and the latter being the account address for the transfer request. Wallets or clients that cannot recognize ERC-681 may not be able to accept this format or mistakenly consider the first address as the target address (which is why the old version of DID:Wallet recognized a different address from the Coinbase deposit address). The update for DID:Wallet that supports ERC-681 has been submitted for review by Apple and Google. The new version will soon no longer have the aforementioned issues.
What is ERC-681?#
The purpose of ERC-681 is explained in its own proposal.:
A standard way of representing various transactions, especially payment requests in ether and ERC-20 tokens as URLs.
The original proposal is here:
On October 25, 2023, EIP-681 finally became ERC-681.:
https://github.com/ethereum/ercs/blob/master/ERCS/erc-681.md
Therefore, this is a standard that is both ancient and new, and it may be similar to commonly used Ethereum address QR codes, which could cause some confusion.
Further readings #
Actually, many people often can't explain clearly what ERC is and what EIP is. We often hear about ERC-xxx and occasionally hear about EIP-xxx, but we often have no idea what they mean.
What is EIP? What is ERC? #
EIP, short for Ethereum Improvement Proposals. EIP includes 6 types, and ERC is one of them. ERC, short for Ethereum Request for Comment, is the Ethereum equivalent of RFC (Request for Comments). It is one of the types of EIP and is specifically responsible for application-level standards and protocols.
Relationship between EIP and ERC#
If a category of an EIP belongs to ERC, then it can represent EIP-xx as ERC-xx. When an EIP enters a discussion that requires more opinions, the discussion details are often placed in ERC-xxx, where xxx is the same number. Is this good? I think it is confusing and I don't understand how Ethereum considers such a mechanism. The name ERC is derived from the RFC (Request for Comment) of the internet community, and in a way, the internet's approach is simpler and more unified.
How to propose an EIP?#
Anyone can submit a new EIP, and the numbers after it are sequentially increasing. In a sense, these numbers that Ethereum "professionals" often mention are actually randomly generated. When an EIP is in the Idea state, it is not even included in the EIP. It is only included when it enters the Draft state. However, at this stage, it is only included for public discussion. If it is not adopted and there is no progress for a long time, it may enter the Stagnant state - many EIPs are in this state. Only after passing the Review and Last Call and entering the Final state can an EIP be truly incorporated into the standard.
How EIP becomes ERC?#
Final is the successful final state of an EIP, indicating that this EIP can now be formally adopted. If this EIP is an ERC type proposal, it will be officially merged into the ERC standard protocol. Here we can see that ERC-681 becoming an official ERC is a matter of October 2023, which means it took more than 6 years since its proposal in August 2017 as EIP-681: