SDK de Kotlin
Kaptos es un SDK Multiplataforma de Kotlin para interactuar con la blockchain de Aptos a través de varias plataformas. Ofrece una API consistente para solicitudes de datos, envíos de transacciones, y más, facilitando el desarrollo de apps multiplataforma con lógica de negocio compartida. El SDK incluye clientes asíncronos de Aptos para interacciones suaves con la blockchain.
Kaptos también proporciona SDKs específicos de plataforma para JVM, Android, iOS, JS, Linux, macOS y Windows.
Características
Sección titulada «Características»- Type-safe: El SDK es completamente type-safe y proporciona un rico conjunto de tipos para todas las operaciones.
- Expresivo: Kaptos proporciona una API simple y expresiva estilo DSL para construir transacciones.
- Multiplataforma: Escribe aplicaciones multiplataforma con lógica de negocio compartida.
- API Consistente: Todas las operaciones tienen una API uniforme y consistente a través de todas las plataformas.
- Soporte BCS: El SDK usa BCS por defecto para serialización y deserialización de transacciones.
- Asíncrono: Todas las operaciones de blockchain son asíncronas.
- Configurable: El SDK proporciona clientes altamente configurables para todas las plataformas.
Instalación
Sección titulada «Instalación»commonMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos:<version>")}
jvmMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-jvm:<version>")}
androidMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-android:<version>")}
El SDK es compatible con iosArm64, iosX64, y iosSimulatorArm64. Dependiendo de cómo esté configurado tu proyecto, puedes agregar las siguientes dependencias:
Para iosArm64:
iosMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-iosArm64:<version>")}
Para iosX64:
iosMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-iosX64:<version>")}
jsMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-js:<version>")}
El SDK solo soporta Linux x64. Para agregar la dependencia, usa lo siguiente:
linuxMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-linux:<version>")}
El SDK solo soporta macOS x64, macOS arm64, y simulador macOS arm64. Para agregar la dependencia, usa lo siguiente:
Para macOS x64:
macosMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-macosX64:<version>")}
Para macOS arm64:
macosMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-macosArm64:<version>")}
El SDK solo soporta Windows x64. Para agregar la dependencia, usa lo siguiente:
mingwMain.dependencies { implementation("xyz.mcxross.kaptos:kaptos-mingwX64:<version>")}
Realizar una Transacción
Sección titulada «Realizar una Transacción»Abajo hay un ejemplo de cómo puedes realizar una transacción usando el SDK de Kotlin. El fragmento demuestra cómo construir una transacción para transferir APT. Luego firmamos y enviamos la transacción a la blockchain en un solo paso.
58 collapsed lines
/* * Copyright 2024 McXross * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package xyz.mcxross.kaptos.sample
import xyz.mcxross.kaptos.Aptosimport xyz.mcxross.kaptos.account.Accountimport xyz.mcxross.kaptos.model.*import xyz.mcxross.kaptos.util.runBlocking
const val FUNDING_AMOUNT = 100_000_000Lconst val SEND_AMOUNT_APT = 0.5fconst val UNIT_CONVERSION = 100_000_000const val SEND_AMOUNT_UNITS = (SEND_AMOUNT_APT * UNIT_CONVERSION)const val SEND_AMOUNT = 1_000_000UL
/** * This example demonstrates how to transfer APT from one account to another. * * Each run generates and creates new accounts on-chain using faucet funding. After funding, the APT * balance of each account is printed; if funding fails, an error is thrown. * * Next, a transaction is constructed to send 0.5 APT from Alice to Bob. The transaction is then * signed and submitted using the one-step `signAndSubmitTransaction` method. We wait for the * transaction to complete and print the updated balances of Alice and Bob. If the transaction * fails, an error is thrown. */fun main() = runBlocking { val aptos = Aptos(AptosConfig(AptosSettings(network = Network.TESTNET)))
println("Generating Alice and Bob's accounts")
val alice = Account.generate() val bob = Account.generate()
aptos.fundAccount(alice.accountAddress, FUNDING_AMOUNT).expect("Failed to fund Alice's account") aptos.fundAccount(bob.accountAddress, FUNDING_AMOUNT).expect("Failed to fund Bob's account")
println("Created accounts on chain") println("Alice's balance: ${aptos.getAccountAPTAmount(alice.accountAddress)}") println("Bob's balance: ${aptos.getAccountAPTAmount(bob.accountAddress)}") println("=============================================") println( "Building transaction to send ${SEND_AMOUNT / 100_000_000u} APT to Bob: ${bob.accountAddress}" )
val txn = aptos.buildTransaction.simple( sender = alice.accountAddress, data = entryFunctionData { function = "0x1::coin::transfer" typeArguments = typeArguments { +TypeTagStruct("0x1::aptos_coin::AptosCoin") } functionArguments = functionArguments { +bob.accountAddress +U64(SEND_AMOUNT_UNITS.toULong()) } }, )21 collapsed lines
// Sign and submit the transaction val commitedTransaction = aptos.signAndSubmitTransaction(alice, txn)
val executedTransaction = aptos.waitForTransaction( HexInput.fromString(commitedTransaction.expect("Transaction failed").hash) )
println( "Transaction wait response: $executedTransaction\n=============================================" )
val aliceNewBalance = aptos.getAccountAPTAmount(alice.accountAddress).expect("Alice's account does not exist") val bobNewBalance = aptos.getAccountAPTAmount(bob.accountAddress).expect("Bob's account does not exist")
println("Alice's new balance: $aliceNewBalance") println("Bob's new balance: $bobNewBalance")}
El SDK también proporciona métodos pre-construidos para operaciones de transacción comunes. Por
ejemplo, puedes usar el método transferCoinTransaction
para generar una transacción de transferencia
entre dos cuentas como se muestra abajo:
val txn = aptos.transferCoinTransaction( alice.accountAddress, bob.accountAddress, SEND_AMOUNT )
Entonces puedes firmar y enviar esta transacción.
Ejemplos
Sección titulada «Ejemplos»Para más ejemplos sobre cómo y qué puedes hacer con el SDK de Kotlin, revisa lo siguiente: