通告 | Mist 的日暮

Ajian   |     |   1301 次阅读

编者注:本文为 Mist 团队的 Alex Van de Sande 于 3 月 22 日发表的博文,宣布 Mist 以及 Ethereum Wallet 项目停止运营,而 Mist 团队会转战其它方向。一如文中所说,Mist 是第一个有图形界面的以太坊钱包,也是第一个支持 ERC20 代币标准的钱包,对整个以太坊生态来说,都有着非凡的意义,如今走向日暮,着实令人唏嘘。但也正如作者所说,可以使我们感到高兴的是,现在以太坊生态已经有了很多好用的钱包和浏览器,Mist 的终止,反映的是以太坊生态的成熟,而非失败。

1

- 一系列的 Mist “航海家” 图标-

我感觉一切都像是昨天才发生的事情,历历在目;但实际上我已经在 Mist 工作了四年了。虽然我也骄傲于在此期间我们获得的成就:我们促进了以太坊的可用性、传播了 web3 的愿景;但我们感觉到 Mist 这个浏览器已经落后于时代了:以太坊生态已经成熟了很多,用户已经有了成千上万种钱包和浏览器可以选择,手机端和桌面端的区别也不再是问题。与此同时,用区块链塑造更好互联网的愿景已经远播,鼎鼎大名的公司和团队如三星(Samsung)、Opera 和 Brave 都致力于将 web3 的各种功能整合到他们的路线图中

我们这一路走来,并不是只有鲜花没有荆棘,当前面临的极其严峻的安全问题,迫使我们重新评估自己的路线图,并自问维持 Mist 这个项目究竟对不对得起以太坊基金会投入的资源。因此我们决定,将 Mist 中所有有价值的东西抽出来放到一个独立的项目中,但以不安全为理由放弃我们的主体浏览器项目。要了解更多细节,请继续往下读。

我们哪些地方做对了

打造 web3 浏览器的愿景,是以太坊使命中不可缺少的一部分,我们为以太坊奠定的第一个重要里程碑,便是让 “Metropolis” 有了一款简易好用的 web3 浏览器。除此之外,Mist 以及相应的 “Ethereum Wallet” App 在下列以太坊重大成就中也发挥了不可替代的作用:

  • Mist 发布了一种代币标准。Fabian Vogelsteller 是 ERC20 代币标准草案的起草者,也是 Mist 的开发主管。我们想用这个行动来打破关于标准的 “鸡/蛋 问题”:我们公开了这个代币标准,并且几乎同时推出了支持这一标准的钱包,让人们可以轻松部署和发行他们自己的代币
  • Ethereum Wallet 为 dApp 开发铺平了道路。虽然 Ethereum Wallet 是 Mist 中的一个独立可下载组件,但我们是完全把它当成 web 应用来开发的,而且我们在其中学到的教训,关于如何与浏览器层安全通信,着实为我们现在的处理方法铺平了道路。
  • Mist 是第一个有图形交互界面的钱包。那时候用户要么得用命令行界面,要么就得使用交易所,但 Mist 让他们可以直接使用以太坊以及导入(他们参与过 ETH 预售的)私钥。
  • 第一款确立并鼓励大家使用 Blockie Identicon 标准的钱包
  • 第一款开发并推广了 CamelCase 校验和机制的钱包
  • 第一款支持简易合约部署的钱包(很久之后 Remix 才有了一个网页版交互界面)
  • 第一款从纯 ABI 创建合约虚拟交互界面的钱包(在很长时间里都是唯一一款)
  • 第一款无缝支持 ENS 域名的浏览器
  • 第一款支持 Swarm 托管网站的浏览器
  • 很多 App 都用 Web3.js 这个 javascript 库来跟以太坊交互,其实这个库是由 Mist 团队创建的,后来才开放出来让大家使用

这些突破都切实帮助了以太坊在第一年里变得更加可用,而且我们与其它团队紧密结合的开发工作也加快了进度。我们一直把 Ethereum Wallet 当作一款网页端的 app 来看发,这种思维也帮助团队学到了很多关于 Web3 应当如何搭建的知识,并在后来演化成了其它标准。比如 Geth 客户端的 “signAndSend” API,之所以能够做的那么精巧,是因为 Mist 一直在用并且给他们团队提供反馈。

-早期各种以太坊功能原型的截图。这些原型现在还可以在 这里这里 看到-

