get set helloworld
Esta es la interfaz del contrato MessageContract. La cual es una operación de poner un valor tipo string a un contrato y capturar tambien este valor. el contrato desplegado es el :
CBLHRYKD6UPJA75PJ5CCTCY6LO4H3ZY7HFW2SS2JP4US5VRYDEO3I67H
para realizar los pasos iniciales , es exactamente los mismos pasos iniciales del la dapp Saldo de una dirección en XLM.
Una vez instalado Next o el entorno favorito, y dejarlo listo, procedemos a abrir la terminal e instalar los siguientes paquetes:
npm install react-hot-toast
npm install @stellar/stellar-sdk
npm install stellar-reactreact-hot-toast: Sirve para dar mensajes al usuario acerca de alguna operación
@stellar/stellar-sdk: Libreria en javascript para interactuar con la red de stellar, en esta ocasión la usaremos para poder convertir nuestros valores de los mensajes al entandar de mensajes de stellar XDR
stellar-react: Los amigos de la empresa Palta Labs 🥑, una vez más al rescate, extendiendo la libreria de Stellar-wallets-kits permitiendo interaractuar con los contratos y la operación de conexión a la billetera de una forma más sencilla ( developer friendly 🤓)
Archivos a crear o modificar
StellarWalletProvider.tsx: En la ruta src/app
Sirve para la configuración inicial de la billetera, red por defecto, el contrato que vamos a usar, esta configuración la vamos a necesitar a través de toda la aplicación
// Este archivo define un Provider personalizado para conectar una aplicación Next.js con la red de Stellar usando Soroban React.
'use client'; // Indica que este componente se ejecuta del lado del cliente en Next.js
import { ReactNode } from "react";
import { NetworkDetails, SorobanReactProvider, WalletNetwork } from "stellar-react";
import deployments from './deployments.json'; // Importa la configuración de despliegue de contratos
// Componente Provider que envuelve la aplicación y provee acceso a la red de Stellar
const StellarWalletProvider = ({ children }: { children: ReactNode }) => {
// Definimos los detalles de la red de prueba (testnet) de Stellar
// Puedes cambiar estos valores para conectar a otra red si lo necesitas
const testnetNetworkDetails: NetworkDetails = {
network: WalletNetwork.TESTNET, // Selecciona la red de prueba de Stellar
sorobanRpcUrl: 'https://soroban-testnet.stellar.org/', // URL del nodo Soroban para testnet
horizonRpcUrl: 'https://horizon-testnet.stellar.org' // URL de Horizon para testnet
}
return (
// SorobanReactProvider provee el contexto de Stellar a toda la app
<SorobanReactProvider
appName={"Hello World Stellar App"} // Nombre de la app que se muestra en la wallet
allowedNetworkDetails={[testnetNetworkDetails]} // Lista de redes permitidas (aquí solo testnet)
activeNetwork={WalletNetwork.TESTNET} // Red activa por defecto
deployments={deployments} // Información de despliegue de contratos inteligentes
>
{/* children representa los componentes hijos que tendrán acceso al contexto de Stellar */}
{children}
</SorobanReactProvider>
)
}
// Exportamos el Provider para usarlo en el layout principal de la app
export default StellarWalletProvider;layout.tsx: En la ruta src/app
Es nuestro "template" de la aplicación, allí indicamos que toda la aplicación va a tener acceso a los datos de la billetera, billetera conectada, red, servidor al que está conectado, etc...
deployments.json: En la ruta src/app
array json donde podemos almacenar los diferentes contratos con que podemos interactuar.
page.tsx: En la ruta src/app
Página principal de la aplicación, a resaltar allí la interactividad es nula, ya que está se da en el componente Header y TablaValores .
📝 A continuación se crea la carpeta components en la ruta src/app
Header.tsx: En la ruta src/app/components
Es el encargado de la conexión y desconexión de la billetera que tengamos instalada al navegador de la red de stellar
TablaValores.tsx: En la ruta src/app/components
Es el componente estrella de la daap ⭐, sobre todo las funciones:
readMessage: Invoca el metodo get_message del contrato
Algo relevante es que pasamos el mensaje de su almacenamiento del contrato a un tipo nativo
writeMessageInvoca el metodo set_message del contrato.
Pasamos el mensaje de nativo a valor XDR
Para ejecutar el programa ejecutamos:

Todo el proyecto esta en un repositorio github
Last updated
Was this helpful?

