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 魔法豆
每月 667 次下载
795KB
13K SLoC
air
CLI 工具
air
CLI 工具是 Aqua 和 AIR 开发者的辅助工具。它有三个子命令:beautify
、run
和 stats
。
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
选项来抑制打印结果。
已知限制
- 在详细追踪级别(调试等)中,追踪格式化时间与被追踪代码执行时间相当,可能会给出错误的结果。
安装
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