Stellar Wallet Kit - Integración rápida
Construyendo un Sistema de Gestión de Carteras Stellar
Esta guía te mostrará cómo crear un sistema integral de gestión de carteras para la integración con la blockchain Stellar en tu aplicación React/Next.js. El sistema ofrece conexión segura de carteras, desconexión y gestión de estado con persistencia.
Resumen
El sistema consta de tres componentes principales:
Proveedor de Carteras - Gestión global del estado para la información de la cartera
Hook de Cartera - Lógica de negocio para las operaciones de la cartera
Configuración del Kit de Carteras - Configuración de integración con la blockchain Stellar
Paso 1: Instalar dependencias
Primero, instala el paquete requerido del Stellar Wallet Kit:
npm install @creit.tech/stellar-wallets-kitPaso 2: Configurar el Stellar Wallet Kit
Crea un archivo de configuración que configure el Stellar Wallet Kit con soporte para múltiples tipos de cartera:
import {
StellarWalletsKit,
WalletNetwork,
FREIGHTER_ID,
AlbedoModule,
FreighterModule,
} from "@creit.tech/stellar-wallets-kit";
/**
* Configuración principal para el Stellar Wallet Kit
* Este kit admite múltiples tipos de carteras, incluyendo Freighter y Albedo
* Configurar para TESTNET durante el desarrollo y MAINNET para producción
*/
export const kit: StellarWalletsKit = new StellarWalletsKit({
network: WalletNetwork.TESTNET,
selectedWalletId: FREIGHTER_ID,
modules: [new FreighterModule(), new AlbedoModule()],
});
/**
* Interfaz para los parámetros de firma de transacciones
*/
interface signTransactionProps {
unsignedTransaction: string;
address: string;
}
/**
* Firmar una transacción Stellar usando la cartera conectada
* Esta función maneja el proceso de firma y devuelve la transacción firmada
*
* @param unsignedTransaction - La cadena XDR de la transacción sin firmar
* @param address - La dirección de la cartera que firmará la transacción
* @returns Promise<string> - El XDR de la transacción firmada
*/
export const signTransaction = async ({
unsignedTransaction,
address,
}: signTransactionProps): Promise<string> => {
const { signedTxXdr } = await kit.signTransaction(unsignedTransaction, {
address,
networkPassphrase: WalletNetwork.TESTNET,
});
return signedTxXdr;
};Paso 3: Crear el Proveedor de Contexto de la Cartera
El Proveedor de Carteras gestiona el estado global de la cartera y persiste la información en localStorage para una mejor experiencia de usuario
Paso 4: Crear el Hook de la Cartera
El hook de la cartera encapsula toda la lógica de negocio para las operaciones de la cartera, proporcionando una interfaz limpia para los componentes:
Paso 5: Integrar el Proveedor en tu App
Envuelve tu aplicación con WalletProvider para habilitar la gestión del estado de la cartera en toda tu app:
Paso 6: Usar el Hook de Cartera en Componentes
Ahora puedes usar la funcionalidad de la cartera en cualquier componente. Aquí hay un ejemplo de un botón de conexión de cartera:
Características clave y beneficios
Persistencia de estado
La información de la cartera se guarda automáticamente en localStorage
Los usuarios no necesitan reconectar su cartera cada vez que visitan tu app
Experiencia de usuario fluida a través de las sesiones del navegador
Soporte multi-cartera
Admite múltiples tipos de carteras Stellar (Freighter, Albedo, etc.)
Fácil de agregar nuevos módulos de cartera a medida que estén disponibles
Los usuarios pueden elegir su cartera preferida
Manejo de errores
Manejo de errores integral para las operaciones de cartera
Recuperaciones elegantes cuando las operaciones de cartera fallan
Fácil de extender con notificaciones de error personalizadas
Seguridad de tipos
Soporte completo de TypeScript con definiciones de tipos adecuadas
Soporte de IntelliSense para una mejor experiencia de desarrollo
Verificación de errores en tiempo de compilación para las operaciones de cartera
Arquitectura basada en contexto
Separación clara de responsabilidades entre la gestión del estado y la lógica de negocio
Fácil acceso al estado de la cartera desde cualquier componente
Gestión centralizada del estado de la cartera
Opciones de configuración
Selección de red
TESTNET: Usar durante el desarrollo y las pruebas
MAINNET: Usar para aplicaciones en producción
Última actualización