Skip to Content
dApps

Transacciones

Llama a enable() antes de usar la API para dApps. Las direcciones que devuelve la API CIP-30 son bytes codificados en hexadecimal; los parámetros de transacción y valor son CBOR codificado en hexadecimal. Los ejemplos para navegador que usan Buffer requieren una importación explícita de buffer o una función auxiliar de conversión de bytes.

Aprende a firmar y enviar transacciones en Cardano.


Firmar una transacción

// transaction should be CBOR-encoded hex string const witnessSetCbor = await api.signTx(transactionCbor, partialSign) // partialSign: boolean // - false: reject if the wallet cannot provide every required signature // - true: return the signatures the wallet can provide console.log('Witness set:', witnessSetCbor)

Enviar una transacción

// Submit signed transaction const txHash = await api.submitTx(signedTransactionCbor) console.log('Transaction hash:', txHash)

Construir, firmar y enviar

signTx devuelve un conjunto de testigos, no una transacción firmada completa. Construye la transacción sin firmar con una biblioteca de transacciones de Cardano, combina los testigos devueltos con el conjunto de testigos existente y envía la transacción completa resultante.

// `unsignedTransactionCbor` is a complete transaction built with current // protocol parameters, selected inputs, outputs, fees, and change. const witnessSetCbor = await api.signTx(unsignedTransactionCbor, false) // Merge witnessSetCbor into the original transaction using your Cardano SDK. // Preserve existing witnesses, scripts, datums, redeemers, and auxiliary data. // Submit the serialized complete transaction, never witnessSetCbor alone. const txHash = await api.submitTx(completeSignedTransactionCbor)

Usa el flujo de Lucid o Mesh que aparece a continuación si tu aplicación aún no implementa la construcción de transacciones y la combinación de testigos. Estos ejemplos de SDK son específicos de una versión; sigue la documentación de la versión que instales.


Uso con Lucid

Lucid  ofrece una API más sencilla:

npm install lucid-cardano
import { Lucid, Blockfrost } from 'lucid-cardano' // Initialize Lucid with OneKey const lucid = await Lucid.new( new Blockfrost('https://cardano-mainnet.blockfrost.io/api', 'your-api-key'), 'Mainnet' ) // Connect OneKey const api = await window.cardano.onekey.enable() lucid.selectWallet(api) // Send ADA const tx = await lucid .newTx() .payToAddress('addr1...', { lovelace: 5000000n }) .complete() const signedTx = await tx.sign().complete() const txHash = await signedTx.submit() console.log('TX Hash:', txHash)

Uso con Mesh

Mesh  es otro SDK popular de Cardano:

npm install @meshsdk/core
import { BrowserWallet, Transaction } from '@meshsdk/core' // Connect to OneKey const wallet = await BrowserWallet.enable('onekey') // Get wallet info const balance = await wallet.getBalance() const addresses = await wallet.getUsedAddresses() // Build and send transaction const tx = new Transaction({ initiator: wallet }) .sendLovelace('addr1...', '5000000') const unsignedTx = await tx.build() const signedTx = await wallet.signTx(unsignedTx) const txHash = await wallet.submitTx(signedTx)
Última actualización el