10 minutos de lectura
Resumen
Desarrollar en Ethereum resultar caro, pero ¿y si existiera una alternativa más accesible y eficiente?
Flow es una tecnología de cadena de bloques que opera en el protocolo de capa 1, lo que le permite alcanzar una alta escalabilidad sin necesidad de fragmentación. Su arquitectura única con múltiples funciones la distingue de otras cadenas de bloques y le permite escalar verticalmente. Si bien características como los contratos inteligentes actualizables y la compatibilidad integrada con el registro de eventos resultan atractivas para los desarrolladores, la función de cuentas de usuario inteligentes, que elimina el problema de perder la frase de semillas, es fundamental para mejorar la experiencia del usuario y hacerla más segura.
En esta guía, conocerás Flow, una innovadora plataforma de blockchain que redefine la simplicidad y la escalabilidad. Aquí descubrirás cómo crear un contrato inteligente «HelloWorld» e interactuar con él utilizando el intuitivo lenguaje de programación Flow, Cadence, y las potentes herramientas Quicknode Flow .
Aunque nuestro viaje exploratorio tiene lugar en el entorno de pruebasTestnet Flow Testnet, ten por seguro que las habilidades que adquirirás son totalmente transferibles aMainnet Flow . ¡Cambiemos el rumbo y transformemos juntos lo complejo en algo sencillo!
Lo que necesitarás
- Conocimientos básicos sobre los conceptos de la cadena de bloques
- Node.js instalado (versión 18.16 o superior)
- Se ha instalado la interfaz de línea Flow (Flow )
- Un editor de código (por ejemplo, Visual Studio Code)
Puedes descargar e instalar cada dependencia haciendo clic en los enlaces anteriores y siguiendo las instrucciones correspondientes.
Dependencias utilizadas en esta guía
| Dependencia | Versión |
|---|---|
| node.js | 18.16.0 |
| flow | 1.1.1 |
Tus funciones
- Descubre la Flow
- Infórmate sobre el lenguaje de programación Cadence
- Crear una Flow mediante Flow
- Crea un sencillo
Hola, mundocontrato inteligente - Implementa el contrato inteligente en la Flow
- Interactúa con el contrato inteligente
¿Qué hace que Flow ?
Procesamiento en serie
Flow una nueva solución para mejorar la escalabilidad, la descentralización y la seguridad sin aumentar la complejidad para los desarrolladores. Gracias a su arquitectura multinodo, esto se consigue mediante tipos de nodos especializados que se encargan de diferentes tareas a lo largo del proceso de las transacciones.
Flow técnicas de canalización dividiendo las tareas de un nodo validador en cuatro funciones distintas: recopilación, consenso, ejecución y verificación.
Pipelining, fuentes de las imágenes: Departamento de Informática de Stanford
Posibilidad de actualización
La mayoría de los contratos inteligentes son immutable no pueden modificarse a menos que se utilicen complicados patrones de diseño de proxy actualizables durante su implementación. Sin embargo, Flow cuenta con una opción denominada «estado beta», que permite a los desarrolladores actualizar sus contratos inteligentes con facilidad. Al interactuar con el contrato, se informa a los usuarios de que se encuentra en fase beta y se les ofrece la opción de esperar hasta que el código esté completo. El contrato pasa a ser immutable el estado beta.
Lenguaje de programación de contratos inteligentes: Cadence
Cadence, un lenguaje de programación orientado a recursos, se utiliza para el despliegue de contratos inteligentes en Flow.
Si eres desarrollador de Solidity, es posible que te resulte un poco extraño el novedoso enfoque de Cadence para la creación de contratos inteligentes. Existen diferencias significativas en cuanto a la plataforma, la filosofía y algunas nuevas características del lenguaje que Solidity no admite. Consulta Guía para desarrolladores de Solidity puede resultarte útil, ya que está pensada para facilitar la incorporación de los desarrolladores de Solidity a Flow .
Configuración para desarrolladores
Acceder a Flow Quicknode
En esta guía se utilizan los puntos finales gRPC . No obstante, se recomienda encarecidamente utilizar los puntos finales Quicknode cuando se utilice la API REST.
Para desarrollar en Flow, necesitarás un endpoint de API endpoint conectarte a la red. Puedes utilizar nodos públicos o implementar y gestionar tu propia infraestructura; sin embargo, si deseas tiempos de respuesta 8 veces más rápidos, puedes dejarnos a nosotros el trabajo pesado. Descubre por qué más del 50 % de los proyectos en Flow Quicknode regístrate aquí para crear una cuenta.

