本地运行
构建自定义处理器时,在本地开发栈上进行开发会很有帮助。交易流服务是复杂的多组件系统。为协助本地开发,我们提供了一个封装 Docker Compose 文件的 Python 脚本,用于配置整套系统。
该脚本会配置以下组件:
- 启用 Indexer GRPC 流的单节点测试网。
- 一个 Redis 实例。
- 交易流服务,包括以下组件:
- cache-worker:从节点拉取交易并存入 Redis。
- file-store:从 Redis 获取交易并将其存入文件系统。
- data-service:通过 GRPC 流向下游客户端提供交易。它会根据交易的时间,从缓存或文件存储中拉取交易。
- 用于连接全部组件的共享卷和网络。
可在此处了解交易流服务的架构,并在此处查看 Docker Compose 文件。
使用本地开发脚本前,必须安装以下软件:
docker-compose version --short- grpcurl:安装指南
- OpenSSL
克隆 aptos-core 仓库:
# HTTPSgit clone https://github.com/aptos-labs/aptos-core.git
# SSHgit clone git@github.com:aptos-labs/aptos-core.git进入 testsuite 目录:
cd aptos-corecd testsuite安装 Python 依赖:
poetry installpoetry run python indexer_grpc_local.py start命令退出且显示以下内容,即表示启动成功:
Attempting to stream from indexer grpc for 10sStream finished successfullypoetry run python indexer_grpc_local.py stop再次启动、停止并启动服务时,系统会复用相同的 localnet 数据。如需清除 localnet 并从头开始,可运行以下命令:
poetry run python indexer_grpc_local.py wipe使用本地服务
Section titled “使用本地服务”你可以使用以下配置值连接本地交易流服务,例如从自定义处理器连接:
indexer_grpc_data_service_address: 127.0.0.1:50052auth_token: dummy_token可通过以下地址连接节点:
http://127.0.0.1:8080/v1在 ARM 系统上使用
Section titled “在 ARM 系统上使用”若使用 ARM 处理器的机器,例如 M1/M2 Mac,脚本应能检测该情况,并设置适当的环境变量以确保使用正确的镜像。如果遇到问题,请尝试设置以下环境变量:
export DOCKER_DEFAULT_PLATFORM=linux/amd64此外,请确保 Docker Desktop 中的以下设置正确:
- 已启用:Preferences > General > Use Virtualization framework
- 已启用:Preferences > General > Use Docker Compose V2
- 已禁用:Features in development -> Use Rosetta for x86/amd64 emulation on Apple Silicon
该脚本尚未在 Linux ARM 系统上测试。
Redis 无法启动
Section titled “Redis 无法启动”运行脚本前,请尝试设置以下环境变量:
export REDIS_IMAGE_REPO=arm64v8/redis缓存工作器反复崩溃,或日志中出现 Redis latest version update failed.
Section titled “缓存工作器反复崩溃,或日志中出现 Redis latest version update failed.”清除数据:
poetry run python indexer_grpc_local.py wipe这意味着历史数据将丢失。