Transferencia de USDC con Node.js y ethers.js sin Circle

Clase 3 de 13Curso para Integrar Pagos y Transacciones con USDC en Aplicaciones

Resumen

¿Cómo enviar USDC entre billeteras usando Node.js y ethers.js?

Enviar USDC entre billeteras de manera programada sin usar los productos comerciales de Circle es más sencillo de lo que crees. En esta guía, aprenderás cómo hacerlo usando Node.js y la librería ethers.js.

¿Cómo iniciar el proyecto?

Lo primero que debes hacer es instalar ethers.js, una potente biblioteca de JavaScript que facilita las interacciones con el blockchain. Abre tu terminal y ejecuta el siguiente comando:

npm i ethers

Una vez instalado, crea un archivo nuevo, al que puedes nombrar "send.js", y ábrelo con tu editor de texto preferido. En este ejemplo, utilizamos Visual Studio Code (VS Code).

¿Cómo configurar las billeteras?

Para este script, necesitarás dos billeteras de Ethereum que puedes manejar desde Metamask:

  1. CircleSending: la billetera que envía USDC.
  2. CircleReceiving: la billetera que recibe USDC.

En este caso, la billetera CircleSending cuenta con 9 USDC y algunos Sepolia ETH. Mientras que CircleReceiving solo tiene 1 USDC al inicio.

¿Cómo obtener el contrato del token de USDC en Sepolia?

El primer paso es identificar el contrato del token USDC en el blockchain de Sepolia. Visita la plataforma de Circle para iniciar sesión o registrarte. Luego, navega a la sección de documentación y busca "USDC on Test Networks". Busca específicamente el contrato de Ethereum Sepolia.

¿Cómo conectar tu aplicación al blockchain?

Para lograr que tu aplicación se comunique con el blockchain, necesitarás un RPC Endpoint, es decir, un nodo que actúe como intermediario. Utilizaremos Infura para esto:

  1. Dirígete a infura.io y accede a tu cuenta. Si aún no tienes una, créala.

  2. Una vez en el Dashboard de Infura, crea una nueva API Key seleccionando la red Ethereum Sepolia.

  3. Copia el endpoint provisto y pégalo en tu archivo "send.js" donde se requiere el RPC Endpoint.

¿Cómo definir el contrato del token?

Define el ABI (Application Binary Interface) del contrato del token. El ABI permite especificar los métodos o funciones del smart contract que planeas utilizar. Para transferir USDC, necesitas el método transfer. La definición del ABI se verá de la siguiente manera:

const usdcAbi = [
    // ABI del método transfer
    // Otros detalles como outputs, inputs, etc.
];

¿Cómo gestionar las claves privadas de las billeteras?

Para completar la operación de transferencia, necesitas proporcionar la dirección y la clave privada de la billetera que envía los fondos. Usa Metamask para extraer estos datos:

  1. Abre Metamask y copia la dirección de ambas billeteras.
  2. Entra a "Account Details" para revelar la clave privada de la billetera de envío. Introduce tu contraseña y sigue las instrucciones para mostrar la clave.

Consejo: Nunca compartas tus claves privadas públicamente. Mantenlas seguras y fuera del alcance de terceros.

Consideraciones finales

Al final de esta configuración, deberías tener un script capaz de transferir USDC de una billetera a otra. Recuerda siempre proteger tus credenciales de acceso y realizar pruebas solo en redes de testeo como Sepolia para evitar pérdidas de fondos reales.

Continúa explorando y practicando con ethers.js, y verás cómo aumenta tu comprensión sobre las transacciones en el blockchain y su estructura. ¡Buena suerte!