¡Hola, mundo!
Esta guía muestra cómo comenzar a desarrollar en ICP rápidamente implementando su primer contrato inteligente "¡Hola, mundo!".
Elección de un entorno
Para implementar un contrato inteligente simple del tipo “¡Hola, mundo!”, puedes usar una variedad de entornos de desarrollo, como:
Instalación nativa de herramientas en sistemas Linux, Mac o Windows (usando WSL).
Entornos basados en la nube como Gitpod o GitHub Codespaces.
Cada entorno de desarrollador utiliza dfx, una herramienta de línea de comandos que se utiliza para desarrollar e implementar contratos inteligentes en ICP.
¿Qué entorno deberías elegir?
La instalación nativa requiere la descarga e instalación dfxmanual de las dependencias. El uso de una instalación nativa dfxes más adecuado para proyectos grandes.
Gitpod y GitHub Codespaces son entornos de desarrollo basados en la nube a los que se puede acceder a través de un navegador web. Los ejemplos de Gitpod y GitHub Codespace a los que se hace referencia en esta página incluyen las herramientas y dependencias necesarias preinstaladas. Estos entornos utilizan recursos limitados en la nube y es posible que no se adapten bien a la creación de proyectos grandes y complejos.
de contrato inteligente
La Hello, world!dapp predeterminada utiliza dfxla plantilla predeterminada de que contiene dos recipientes hello_backendy hello_frontend.
El hello_frontendcontenedor se utiliza para almacenar los recursos de interfaz de la aplicación descentralizada. Esto incluye archivos como HTML, CSS, JavaScript, React, imágenes y videos.
El hello_backendrecipiente se utiliza para almacenar las funciones y la lógica central de la dapp.

Es importante tener en cuenta que un contenedor puede almacenar tanto los activos del frontend como el código del backend. Sin embargo, dfxde forma predeterminada, se utiliza una plantilla de proyecto con un contenedor dedicado para el frontend, ya que esto permite utilizar cualquier lenguaje para el contenedor del backend sin necesidad de utilizar una biblioteca para la API de almacenamiento de activos.
Motoko
Motoko es un lenguaje basado en actores y representa el contrato inteligente como un actor con varios métodos que los usuarios y otros contratos inteligentes pueden llamar.
Este actor de Hola mundo tiene una única función llamada saludo. Está marcada como consulta porque no modifica el estado del actor. La función acepta un nombre como entrada y devuelve un texto de saludo.
fuente/hola_backend/main.mo
actor {
public query func greet(name : Text) : async Text {
return "Hello, " # name # "!";
};
};
Óxido
Este contrato inteligente de Rust tiene una única función llamada saludo. Está marcada como consulta porque no modifica el estado del contenedor.
La función acepta un nombre como entrada y devuelve un texto de saludo.
fuente/hola_backend/fuente/lib.rs
#[ic_cdk::query]
fn greet(name: String) -> String {
format!("Hello, {}!", name)
}Mecanografiado Beta
Los contenedores TypeScript se pueden escribir utilizando el kit de desarrollo de contenedores Azle. Para los proyectos Azle, necesitará instalar la dfxextensión Azle:
npx azle install-dfx-extensionEl código de contenedor predeterminado para los proyectos de Azle contiene el siguiente código:
src/hola_backend/src/index.ts
import { IDL, query, update } from 'azle';
export default class {
message: string = 'Hello world!';
@query([], IDL.Text)
getMessage(): string {
return this.message;
}
@update([IDL.Text])
setMessage(message: string): void {
this.message = message;
}
}Python
Cree el directorio del proyecto y la estructura de archivos:
src/hola_backend/src/main.py
from kybra import query
@query
def greet(name: str) -> str:
return f"Hello, {name}!"Implementar en el entorno
Implementar los contenedores del proyecto localmente:
dfx deployEste comando realiza varias funciones en segundo plano:
Establece un
cycle-walletcontrato inteligente especial para almacenar ciclos . Todas las operaciones requieren pagos en ciclos. En su red de prueba local, esta billetera viene precargada con ciclos.Construye los contratos inteligentes definidos en el
dfx.jsonarchivo en binarios Wasm.Crea contratos inteligentes en la red de prueba local y guarda sus direcciones en el archivo
./.dfx/local/canister_ids.json.Instala los binarios de Wasm en los nuevos contratos inteligentes.
Llamar a los contratos inteligentes desde la CLI
Motoko
dfx canister call hello_backend greet worldProducción:
("Hello, world!")
Óxido
dfx canister call hello_backend greet worldProducción:
("Hello, world!")Mecanografiado Bet
("Hello world!")Producción:
dfx canister call hello_backend getMessagePython
dfx canister call hello_backend greet worldProducción:
("Hello, world!")Esta llamada realiza varias funciones en segundo plano:
Primero, busca la dirección del contrato inteligente (conocida como ID del recipiente) utilizando el nombre del contrato inteligente
hello_backenden el archivo./.dfx/local/canister_ids.json.Luego, busca la interfaz del contrato inteligente en el archivo
src/declarations/hello_backend/hello_backend.did.Busca la firma de la función saludo en la interfaz.
Construye un mensaje para el
greetpunto final del contrato inteligente con elnametexto dado como argumento.Firma el mensaje con la clave privada de la cuenta de desarrollador .
Envía el mensaje a la red de prueba local ( réplica ).
Una vez ejecutado el mensaje, el resultado se decodificó mediante el archivo de interfaz y se imprimió en la ventana del terminal.
Alternativamente, puede interactuar con el contrato inteligente a través del navegador web si se ha implementado un contrato inteligente de interfaz. Obtenga más información sobre cómo usar el contrato inteligente de interfaz en el navegador web
Last updated