18 个版本

0.7.9 2024 年 2 月 22 日
0.7.3 2023 年 12 月 12 日
0.7.2 2023 年 10 月 16 日
0.6.2 2023 年 6 月 22 日
0.1.0 2021 年 10 月 4 日

#718 in 魔法豆

Download history 191/week @ 2024-03-13 123/week @ 2024-03-20 85/week @ 2024-03-27 45/week @ 2024-04-03 43/week @ 2024-04-10 71/week @ 2024-04-17 66/week @ 2024-04-24 40/week @ 2024-05-01 71/week @ 2024-05-08 209/week @ 2024-05-15 179/week @ 2024-05-22 208/week @ 2024-05-29 105/week @ 2024-06-05 34/week @ 2024-06-12 64/week @ 2024-06-19 58/week @ 2024-06-26

350 次每月下载
用于 4 个crate(2 个直接使用)

Apache-2.0

28KB
498

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):P2P系统的IR

AIR是一种基于S-expression的低级语言,具有二进制形式。它目前由十四条指令组成,还有更多指令即将到来。AIR的语义受到π-calculus、λ-calculus和category theory的启发。其语法受到Wasm Text Format(WAT)和Lisp的启发。AIR脚本控制Fluence对等互连网络、其对等体,甚至其他(p2p)网络上的资源,例如IPFS和Filecoin,例如,通过Marine适配器服务控制Fluence IPFS库。

关于AIR值和指令列表及其使用示例,请参阅此处。关于AIR及其接口的主要属性在此讨论

关于AIR指令及其使用示例的完整列表,请参阅此处。AquaVM接口的基本契约以及更详细的交互方案在此讨论

存储库结构

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

支持

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

贡献

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

许可证

所有软件代码均为Fluence Labs, Inc.的版权(c)所有,受Apache-2.0许可证的约束。

依赖关系

~1.5–2.6MB
~51K SLoC