Ir al contenido principal

Cómo enviar una transacción en Solana utilizando JavaScript

Actualizado el
26 de noviembre de 2025

6 minutos de lectura

Introducción

¡Hola, lector! Hoy es un día emocionante porque nos vamos de expedición a la cadena de bloques Solana. Solana es una cadena de bloques en auge que busca mejorar las soluciones que ofrece el ecosistema actual al complejo problema de proporcionar un protocolo de consenso seguro, escalable y descentralizado. Solana cuenta con un sinfín de tecnologías que está empleando para hacerse con parte de la cuota de mercado de su «hermano mayor», Ethereum. En esta guía, aprenderás a conectarte a Solana, a obtener fondos en su red de desarrollo (devnet) y a enviar una transacción con esta nueva y emocionante tecnología.

¿Prefieres un tutorial en vídeo? Sigue los pasos de Sahil y aprende a enviar una transacción en Solana utilizando JavaScript.
¡Suscríbete a nuestro canal de YouTube para ver más vídeos!

Requisitos previos:

  • Node.js instalado en tu sistema.
  • Conocimientos de la línea de comandos o el terminal.
  • Un editor de texto para escribir código.

Configuración del proyecto

¡Tienes que configurar tu proyecto antes de empezar a lanzar transacciones de Solana como si fueras un operador bursátil de acciones de bajo valor! Para empezar, crea un directorio. En esta guía lo llamaremos «SolanaTransaction», pero puedes ponerle el nombre que quieras. Una vez creada la nueva carpeta del proyecto, necesitaremos un archivo donde escribir nuestro código. De nuevo, puedes llamarlo como quieras siempre que termine con la extensión .js, pero al nuestro lo llamaremos sendSol.js. Introduce los siguientes comandos en tu consola para continuar.

mkdir SolanaTransaction
cd SolanaTransaction
touch sendSol.js

Una vez aclarado esto, abre el archivo sendSol.js con tu editor de texto favorito.

Cómo configurar un nodo de Solana

Conéctate a un clúster de Solana con tu punto de conexión de Quicknode

Para desarrollar en Solana, necesitarás un punto final de API para conectarte a la red. Puedes utilizar nodos públicos o implementar y gestionar tu propia infraestructura; sin embargo, si quieres tiempos de respuesta 8 veces más rápidos, puedes dejarnos a nosotros el trabajo pesado.

Descubre por qué más del 50 % de los proyectos en Solana Elige Quicknode y empieza tu prueba gratuita aquí. Vamos a utilizar un Solana Devnet punto final.

Copia el HTTP Enlace del proveedor:

Conexión a Solana

Para conectarnos a la red de desarrollo que ofrece Solana, tendremos que instalar la biblioteca @solana/web3.js. Para ello, ejecuta el siguiente comando.

npm i @solana/web3.js@1

Una vez instalada la biblioteca de JavaScript de Solana, ya podemos conectarnos a la red.

//sendSol.js
const web3 = require("@solana/web3.js");
// Connect to cluster
const connection = new web3.Connection(
"<YOUR_QUICKNODE_URL_HERE>",
'confirmed',
);

Un breve resumen del código:

  • Línea 2: importación de la biblioteca solana/web3.js.
  • Líneas 4-6: Creación de un nuevo objeto de conexión. El constructor de la conexión toma como parámetros una representación en forma de cadena de la URL de un punto final (que generamos en el paso anterior) y un nivelde compromiso.

Con el conexión Una vez configurada la constante, ya podrás realizar llamadas a la red Solana. Si quieres comprobar si tu conexión funciona, puedes console.log(conexión) para registrar el objeto de conexión.

Generación de las direcciones y los fondos

Una vez conectados a la red, tendremos que conseguir las herramientas para generar las direcciones y obtener fondos para la red. En primer lugar, tendremos que generar un nuevo par de claves y realizar un airdrop de SOL. Hemos creado una herramienta sencilla para generar un nuevo par de claves por ti:

🔑Generarun nuevo monedero con Devnet SOL

Nota: Enviar solicitudes de airdrop con demasiada frecuencia puede provocar un error 429 (demasiadas solicitudes).

Pega tu secreto y de introduce la dirección de tu monedero en el código que aparece debajo de tu web3 declaración.

Por último, añade una dirección de destino; vamos a generar una al azar a la que enviar nuestro SOL utilizando const to = web3.Keypair.generate(); Tu código debería quedar así:

//sendSol.js
const web3 = require("@solana/web3.js");
const connection = new web3.Connection(
"<YOUR_QUICKNODE_URL_HERE>",
'confirmed',
);

const secret=[00, ... 00]; // Replace with your secret key
const from = web3.Keypair.fromSecretKey(new Uint8Array(secret));

// Generate a random address to send to
const to = web3.Keypair.generate();

Analicemos este fragmento de código:

  • secreto: Esta es la clave secreta que hemos generado en el paso anterior. Se utiliza para firmar transacciones; ya hemos ingresado algunos SOL de la red de desarrollo en esta cuenta.
  • de: Creación de un nuevo par de claves derivado del unit8array de la clave secreta.
  • a: Crear un nuevo par de claves al que enviaremos fondos.

