20个版本 (11个破坏性版本)

0.17.2 2024年2月22日
0.16.0 2024年1月9日
0.15.0 2023年12月12日
0.14.0 2023年10月26日
0.2.0 2021年10月4日

#1052 in 神奇豆

Download history 23/week @ 2024-03-11 12/week @ 2024-03-18 8/week @ 2024-03-25 30/week @ 2024-04-01 3/week @ 2024-04-08 10/week @ 2024-04-15 12/week @ 2024-04-22 11/week @ 2024-04-29 7/week @ 2024-05-06 6/week @ 2024-05-13 22/week @ 2024-05-20 9/week @ 2024-05-27 22/week @ 2024-06-03 15/week @ 2024-06-10 3/week @ 2024-06-17 18/week @ 2024-06-24

58 个月下载
5 个crate中使用 (4个直接使用)

Apache-2.0

735KB
19K 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的语义受到π-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是针对浏览器和Node.js目标的AquaVM启动器
    • 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 Labs, Inc.版权所有(c),受Apache-2.0许可协议保护。

依赖项

~13–27MB
~425K SLoC