以太坊钱包简史 第一个以太坊钱包的灵感来自 Bitcoin Qt 钱包,是由 Mist 团队做出来的。 - 图片来源 - Mist 钱包看起来跟 Qt 非常像,都是一个需要下载的软件,然后可以导出交易数据,也支持 区块同步/区块浏览: - 图片来源 - 这个钱包其实是想把一个以太坊节点能够做到的事情都装进一个软件里 —— 那就需要安装大量依赖,整体的用户体验也不好。到 2016 年,MetaMask 出现,是最早的基于浏览器的钱包之一。自此,dApp 可以从钱包中解耦出来,只需嵌入钱包的连接方式即可。这一点随着生态系统的成长变得非常重要,因为此前单个团队想跟踪所有 EIP 的进展和发展出来的 token/协议 是非常困难的(现在也仍然如此)。我想指出的是,虽然这增加了 dApp 产品的可组合性,这 还不是 上面的 “通道积木示意图” 中所指的 钱包内 的智能合约集成。这一部分一直到新的集成方式如 WalletConnect 出现之后才有所改变。 - 钱包连接方式嵌入示例 - 这样一来,钱包的一些责任和负担就移除了,现在它的重点变成了交易构建、签名以及维持与区块链的连接。我不想深究细节,但交易构建意味着要从 dApp 处接收一些交易参数、并且其它参数要保证完全在钱包控制之下。这使我们走向了对钱包(也可称为 “提供者”)可用的 RPC 调用,最早由 EIP-1193 定义。dApp 可以发送一些参数如目标地址、数据、gas limit/price、数值给钱包,但 无法 控制链 ID、发送者地址以及 nonce 等涉及钱包安全的参数。 有了这种新型钱包之后,我们又多了两种复杂的用户体验: 记住 其他用户/朋友 的地址是很困难的,不安全,而且容易发生人为的错误交易附带的字节码是不可阅读的,除非你非常熟悉函数选择器以及 数据/参数 的哈希值。要是你没有合约的 ABI,那就有你好看的了。为了解决第一点,ENS 在 2016/2017 年月 EIP-137 一起推出,成为了我们的第一块社交积木。现在,大家都可以用一个网站域名来表示自己的以太坊地址(比如 vitalik.eth),在 消息/转账 中使用即可免去输入长长的地址。这只是社交智能合约层的一部分;其余部分要花更大的精力来 解耦/实现可组合性。 关于第二点,Parity 创建了一个 “方法注册表”,被广泛用户在钱包的签名界面给出人类可读的信息。EIP-712 在此发挥了重要作用,尽管它到最近才获得更多关注。不过,即使有了这些设置,还是很难保证你的浏览器没有被黑或被欺骗从而显示出不真实的 交易/信息。这是使用热钱包(即总是连接到互联网、并且没有与你的计算机环境的其余部分隔离开来的钱包服务)的最大问题之一。 (责任编辑:admin) |