揭示下一代互联网Permaweb的雏型:基于SCP理论的去中心化微服务架构。

揭示下一代互联网Permaweb的雏型:去中心化微服务架构,基于SCP理论。

Permaweb的技术解析:从SCP理论到微服务架构

作者:Outprog @ PermaDAO的贡献者

审阅:Xiaosong HU @ PermaDAO的贡献者

Permaweb是Arweave生态中提出的一种新一代互联网架构,它强调应用和网站具备永久可访问的特性,让互联网有了记忆,不再遗忘。Permaweb还具备Serverless的特性,开发者在构建过程中无需自行部署前后端,所有服务都由Permaweb的基础服务层提供。

基本框架

Permaweb采用了三层架构,顶层为应用层,提供面向用户的接口。中间层为服务层,为应用提供后端服务。底层是存储层,使用Arweave为应用提供数据存储服务。

Permaweb的架构和传统的Web2架构并没有太大区别,应用层对应的是传统Web2的前端,服务层对应的是后端,存储层对应的是物理服务器或数据库。

区别在于Permaweb使用了分布式存储,使得对应用内容的篡改和抹除变得困难,从而使应用具备了去中心化的特性。虽然Permaweb在架构上与Web2有相似之处,但底层技术和设计哲学带来了根本性的区别。

具体的Permaweb应用架构如下图所示:

图片来自Permaweb cookbook

下面将对Permaweb的三层架构进行详细介绍。

存储层

存储层是Permaweb的核心,如果没有使用区块链技术,Permaweb和Web2将没有任何区别。Permaweb的存储层不一定局限于Arweave,理论上也可以使用Bitcoin或Ethereum作为存储层来构建完整的Permaweb,但由于过高的存储成本,开发者和用户难以承担。当前Arweave是最专业的永久存储区块链,每GB只需5美元,是构建Permaweb的最佳选择。

另外,是否可以使用IPFS作为存储层呢?如果使用IPFS,Permaweb将失去数据可追溯的特性。IPFS的数据CID可以保证不可篡改,但没有使用区块链技术。IPFS的数据没有区块时间戳,无法辨别数据产生的时间;同时,在IPFS服务节点关闭后,数据也将丢失,无法保证数据的永久可追溯性。

服务层

服务层是一个统一的中间件,为应用提供API,类似于Web2中的微服务集群,是无状态的且可水平扩展。通常,Permaweb的服务层会提供标准化的接口和协议(类似于Web2的gRPC或Thrift完全开源的协议),这些接口和协议完全开放开源,任何部署服务的服务提供商都可以按照协议标准提供相同的API。只要应用按照标准协议进行开发,就可以在不同的服务上运行和使用。

目前Arweave的服务层包含四个核心组件,分别是:

  • 网关服务:缓存频繁使用的Arweave数据,如arweave.asia、arweave.dev、g8way.io等。
  • 数据绑定服务(批量数据打包):使用Arweave ANS-104标准,将大量数据批量打包到Arweave,如bundlr、arseeding等。ANS-104的数据也可以使用GraphQL进行检索。
  • 序列化服务:提供智能合约服务、支付服务等,如Warp、everLianGuaiy等。
  • 索引服务:提供Arweave Tags检索服务、全文索引服务,如Adot、KNN3、goldsky等。

目前标准协议仅包含上述四个模块,未来Permaweb的服务层可以进一步拓展新标准。

应用层

Permaweb应用具备Serverless特性,开发者无需部署任何服务器。由于服务层为应用层提供了标准接口,按照规范开发的应用可以在任意的服务层打开和使用。

交互上,用户只需与服务层进行交互,无需与底层区块链进行交互。

  • 资源加载:标准化的网关为Permaweb应用所需加载的所有文件资源提供服务,这些文件资源按照Manifest标准,将存储层上的资源组织成目录格式,便于web协议进行加载和组装。
  • 数据写入:Permaweb的写入通常使用Arweave上的ANS-104标准,该标准支持大规模数据写入。采用ANS-104实现的bundle服务使得Permaweb的写入体验和Web2完全一致。
  • 数据查询和索引:标准化的索引服务使得Permaweb可以动态加载内容。索引的建立无需等待数据最终打包到Arweave,数据上传到bundle服务后就能实时生成高效的应用索引,为用户提供实时的数据查询能力。

综上所述,Permaweb可以实现与Web2完全一致的交互体验。

