26 个版本 (7 个重大变更)

0.9.2 2024 年 7 月 22 日
0.9.0 2024 年 6 月 28 日
0.7.2 2024 年 2 月 22 日
0.5.4 2023 年 12 月 12 日
0.2.9 2023 年 3 月 23 日

#540 in 魔法豆

Download history 129/week @ 2024-04-13 9/week @ 2024-04-20 2/week @ 2024-05-18 1/week @ 2024-05-25 4/week @ 2024-06-01 1/week @ 2024-06-08 90/week @ 2024-06-22 32/week @ 2024-06-29 1/week @ 2024-07-06 195/week @ 2024-07-20 469/week @ 2024-07-27

每月 667 次下载

AGPL-3.0-only

795KB
13K SLoC

air CLI 工具

air CLI 工具是 Aqua 和 AIR 开发者的辅助工具。它有三个子命令:beautifyrunstats

air beautify

别名: air b

此子命令从标准输入读取 AIR 脚本,并以类似 Python 的可读性打印出来。这种表示形式不能执行,旨在供普通人阅读。

输出到标准输出或文件。

使用 --patterns 选项,它试图识别 Aqua 编译器发出的某些模式,并将其输出为更易读的类似 Aqua 的语法。目前只识别 hopon 语法。

air run

别名: air r

在 WASM AquaVM 中执行 AIR 脚本,具有两种参数输入模式:普通和异常。

常见参数

所有常见参数都是可选的。它们的位置始终在模式选择器之前(--plain--anomaly)。

  • --call-results PATH 参数允许您为当前执行提供调用结果。
  • --max-heap-size N 定义了WASM运行时的最大堆大小。
  • --interpreter PATH 选项定义了要执行的AquaVM WASM二进制文件。默认情况下,它是 "target/wasm32-wasi/release/air_interpreter_server.wasm",但您可以使用 AIR_INTERPRETER_WASM_PATH 环境变量定义一个全局值。默认假设工具是从该存储库的根目录运行的。您可以自由使用选项或环境变量从任何位置运行。
  • 使用 --json 选项,跟踪信息以机器可读的JSON格式输出(到stderr)。输出可以稍后使用 air stats 子命令进行处理。
  • --tracing-params 定义了AquaVM的跟踪日志级别。默认情况下,它与 info 相等,并跟踪最高级别的AquaVM结构(数据解析、AIR脚本解析、执行)。使用 debug 级别跟踪一些个别命令,使用 trace 级别跟踪更细致的功能,但会引入更多开销。
  • --runner-tracing-params 定义了运行程序的跟踪日志级别。默认情况下,它与 warn 相等。
  • --random-key--ed25519-key keyfile(必需):使用随机签名密钥或从文件加载它。

重要的选项是执行模式 --native。它以可被任何本地分析器分析的本地代码运行AquaVM。由于输入数据的反序列化和序列化时间可以与粒子执行时间相当,并且较短的执行时间提供的输出结果不可靠,因此可以使用 --repeat N 选项重复执行几次粒子。在这种情况下,不打印执行结果,因此可以运行 --repeat 1 来抑制它。

另一种替代执行模式是 --near,通过 near 特性标志启用。它运行由 --near-contract 选项定义的NEAR合约,测量其gas消耗。在沙盒模式下使用 workspaces crate进行最精确的NEAR gas测量。工作空间构建脚本会自动安装NEAR Sandbox,但在其他机器上您必须手动安装它并设置NEAR_SANDBOX_BIN_PATH变量。

运行 air run --help 以查看所有常用参数。

纯文本模式

--plain 模式下,可以单独提供类似AIR脚本路径、数据路径、先前数据路径和其他粒子字段等参数(所有这些都是可选的,默认情况下从stdin读取AIR脚本)。

运行 air run --plain --help 以查看纯文本模式的所有选项。

异常模式

在异常模式下,唯一的参数是从 rust-peer 的异常粒子检测系统获得的自包含异常数据文件的路径。

运行 air run --anomaly --help 以查看异常模式的所有选项。

air stats

别名: air s

此子命令允许处理使用 air run --json 收集的JSON跟踪。它有两个主要选项

  • --pretty 以人类可读的格式输出 JSON 追踪信息。
  • --stats 输出执行摘要。

默认情况下,这两个选项都有效。

在报告中,--sort-stats-by-duration 标志按时间而不是按名称对跨度进行排序。

请注意,当前追踪输出到 stdout,执行结果也会打印到 stdout。您可以使用 air run --repeat 1 选项来抑制打印结果。

已知限制

  1. 在详细追踪级别(调试等)中,追踪格式化时间与被追踪代码执行时间相当,可能会给出错误的结果。

安装

AIR 解释器

除非您打算以本地模式运行 AIR,否则您需要一个内置在 WASM 中的 AIR 解释器。您可以使用 marine 工具构建它。在存储库根目录中运行以下命令

marine build --features marine --package air-interpreter --release

它将二进制输出到默认的 --interpreter 路径,在 target/wasm32-wasi/release/air_interpreter_server.wasm;如果您希望从任意位置运行 air,请将 air_interpreter_server.wasm 二进制文件存储在一个凉爽干燥的地方,并设置 AIR_INTERPRETER_WASM_PATH 变量或使用 --interpreter 通用选项的 air run

air 二进制文件

您需要安装 Rust 工具链及其 cargo 实用工具。运行以下命令从 crates.io 安装最新发布的版本

cargo install aquavm-air-cli

您也可以从存储库根目录安装开发版本

cargo install --path tools/cli/air

air CLI 原生构建

您可以使用以下命令构建完整的本地或纯 WASM air CLI 构建

cargo build --no-default-features --release -p aquavm-air-cli
cargo build --no-default-features --release -p aquavm-air-cli --target wasm32-wasi

此构建不需要 AIR 解释器 WASM 二进制文件。

依赖关系

~51–73MB
~1.5M SLoC