44 个版本 (29 个重大更改)

0.38.1 2024年7月22日
0.37.0 2024年2月22日
0.33.4 2023年12月12日
0.33.3 2023年10月26日
0.8.0 2021年6月30日

#11 in #fluence

Download history 21/week @ 2024-05-03 112/week @ 2024-05-10 176/week @ 2024-05-17 182/week @ 2024-05-24 225/week @ 2024-05-31 53/week @ 2024-06-07 46/week @ 2024-06-14 60/week @ 2024-06-21 50/week @ 2024-06-28 25/week @ 2024-07-05 64/week @ 2024-07-12 261/week @ 2024-07-19 141/week @ 2024-07-26 67/week @ 2024-08-02 98/week @ 2024-08-09 45/week @ 2024-08-16

374 次每月下载
用于 3 个软件包 (2 个直接使用)

AGPL-3.0-only

105KB
2K SLoC

AquaVM

crates.io version npm version Coverage Status

AquaVM 执行编译后的 Aqua,即 Aqua 中间表示(AIR)脚本,并在 Fluence 对等计算协议的实施中扮演着核心角色。具体来说,AquaVM 允许在脚本中表达网络编排,并组成分布式、对等托管的服务。此外,AquaVM 在促进 Fluence 网络中的 函数可寻址性 方面发挥着重要作用,如图 1 所示。

AquaVM & AIR model

图 1:风格化的 AquaVM 和 AIR 模型

由于 AquaVM 编译为 Wasm,它可以在客户端(如浏览器和 Node.js 应用程序)和服务器环境中运行。

AquaVM:解释器执行模型

AquaVM 的执行模型简化了 Fluence 协议的数据推送模型,该模型实现为 粒子,即由数据、AIR 和一些元数据组成的智能数据包。在这种情况下,AquaVM 可以被视为一个纯状态转换函数,它通过促进粒子更新来实现,这包括通过将先前状态和当前状态结合以产生新的状态,以及更新剩余 AIR 工作流程中的对等方列表和调用请求。除了执行本地服务调用外,AquaVM 还处理来自远程对等方的请求,例如作为并行执行块的一部分,以调用本地服务并处理未来的响应,如图 2 所示。

interpreter execution model

图 2:AquaVM 解释器执行模型

总之,AquaVM 执行模型处理了简单和高级组合模式(如一个或多个对等方上的(异步)并行服务执行)的拓扑跳跃。

青金石中间表示(AIR):对等系统的 IR

AIR 是一种基于 S-expression 的底层语言,具有二进制形式。它目前由十四条指令组成,未来还将增加更多指令。AIR 的语义受到了 π-演算λ-演算范畴论 的启发。其语法受到了 Wasm 文本格式 (WAT) 和 Lisp 的启发。AIR 脚本控制 Fluence 点对点网络、其节点甚至其他(p2p)网络上的资源,例如 IPFS 和 Filecoin,例如,通过 Marine 适配器服务使用 Fluence IPFS 库

AIR 值的描述和 AIR 指令列表,以及它们用法的示例,可以在 这里 找到。AIR 及其接口的主要特性在 这里 进行讨论。

AIR 指令的完整列表及其用法的示例可以在 这里 找到。AquaVM 接口的基本合同以及更详细的交互方案可以在 这里 找到。

仓库结构

  • air 是 AquaVM 的核心
  • air-interpreter 是一个支持不同编译目标(Marine 和 wasm-bindgen)的 crate
  • avm
    • client 是 AquaVM 的浏览器和 Node.js 目标启动器
    • server 是 AquaVM 的服务器端目标启动器
  • crates
    • air-lib 包含 AquaVM 核心的所有主要 crate
    • beautifier 是 AIR-beautifier 的实现
    • data-store 定义了 Fluence 节点使用的 DataStore trait
    • interpreter-wasm 是一个 crate,用于更好地将编译的 Wasm 代码集成到 Fluence 节点中
    • testing-framework 是一个框架的实现,它改进了编写测试的体验
  • tools 包含与 AquaVM 相关的工具

支持

如果您发现了一个错误,请提交一个 问题。您也可以通过 DiscordTelegram 联系我们。我们将尽力尽快解决此问题。

贡献

任何感兴趣的人都可以为项目做出贡献。请确保您阅读并遵循一些基本的 规则

许可证

所有软件代码的版权归 Fluence DAO 所有,根据 AGPLv3 许可证。

依赖关系

~42–57MB
~1M SLoC