Skip to content

Latest commit

 

History

History
150 lines (101 loc) · 14.5 KB

Starknet-Edu-101.md

File metadata and controls

150 lines (101 loc) · 14.5 KB

StarkNet Cairo 101

Comencemos usando Cairo con este simple tutorial. Completa los ejercicios, obtén tokens y aprende sobre los contratos inteligentes de StarkNet!

Introducción

Disclaimer

Usando esto, no esperes otro beneficio que aprender algunas cosas interesantes sobre StarkNet, el primer rollup de validez (validity rollup) de propósito general en la red principal de Ethereum (Mainnet).

StarkNet aún esta en Alpha. Esto significa que sigue en desarrollo, la pintura está fresca. Las cosas mejorarán, y mientras tanto, estamos haciendo que las cosas funcionen con un poco de cinta y alambres por aquí y por allí.

Cómo funciona

Completa los ejercicios y obtén tokens! Este workshop consiste en un conjunto de contratos inteligentes corriendo en la testnet de StarkNet Alpha. Cada contrato es un ejercicio - que remarca alguna característica/feature del lenguaje de programación Cairo.

Al completar el ejercicio se te acreditarán puntos en forma de ERC20 token.

​Este workshop se enfoca en leer código Cairo y contratos inteligentes de StarkNet para entender su sintaxis. No es necesario programar o instalar nada en tu computadora para seguirlo y completarlo.

Va a tomarte algo de tiempo comenzar (hacer los primeros dos ejercicios) con el tutorial. Paciencia! una vez que estés allí, las cosas van a fluir mejor. ¡Estás aprendiendo!

¿Dónde me encuentro?

Este workshop es el primero en una serie cuyo objetivo es enseñar a construir en StarkNet. Puedes obtener más información en los siguientes links:

Topic GitHub repo
Aprende a leer código Cairo (Estás aquí) Cairo 101
Despliega y edita un NFT ERC721 StarkNet ERC721
Despliega y edita un token ERC20 StarkNet ERC20
Construye una aplicacion multi-capa Puente de mensajes de StarkNet
Debugea tus contratos Cairo fácilmente StarkNet debug
Diseña tu propio contrato de cuenta Abstracción de cuenta de StarkNet

Feedback y ayuda

Una vez que hayas terminado con este tutorial, tu feedback será muy apreciado!

Por favor llena este formulario para dejarnos saber qué podemos mejorar.

Y si se te complica seguir adelante, déjanos saber! La idea de este workshop es que sea lo más accesible posible; queremos saber si no es el caso.

¿Tienes alguna pregunta? Visita nuestro Server de Discord, regístrate, y visita el canal #tutorials-support.

¿Estás interesado/a en seguir workshops online sobre aprender cómo desarrollar en StarkNet? Subscríbete

Contribuidores

Este proyecto puede mejorarse y va a evolucionar a medida que StarkNet madure. ¡Tus contribuciones son bienvenidas! Aquí hay algunas cosas que puedes hacer para ayudar:

  • Crear una rama con la traducción a tu idioma.
  • Corregir errores si encuentras alguno.
  • Agregar explicaciones en los comentarios del ejercicio si sientes que necesita mejor explicación.
  • Agregar ejercicios mostrando tus características favoritas de Cairo.

Idiomas

  • Versión disponible en Inglés aquí.
  • Versión disponible en Mandarín 中文版本请查看这里aquí.

Comencemos

Creando una smart contract wallet (billetera de contrato inteligente)