Una vez completados todos los pasos anteriores, ahora deberías tener:

  1. Una conexión a la red Solana.
  2. Una cuenta con fondos desde la que enviar SOL.
  3. Una dirección de cuenta a la que enviar SOL.

¡Pues resulta que, con todos esos componentes, ya puedes realizar una transacción!

Envío de la transacción

¡Pasemos a la parte divertida! Ahora ya podemos enviar una transacción a la red. Este proceso consta de dos partes. En primer lugar, tenemos que crear un nuevo objeto de transacción. En segundo lugar, tenemos que enviar esa transacción a otro usuario y añadirle nuestra firma. El siguiente bloque de código asíncrono nos mostrará exactamente cómo hacerlo:

(async () => {
const transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
fromPubkey: from.publicKey,
toPubkey: to.publicKey,
lamports: web3.LAMPORTS_PER_SOL / 100,
}),
);

// Sign transaction, broadcast, and confirm
const signature = await web3.sendAndConfirmTransaction(
connection,
transaction,
[from],
);
console.log('SIGNATURE', signature);
})()

Creación de la transacción

Aquí puedes ver que cada uno de los pasos anteriores tiene su propia función. Podemos empezar por la primera función : web3.Transaction().add(web3.SystemProgram.transfer()). Es bastante prolija, por lo que hay que desglosarla en partes más pequeñas para entenderla bien.

  1. web3.Transaction() - crea un objeto Transaction vacío.
  2. add() - Proporciona un método que permite añadir instrucciones al objeto Transaction.
  3. web3.SystemProgram.transfer() - Este es el método encargado de enviar los fondos de una cuenta a otra. Admite varios argumentos. Esto corresponde a las líneas 2 a 6 de nuestra primera función, que almacenamos en la constante «transaction ».

Parámetros:

  1. fromPubkey: la clave pública de la cuenta desde la que enviamos los fondos.
  2. toPubkey: la clave pública de la cuenta que recibe los fondos de la transacción.
  3. lamports: - La cantidad de lamports que se van a enviar. Se puede considerar que los lamports son para Sol lo que los gwei son para Ether.

Firma de la operación

Una vez que el objeto de transacción está listo, ahora tenemos que autorizar la transacción firmándola con nuestra clave secreta. La segunda función del bloque de código anterior se encarga de este paso del proceso. Podemos desglosarla para comprender mejor lo que está sucediendo.

  • Línea 10: Declaración de la constante «signature», que almacenará el resultado de la función sendAndConfirmTransaction()
  • Líneas 11-13: se pasan los argumentos a la función mencionada anteriormente. Por orden, los argumentos son el objeto de conexión, la transacción que se va a enviar y el par de claves privada y pública del remitente, representado por un array. 
  • Línea 15: Registro de la firma correcta, representada por un hash de la transacción.

Una vez hecho todo esto, ya estás listo para ejecutar tu código. Guarda la URL del punto final de Quicknode y la clave secreta en una variable de entorno de la siguiente manera:

QUICKNODE_URL=<YOUR_QUICKNODE_URL_HERE>
SECRET_KEY=<SECRET_KEY_HERE>

Sustituir <YOUR_QUICKNODE_URL_HERE> y <SECRET_KEY_HERE> con valores reales.

El fragmento de código final debería quedar así

//sendSol.js
require('dotenv').config();
const web3 = require("@solana/web3.js");

const connection = new web3.Connection(
process.env.QUICKNODE_URL,
'confirmed',
);

const secret = JSON.parse(process.env.SECRET_KEY);
const from = web3.Keypair.fromSecretKey(new Uint8Array(secret));

// Generate a random address to send to
const to = web3.Keypair.generate();

(async () => {
const transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
fromPubkey: from.publicKey,
toPubkey: to.publicKey,
lamports: web3.LAMPORTS_PER_SOL / 100, //0.01 SOL
}),
);

// Sign transaction, broadcast, and confirm
const signature = await web3.sendAndConfirmTransaction(
connection,
transaction,
[from],
);
console.log('SIGNATURE', signature);
})()

¡Ahora ya puedes ejecutar el archivo sendSol.js en tu terminal y obtener un resultado similar a este!

salida de «sendSol» del nodo

Conclusión

¡Enhorabuena! Si has llegado hasta aquí, ya has enviado con éxito una transacción en la red Solana. Solana es una cadena de bloques muy interesante que, al parecer, mejora la red Ethereum en cuanto a la experiencia de usuario. Las transacciones son más rápidas y las comisiones son más bajas. Solana aún no ha sido puesta a prueba como lo ha sido Ethereum, pero sin duda merece la pena seguirla de cerca. Y lo que es más importante: ¡ya vas un paso por delante! No hay mucha gente que pueda decir que ha enviado una transacción en Solana utilizando JavaScript, ¡pero tú sí puedes!

Suscríbete a nuestro boletín para recibir más artículos y guías sobre Ethereum. Si tienes algún comentario, no dudes en ponerte en contacto con nosotros a través de Twitter. Siempre puedes charlar con nosotros en nuestro servidor de la comunidad de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)

¡Nos encanta recibir comentarios!

Si tienes algún comentario o sugerencia sobre nuevos temas, no dudes en hacérnoslo saber. Nos encantaría saber tu opinión.

Comparte esta guía