在这些早期原型的开发过程中,我们设计了指标显示仪、应用商店、内置型代码审计工具、以身份为基础对象、个人化代币、DAO(去中心化自治组织)、预测市场以及其它现在才开始看到曙光的应用。人们不应该认为这些东西 ”做得太早了“,而应该从中清醒地认识到,项目都要花很长时间才能成熟。我们那时候没法开发出上面所说的大部分工具,在今天也只能做出一小部分;这些工具要靠一个更加强大的生态才能完成。罗马城不是一天造成的,我们一支团队也不可能在一天里做出所有东西。而且我劝你小心那些说自己可以做到的人。

我们做错的地方

- 我们得到的教训,由 Yan 总结在这两份幻灯片里面-

我们最大的问题主要就是两个:要跟一个节点保持同步,以及,基于 Electron。

在以太坊早期,同步到一个全节点还是可行的,但很快就变成了一项旷日持久的苦差事。2017 年轻客户端开发完成时,这个问题开始得到缓解;2018 年,我们又做了折衷,加入了一个远程节点模式(INFURA),可以自动在节点间切换。我们执着地相信这个上台需要很多由用户自己运行的节点;但这种固执让我们失去了很多粉丝,他们用脚投票去了那些使用远程托管节点的 App。虽然去中心化和便利性是永恒的两难,而且各有各的缺点,可以确信的是,有些问题是可以在长期中得到解决的,比如使用我们所用的 “远程/本地” 混合模式,再加上无状态轻客户端。

但这些都比不上 Electron 给我们带来的安全问题(来得严重)。

Electron 是一个很棒的桌面端网页 app 框架,是给那些使用可信 javascript 文件的 app 开发的。但如果你要开发一个浏览器,你理所当然是要运行全世界的不知道哪个谁发给你的不知道什么代码啊!这显然是非常棘手的。而且,在我们使用 Electron 的历史中,Electron 很少更新,而且就算更新了,它也会在 chromium 后台同时运行多个版本,因此最新版的 Mist 所用的往往也是过时了几个月的内核。Google 一般会在修复 bug 的 6 个月后公开漏洞,可是那时候我们还在跟已经公开了 100 天的漏洞作斗争,导致我们总是把 bug 悬赏拱手送给那些拿着已经公开的 chrome 漏洞向我们邀赏的人。我们给 Mist 做过专业审计,审计人员发现了多个已经被修复的漏洞,基本上没有特别严重的,但最近一年他们发现了一些非常严重的 bug :攻击者可以完全控制用户的电脑(以及私钥),只需让用户看个网页就行。非常糟糕

我们立即放出了补丁版本,但随后又发现了其它类似的攻击。有一天,我们内部的安全团队建议我们禁止用户浏览不受信任的网站——可是这就取消了浏览器的全部意义了呀!我们只好在应用里面放置警告,并开始寻找替代方案。

我们研究了很多替代方案(比如 Tau,使用 Chrome 嵌入式框架来替代 Electron),但随后我们就意识到,维护一个安全的浏览器所需的人力资源数量远远超出了我们团队可以支持的数量。

同时,比起我们刚起步的时候,这个生态已经壮大了许多:Brave 浏览器(一开始也是从 electron 应用起步的,现在已经转向完全的 chromium 分叉实现)安全可靠,整合了密码学货币,对 Metamask 的支持也做得很好。在手机端,最近几年里出现了很多让人眼前一亮的产品,像 Coinbase Wallet(曾用名 Toshi)这样的以太坊原生引用,以及整合了 web 的传统浏览器比如 Opera。这一切都让我们相信:其它浏览器的开发者有更充裕的资源,比起我们只是有了一个安全的浏览器框架,他们更容易做到原生支持 web3 功能。

还没人做对的地方

我们也认为,web3 还有很长的路要走。下列事项是我们认为迄今为止还没有团队做对的地方:

  • 在浏览器 URL 中整合 IPFS/Swarm。很遗憾,大多数以太坊应用都只使用了传统服务,还不具备哈希寻址型内容的不可变更性保证。如果你正在开发一款应用或者钱包,考虑一下托管在 IPFS 上,这样用户就可以确信底层代码无法背着他们作出更改并造成破坏。在我们看来,这不完全是浏览器供应商的错误,也是底层技术成熟度的问题:我们在两年前就成功实现了 swarm 托管,但从那时候开始,协议和网络都发生了巨大的变化。有时候太早接受一种还在频繁改进的协议也是一种麻烦。不过 Brave 浏览器正在往这个方向努力
  • 广泛运用 ENS:我们认为 ENS(或其它去中心化域名服务,比如 handshake)在添加地址和域名方面提供了好得多的体验。我们自己是在钱包中所有地址输入框里都添加了对 ENS 的支持,因此只要是添加地址都可以使用 ENS。但据我们观察,单方面增加支持是不够的:你还得让用户可以更容易地注册域名,就好像我们发行代币标准时,不仅仅是提供添加代币的方法,还提供了创造代币的方法。在这方面的一个正面教材是 Argent,它受了 Universal Logins(另一个从 Mist 中独立出去的团队)的启发,会在用户生成新账户时给用户一个域名。
  • 钱包只是另一个应用,但身份不是。在我们尽力让钱包降格为 Mist 上的众多应用之一时,我们相信自己是走在正确的道路上。我们还将这款应用打造为你会经常使用的软件,而不是你用来阅读过时文档的软件(这也是为什么我们总是使用侧边栏,而不是标签)。但我们现在意识到,真正的一级对象(First-class citizen)不应该是你的钱包,应该是你的身份。保证身份的隐私性足够强,同时又易于获得和使用,这对于所有浏览器来说都是很重要的,也就是说,你不必为每个应用创建一个新的身份,你只需要控制那些信息就好。想要一种保证隐私又很轻便、可转移的方法,请看 3box

