专栏名称: 以太坊爱好者
以太坊爱好者
专栏主题
分享
今天看啥  ›  专栏  ›  公众号  ›  以太坊爱好者

观点 | 理解 Web 3,Part-2:架构与设计选择

以太坊爱好者  · 公众号  · 2019-01-28 17:11


(续前)第二部分:含义


用户控制层

一直到用户控制层为止,普通的用户几乎不可能用到上述几层的功能,除非他/她直接通过命令行接口与计算层互动。用户控制层的主要功能是管理用户的私钥,以及在状态层上签署交易。状态层上的交易会改变用户的账户状态,因此在用户与 Web 3.0 应用的交互过程中处于核心地位。

-以太坊区块链的交易解析图-


钱包分为两类:

托管钱包:由 Coinbase 之类的密码学货币交易所推广起来的钱包。它通过控制状态层上有限的资产所有权余额,代表用户管理资金。这些钱包会将用户资金聚集到状态层之外的聚合账户内,并且直接管理个人用户的状态。如果仅仅考虑货币价值的话,这是一种经济易行的操作,不过随着 Web 3.0 应用引入的状态越来越多,就会变得更加复杂。

还有一种更新式的托管钱包,可以为每位用户管理其专属的区块链钱包,并且支持去中心化应用。这种钱包的灵活性更强,不过尚未经过规模化应用的检验。

用户控制型钱包: 针对可由 Web 3.0 实现的任意复杂操作提供了一种更为灵活直接的方式。用户控制型钱包的特点是可以在本地保管用户的私钥,并且对每笔交易进行签名。这意味着钱包软件不会复制用户的私钥,也不会允许第三方代替用户提交交易。

用户控制层是上述所有分层与用户之间的最终接触点,因此需要向访问该分层的应用公开所有可实现的功能。这通常是通过类似 web3.js 的前端库实现的。本文的第三部分将对此进行深入分析。


应用层

与传统网络非常相似的是,Web 3.0 上的大部分活动都将通过搭建在上述分层的第三方应用实现。例如,作为加密商品的 CryptoKitties 之所以具有价值,是因为用户可以在 cryptokitties.co 、 kittyrace.com 或 cryptogoods.com 等应用上通过 CryptoKitties 交易来实现某些功能。相比传统的网络应用,Web 3.0 上搭建的应用拥有不同的性能和要求,因此在大多数情况下被称为去中心化应用(dApp)。正如 Matt Condon 在推文中所言,dApp 若想吸引数百万用户,就不能与现有的应用区分开来。

然而,正是因为去中心化特性创造的新功能,dApp 才会具有如此强大的力量,并且随着堆栈的日趋成熟,网络的用户人数或将继续增加。世界各地的开发者已经创造出了各种类别的前沿用例,用户则将手中的钱投给其中有价值的项目。

  • 募资:已募得资金近 200 亿美元,参与账户达 72.3 万 个,获得投资的公司总计 8000 + 个。虽然募资这块存在欺诈成分,但是到本文截稿之日为止,就参与账户数量来看,它依然是最受欢迎的应用类别。此外,募资类应用依旧热度不减,许多新的募资平台都在推动监管下的 ICO 项目。

  • 交易平台:传统的区块链资产交易平台(充当托管钱包)在用户和状态层之间起到了中介的作用,然而搭建在 Web 3.0 堆栈上的交易平台允许用户完全掌控自己的资金,不用将资金托管到第三方钱包地址内。此外,后者在用户体验上的潜在优势提升了交易体验。虽然很多项目还在努力克服一些技术挑战,但是我们已经看到交易平台类应用在增多。

  • 游戏和收藏品:已募得资金达 0.5 至 1 亿美元,拥有某类数字商品的账户达 6 万个。相比募资类应用,涉及数字商品的游戏类应用规模小的多,不过还有巨大的市场潜力尚待挖掘。


第三部分: 实现


在第一部分,我们回顾了无状态互联网的成因——参与者无法在本地保留自己的状态,或是进行状态转移。比特币开创的区块链技术实现了有状态的计算机网络。身处于密码学和区块链生态系统中的我们已经开始呼唤新型互联网 Web 3.0 的到来,这点我们已经在第二部分介绍过了。

Web 3.0 增加了一个全新的基础设施层,以便各类应用进行交互,还增加了新的客户端功能和需求。用户需要了解新的用户体验概念,才能够使用这些应用。同样地,Web 3.0 应用架构在当前 Web 2.0 应用架构的基础上引入了其他元素,还有新的构建模块和工具需要开发者熟悉。

-Web 2.0 应用架构 vs Web 3.0 应用架构-


