18 个不稳定版本 (6 个破坏性更新)
0.32.1 | 2024年2月22日 |
---|---|
0.29.3 | 2023年12月12日 |
0.29.2 | 2023年10月16日 |
0.28.4 | 2023年6月22日 |
0.27.0 | 2022年11月25日 |
#791 在 魔法豆
每月371次 下载
在 5 个crate中使用(4个直接使用)
68KB
1K SLoC
AquaVM
AquaVM 执行编译的 Aqua,即 Aqua 中间表示 (AIR) 脚本,并在 Fluence 对等计算协议的实施中扮演核心角色。具体来说,AquaVM 允许在脚本中表达网络编排,并组合分布式、对等托管服务。此外,AquaVM 在促进 Fluence 网络中的 函数寻址 方面发挥着重要作用,见图 1。
图 1:风格化的 AquaVM 和 AIR 模型
由于 AquaVM 编译为 Wasm,它可以在客户端(如浏览器和 Node.js 应用程序)和服务器环境中运行。
AquaVM:解释器执行模型
AquaVM 的执行模型简化了 Fluence 协议的数据推送模型,该模型作为 粒子 实现,即由数据、AIR 和一些元数据组成的智能数据包。在这种情况下,AquaVM 可以被视为一个纯状态转换函数,它促进了粒子的更新,这包括通过将先前状态和当前状态合并以产生新状态,以及在剩余的 AIR 工作流程中更新对等节点列表和调用请求的状态管理。除了本地服务调用执行外,AquaVM 还处理来自远程对等节点的请求,例如作为并行执行块的一部分,以调用本地服务并处理未来的响应,见图 2。
图 2:AquaVM 解释器执行模型
总之,AquaVM 执行模型处理简单和高级组合模式,例如在单个或多个对等节点上的(异步)并行服务执行。
蓝宝石中间表示法 (AIR):P2P 系统的 IR
AIR 是一种基于 S-expression 的底层语言,未来将具有二进制形式。它目前包含十四条指令,并将增加更多指令。AIR 的语义受到 π-calculus、λ-calculus 和 范畴论 的启发。它的语法受到 Wasm Text Format (WAT) 和 Lisp 的启发。AIR 脚本控制 Fluence 点对点网络、其对等节点甚至其他(P2P)网络上的资源,例如 IPFS 和 Filecoin,例如,通过 Marine 适配器服务使用 Fluence IPFS 库。
AIR 值的描述以及 AIR 指令列表及其使用示例,可以在 这里 找到。AIR 及其接口的主要属性在这里讨论:这里。
AIR 指令的完整列表及其使用示例可以在 这里 找到。AquaVM 接口的基本契约以及更详细的交互方案可以在 这里 找到。
仓库结构
- air 是 AquaVM 的核心
- air-interpreter 是一个用于支持不同编译目标(Marine 和 wasm-bindgen)的 crate
- avm
- crates
- air-lib 包含 AquaVM 核心的所有主要 crates
- beautifier 是 AIR-beautifier 的实现
- data-store 定义了 Fluence 节点使用的
DataStore
特性 - interpreter-wasm 是一个 crate,用于更好地将编译后的 Wasm 代码集成到 Fluence 节点中
- testing-framework 是一个框架的实现,它改进了测试编写体验
- tools 包含与 AquaVM 相关的工具
支持
如果您发现任何错误,请提交一个 问题。您也可以通过 Discord 或 Telegram 联系我们。我们将尽最大努力尽快解决问题。
贡献
任何感兴趣的人都可以为项目做出贡献。请确保您阅读并遵循一些基本的 规则。
许可证
所有软件代码均受 (c) Fluence Labs, Inc. 根据 Apache-2.0 许可证的版权保护。
依赖项
~1.6–2.8MB
~54K SLoC