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