抗审查:标准协议和接口为应用提供了抗审查的特性。例如,网址https://cookbook.arweave.asia/可以打开Permaweb应用”cookbook”,这个网站由全球不同的网关和服务器提供服务。如果arweave.asia不能访问,用户仍然可以使用其他几个网址继续使用该应用。就算所有的网关被关闭,cookbook的数据仍然使用Arweave存储,这些数据不会丢失,服务商可以随时恢复cookbook应用。

通过使用Arweave作为存储层,可以保证每一个Permaweb应用的数据去中心化;采用标准化、开源的协议作为服务层,可以避免因为特定服务器关闭而带来的审查风险。Permaweb应用具备去中心化和抗审查的特性。

微服务版本的SCP

Permaweb的架构与传统的Web2架构相似,本质上是基于去中心化存储的微服务应用架构。

微服务是Web2开发中常用的软件架构模式,通过将一个大型复杂的应用程序拆分成一系列更小、更独立的服务单元,每个微服务都是一个独立的功能模块,可以独立开发、部署和运行,这些微服务之间通过明确定义的API进行通信,可以使用轻量级通信协议(如HTTP或消息队列)来实现。

Permaweb的整体架构与微服务非常相似,每一个Permaweb应用由标准化、独立的服务单元组合而成。这样的设计理念让Permaweb具备构建大型复杂应用的能力。

与传统微服务的不同之处在于,Permaweb采用了SCP(Storage-based Consensus Paradigm),是基于存储共识的应用程序。即Permaweb是SCP的微服务架构版本。

什么是SCP(Storage-based Consensus Paradigm)?基于存储的共识范式,核心思想是只要存储不可变,上面的交易可追溯,那么应用在任何地方计算得到的结果都是唯一的,可以获得共识。SCP的特点是底层数据可以有无限的组合性。只需遵循数据和数据组装的标准,应用可以从任何的存储层,甚至多个存储层一起聚合生成唯一状态。

使用SCP开发应用时,无需对传统应用架构进行大量调整,只需将数据库(存储层)替换为不可篡改且可追溯的区块链存储。

优势

使用基于去中心化微服务架构开发的应用程序可以获得区块链的同等特性,包括去中心化、不可篡改、可追溯、抗审查等。

与传统微服务架构类似,该架构具有以下开发优势:

  1. 模块化和可维护性:独立的服务单元,每个服务负责一个特定功能。标准化和模块化的设计使得每个服务可以独立开发、测试、部署和维护,提高了应用的可维护性和灵活性。
  2. 独立性:每个服务可以由不同的团队开发和维护,更符合DAO的特性,允许不同组织和个人为Permaweb提供最佳性能和开发速度,并允许开发者选择最适合的技术栈和工具。例如,在Arweave生态中有多个团队提供不同的服务,如ar.io提供网关服务,bundlr和开源的arseeding提供数据绑定服务,everLianGuaiy和Permaswap提供专门的金融服务等。
  3. 可扩展性:独立的服务可以根据需要进行水平扩展。甚至可以将每个服务类比为ETH2.0提到的分片,但Permaweb没有分片数量的限制,可以进行无限的横向扩展。此外,同一个协议标准还可以为不同的数据集服务,例如某些网关可以仅缓存和加工特定应用的数据,以优化其访问速度。
  4. 高可用性:拥有多个可用的网关(微服务),应用不存在单点故障,具有更好的可用性。

该架构继承了微服务架构的所有优势,并打破了区块链应用的不可能三角问题。传统区块链应用为确保性能、安全性和去中心化等特性的完整性,不得不在这些特性之间作出舍弃。而在SCP理论下,由于采用了分层架构设计,共识由存储层和通用协议保障,此时去中心化与节点数量无关,而与协议的开放程度相关。谈论以太坊去中心化时,除了考量节点数量,也应意识到以太坊软件本身是一种标准协议,用户和矿工使用相同的协议达成共识,即可形成较高程度的去中心化。在以太坊的例子中,目前绝大部分用户和开发者使用了infura.io提供的服务,虽然infura.io是中心化服务,但用户随时可以部署以太坊协议并自主接入网络。同样地,去中心化微服务也能满足以上特性,但它不是一种特定的虚拟机架构(例如EVM),而是更灵活、更接近传统架构的理论模型,是微服务与SCP理论相结合的下一代去中心化互联网架构。

实践:从Arweave出发,超越Arweave

