1 个不稳定版本

0.1.0 2023 年 3 月 15 日

#7#lalrpop 排名

Download history 20/week @ 2024-04-07 32/week @ 2024-04-14 31/week @ 2024-04-21 24/week @ 2024-04-28 23/week @ 2024-05-05 42/week @ 2024-05-12 30/week @ 2024-05-19 20/week @ 2024-05-26 27/week @ 2024-06-02 21/week @ 2024-06-09 21/week @ 2024-06-16 28/week @ 2024-06-23 6/week @ 2024-06-30 15/week @ 2024-07-07 33/week @ 2024-07-14 47/week @ 2024-07-21

每月 101 次下载
9crate中应用(其中 2 个直接应用)

Apache-2.0

95KB
2.5K 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和范畴论的影响。其语法受到Wasm Text Format (WAT)和Lisp的启发。AIR脚本控制Fluence对等网络、其对等点和甚至其他(p2p)网络上的资源,例如IPFS和Filecoin,例如,通过Marine适配器服务使用Fluence IPFS库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 trait
    • interpreter-wasm是一个crate,用于更好地将编译的Wasm代码集成到Fluence节点
    • testing-framework是一个框架的实现,它改进了编写测试的体验
  • tools包含与AquaVM相关的工具

支持

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

贡献

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

许可

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

依赖关系

~4–13MB
~144K SLoC