Construir y Enviar Transacciones
Kaptos ofrece dos formas de ejecutar transacciones:
- un flujo componible (
buildSimpleTransaction->sign->submitTransaction.simple) - un flujo de una llamada (
execute) para ejecución común con un solo firmante
Esta guía usa la API lean más reciente (typeArgs(...), args(...)).
Crear una cuenta
Sección titulada «Crear una cuenta»Primero genera credenciales y luego financia la dirección en una red de prueba.
val aptos = Aptos(AptosConfig(AptosSettings(network = Network.DEVNET)))
val alice = Account.generate()val bob = Account.generate()
aptos.fundAccount(accountAddress = alice.accountAddress, amount = 100_000_000L).expect("Failed to fund Alice")aptos.fundAccount(accountAddress = bob.accountAddress, amount = 100_000_000L).expect("Failed to fund Bob")Para cuentas derivadas desde clave privada, revisa Cuentas.
Construir la transacción
Sección titulada «Construir la transacción»Usa buildSimpleTransaction con el builder lean de entry function.
val txn = aptos.buildSimpleTransaction(sender = alice.accountAddress) { function = "0x1::coin::transfer" typeArgs("0x1::aptos_coin::AptosCoin") args( bob.accountAddress, 1_000_000UL, ) }args(...) hace coerción automática Kotlin -> Move para tipos comunes (Boolean, Int, ULong, String, ByteArray, List<T>, AccountAddress, etc.), por lo que normalmente no necesitas wrappers explícitos.
Si necesitas ajustar parámetros de gas/secuencia:
val txn = aptos.buildSimpleTransaction( sender = alice.accountAddress, options = InputGenerateTransactionOptions(maxGasAmount = 20_000), ) { function = "0x1::coin::transfer" typeArgs("0x1::aptos_coin::AptosCoin") args(bob.accountAddress, 1_000_000UL) }Firma la transacción
Sección titulada «Firma la transacción»Usa sign cuando quieres controlar explícitamente la autenticación antes del envío.
val senderAuthenticator = aptos.sign(signer = alice, transaction = txn)Enviar la transacción
Sección titulada «Enviar la transacción»Envía la transacción raw junto con el autenticador del remitente.
val pendingTxn = aptos .submitTransaction.simple( transaction = txn, senderAuthenticator = senderAuthenticator, ) .expect("Failed to submit transaction")Esperar ejecución
Sección titulada «Esperar ejecución»Espera confirmación en cadena con el hash pendiente.
val executedTxn = aptos .waitForTransaction(HexInput.fromString(pendingTxn.hash)) .expect("Transaction did not execute successfully")Ejecutar en una sola llamada
Sección titulada «Ejecutar en una sola llamada»Si no necesitas inspeccionar objetos intermedios (transacción/autenticador), usa execute:
val pendingTxn = aptos .execute(signer = alice) { function = "0x1::coin::transfer" typeArgs("0x1::aptos_coin::AptosCoin") args(bob.accountAddress, 1_000_000UL) } .expect("Failed to build/sign/submit transaction")Luego espera confirmación de forma normal:
val executedTxn = aptos .waitForTransaction(HexInput.fromString(pendingTxn.hash)) .expect("Transaction did not execute successfully")