当前Permaweb只包含网关、数据绑定、序列化和索引四个服务,这些服务已经形成了一定的标准。那么一个Permaweb实例具体是什么样的?如何使用这四个标准服务构建Permaweb?

Now应用

https://now.arweave.asia是一个Permaweb应用(以下简称Now),是为Arweave生态开发者提供交流的平台。Now的主要功能是允许用户发表博客,用户可以对这些内容进行点赞。

Now的所有数据都存储在Arweave上,不可变的存储层保证了Now的去中心化。当用户打开Now时,浏览器首先从Arweave的网关服务加载一个前端框架,该框架主要包含Now的Header组件,并未包含Now应用的展示数据。

浏览器加载应用框架后,Now的内容展示部分将显示”Loading stamps”,此时Now应用正在发起GraphQL请求,检索应用的数据。等待几秒后,数据检索完成,Now应用将展示出最新的用户评论和点赞(Stampers)。

在该页面中,初始化框架和所有用户数据,以及页面所呈现的所有图片都是通过网关获得的。这些元素在浏览器中计算并组装出Now的完整页面。网关提供静态资源加载能力,索引服务提供动态数据加载能力。

当用户想要增加一篇博客时,可以用自己的钱包将内容上传到Arweave。这些内容会标记特定的Tags便于索引服务提供GraphQL查询功能。博客上传成功后,再次刷新Now应用,新内容将显示在应用的内容展示区域。

上图展示了Permaweb写入和读取的基本过程。在实际应用中,Permaweb的写入和读取都将通过服务层进行。

横向扩展:微服务的最大优势就是可扩展性,这一特性完全继承到Now应用中。可以使用任意一个网关访问Now:

类似的网关可以无限横向扩展,使Now应用具备近乎无限的性能。

SCP最佳实践

在Permaweb的架构中,底层只使用Arweave作为存储层。然而,去中心化微服务不应局限于此,我们应该深刻吸取Permaweb和微服务架构的优势,进一步探索SCP的最佳工程实践。

下图来自文章《共识的变迁,区块链应用范式进化之旅》所描述的未来区块链应用架构,用户不再与区块链系统本身交互,而是与服务层交互。区块链应用经历了从图1到图3的演化过程,详情可参阅文章:

从上图3可以看出,应用所依赖的区块链不局限于Arweave,同时Bitcoin和Ethereum也是区块链对象,这些区块链作为应用的共识来源,为应用提供去中心化和可信保证。同样,Permaweb和去中心化微服务也可以进行扩展,存储层不必局限于Arweave,也可以选择Bitcoin和Ethereum作为存储层,甚至可以使用其他各种类型的区块链作为存储层。一个可能的最佳实践架构如下图所示:

按照自下而上的顺序进行描述:

  1. 共识层:将原先的存储层更名为共识层。共识层可以是任何区块链系统,具备不可篡改和可追溯的特性。
  2. 服务层:服务层和Permaweb最大的区别在于标准协议底层不局限于Arweave存储,可以为任意区块链系统建立微服务。以索引服务为例,Nansen为现有的EVM公链提供数据查询能力,很多Dapp和前端的数据可以直接使用Nansen作为数据源。KNN3也提供了类似的索引能力,为区块链数据创建了标准化的关系查询层,同时KNN3也提供和Arweave兼容的存储索引能力。在该架构中,微服务具有更多标准和更好的共识层兼容性。
  3. 应用层:不局限于Permaweb应用,可同时支持去中心化应用(Web3)和Web2应用,完全兼容原有架构体系。

总结

当我们回顾过去30年计算机软件工程的演变,思考过去10年区块链工程的演变时,不得不反思一种全局虚拟机(如EVM)再加上Layer2的扩容方案是否是去中心化系统的终极解决方案。

本文没有深入探讨Layer2或分片技术的可行性,而是为区块链应用提供了另一种可能性。以Arweave生态的Permaweb为例,结合存储共识范式(SCP)和微服务架构的思想重新梳理了一种工程上可行的方案。该方案不仅具备极强的扩容能力,还能使应用具备去中心化的特性。更重要的是,该方案并不是一厢情愿的幻想,而是已经在工程上可实践的架构体系。

参考

  1. Arweave的潜力是复兴亚历山大图书馆,而非Filecoin替代品
  2. 共识的变迁,区块链应用范式进化之旅
  3. Cooking with the Permaweb
  4. 区块链存储ARWEAVE:图灵机的纸带,可信计算新范式
  5. Arweave与存储共识范式的发展简史