Reproducir Transacciones Pasadas
Conceptos Básicos
Sección titulada «Conceptos Básicos»Puedes reproducir transacciones pasadas localmente usando el comando aptos move replay
.
El comando es bastante directo pero requiere que especifiques dos piezas de información requerida:
--network
- Esta es la red en la que quieres reproducir
- Valores posibles:
mainnet
,testnet
,devnet
o<URL A ENDPOINT REST PERSONALIZADO>
--txn-id
- Este es el id de la transacción que quieres reproducir
- Esto también a veces se refiere como
version
en exploradores - Específicamente NO es el hash hexadecimal de la transacción
Usemos la transacción de mainnet 581400718 (una simple transacción de transferencia de moneda) como ejemplo.
aptos move replay --network mainnet --txn-id 581400718
Salida
Got 1/1 txns from RestApi.Replaying transaction...{ "Result": { "transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63", "gas_used": 7, "gas_unit_price": 100, "sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e", "sequence_number": 14637, "success": true, "version": 581400718, "vm_status": "status EXECUTED of type Execution" }}
Alternativamente, si quieres simular una nueva transacción, revisa Simulación Local, Benchmarking y Perfilado de Gas.
Modos Alternativos
Sección titulada «Modos Alternativos»Similar a las simulaciones locales, el comando replay puede mejorarse con una de las siguientes opciones:
--benchmark
: Hacer benchmark de la transacción y reportar el(los) tiempo(s) de ejecución.--profile-gas
Perfilar la transacción para uso detallado de gas.
Benchmarking
Sección titulada «Benchmarking»aptos move replay --network mainnet --txn-id 581400718 --benchmark
Salida
Got 1/1 txns from RestApi.Benchmarking transaction...Running time (cold code cache): 914.821µsRunning time (warm code cache): 820.189µs{ "Result": { "transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63", "gas_used": 7, "gas_unit_price": 100, "sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e", "sequence_number": 14637, "success": true, "version": 581400718, "vm_status": "status EXECUTED of type Execution" }}
Vale la pena notar que estos tiempos de ejecución sirven solo como referencias informativas, ya que dependen de las especificaciones de tu máquina local y pueden estar influenciados por ruido u otros factores aleatorios.
Si tu objetivo es optimizar tu contrato, deberías basar tus decisiones en los resultados del perfilado de gas.
Perfilado de Gas
Sección titulada «Perfilado de Gas»El Perfilador de Gas de Aptos es una herramienta poderosa que puede ayudarte a entender el uso de gas de las transacciones de Aptos. Una vez activado, simulará transacciones usando una VM instrumentada, y generará un reporte basado en web.
El perfilador de gas también puede funcionar como un depurador ya que el reporte también incluye un trace de ejecución completo.
aptos move replay --network mainnet --txn-id 581400718 --profile-gas
Salida
Got 1/1 txns from RestApi.Profiling transaction...Gas report saved to gas-profiling/txn-1ba73d03-0x1-aptos_account-transfer.{ "Result": { "transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63", "gas_used": 7, "gas_unit_price": 100, "sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e", "sequence_number": 14637, "success": true, "version": 581400718, "vm_status": "status EXECUTED of type Execution" }}
Luego puedes encontrar el reporte de gas generado en el directorio gas-profiling:
Directorygas-profiling/
Directorytxn-1ba73d03-0x1-aptos_account-transfer/
Directoryassets/
- …
- index.html
Para entender el reporte de gas, por favor consulta esta sección del tutorial de simulación local.