昨天我们发现了 DID钱包在扫描 Coinbase的 QR code 二维码的时候出现的问题,在我们的公告中提到了ERC-681这个概念,因此本文更详细解释一下这是什么。
ERC-681 URL格式#
简单而言,ERC-681是 Ethereum 用于在 URL 里定义交易细节的协议,这个协议的草案最早出现于2017年,但直到2023年10月才被正式合并成为ERC。
ERC-681 编码的 QR code和地址的QR code区别#
Coinbase 的 QR code 采用了ERC-681的格式,例如下面类似一个QR code:
其扫描出来的信息是:
ethereum:0xb98d4c97425d9908e66e53a6fdf673acca0be986/transfer?address=0x58F2b573A24639A2B2F4f8A7Fb26595C1A017484
而同样如果在Etherescan,或者其他很多显示以太坊地址的网站上的QR code:
扫描出来的信息是:
0x58F2b573A24639A2B2F4f8A7Fb26595C1A017484
可以看到两者有很大的区别,前者包含了两个地址,其中第一个为 ABT的 Token合约地址,后面才是要求转移的账户地址。 不能识别 ERC-681 的钱包或者客户端,可能会不能接受这种格式,或者错误地把第一个地址当作目标地址 (这正是旧版本DID:Wallet识别出的地址不同于Coinbase充值地址的原因)。
DID:Wallet 支持 ERC-681的更新已经提交给 Apple 和 Google审核,很快新的版本将不再有上述问题。
什么是 ERC-681?#
ERC-681 的目的,在其本身提案中说明为:
一种标准的表示各种交易的方式,尤其是以URL形式表示以太币和ERC-20代币的支付请求。
原文在这里:
在2023年10月 25 日, EIP-681终于成为了ERC-681:
https://github.com/ethereum/ercs/blob/master/ERCS/erc-681.md
因此这是一个既古老又新的标准,并且可能和常用的 Ethereum地址 QR Code 类似,可能导致一定的混乱。
参考阅读: #
其实很多人对什么是 ERC,什么又是EIP常常说不清,我们也经常听到 ERC-xxx,偶尔又听到EIP-xxx这些说法,往往根本不知道这是什么意思。
什么是 EIP? 什么是ERC? #
EIP,全称为Ethereum Improvement Proposals,直译为以太坊改善提案。EIP包括6种,ERC是EIP其中的一种;
ERC,全称为Ethereum Request for Comment,即以太坊的RFC(意见征求),是EIP里的的一种,专门用来负责应用层面的标准与协议。
EIP、ERC 两者什么关系?#
如果一个EIP的category属于ERC,那么我们可以将EIP-xx表示成ERC-xx。反之亦然。
当一个EIP进入讨论需要征求更多人意见的时候, 往往会把讨论细节放在ERC-xxx里,其中xxx是相同的数字。
这个方法好吗? 我觉得是混乱的,不理解Ethereum是如何考虑这样的机制的。 ERC 这个名字,演绎自互联网社区的 RFC (Request for Comment),某种角度互联网的做法更为简单和统一。
如何才能提交EIP?#
任何人都可以提交一个新的 EIP,这后面的号码是顺序递增的。某种角度而言,Ethereum“专业人士们”挂在嘴边的这些数字,其实完全是随机产生的。
当一个EIP处于Idea状态时,它甚至都不会被EIP收录进去。而只有进入Draft(草稿)状态时,EIP才会被收录。但此时也仅仅是收录供公开讨论。如果未被采用,也长期没有进展,那么可能会进入Stagnant(停滞)状态-- 很多EIP是处于这种状态的。只有通过了Review和Last Call,进入了Final状态,一个EIP才能被真正的纳入标准里。
EIP 如何成为 ERC?#
Final是一个EIP的成功最终状态,表明这个EIP已经可以被正式采纳,如果这个EIP是ERC类型的提案,这时候就会正式合并成为ERC标准协议。
这里我们可以看到 ERC-681 从其EIP成为正式的ERC是2023年10月的事,这从其2017年8月的EIP-681提出经过了6年多的时间!