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 :

CBLHRYKD6UPJA75PJ5CCTCY6LO4H3ZY7HFW2SS2JP4US5VRYDEO3I67Harrow-up-right

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-react

react-hot-toast:arrow-up-right Sirve para dar mensajes al usuario acerca de alguna operación

@stellar/stellar-sdk:arrow-up-right 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 XDRarrow-up-right

stellar-react:arrow-up-right Los amigos de la empresa Palta Labsarrow-up-right 🥑, una vez más al rescate, extendiendo la libreria de Stellar-wallets-kitsarrow-up-right 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 nativoarrow-up-right

  • writeMessageInvoca el metodo set_message del contrato.

Pasamos el mensaje de nativo a valor XDRarrow-up-right

Para ejecutar el programa ejecutamos:

Programa en ejecución

Todo el proyecto esta en un repositorio githubarrow-up-right

Last updated

Was this helpful?