#fluence #air #security #authorization #wasm

polyplets

Fluence网络中验证服务调用来源的安全原语

14个版本 (6个重大更新)

0.7.0 2024年2月22日
0.5.2 2024年1月9日
0.5.1 2023年9月21日
0.3.2 2022年9月13日
0.1.1 2021年5月14日

#678 in 神奇豆

Download history 121/week @ 2024-04-11 125/week @ 2024-04-18 135/week @ 2024-04-25 103/week @ 2024-05-02 173/week @ 2024-05-09 256/week @ 2024-05-16 259/week @ 2024-05-23 341/week @ 2024-05-30 100/week @ 2024-06-06 70/week @ 2024-06-13 132/week @ 2024-06-20 88/week @ 2024-06-27 35/week @ 2024-07-04 82/week @ 2024-07-11 235/week @ 2024-07-18 166/week @ 2024-07-25

每月下载量522次
用于 10 个crate(5个直接使用)

Apache-2.0

5KB

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库

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上联系我们。我们将尽力尽快解决问题。

贡献

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

许可

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

依赖关系

~0.4–1.2MB
~28K SLoC