导入交易
本指南说明如何使用 aptos-indexer-transaction-generator 工具导入 Aptos 交易进行测试。这些测试交易可用于测试自定义处理器,并支持其本地开发。
导入交易的一般流程
Section titled “导入交易的一般流程”首先,确定需要从 Aptos 网络获取的交易版本。此工具与交易流交互,以 JSON 格式检索交易数据。随后将交易汇总到 Rust 文件中,每笔交易都表示为常量变量。这些常量可以无缝地作为处理器自动化测试中的模拟输入。测试期间,处理器会获取指定交易、处理交易,并将结果写入数据库。之后可以加载写入的数据,并将其与预期数据进行比对以验证结果。
- 用于连接交易流的有效 API 密钥
- 克隆 aptos-core 仓库:
- 进入
aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator目录。
- 进入
如何导入测试交易
Section titled “如何导入测试交易”1. 指定要导入的版本
Section titled “1. 指定要导入的版本”找到并复制以下文件:
ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/imported_transactions.yaml在该文件中,通过配置相应端点、API 密钥以及版本号到描述性输出名称的映射,指定要从 Devnet、Testnet 或 Mainnet 导入的版本。示例配置如下:
testnet: transaction_stream_endpoint: https://grpc.testnet.aptoslabs.com:443 api_key: TESTNET_API_KEY # <--- Replace this with your API key to generate files locally versions_to_import: # Replace these with the versions you want to import 1: 1_genesis 2: 2_new_block_event 3: 3_empty_txn 278556781: 278556781_v1_coin_register_fa_metadata 1255836496: 1255836496_v2_fa_metadata 5979639459: 5979639459_coin_register 5992795934: 5992795934_fa_activities 5523474016: 5523474016_validator_txn
mainnet: transaction_stream_endpoint: https://grpc.mainnet.aptoslabs.com:443 api_key: MAINNET_API_KEY versions_to_import: 308783012: 308783012_fa_transfer2. 运行导入交易的命令
Section titled “2. 运行导入交易的命令”进入 indexer-transaction-generator 目录:
cd aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator要导入指定交易版本,请执行以下命令:
cargo run -- --testing-folder /path/to/your/imported_transactions.yaml --output-folder /path/to/your/processor-repo/src --mode=import --network=testnet该命令将:
- 从
--testing-folder标志指定目录中的imported_transactions.yaml文件读取配置。 - 从所选网络(Devnet、Testnet 或 Mainnet)获取指定交易版本。
- 将生成的 JSON 文件存储在指定输出文件夹(
/path/to/your/processor-repo/src/json_transactions)中。 - 生成一个 Rust 文件(
generated_transactions.rs),将生成的交易 JSON 文件转换为可在测试中使用的常量变量。
注意:请将 /path/to/your/processor-repo 替换为处理器仓库的路径或首选存储位置。
命令标志说明
--testing-folder--testing-folder标志是什么?--testing-folder标志指定包含imported_transactions.yaml配置文件的目录。该工具使用此文件夹读取想要导入的版本。
- 确保文件夹路径与
imported_transactions.yaml文件的位置一致。 - 默认情况下,本指南假定配置存储在
./imported_transactions中。如果将文件放在其他位置,请调整标志值。
--output-folder指定保存生成的交易 JSON 文件和 Rust 常量的目标目录。
- 请将
/path/to/your/processor-repo替换为处理器仓库的 src 目录或所需存储位置。 - 若需共享这些文件,请确保此文件夹已纳入版本控制设置。
--mode指定交易生成器应以脚本模式运行,即执行 Move 脚本并生成相应交易数据。默认模式为 import,会从网络获取交易。 也可以使用 Import 模式从网络获取交易。默认模式为 import。
可用选项:
- import
- script
--network指定从哪个网络获取交易。可用选项:
- devnet
- testnet
- mainnet
如何使用测试交易
Section titled “如何使用测试交易”导出生成的文件
Section titled “导出生成的文件”更新 mod.rs 文件,将包含交易常量的生成 Rust 文件纳入其中。如果 mod.rs 不存在,请在目标文件夹中创建:
导出 json_transactions 文件夹
Section titled “导出 json_transactions 文件夹”由于 generated_transactions.rs 依赖 json_transactions,请确保在库文件中正确导出 json_transactions 文件夹,以便测试可直接访问交易数据。
集成到测试用例
Section titled “集成到测试用例”在测试用例中直接使用导出的交易常量,以模拟真实交易并验证处理逻辑。
集成交易常量后,即可在处理器测试中使用它们来验证功能。有关编写处理器测试的详细说明,请参阅编写处理器测试。