Saltar al contenido principal

Transacciones

Las transacciones son el material de construcción del blockchain. Cada payload que envías es firmado por tu wallet y almacenado en bloques que luego se comparten entre todos los nodes de la red, creando el ledger inmutable.


Registrar tu wallet — la primera transaction

Antes de poder enviar cualquier transaction, tu wallet debe estar registrada en el blockchain, lo cual es en sí misma una transaction.

Haz esto una vez por wallet por blockchain.

const res = await fetch('https://your-tms-url/api/v1/transactions/register-wallet', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
walletAddress: 'your-wallet-address',
blockchain: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
passphrase: 'my-secure-passphrase', // omit if wallet has no passphrase
}),
});

const result = await res.json();
console.log('Wallet registered:', result);

Después de esto, la wallet está activa en la cadena y lista para usarse.


Enviar una transaction

Con la wallet registrada, puedes escribir cualquier cosa en el blockchain. El TMS selecciona un node disponible de los nodes permitidos por tu access key y reenvía la transaction, encargándose del enrutamiento y la cola por ti.

const res = await fetch('https://your-tms-url/api/v1/transactions', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
blockchainId: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
from: 'your-wallet-address',
to: 'your-wallet-address',
walletAddress: 'your-wallet-address',
passphrase: 'my-secure-passphrase',
payload: 'anything you want to store permanently',
payloadType: 'text',
metadata: {
source: 'my-app',
version: '1.0',
},
}),
});

const tx = await res.json();
console.log('Transaction ID:', tx.transactions.transactionId);

Si ya sabes de antemano que tu payload es datos estructurados, usa los endpoints tipados — hacen la intención más clara y manejan la serialización correctamente:

  • POST /api/v1/transactions/text — para payloads de cadena de texto plano
  • POST /api/v1/transactions/json — para objetos JSON estructurados, p. ej. { "event": "invoice_paid", "amount": 1500 }

Ambos aceptan los mismos campos que el endpoint genérico.


Recuperar una transaction

Una vez enviada, verifica que la transaction haya sido procesada:

const blockchainId = '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2';
const transactionId = 'your-transaction-id';

const res = await fetch(
`https://your-tms-url/api/v1/transactions/${blockchainId}/${transactionId}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);

const confirmed = await res.json();
console.log('Status:', confirmed.status);
console.log('Payload:', confirmed.payload);

Las transacciones en ULedger son increíblemente rápidas. Consulta las transacciones inmediatamente después de enviarlas y observa con qué rapidez se confirman.


Bloques y el ledger

Las transacciones se empaquetan en bloques con hasta 200 por bloque. Una vez que un bloque se sella, se distribuye entre todos los nodes de tu red. Ese es el registro inmutable formándose en tiempo real.

Lee un bloque para ver todo lo que contiene:

const res = await fetch('https://your-tms-url/api/v1/nodes/blockchain-block', {
method: 'POST',
headers: {
'X-AccessKey': 'your-entity-access-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
nodeId: 'your-node-id',
blockchain: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
blockHeight: 2301,
}),
});

const block = await res.json();
console.log('Transactions in block:', block.transactions.length);
block.transactions.forEach(tx => console.log(tx.transactionId));

Ese es el ledger. Las wallets lo firman, las transacciones lo llenan, los bloques lo sellan, los nodes lo conservan.

Consultar el historial de transactions

El TMS lleva un registro de cada transaction que tu entidad ha enviado. Consúltalo para auditar actividad, depurar un flujo fallido o construir un dashboard:

const params = new URLSearchParams({
status: 'confirmed',
blockchain_id: '08c28f29a62819120958984b761ddf8ccb45951612731409873994958fd150a2',
page: '0',
pageSize: '20',
});

const res = await fetch(
`https://your-tms-url/api/v1/transactions/history?${params}`,
{
headers: {
'X-AccessKey': 'your-entity-access-key',
'Accept': 'application/json',
},
}
);

const history = await res.json();
console.log(`${history.total} transacciones encontradas`);
history.items.forEach(tx => console.log(tx.transactionId, tx.status));

Filtros disponibles: status, flow_type, blockchain_id, from, to, page, pageSize. Todos son opcionales — omítelos para devolver todo.

Si tienes un ID de registro interno específico, recupéralo directamente en GET /api/v1/transactions/history/{id}.


A continuación

Ahora podemos explorar los smart contracts. Dirígete a Smart Contracts para ver cómo desplegar e interactuar con smart contracts en ULedger.