1个不稳定版本
0.1.0 | 2024年2月20日 |
---|
在 WebAssembly 中排名 210
每月下载量 456
用于 13 个 库(5 个直接使用)
40KB
678 行
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):对等系统的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
- crates
- air-lib包含AquaVM核心的所有主要crate
- beautifier是AIR-beautifier的实现
- data-store定义了一个Fluence节点使用的
DataStore
特质 - interpreter-wasm是一个crate,用于更好地将编译的Wasm代码集成到Fluence节点中
- testing-framework是一个框架的实现,它改进了编写测试的经验
- tools包含与AquaVM相关的工具
支持
如果您发现了一个bug,请提交问题。您也可以在Discord或Telegram上联系我们。我们将尽力尽快解决问题。
贡献
任何感兴趣的人都可以为项目做出贡献。请确保您阅读并遵循一些基本的规则。
许可
所有软件代码均为 Fluence Labs, Inc. 的版权所有(c),并受Apache-2.0许可证的约束。
依赖项
~0.4–1MB
~19K SLoC