已经有十几个伟大的 Web3 基础设施不断打破区块链技术的边界,试图让我们的行业朝着 Web3 的梦想更进一步。
但 Web3 尚未到来。我们今天看到的大多是 Web2.5 的应用。
从 Web2.5 到 Web3
下面是一个 Web3 应用程序的架构,与我们称之为 Web2.5 应用的不太 Web3 应用的架构进行比较。
Web2.5 App 通常采用与 Web2 App 相同的架构,用户从前端向后端服务器发送请求,由服务器进行计算和存储。它唯一的区别是,在后端服务器中,有一个私钥“代表”用户在去中心化的区块链上操作代币。
相比之下,Web3 App 没有集中控制用户资产的私钥。应用程序的后端完全在智能合约运行时实现,它是公开、透明、无需许可的,智能合约定义的逻辑控制着从用户资产到应用程序功能的一切。
Web3 六问
这里有 6 个问题可以帮助你详细了解我们对 Web3 的愿景。
用户是否拥有他们的数据和状态?
大多数人谈论的 Web3 App 的第一个基本特征是数据所有权。但是拥有数据的价值是一个模糊的描述,所以我通常从2个角度去思考:数据归属和数据隐私。
- 数据归属——用户发布的所有数据和用户在 App 内的行为引起的所有状态转换都应明确归属于用户
- 数据隐私——用户可以选择只向指定方透露数据并可以更新数据可见性
数据的价值来自于数据归属和数据对特定交易方的可见性的交易。在 Web3 时代,代币作为数据归属和可见性的代表,它们的价值可以在一个更自由和无摩擦的市场中被发现。
在 Web2 App 中,用户数据发布和记录在一个中心化的服务器上,使他们无法有明确的归属。隐私也是这种设计的一个悬而未决的问题,因为后端是一个黑盒子,你不知道记录了什么,没有记录什么,更不用说你无法利用任何加密工具来隐藏你的关键信息了。
然而,在真正的 Web3 模型中,用户使用单个公钥标识,所有数据都存储在以公钥作为密钥路径的状态树下,形成对用户的明确归属。除非使用相应的私钥签署交易并且该交易用于触发预定义的合约逻辑,否则没有人能够更改它。后端是一个完全透明的环境,每个用户都可以看到记录了哪些用户行为。如果用户希望隐藏某些信息,他们可以使用零知识证明等工具来实现。
例如,游戏可以拥有无需信任的自由市场,供玩家交易游戏内资产和制造独特的新资产。游戏内资产创建时,直接作为数据存储在用户地址下。它的制造方式是智能合约预定义的一段逻辑。用户可以自由地将此资产交易给其他人,任何人都无法窃取或破坏它,即使是游戏的开发者也不行。
例如,UGC 平台可以在点对点网络中形成。所有的内容制作者都可以将内容保存在他们的本地服务器中,观众将访问这些服务器来访问内容。可以在制作者和观看者之间建立流媒体支付渠道,用户下载每个字节的内容,他们将支付一分钱的加密货币。内容本身可以用观众的公钥加密和加水印,以防止盗版行为。
治理能否做出实际改变?
除了用户发布的数据外,App 构建者定义的 App 的逻辑、规则和功能应该完全用智能合约实现,运行在可证明的智能合约运行时。应用程序的构建者应能够通过定义可持续的治理机制使其完全由社区驱动,从而将更新所有逻辑和功能的权利授予其用户。
这不能用 Web2.5 模型来完成,因为所有逻辑都硬编码在黑盒服务器中。即便 App 运营方想公开,并愿意根据社区治理的投票结果进行修改,结果的执行也不会是让用户相信的去信任程序。
在 Web3 模型中,所有构成 App 功能的智能合约都可以有明确的更新规则,以便治理可以更改或删除它们,以及开放的 API,以便治理机制可以扩展其功能。治理机制应使用一组任何人都无法更改的智能合约来定义。治理结果基于对预先发布到智能合约环境的某些数据进行投票支持或反对。治理的结果将直接导致相关智能合约的升级,而无需任何中心化方的干预。
例如。通过让所有 DAO 成员从头开始共同构建应用程序的所有功能,可以从 DAO 发展应用程序。该应用程序的每个功能组件都将由 DAO 治理直接决定。无隐藏功能。
例如。游戏的玩家可以设计和发起他们自己的冒险,供其他玩家享受。这种冒险可以确保公平公正,因为它的所有规则都经过治理审查和同意。
资产是否通过信任或验证来保护?
拥有应用程序所有数据和功能的所有权是重要的第一步,但能够在不信任的情况下而是通过开放验证来维护它们也是一个关键特性。
在 Web2.5 模型中,数据、功能和资产的所有权完全掌握在服务器运营商(有时是云服务器提供商)手中。因此,信任 App 运营商是这里唯一的安全机制。
在 Web3 模型中,服务器运行可证明的智能合约环境,在该环境中,操作代码的每一次执行以及对任何数据的每一次 CRUD 操作都是可证明的。换言之,可以生成证明。任何人都可以通过将证明发送到区块链来使用证明来验证该服务器上发生的一切的完整性和正确性。区块链将提供验证结果,并作为法院根据证据进行仲裁。任何拒绝提供证明或提供错误证明等恶意行为,都将导致本 App 用户一劳永逸。
例如,游戏的玩家可以设计和发起他们自己的冒险,供其他玩家享受。由于所有规则都经过治理审查和同意,因此可以确保这次冒险是公平和公正的。
它抗审查吗?
就像区块链系统一样,一个 App 应该是去中心化的、无许可的和分布式的,这样任何人都可以保留一份 App 数据的副本。
在 Web2.5 模型中,一切都包含在一个中心化的服务器中。一旦用户被服务器拒绝或服务器被其运营商关闭,用户将丢失所有数据以及该 App 中的资产价值。
在 Web3 模型中,App 的后端实际上是一个网络,网络中的每个节点都保存着所有最新数据的副本。因此,即使有几个节点宕机,应用程序仍然可以运行,用户永远不会失去他们的资产。
例如,一个关心游戏 App 的玩家可以保持运行一个节点来保留他们最新数据的副本。如果游戏建设者决定关闭,所有拥有节点的玩家仍然可以以游戏的最新状态进行游戏。
用户体验如何?
由于去中心化的性质,应用程序可能会面临系统性能方面的挑战,这可能会导致用户体验不佳。通常通过系统吞吐率(以 TPS 为单位)、存储容量、交易 Gas 费以及交易确认延迟来衡量性能。这些性能指标最终会影响最终用户体验。
Web2.5 和 Web3 应用程序具有不同程度的去中心化。
对于 Web2.5 应用程序,所有资产(即代币)都保存在一个集中的链下环境中,该环境主要依靠社会共识作为其信任机制。如果当局允许,这些代币可以提取到 Layer1 区块链。
对于 Web3 应用程序,资产完全包含在可证明的智能合约环境中,其信任机制基于去中心化的 Layer1 区块链。可证明意味着所有资产都可以从 App 中自由提取到 Layer1。
然而,尽管这两种架构的去中心化程度不同,但由于计算和存储都在链下完成,因此它们的系统性能大致相同。
Web3 Infra 的挑战
作为开发人员,您可能会问我应该从哪里开始构建 Web3 应用程序。理想情况下,应该通过指出提供所有必要工具和环境的足够好的基础设施解决方案来回答这个问题。
这种基础设施的解决方案有两个挑战:架构和编程语言。
解决方案架构
我们正在寻找的解决方案的架构是一个智能合约执行运行时,它可以生成要在第 1 层区块链上验证的证明。理想情况下,此运行时应充当 App 容器,允许构建者将代码放入并立即衍生出 App。它还必须与所有现有的 Web3 基础设施兼容,以便可以集成来自不同生态系统的所有资产。
模块化区块链 (opens in a new tab)架构的理念以及 Optimistic Rollup (opens in a new tab) 和 ZK-Rollup (opens in a new tab) 等 Layer2 解决方案为应对这一挑战提供了解决方案。
智能合约编程语言
Web3 App 的编程语言应该针对描述资产和组合功能进行优化,以便更好地实现数据所有权和基于治理的升级。除此之外,资产的安全性也应该是合约语言的优先设计目标。因此,找到灵活性和安全性之间的平衡是智能合约编程语言面临的主要挑战。
Move 语言 (opens in a new tab)是一种面向对象的编程语言。它旨在解决此平衡问题。
借助 Move,开发人员可以使用 struct
来定义任意类型的资产。资产也可以作为参数传递给函数,这样所有的资产都可以灵活地被不同的智能合约操作。同时,资产的创建、销毁和所有权通过语言声明明确定义,为 Move Language 定义的所有资产提供语言级别的安全性。
作为一种新的编程语言,Move 得到了不止一个社区和项目的推广。(请参阅 Awesome-Move (opens in a new tab) 以获取由 Move 驱动的区块链列表)这使其在未来成为一种非常流行的语言选择具有巨大的潜力。
Move Language 还内置了对合约可升级性和账户抽象等功能的支持,使 App 构建者更容易消除用户的痛点。
结论
在本文中,我们讨论了关于我们如何实现真正的 Web3 的 6 个关键问题,包括 Web2.5 应用程序和 Web3 应用程序之间的背靠背比较,以确定它们是否可以实现这些 Web3 功能。
将这些功能作为最终目标,我们还讨论了为开发人员设计和构建 Web3 应用程序构建基础架构解决方案需要什么。
在 Rooch 项目中,我们与其他先驱一起分享 Web3 的愿景,我们正在努力为所有 Web3 构建者提供最好的产品。
请随时查看我们的文档,以了解有关 Rooch 提出的解决方案的更多详细信息。