Saltearse al contenido

Ejecutando Localmente

Cuando construyes un procesador personalizado, podrías encontrar útil desarrollar contra una pila de desarrollo local. El Servicio de Stream de Transacciones es un sistema complicado de múltiples componentes. Para asistir con el desarrollo local, ofrecemos un script de Python que envuelve un archivo Docker compose para configurar todo el sistema.

Este script configura lo siguiente:

  • Nodo único testnet con el stream GRPC del indexador habilitado.
  • Una instancia de Redis.
  • Servicio de Stream de Transacciones, incluyendo los siguientes componentes:
    • cache-worker: Extrae transacciones del nodo y las almacena en Redis.
    • file-store: Obtiene transacciones de Redis y las almacena en un sistema de archivos.
    • data-service: Sirve transacciones vía un stream GRPC a clientes downstream. Extrae de la caché o del file store dependiendo de la edad de la transacción.
  • Volúmenes compartidos y redes para conectarlo todo.

Puedes aprender más sobre la arquitectura del Servicio de Stream de Transacciones aquí y el archivo Docker compose aquí.

Para usar el script de desarrollo local debes tener instalado lo siguiente:

Ventana de terminal
docker-compose version --short

Clona el repositorio aptos-core:

Ventana de terminal
# HTTPS
git clone https://github.com/aptos-labs/aptos-core.git
# SSH
git clone git@github.com:aptos-labs/aptos-core.git

Navega al directorio testsuite:

Ventana de terminal
cd aptos-core
cd testsuite

Instala las dependencias de Python:

Ventana de terminal
poetry install
Ventana de terminal
poetry run python indexer_grpc_local.py start

Sabrás que esto tuvo éxito si el comando sale, y ves lo siguiente:

Ventana de terminal
Attempting to stream from indexer grpc for 10s
Stream finished successfully
Ventana de terminal
poetry run python indexer_grpc_local.py stop

Cuando inicias, detienes e inicias el servicio nuevamente, reutilizará los mismos datos de localnet. Si deseas limpiar el localnet y comenzar desde cero puedes ejecutar el siguiente comando:

Ventana de terminal
poetry run python indexer_grpc_local.py wipe

Puedes conectarte al Servicio de Stream de Transacciones local, ej. desde un procesador personalizado, usando los siguientes valores de configuración:

Ventana de terminal
indexer_grpc_data_service_address: 127.0.0.1:50052
auth_token: dummy_token

Puedes conectarte al nodo en la siguiente dirección:

Ventana de terminal
http://127.0.0.1:8080/v1

Si tienes una máquina con un procesador ARM, por ejemplo, un M1/M2 Mac, el script debería detectar esto y establecer las variables de entorno apropiadas para asegurar que se usen las imágenes correctas. Si tienes problemas con esto, intenta establecer la siguiente variable de entorno:

Ventana de terminal
export DOCKER_DEFAULT_PLATFORM=linux/amd64

Además, asegúrate de que las siguientes configuraciones sean correctas en Docker Desktop:

  • Habilitado: Preferencias > General > Usar el marco de virtualización
  • Habilitado: Preferencias > General > Usar Docker Compose V2
  • Deshabilitado: Características en desarrollo -> Usar Rosetta para emulación x86/amd64 en Apple Silicon

Este script no ha sido probado en sistemas Linux ARM.

Intenta establecer la siguiente variable de entorno antes de ejecutar el script:

Ventana de terminal
export REDIS_IMAGE_REPO=arm64v8/redis

Cache worker está en bucle de crash o Redis actualización de la última versión fallida. en el log

Sección titulada «Cache worker está en bucle de crash o Redis actualización de la última versión fallida. en el log»

Limpia los datos:

Ventana de terminal
poetry run python indexer_grpc_local.py wipe

Esto significa que se perderán los datos históricos.