erverless functions(函数计算)是 Serverless 架构中的小型、独立代码单元,用于执行特定任务,通常以事件触发方式运行,无需维护服务器。它们简化开发,降低成本,提供弹性和可伸缩性,适用于各种应用。
作者:Kyle @ Contributor of PermaDAO
审阅:Sandy @ Contributor of PermaDAO
云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作运算和资源。——维基百科
在过去的十年里,云计算已经崭露头角,不仅成为移动和内容服务的重要基础,还逐渐取代了传统企业计算环境。服务器作为计算硬件的核心,针对各种不同的计算需求逐渐多样化和发展。
云计算的起源众说纷纭,而大家普遍都认为开创者是 Google 前 CEO 埃里克·施密特,他在 2006 年搜索引擎大会上第一次提出了云计算的概念,发展至今也已经差不多二十年了。若要追溯云计算的演进过程,大致依次经历了以下几个阶段:
阶段 | 描述 |
---|---|
物理服务器 | 互联网初期,Web 基础架构依赖庞大、昂贵、难以维护的物理服务器,导致资源浪费和应用冲突等问题。 |
虚拟化 | 虚拟化通过软件模拟物理服务器硬件,增加了程序的可移植性,但仍需考虑硬件需求和运营成本。 |
基础架构即服务(IaaS) | IaaS 提供网络、存储和计算资源,客户按需使用,减少硬件管理成本,但仍需考虑基础架构管理。 |
平台即服务(PaaS) | PaaS 是在 IaaS 之上的服务,简化应用部署和管理,但有时限制了选择的语言、库和功能。 |
云计算 | 云计算通过互联网提供计算、存储和服务,让用户能轻松访问和使用资源,而不必依赖本地设备,提供了灵活便捷的计算和资源管理方式。 |
在云计算技术引领快速发展的时代,出现了一个必然产物:云计算 2.0—— Serverless。
Serverless(无服务架构)是由 Iron 公司在 2012 年首次提出,而被大家熟知是 2014 年亚马逊云科技推出了 Amazon Lambda 之后。作为云计算的一种特定计算模型,Serverless 让开发者只需要专注于编写代码,无需关心底层服务器的管理。Serverless 的软件架构由 FaaS + BaaS 构成。
Serverless 具备三个核心价值:弹性伸缩、按需付费和运维简化,被视为下一代计算引擎。正如 Serverless 白皮书作者 Johann 的观点——Serverless 简化了云计算的编程,其代表了程序员生产力的又一次的变革,如编程语言从汇编时代演变为高级语言时代。
然而,笔者通过回顾云计算的前世与了解今生的 Serverless,目的是为了便于读者理解下一个陌生的概念—— Serverless functions。
Serverless functions(函数计算)是 Serverless 架构中的小型、独立代码单元,用于执行特定任务,通常以事件触发方式运行,无需维护服务器。它们简化开发,降低成本,提供弹性和可伸缩性,适用于各种应用。
图片描述:Serverless 架构组成
具体来说,Serverless 架构包括 FaaS(函数即服务),它允许开发者在构建应用程序时将其分解成独立的小函数,即 Serverless functions(函数计算)。每个函数计算都由 FaaS 进行托管,根据流量需求自动扩展,使应用程序更具弹性高效。
智能合约是一种在区块链上运行的自动化合同,与此不同,函数计算在云环境中提供灵活的计算,把开发者从繁琐的服务器运维管理中解放出来。然而,它们虽然所处的领域不同,但也存在着相似性——两者都是能够自动执行、由事件驱动的代码片段。
智能合约和函数计算都是引人瞩目的创新,但它们都存在着自己的局限性。
智能合约提供了可靠、不可篡改的执行框架,通过区块链确保去中心化、透明和安全的交易,但同时也存在安全性、灵活性、高成本等方面的问题。
函数计算的出现彻底改变了我们构建、部署和管理软件应用程序的方式,但这不妨碍它会存在一些缺点,包括:
从构建 Web3 应用的角度看,函数计算的确可以提供更好的开发体验,但它除了上述的局限性,还存在中心化的问题。当然,智能合约也存在很多问题,并且其经常为了接入外部数据源,也会引入中心化的中间件。对于开发者来说,难道构建 Web3 应用就没有更好的选择了吗?
Molecular Execution Machine(MEM)由 Decent Land Labs 团队推出,是一个基于 SmartWeave 标准的、可扩展的、支持 Web3 的 Serverless Functions(函数计算)平台,其提供了无需支付 Gas 费的智能合约执行环境,开发者无需拥有自己的服务器,可以在任何区块链上无需信任地构建和部署 Web3 应用程序。此外,MEM 不局限于为 Web3 应用提供服务,还可以无缝集成到 Web2 应用技术堆栈中。
MEM 将函数计算的可扩展性与区块链的透明度相结合,使应用程序能够在不牺牲用户体验的情况下保持去中心化。这些都得益于 MEM 具备的核心特性:
在构建和发展 Web3 应用的过程中,我们时常面对一个关键问题:如何确保应用在用户规模不断增长的情况下保持可扩展性和可组合性?当前普遍采用的方式是通过“智能合约 + 自定义中间件”来实现。然而,这些中间件通常以函数计算的形式在 Web2 中心化的云平台(如 AWS Lambda)上运行,这与 Web3 的核心理念存在一定的背离。
图片描述:中心化中间件 来源:https://pbillingsby.hashnode.dev/serverless-functions-with-molecular-execution-machine
当我们审视 Web3 项目的构建方式时,会发现我们正处于 Web2.5 时代,仍然依赖着中心化的 API 和中间件。即使像 AWS Lambda 这样强大的传统函数计算平台作为中间件,对于 Web3 来说就是一个封闭的“黑箱”,缺乏对内部代码执行和状态的外部验证机制。
与此同时,当即使在使用最广泛的以太坊虚拟机(EVM)上运行智能合约,也还是无法解决性能限制、可扩展性差与高成本等问题。
图片描述:MEM vs EVM vs AWS Lambda 来源:https://pbillingsby.hashnode.dev/serverless-functions-with-molecular-execution-machine
MEM 为这些问题提供了全新的解决方案,可以弥合可扩展性与透明性之间的差距。MEM 可以高效地处理交易信息,即时地更新合约状态,并将其永久记录在 Arweave 网络上。任何人都可以独立验证合约的结果,保障公开透明且可验证性。此外,MEM 的智能合约可以通过使用 Molecule 库,使其能够像处理数据的智能合约一样执行各种操作,更具可扩展性。
如果从更宏大的视角去看,MEM 从技术层面上给 Web2 与 Web3 领域带来许多积极的影响。
MEM 建立在 molecule.sh、Arweave 和 3EM 的堆栈之上,是 VACP(可验证原子计算范式)的实现,通过结合惰性评估、无需许可的可验证计算和防篡改数据可用性层,旨在保持核心去中心化原则的完整性,同时解决可扩展性和用户体验问题。
MEM 整合了一系列前沿的技术,共同打造一个强大且创新的开发平台。以下是构成 MEM 基础的一些核心平台和协议:
MEM 就是原子计算范式(VACP)的实现。VACP 全称为 Verifiable Atomic Computing Paradigm,是由 Decent Land Labs 团队提出的一种全新的可扩展性解决方案。它将 Web3 应用中的计算和存储工作分开——链下计算、链上存储,旨在解决 Web3 中的可扩展性和用户体验问题,同时保持去中心化原则。
VACP 为 Web3 开发人员提供了一个强大的框架,既能实现可扩展和可验证的计算,又能保持去中心化、透明度和数据可信。这得益于组成 VACP 的三个关键要素:
综上所述,VACP 之所以可以同时具备去中心化、可扩展性、良好用户体验,是因为其采用了惰性评估策略,提高了效率。既然选择了延迟验算计算结果,那么数据必须可验证与可信。而 Arweave 作为一个数据不可篡改且可追溯的永久存储方案,理所当然地被 VACP 采用数据可用(DA)层。
原子计算范式(VACP)的工作过程大致分为两步:数据上传 DA 层、引入可信第三方处理数据任务。
图片描述:VACP 工作过程 来源:https://pbillingsby.hashnode.dev/serverless-functions-with-molecular-execution-machine
第一步:数据上传 DA 层。
数据计算规则(智能合约/函数计算代码)和初始状态被上传到 Arweave 网络。初始状态记录了随着时间的推移发生的所有状态变化。这些规则和状态的上传是为了进行后续的计算和验证。
第二步:引入可信第三方处理数据任务。
可信第三方(TTP)扮演着重要的角色,这里又称为原子节点(Atomic Node),专门负责接收用户交易、评估新状态和维护数据缓存等任务。TTP 的可信度依赖于它能够诚实地反映上传到 DA 层的数据的真实性与有效性。TTP需要通过终端用户进行的可验证计算检查,以确保其操作的完整性和准确性。
MEM 遵循 VACP 原则,也是 VACP 的实现。理所当然地,MEM 在运行的过程中也具备了 VACP 的三个关键要素——惰性评估、可验证计算和不可篡改的数据可用层。
MEM 系统的运行涉及到两个核心组件:处理器(mem-core)和编排器(Orchestratior),它们分别扮演不同的角色,确保了 MEM 系统的正常运行。
当用户产生交易时,mem-core
会对交易进行接收,并使用最新的数据重新计算智能合约,然后升级并保存智能合约的最新状态,方便用户随时验证。接着,编排器作为传送系统,会像搬运工一样将处理器产生的交易搬运到 Arweave 网络。这整个过程,MEM 保证了智能合约时刻处于最新状态,也确保了数据的可信度,同时也充当了一个可信第三方(TTP),实现了可验证计算。
此外,MEM 的可验证计算也是需要遵循一些前提条件的——即智能合约的源代码必须与 mem-core
兼容,并且两者都需要存储在 Arweave 网络中。只有这样,才可以确保无论何时执行合约都是产生相同的结果。
MEM 遵循 VACP 原则,带来了许多创新和优势,不仅提供更强大的扩展性,还改善了用户和开发者的体验。在 Web3 领域,Decent Land Labs 团队已经基于 MEM 构建了一系列核心的产品:Arweave Name Service(ANS,Arweave 域名协议)、Permacast(去中心化播客协议)、Ark Protocol(Web3 钱包身份认证协议)等。
其实不局限于 Web3 领域,在 Web2 领域开发者也同样可以用 MEM 来构建应用。以下是一些 MEM 的代表性用例:
此外,MEM 团队正在研发 xMEM,用于将 MEM 内的函数代码、输入和输出的数据进行加密。
MEM 平台面对的主要受众是开发者,目前还处于测试阶段,开发者需要申请白名单才可以使用。与此同时,MEM 官方为了让开发者可以轻松地编写、测试与集成 MEM 合约,他们提供了详尽的 开发文档与工具包,内容包括了 MEM 开发规范、Molecules、MEM API 与 MEM CLI 等。
站在今天的节点去回首互联网技术的发展,你会衷心地感叹。人类一直在探索新的技术来解决问题,随后又带来了新的问题,然后继续去解决这个新的问题。人类社会就是在这种孜孜不倦地探索中螺旋上升地发展的。Molecular Execution Machine(MEM)的诞生,也是经过了云计算的演进与新生代 Serverless 的崛起,然后在此基础上发展出 Web3 的函数计算平台。
MEM 基于 VACP 全新范式,采取了链下计算、链上存储的模式。其具有惰性评估、可验证计算与不可篡改的数据可用层三个关键要素,既实现了可扩展性与计算可验证,又保持了去中心化与透明度。作为一个强大的开发平台,MEM 无需开发者深入了解区块链知识与维护自己的服务器,只需使用自己熟悉的编程语言就可以无缝地构建和部署 Web3 应用程序。此外,MEM 还为开发者提供了详尽的开发文档与齐全的工具包。
MEM 是现有“智能合约+中间件”框架下新的选择,也是开发者构建应用时施展拳脚的强大工具。MEM 是为了创造一个更好的未来而生。
参考材料
- https://jimmysong.io/serverless-handbook/concepts/serverless-history.html
- https://www.infoq.cn/article/4rkig4bk1u3lmqcxihqg
- https://zhuanlan.zhihu.com/p/76180907?utm_id=0
- https://docs.mem.tech/
- https://www.mem.tech/learn
- https://mirror.xyz/decentlandlabs.eth/qTh6hWC20PshautTANoj8l93SZvgwk930EZL-wp6NlA
关于 PermaDAO:Website | Twitter | Telegram | Discord| Medium | Youtube
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!