1 个不稳定版本

0.1.0 2024年1月9日

#440WebAssembly

Download history 196/week @ 2024-03-13 137/week @ 2024-03-20 95/week @ 2024-03-27 68/week @ 2024-04-03 64/week @ 2024-04-10 83/week @ 2024-04-17 63/week @ 2024-04-24 42/week @ 2024-05-01 87/week @ 2024-05-08 231/week @ 2024-05-15 205/week @ 2024-05-22 224/week @ 2024-05-29 125/week @ 2024-06-05 55/week @ 2024-06-12 97/week @ 2024-06-19 92/week @ 2024-06-26

每月458次下载
用于 10 个crate(7个直接使用)

Apache-2.0

22KB
385

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):对等系统的IR

AIR是一种基于S-expression的底层语言,具有二进制形式。目前,它由十四条指令组成,还将增加更多指令。AIR的语义受到π-calculus、λ-calculus和范畴论的影响。其语法受到Wasm Text Format(WAT)和Lisp的启发。AIR脚本控制Fluence点对点网络、其节点甚至其他(p2p)网络上的资源,例如IPFS和Filecoin,例如通过Marine适配器服务使用Fluence IPFS库

有关AIR值和指令的描述以及它们的使用示例,请参阅此处。有关AIR及其接口的主要属性,请参阅此处

有关AIR指令的完整列表及其使用示例,请参阅此处。AquaVM接口的基本合约以及更详细的交互方案请参阅此处

存储库结构

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

支持

如果您发现错误,请提交问题。您还可以在DiscordTelegram上联系我们。我们将尽力尽快解决问题。

贡献

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

许可证

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

依赖关系

~0.7–1.8MB
~38K SLoC