Saltar al contenido principal

Enviar una transacción a Stellar RPC utilizando el SDK de JavaScript

Aquí hay un mecanismo de bucle simple y rudimentario para enviar una transacción a Stellar RPC y esperar un resultado.

import { Transaction, FeeBumpTransaction } from "@stellar/stellar-sdk";
import { Server, Api } from "@stellar/stellar-sdk/rpc";

const RPC_SERVER = "https://soroban-testnet.stellar.org/";
const server = new Server(RPC_SERVER);

// Submits a tx and then polls for its status until a timeout is reached.
async function submitTx(
tx: Transaction | FeeBumpTransaction,
): Promise<Api.GetTransactionResponse> {
return server
.sendTransaction(tx)
.then(async (reply) => {
if (reply.status !== "PENDING") {
throw reply;
}

return server.pollTransaction(reply.hash, {
sleepStrategy: (_iter: number) => 500,
attempts: 5,
});
})
.then((finalStatus) => {
switch (finalStatus.status) {
case Api.GetTransactionStatus.FAILED:
case Api.GetTransactionStatus.NOT_FOUND:
throw tmpStatus;
case Api.GetTransactionStatus.SUCCESS:
return status;
}
});
}
advertencia

Recuerda: ¡Siempre debes manejar los errores de manera elegante! Este es un enfoque que falla de forma contundente y rápida que solo debe usarse en estos ejemplos.