26 个版本 (12 个重大变更)

0.18.3 2024年7月22日
0.18.1 2024年6月28日
0.17.1 2024年2月22日
0.13.0 2023年12月12日
0.5.0 2023年3月23日

#586 in 魔法豆

Download history 137/week @ 2024-04-13 10/week @ 2024-04-20 11/week @ 2024-05-18 5/week @ 2024-05-25 7/week @ 2024-06-01 9/week @ 2024-06-08 2/week @ 2024-06-15 92/week @ 2024-06-22 37/week @ 2024-06-29 9/week @ 2024-07-06 1/week @ 2024-07-13 226/week @ 2024-07-20 194/week @ 2024-07-27

每月432次下载
2 crates 中使用

AGPL-3.0-only

1MB
14K 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):P2P 系统的 IR

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

AIR 值的描述以及 AIR 指令列表及其用法示例可以在此处找到。关于 AIR 和其接口的主要属性可以在此处进行讨论。

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

仓库结构

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

支持

如果在使用过程中发现bug,请提交问题。您也可以通过DiscordTelegram联系我们。我们将尽力尽快解决问题。

贡献

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

许可证

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

依赖项

~68MB
~1M SLoC