Para completar este tutorial necesitas coleccionar puntos Estos puntos van a ser adquiridos por el contrato inteligente que vas a desplegar.

  • La forma mas fácil de iniciar una es usando Argent X (descarga la extensión de chrome o checkea su repo) o Braavos (descargar extensión de chrome). Estas billeteras son similares a lo que Metamask es para Ethereum y permite a los usuarios iniciar transacciones e interactuar con aplicaciones en StarkNet.
  • Sigue las instrucciones para instalar la extensión y desplegar una contrato de cuenta inteligente (puede tomar más o menos 5 minutos para ser desplegado). Por favor nota que en StarkNet solo hay un tipo de cuentas - cuentas de contrato inteligente (esto se llama Abstracción de cuenta), en contraste a Ethereum donde hay billeteras y contratos inteligentes. En otras palabras, cada billetera en StarkNet es un contrato inteligente y no existe distinción entre ellos y otros contratos. Por lo tanto, para crear una nueva billetera, necesitas desplegar una transacción que publique tu billetera de contrato inteligente a la red.
  • Asegúrate de que estés en la red testnet de Goerli.
  • Los puntos de este tutorial estan contenidos en el contrato [0x5c6b1379f1d4c8a4f5db781a706b63a885f3f9570f7863629e99e2342ac344c](https://goerli.voyager.online/contract/0x5c6b1379f1d4c8a4f5db781a706b63a885f3f9570f7863629e99e2342ac344c). Clickea en "Add Token" (Agregar Token) en tu billetera instalada y la dirección del contrato para que tus puntos de balance aparezcan! Un nuevo token llamado SC101 (starknet-cairo-101) aparecerá en tu billetera.
  • Conectar Voyager a tu contrato de cuenta inteligente. Voyager está en el explorador de bloques para StarkNet (Equivalente a Etherscan para Ethereum) y te permite navegar el estado de la blockchain, ver todas las transacciones y sus estados. Conectar Voyager a tu billetera, te va a permitir enviar tus transacciones a través de la billetera.
  • Para ejecutar transacciones en la red de prueba Goerli de StarkNet vas a necesitar ETH de prueba para pagar el gas. Para obtener un poco, ve a faucet y sigue las instrucciones. Podría tomar varios minutos, pero deberías recibir algunos ETH Goerli L2 en tu billetera que puedes usar para ejecutar transacciones en la red de prueba.

Resolviendo ejercicios y obteniendo puntos

Cada ejercicio es un contrato inteligente separado. Contiene código que, si se ejecuta correctamente, va a distribuir puntos en tu cuenta.

Los puntos son distribuidos por la función distribute_points() mientras la función validate_exercise registra que haz completado el ejercicio (puedes obtener puntos solo una vez). Tu objetivo es:

Graph

Usando Voyager

Para este tutorial, vamos a interactuar con nuestros contratos a través de Voyager, el explorador de StarkNet. Por favor, asegúrate de conectar tu cuenta contrato de cuenta! Esto va a permitirte enviar tus transacciones a través de la billetera.

Cuando busques hacer algún contrato/transacción, siempre asegúrate de que estés en la versión Goerli de Voyager!

Direcciones de los ejercicios y contratos

Tópico Código del contrato Contrato en Voyager
Contador de puntos ERC20 Contador de puntos ERC20 Link
Sintaxis general Ex01 Link
Variables de almacenamiento, getters, asserts Ex02 Link
Leyendo y escribiendo variables de almacenamiento Ex03 Link
Mappings Ex04 Link
Visibilidad de variables Ex05 Link
Visibilidad de funciones Ex06 Link
Comparando valores Ex07 Link
Recursiones nivel 1 Ex08 Link
Recursiones nivel 2 Ex09 Link
Composability Ex10 Link
Importando funciones Ex11 Link
Eventos Ex12 Link
Privacidad en StarkNet Ex13 Link
Multicall (Llamadas múltiples) Ex14 Link

Contando tus puntos

​Tus puntos serian acreditados en tu billetera instalada; aunque esto puede llevar algo de tiempo. Si quieres monitorear tus puntos en tiempo real, también puedes ver tu balance en voyager! ​

  • Ve al contador ERC20 en Voyager, en la tab "read contract".
  • Ingresa tu dirección en la función "balanceOf".

Tambien puede checkear tu progreso general aquí.

Soluciones

Cada solución se encuentra por carpetas independiente, así como su codigo de cairo. ​

Estado de la transacción

​Si envías un transacción y es mostrada como "undetected" en Voyager, esto puede significar dos cosas:

  • Tu transacción está pendiente y va a ser incluida en un bloque pronto. Luego será visible en Voyager.
  • Tu transacción fué inválida y NO será incluida en un bloque (no existe tal cosa como transacción fallida en StarkNet).

Puedes (y deberías) checkear el estado de tu transacción con la siguiente URL ​https://alpha4.starknet.io/feeder_gateway/get_transaction_receipt?transactionHash=, donde puedes concatenar tu hash de transacción. ​ ​## Reutilizando este proyecto

  • Clona el repositorio en tu máquina oficial de Edu-Starknet.
  • Haz el setup del entorno siguiendo estas instrucciones.
  • Instala Nile.
  • Si tiene problemas con Nile, puede seguir la repo Nile Nadai
  • Verifica que el proyecto compile.
nile compile