Saltearse al contenido

Generar Transacciones con Scripts Move

Esta sección describe cómo crear transacciones de prueba con scripts Move.

  1. Clona el repositorio aptos-core:
    • Navega al directorio aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator.

Cómo Generar Transacciones de Prueba usando Script Move

Sección titulada «Cómo Generar Transacciones de Prueba usando Script Move»
  1. Configurar carpeta move_fixtures

    Antes de proceder, asegúrate de tener la carpeta move_fixtures configurada en la ubicación apropiada:

    1. Ubicación: La carpeta move_fixtures debería crearse en el directorio aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions. Esta es la carpeta donde los scripts Move y sus configuraciones para transacciones de prueba serán almacenados.

    2. Pasos para configurar la carpeta:

      • si empiezas desde cero, remueve todos los archivos y proyectos existentes en la carpeta move_fixtures en el repo aptos-core
      • Crea tus propios proyectos/scripts Move en la carpeta move_fixtures (detallado en el siguiente paso)
  2. Crear tu Proyecto Move y Escribir tu Script Move

    Crea tu proyecto Move y escribe un módulo para producir el escenario que te gustaría probar en tu procesador. Puedes consultar un ejemplo aquí.

  3. Configurar Cuentas de Prueba

    1. Estas cuentas serán usadas para desplegar tu módulo.
    2. Configura tantas cuentas como necesites. Estas cuentas serán usadas para enviar las transacciones con script. Consulta la guía aquí para crear cuentas.
    3. Actualiza aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/testing_accounts.yaml con tus cuentas.
  4. Crear un Archivo de Configuración

    Cada archivo de configuración define una secuencia de transacciones para un escenario de prueba.

    1. Crea un archivo de configuración en el directorio move_fixtures. Nombra el archivo de configuración según el escenario de prueba al que corresponde.

    2. Este archivo de configuración debería contener nombres de transacción únicos y detalles para cada transacción. Las transacciones deberían listarse en el orden en que van a ser ejecutadas. El archivo de configuración debería estructurarse así:

      • output_name: Este campo especifica el nombre del archivo de salida donde los resultados de la transacción serán guardados.
      • script_path: Este campo contiene la ruta al archivo de script Move que será ejecutado como parte de la transacción.
      • sender_address: : Este campo contiene la dirección de la cuenta que enviará la transacción.

      El número de salida depende totalmente de ti, pero el nombre de salida debería ser único para cada transacción. Agrega tantas transacciones como necesites para probar tu procesador.

      transactions:
      - output_name: simple_user_script1
      script_path: simple_user_script
      sender_address: <account_address>
      - output_name: simple_user_script2
      script_path: simple_user_script2
      sender_address: <account_address>
  5. Generar Archivos JSON y Archivo Rust

    Una vez que los archivos Move y la configuración estén configurados, ejecuta el mismo comando usado para importar transacciones pero con bandera extra mode:

    • testing-folder es donde tus archivos Move están almacenados.
    • output-folder puede establecerse a cualquier carpeta donde quieras almacenar los archivos generados.
    • La bandera --mode=script especifica que el generador de transacciones debería operar en modo script, significando que ejecutará scripts Move y generará datos de transacción correspondientes. Por defecto, el modo está establecido a import, que obtiene transacciones de la red.
    Ventana de terminal
    cd ~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator
    cargo run -- --testing-folder ./imported_transactions --output-folder ../indexer-test-transactions/src/ --script

    Este comando:

    1. Leerá la configuración en la carpeta move_fixtures.
    2. Ejecutará los scripts Move especificados.
    3. Producirá los archivos JSON generados a la carpeta designada (~/aptos-core/ecosystem/indexer-grpc/indexer-test-transactions/src/json_transactions).
    4. Sobrescribirá generated_transactions.rs con los nuevos datos de transacción basados en los archivos JSON generados. Este archivo contiene las constantes de transacción que pueden usarse en pruebas.
  6. Verificación

    Verifica que la carpeta json_transactions en el directorio objetivo contenga los archivos JSON generados con los nombres especificados del archivo de configuración, y asegura que generated_transactions.rs haya sido actualizado en consecuencia.

Actualiza el archivo mod.rs para incluir el archivo Rust generado que contiene las constantes de transacción. Si mod.rs no existe, crea uno en la carpeta objetivo:

Referencia mod.rs.

Ya que el generated_transactions.rs depende de la json_transactions Asegura que la carpeta json_transactions esté apropiadamente exportada en el archivo de biblioteca para que tus pruebas tengan acceso directo a los datos de transacción.

Referencia lib.rs.

Si decidiste producir el archivo rust en un crate diferente, puedes actualizar tu cargo.toml para importar el crate que contiene el archivo generado como una dependencia. De lo contrario, puedes simplemente importar el archivo generado directamente en tu archivo de prueba. Ejemplo.

Una vez que las constantes de transacción estén integradas, puedes usarlas en pruebas de procesador para validar funcionalidad. Para instrucciones detalladas sobre escribir pruebas de procesador, consulta Escribir Pruebas de Procesador.

Ejemplo