Mist 现在会怎么做?

我们将终止 Mist 浏览器项目,不会再积极支持它(不过可以为偶然的安全和分叉升级重新考虑这个决定),但我们在过去几年中的大部分工作都会被重用(幸好我们做了大量工作让我们的代码模块化和现代化)。我们将 Mist 分割为多个组件:

-上图显示了我们会如何分割代码库。虚线表示尚未启动的项目-
  • 节点管理:去年一整年,我们对 Mist 的内部节点管理器作了很多修理,比如如何下载和运行新版本的 Geth、Swarm、Whisper,等等。我们现正把节点管理器开发为一个独立的应用,帮助开发者管理多个版本的软件,叫做 Grid
  • 可重用的 React UI 元素:我们细致地重写了大部分组件,打包成一个叫做 “以太坊 React 组件” 的可重用代码库,这个库也可以用作其它应用的七点。你可以在我们的 storybook 上查到这个库
  • 确认窗口:我们重构了钱包 UI 中最重要的部分,就是交易确认的状态,必须让用户能够一眼看出来交易进行到哪一步了。我们现在准备将这些交互界面上的升级整合到 Geh 的专用密钥管理器应用,Clef
  • 应用升级管理器:我们重构了 Mist 的自主升级机制,变成了一个通用的应用管理器,通过热更新和签名验证实现了 binaries 的统一更新机制。
  • 软件包签名器:我们也做了一个独立的库,让用户可以拿以太坊密钥对软件升级做签名并发行升级,因此项目也可以用更加去中心化的方式证明软件的可信性。
  • 钱包:众所周知名为 Ethereum Wallet 的应用实际上是一个网页端应用,Mist 或者 Metamask 都可以在 wallet.ethereum.org 使用这个应用。代码实际上过时了,而且用户体验也不好,但我们相信可以让 Universal Login 成为一款开源、安全的非直接保管型钱包。

下一步呢?

Mist 团队会继续一起工作,但我们的使命不再是开发一个 app,而是致力于提升以太坊基金会内其他团队的用户体验和前端。看着 Mist 时代走向终结,我们也很难过,但还可慰藉我心的是,我们终止 Mist 是因为这个生态已经芳草离离,生机盎然。

对我们团队来说,帮助以太坊基金会继续征战、瞄准一个既值得我们投入精力、又适合我们的领域,才是最重要的;我们也相信,我们为以太坊应用开发过许多更好用的前端交互界面,这种经验是非常珍贵的。

我们团队的短期目标是放出 Grid 以及其它上面提到的 Mist 的分支。中期目标是与以太坊基金会的其它团队合作,发挥我们在设计、用户体验和前端架构上的专长,提升所有项目的设计和可用性,并改变基金会团队各自为战的局面。

那么 Mist 上的资金会如何处理?

Mist 和 Ethereum Wallet 是用户保管型钱包,所以你的私钥都保存在你自己的设备上,文件格式是与其它以太坊钱包完全兼容的,而且你也有完全的控制权。你现在不需要做任何操作,有一天你需要用到这些钱的时候,我们建议你将私钥转移到 Mycrypto、Metamask 或其他我们在 Mist 迁移手册里提到的钱包上。

感谢 Marc Garreau。


原文链接: https://medium.com/@avsa/sunsetting-mist-da21c8e943d2
作者: Alex Van de Sande
翻译: 阿剑


你可能还会喜欢:

通告 | 以太坊 Mist 浏览器的未来:分层节点及其它
科普 | 6种以太坊(ETH)钱包的基本介绍
观点 | 理解 Web 3 —— 用户控制的互联网

 
0 人喜欢