Web 2.0 架构 vs Web 3.0 架构

目前简单的 Web 2.0 架构包括一个客户端软件(通常是一个浏览器或一个自包含应用)和一套提供内容和逻辑的服务器(由同一个实体——我们把它叫做 Game Co.——控制)。在这个模型内,只有 Game Co. 能够控制服务器内容和逻辑的访问权限,并且追踪记录每个用户的所有权情况及状态维持时间。历史上已经有很多互联网公司更改过用户规则或是停止过服务了,用户却没有权利保存他们所创造的价值。

Web 3.0 架构利用了通用状态层上实现的两大功能:

  1. 允许各类应用将部分或全部的内容和逻辑放到公链上。不同于标准的 Web 2.0 架构,放到公链上的内容和逻辑是公开的,人人都可以访问。

  2. 允许用户直接控制这些内容和逻辑。不同于 Web 2.0 ,用户不一定需要通过账户或是特殊的 API 密钥才能在区块链上实现交互。

Web 3.0 应用之所以能够实现上述两点功能,主要是因为以下两个基础设施:

  • 钱包: Coinbase Wallet 之类的现代化钱包不只是充当 Web 3.0 堆栈的用户控制层,它们还与主要客户端的前端进行交互,以便提供更流畅的用户体验。应用可以使用标准库直接向钱包发送请求,其中最受欢迎的标准库是 web3.js 。例如,web3.js 调用可以是支付请求,要求用户确认钱包可以向应用地址发送一定量的资金。如果用户确认付款的话,会出现两种情况:1)钱包通知了应用前端,作为回应,前端会显示“已付款”界面,2)钱包向区块链服务器发起了 RPC 调用,将经过确认的交易提交至区块链。此时,第二个基础设施开始发挥作用。

-上图的 Web 3.0 代码允许 DApp 从用户钱包中调用智能合约函数-

  • 区块链节点:有两类中介一直在监视并参与区块链——矿工和节点。矿工直接维护并运行区块链,节点则负责监控交易并将交易提交至区块链。可以将它们分别看作是网络服务提供者(ISP)和云服务提供者(例如 AWS)。现如今,大多数应用都使用 AWS 服务运行它们的后端,Infura 之类的区块链节点提供者同样使用类似的服务来运行它们的区块链节点。如果一个钱包想要向区块链提交一笔交易,或是查询区块链上的状态信息,就会调用节点提供者。通过发起类似的 RPC 调用,应用的 app 服务器也能够直接与节点提供者进行交互,从而持续更新 app 上的逻辑。


开发者需要了解什么?


工具和架构

了解并熟练掌握相关工具和架构,是开发者生涯中很重要的一部分。尽管 Web 3.0 仍处于早期阶段,但是目前可用的工具已经足以让开发者进入最小化可行产品(MVP)阶段,并加快迭代速度了。这一点在以太坊上最为明显,在社区内诸多成员的努力下,开发者群体不断壮大起来。

-图表作者:stefanobernardi;数据来源:GitHub -


我不会详细介绍目前已有的工具,不过开发者还是有必要了解一下哪些工具是他们可以用的。下图中的列表并不全面(实际上还有一个列表),不过里面列出了一些针对新手开发者的入门工具。

设计选择

针对哪些部分实现去中心化:这是新出现的关键性选择。大多数的早期开发者旨在将去中心化发挥到最大程度,并把所有东西都放到区块链上。区块链目前依然存在低效和高成本的问题,因此不可能实现规模化发展。CryptoKitties 大概是第一个尝试保留中心化成分的 DApp 了。例如,猫咪的繁殖逻辑就不是公开的。尽管 CryptoKitties 因此遭受了一些非议,但是依然有很多用户豪掷重金购买该逻辑下繁殖出来的数字猫咪。再比如说 Gods Unchained ,这款游戏本身托管在标准的云架构之上,然而资产所有权是在状态层上进行追踪的。

虽然各个 dApp 实现去中心化的方式不尽相同,但是它们采取的方式都以“可见公共状态最小化”为第一原则。如果你正在开发一款的游戏可以让用户拥有资产,那么应该将所有权上链。如果你正在构建一个预测市场,那么应该将关于该市场的报告和押注情况上链。终有一天,等到用户发现你开发的应用可以实现真正的所有权之时,就会感受到它的价值。