Configuración del proyecto
Para configurar el proyecto, necesitas un emulador de terminal (por ejemplo, Terminal o Windows PowerShell) y un editor de código (por ejemplo, Visual Studio Code).
Ejecuta el siguiente código en tu terminal para configurar el proyecto. El nombre de nuestra carpeta de proyecto será holaMundo, pero puedes cambiar el nombre como quieras. El --andamio La opción «flag» sirve para utilizar los «scaffolds» proporcionados, que son plantillas de proyecto que puedes utilizar para poner en marcha tu desarrollo.
flow setup helloWorld --scaffold
Si el terminal necesita que introduzcas datos para número de andamio, puedes seleccionar la primera opción [1] Proyecto «Empty Cadence». Crea una estructura de carpetas básica y flow.json archivo de configuración, un archivo de configuración con redes, cuentas, implementaciones, y contratos propiedades dentro de la holaMundo carpeta.
Ejecuta el comando para cambiar de directorio.
cd helloWorld
Una vez creada la carpeta del proyecto, ya puedes pasar a crear un Flow .
Crear una Flow
Para implementar un contrato inteligente, debes crear una cuenta en la Flow utilizando Flow . Por suerte, Flow cuenta con un comando muy útil para crear una cartera y recargarla automáticamente.
Para configurar el monedero, ejecuta el siguiente código en tu terminal.
Crear flow
A continuación, introduce un nombre de cuenta y selecciona la red. Escribimostestnet como nombre de cuenta y seleccionamosTestnet» como red.
La salida de la consola debería ser similar a la que se muestra a continuación.
🎉 New account created with address 0x66105514db20bf0d and name testnet-account on Testnet network.
Here's a summary of all the actions that were taken:
- Added the new account to flow.json.
- Saved the private key to testnet-account.pkey.
- Added testnet-account.pkey to .gitignore.
Tal y como se indica en la salida, este comando realiza las siguientes acciones:
- Añade la nueva cuenta a la
flow.jsonarchivo - Guarda la clave privada en el
pkeyarchivo - Añade el
pkeyarchivo a la.gitignorearchivo
Una vez completado este paso, tu cuenta ya estará creada y con fondos.
Comprobación del archivo de configuración
Archivo Flow (flow.json) se utiliza para definir redes (es decir, mainnet, testnet), cuentas, destinos de implementación y contratos que se van a implementar. Por lo tanto, en el archivo de configuración deben incluirse las siguientes propiedades:
redesque predefine la configuración mainnet Flow , testnet y mainnetcuentasque predefine la cuenta Flow y tu cuenta recién creadaimplementacionesdonde se pueden definir todos los destinos de implementacióncontratosdonde se pueden definir todos los contratos que se utilizarán en el proyecto
Es posible que el estado predeterminado del archivo no incluya todas las propiedades mencionadas. En ese caso, puedes añadir las propiedades que falten, tal y como se muestra en el ejemplo siguiente. Además, si ya hay algunas definiciones de contrato en la propiedad «contracts», puedes eliminarlas, ya que no se utilizan en esta guía.
Abre el flow.json Abre el archivo con tu editor de texto y asegúrate de modificarlo para que sea similar al archivo de ejemplo que aparece a continuación.
{
"networks": {
«emulador»: «127.0.0.1:3569»,
«mainnet»: «access.mainnet.nodes.onflow.org:9000»,
«testnet»: «access.devnet.nodes.onflow.org:9000»
},
"accounts": {
"emulator-account": {
«dirección»: «f8d6e0586b0a20c7»,
«clave»: «6d12eebfef9866c9b6fa92b97c6e705c26a1785b1e7944da701fc545a51d4673»
},
"YOUR_ACCOUNT_NAME": {
«dirección»: «DIRECCIÓN_DE_TU_CUENTA»,
"key": {
«tipo»: «archivo»,
«ubicación»: «TU_ARCHIVO_DE_CLAVE_PÚBLICA_DEL_MONEDERO»
}
}
},
"deployments": {},
"contracts": {}
}
Cuando creamos un monedero utilizando el Crear flow Con el comando anterior, nuestra cuenta se añadía automáticamente a este archivo de configuración. Sin embargo, si tuvieras credenciales de monedero que quisieras importar, deberías añadirlas aquí. (Véase Configuración de la Flow (Consulta la documentación para obtener más detalles.)
A continuación verás los datos de acceso a tu cuenta detallados en el cuentas objeto.
Los marcadores de posición NOMBRE_DE_TU_CUENTA, DIRECCIÓN_DE_TU_CUENTAy TU_ARCHIVO_DE_CLAVE_PRIVADA_DEL_MONEDERO anteriores representan el nombre de tu cuenta, la dirección de tu cuenta y el archivo de la clave privada (pkey).
-
YOUR_ACCOUNT_NAME es el nombre de la cuenta que elijas al crearla.
-
DIRECCIÓN_DE_TU_CUENTA es la dirección que se proporciona tras crear la cuenta. La dirección de la cuenta será diferente en tu archivo.
-
TU_ARCHIVO_DE_CLAVE_PÚBLICA_DEL_MONEDERO es el archivo de clave privada que contiene la clave privada de tu cuenta. La clave privada se importa desde el
pkeyarchivo. El nombre del archivo puede variar si el nombre de tu cuenta es diferente.
Una vez creado el contrato inteligente «helloWorld», debes configurar el implementaciones y contratos objetos dentro de flow.json. Esto se explicará en las siguientes secciones.
Creación del contrato inteligente
En esta guía se utilizará un contrato inteligente sencillo de tipo «Hello World ». La parte relativa a la programación se explica con detalle aquí.
Ve a la ./cadence/contratos directorio y crea un archivo llamado HelloWorld.cdc en él ejecutando los siguientes comandos.
cd cadence/contracts
echo > HelloWorld.cdc
Hasta ahora, la estructura de carpetas debería ser como la que se muestra a continuación.
├── README.md
├── cadence
│ ├── contracts
│ │ └── HelloWorld.cdc
│ ├── scripts
│ ├── tests
│ └── transactions
├── flow.json
└── testnet-account.pkey
A continuación, abre el HelloWorld.cdc archivo con tu editor de código. Copia el código que aparece a continuación y pégalo en el archivo.
El contrato inteligente declara un campo público de Cadena tipo denominado saludo, y lo define como «Hello, World» durante la inicialización del contrato inteligente. Además, el hola La función devuelve el valor «saludo».
// HelloWorld.cdc
//
pub contract HelloWorld {
// Declare a public field of type String.
//
// All fields must be initialized in the init() function.
pub let greeting: String
// The init() function is required if the contract contains any fields.
init() {
self.greeting = "Hello, World!"
}
// Public function that returns our friendly greeting!
pub fun hello(): String {
return self.greeting
}
}
Preparación para el despliegue
Como habrás podido observar, hasta ahora las propiedades de «deployments» y «contracts» de la configuración de ejemplo estaban en blanco. Debes modificarlas de acuerdo con los contratos inteligentes.
En la propiedad «contracts» se definen, respectivamente, el nombre y la ruta de todos los contratos inteligentes.
Hola, mundoes el nombre del contrato inteligente,./cadence/contracts/HelloWorld.cdces la ruta del contrato inteligente.
En la propiedad «deployments» se definen el nombre de la cuenta y todos los contratos inteligentes.
testnetes el nombre de la red, que hace referencia a la testnet valor que hemos configurado en el red objetocuenta testnetes el nombre de la cuenta que elegiste al crear el Flow , que hace referencia a la cuenta testnet objeto en el cuenta objeto[HolaMundo]es la matriz que contiene los nombres de los contratos inteligentes, que se definen en el contrato objeto, que se va a implementar
Puedes consultar el último archivo de configuración y la imagen para aclarar todas las definiciones. Fíjate en las flechas de la imagen para comprender bien las referencias.
Además, asegúrate de que el nombre de la cuenta, la dirección de la cuenta y el nombre del archivo pkey estén asociados a tu cuenta. En la imagen siguiente se muestran las credenciales de nuestra cuenta.
La clave privada de la cuenta del emulador es pública y solo debe utilizarse para el desarrollo local. Por eso, su clave no está oculta.
Archivo de configuración
{
"networks": {
«emulador»: «127.0.0.1:3569»,
«mainnet»: «access.mainnet.nodes.onflow.org:9000»,
«testnet»: «access.devnet.nodes.onflow.org:9000»
},
"accounts": {
"emulator-account": {
«dirección»: «f8d6e0586b0a20c7»,
«clave»: «6d12eebfef9866c9b6fa92b97c6e705c26a1785b1e7944da701fc545a51d4673»
},
"YOUR_ACCOUNT_NAME": {
«dirección»: «DIRECCIÓN_DE_TU_CUENTA»,
"key": {
«tipo»: «archivo»,
«ubicación»: «TU_ARCHIVO_DE_CLAVE_PÚBLICA_DEL_MONEDERO»
}
}
},
"deployments": {
"testnet": {
«NOMBRE_DE_TU_CUENTA»: [«HelloWorld»]
}
},
"contracts": {
«HelloWorld»: «./cadence/contracts/HelloWorld.cdc»
}
}
Implementación
Ya está todo listo para desplegar un contrato inteligente entestnet Flow . Asegúrate de que te encuentras en el directorio principal (holaMundo) en tu terminal. Si estás en el cadencia/contratos carpeta, ejecuta el siguiente código para cambiar de directorio.
cd ../..
Ejecuta el siguiente código en tu terminal para implementar el contrato inteligente HelloWorld.
flow deploytestnet
Si todo va bien, la salida de la consola debería ser similar a la que se muestra a continuación.
Deploying 1 contracts for accounts: testnet-account
HelloWorld -> 0x66105514db20bf0d (3b601c2d8eba20f7066f10d69208a13463d2a5e97488dae55940edbfae87e5a7)
🎉 All contracts deployed successfully
Puedes consultar el saldo de tu cuenta, los contratos inteligentes y las transacciones en el explorador Flow .
- Accede al Testnet Flow
- Pega la dirección de tu cuenta (0x...) en el formulario
- Haz clic en el botón «Explorar»
Interactúa con el contrato inteligente
Ahora, vamos a aprender a interactuar con el contrato inteligente mediante Flow .
Crea un archivo de script llamado getHello.cdc bajo el cadence/scripts carpeta ejecutando los siguientes comandos.
cd cadence/scripts
echo > getHello.cdc
Pega el código siguiente en el archivo de script. El script llama a la función hola() función de la Hola, mundo contrato inteligente.
import "HelloWorld"
pub fun main(): String {
return HelloWorld.hello()
}
Ejecuta el siguiente código para ir al directorio principal (holaMundo).
cd ../..
Ejecuta el comando que aparece a continuación para ejecutar el archivo de script.
flow scripts execute ./cadence/scripts/getHello.cdc --network=testnet
La salida de la consola debería ser similar a la que se muestra a continuación. Como puedes observar, devuelve un valor de saludo al llamar a la hola función del contrato inteligente HelloWorld.
Resultado: «¡Hola, mundo!»
¡Enhorabuena! ¡Acabas de implementar tu primer contrato inteligente enTestnet Flow Testnet has aprendido a interactuar con él!
Flow
Echa un vistazo a los siguientes enlaces para obtener más información sobre Flow:
Conclusión
¡Y eso es todo! A estas alturas, ya deberías tener una idea clara de cómo crear e implementar contratos inteligentes en Flow Cadence. Te hemos guiado en cada paso del proceso. En primer lugar, te hemos ayudado a comprender los conceptos básicos de Flow Cadence. A continuación, hemos pasado a crear y recargar un monedero. Por último, hemos repasado el proceso de escribir un contrato inteligente e implementarlo en la Flow .
Recuerda que aprender es un proceso, y que la práctica es fundamental para dominar cualquier habilidad nueva. Así que no te limites a comprender el tema; ¡empieza a crear y a poner en marcha tus contratos inteligentes!
Si tienes algún problema o alguna duda, ¡estaremos encantados de ayudarte! Búscanos en Discord o en Twitter.
