很久以前,我曾面对满座听众介绍 BigchainDB。这家公司开发了一个(具有可扩展性的)去中心化数据库,我是它的员工。由于当时我们刚刚发布了一个兼容浏览器的 JavaScript 驱动程序,我告诉听众:“……因此,在浏览器中使用我们的驱动程序,你的应用就不再需要后端了!”
我第一次知道 Metamask 的时候是在 2017 年左右,然后就开始着了以太坊 Web 3.0 的魔。可以说,Web 3.0 很快就火了起来。突然之间,用户就可以通过下载的浏览器插件来直接与公链互动。从某种意义上来说,Web 3.0 依然很了不起。
如果你在你的浏览器上安装了类似 Metamask 的扩展程序,你就可以访问公链网络上的节点,使用数字货币做最疯狂的事。最近的 DeFi 网站就是一个绝佳的例子。DeFi 网站可以让用户交易密码学货币,提供流动性,并进行点对点借贷。这些网站不会强制要求注册,你只需点击一下按钮,就能聚集上千美元。这真是太酷了,而且证明了 Web 3.0 的愿景是可行的。
那么,Web 3.0 的愿景是什么?首先,这个东西可能根本就不存在。我只知道有一个被命名为 “web3.js” 的库。在浏览器环境(JavaScript)中工作时,开发者使用这个库来与远程或本地的以太坊节点通信。
在启用了 Web 3.0 的网站中,当用户点击某个按钮(来将 ETH 聚集到某个智能合约中)时,大多数计算都由定期与以太坊节点通信的 web3.js 库支持。最终,web3.js 库可以让用户将交易发送到该节点上,从而转移用户资金。
通常情况下,Metamask 之类的密钥管理项目运行在用户的浏览器上。它们可以让用户在不同的网站上使用同一个密钥签署交易。
总而言之,这就是 Web 3.0,一个基于 “Web 2.0” 的文字游戏。Web 2.0 是网络标准升级,为我们带来了现代单页应用和动态 AJAX 加载。那 Web 3.0 呢?它带来了什么改进?货币网站吗?
确实,如果你能够清除脑中的特定记忆,比方说你能够做到 grep -l web3 brain | xargs rm ,然后有人问你是如何构想基于区块链并由智能合约实现的 Web 3.0 ,你可能会描述出一个完全不同的生态系统。你会构想点对点网络、轻客户端和新的网络标准。这些恰好都不是 Web 3.0。
以如今的经验来看,如果你没有安装 Metamask(或其它密钥管理插件),就会发现网站响应极差,容易崩溃或停止工作。打开 一个 Web 3.0 网站的网络控制台,你就会看到它正在向以太坊全节点发送大量 PRC 请求。抱歉,我说的就是 Infura 节点(一个提供以太坊全节点云托管服务的提供商)。有点蠢呢。
更蠢的是,Metamask 可以让开发者安排用户进行特定的合约调用,你可能会因为不小心点了一个按钮,就让你的所有资金处于被盗的风险中。有可能是黑客入侵了网站服务器、网站服务提供商作恶,或是网站主动套路你(表面上一切正常,暗地里把你的钱都偷走)。
吐槽到此结束,现在我要指出我认为 Web 3.0 应该改变的地方:
· 我们应该停止构建密钥管理插件,开始思考如何实现可标准化的网络 API 。我们不能再训练用户养成安装浏览器插件的习惯了!
· 我们需要尽快优化轻客户端,使其脱离 thegraph 和 Infura 之类的第三方服务。
· 我们需要改进客户端库(ethers.js 和 web3.js),极大地简化它们,并消灭一切 bug(该死的 bug!)!
· 我们需要利用区块链的一些基本特性。由于大多数链上数据都是不可改变的,我们可以先缓存好。
最后,我认为我们不能再将注意力都集中到提高 Web 的版本号上。或许我们应该重新考虑编写更多后端。我们应该推进 Open Gas Station Network 等免许可型网络方面的研究,让开发者提升用户体验。此外,我们应该多思考如何构建一个由区块链组成的机器网络。在许多方面,Web 3.0 还只是一个炫酷的概念。我们要构想出更好的东西来。想象一下,如果将货币更深入集成到计算机系统中,会发生什么情况?