网络应用 vs. 原生应用:这是一个已经困扰了开发者数十年的选择,只不过是借了 Web 3.0 应用这个新形式而已。如今的 DApp 多数都是网络应用,原因很简单:a)用户不需要每次都下载一个新的 app ,b)用户不需要每次使用 app 的时候都创建一个新的钱包。还有少数的原生 dApp 需要用户在每次使用之时都创建一个新的钱包,因此会影响用户体验。原生 dApp 显然是没有未来的,毕竟用户不可能保管上百个钱包的私钥。虽然不久的将来,原生应用的运行将会更加流畅,从而改进用户体验上的不足,但是就目前而言,网络应用会带来更加便捷的用户体验。

桌面应用 vs. 移动应用:就 Web 3.0 应用而言,这不是一个二选一的问题,而是用户最终会如何使用桌面端和移动端的 DApp 。就桌面端而言,如今多数用户都是依靠 MetaMask 之类的 Chrome 扩展程序与 DApp 的交互的。虽然用户需要下载一个新的扩展程序,但是他们依然是与自己熟悉的浏览器界面进行交互。

然而,扩展程序是不可能安装在移动端上的,至少在 iOS 系统上是如此。这就是为什么 Coinbase Wallet 之类的钱包 app 会嵌入浏览器。一旦用户从移动端的 DApp 进入浏览器页面,就会获得与桌面端相同的体验。此外,Coinbase Wallet 的工程部主管 Pete Kim 还在这篇文章中讲到了几个关于移动端开发的技术细节。

目前仍需应对的挑战有:

  • 谁来负担 Gas 费用:现如今,每个搭建在以太坊上的 DApp 都要求用户自己承担交易手续费——在以太坊区块链上被称为 Gas 。然而,要想让 Web 3.0 应用吸引数百万加密社区以外的用户的话,这并非长久之计。目前已经提出了几种理论上可行的解决方案,其中一些快要实现了,例如 gas 中继者,不过目前尚未有方案投入使用。

  • App 账户是否为专属账户:通用身份是 Web 3.0 带来的最激动人心的应用之一。由于目前实用的身份解决方案不多,一些 dApp 依然要求用户创建账户,才能将用户在 dApp 上的活动与他们的身份相关联。这种方式跟 Web 2.0 差别不大。一旦有了实用的去中心化身份解决方案,dApp 应该如何处理用户的身份问题?虽然目前还没有明确的答案,但是已经出现了一些提议,例如使用 ERC-725 和 735 构建的 Origin’s demo 。


结语

在第三部分,我总结了 Web 3.0 对应用架构的改变,以及开发者在开始构建 Web 3.0 应用的时候应该了解哪些的东西。对于初学者来说, Cryptozombies 是一个很棒的入门途径,它提供了趣味教程,任何人都可以学习如何创建第一个 Web 3.0 应用。

虽然随着相关基础设施的发展,Web 3.0 的构建方式会发生很多变化,但是关键在于应用程序依旧在开发之中。Web 3.0 尚处于起步阶段,有许多优秀的团队正在迎接挑战,把握机遇。

本文到此结束。


我们正在 Coinbase 上开发产品,支持开放的金融系统。我们相信,全世界的开发者都将在 Web 3.0 上开发产品并创办业务,将开放的金融系统从愿景变为现实。如果你想加入我们成为这个生态的一份子,搭建你自己的 Web 3.0 应用,请务必通过 Coinbase Wallet 与已经在使用 DApp 的用户取得联系!我们公司有很多岗位在招新,也在投资与我们一起建设去中心化网络的公司。

感谢 Linda Xie、Josh Stark、Tony Sheng、Sid Coelho-Prabhu、Jacob Horne 和 Daniel Harrison 的反馈。

除非另有说明,文中所用图片均由 Coinbase 提供。

免责声明:本网站内含第三方网页或来自其他资讯用途内容(统称为“第三方网站”)的链接。第三方网站不受 Coinbase 及其附属公司的控制,Coinbase 不对来自任何第三方网站的内容负责,包括但不限于所有来自第三方网站的链接,或是对第三方网站的修改和更新。Coinbase 不对来自任何第三方网站的网络广播或任何其他形式的传输负责。Coinbase 仅为方便起见向您提供这些链接,并不代表对该网站的支持、认同或推荐,也不代表与其运营商有任何关联。



原文链接: 

https://blog.coinbase.com/understanding-web-3-a-user-controlled-internet-a39c21cf83f3 

作者: Emre Tekisalp 

翻译&校对: 闵敏 & 阿剑

本文由作者授权 EthFans 翻译及再出版。


你可能还会喜欢:

问答 | INFURA如何解决以太坊的其他大规模挑战

观点 | 以太坊用户体验的痛点

教程 | 以太坊开发演练,Part-2:Truffle,Ganache,Geth 和 Mist



今天看啥 - 让阅读更高品质
本文地址:http://www.jintiankansha.me/t/sfb2H9orck