⚠️ ATENCIÓN: Este repositorio es exclusivamente para profesores de Basecamp.
Si eres un desarrollador que busca aprender Starknet, visita speedrunstark.com.
¡Bienvenido al Tutorial de Basecamp Scaffold! Este proyecto ofrece una guía paso a paso para construir aplicaciones descentralizadas en Starknet usando Scaffold-Stark. A lo largo de una serie de pasos progresivos, aprenderás a crear, desplegar y mejorar smart contracts mientras construyes un frontend listo para producción.
💡 Nota: A lo largo de este tutorial, todo el código HTML y CSS se proporciona en comentarios; no es necesario que lo escribas. Concéntrate en implementar los hooks y la lógica del contrato según se indica en cada paso.
Este tutorial te guía para construir una aplicación descentralizada en tres pasos progresivos, con cada sección diseñada para tomar entre 30 y 40 minutos en un entorno de taller. Todos los cambios a lo largo del tutorial se concentran en solo dos archivos principales:
- Frontend:
packages/nextjs/app/page.tsx
- Smart Contract:
packages/snfoundry/contracts/src/yourcontract.cairo
El tutorial está dividido en los siguientes pasos:
-
Paso 0: Base de Scaffold Stark (branch: step-0)
- Comienza desde cero como un clon nuevo de Scaffold-Stark
- En este paso, mostramos el diseño de la UI básica y el diseño del contrato con la pestaña
debug-ui
- Juegue con la pestaña
debug-ui
, enviando transacciones y leyendo valores - Diseño de la interfaz de usuario básica sin funcionalidad
-
Paso 1: Integración de Hooks Básicos (branch: step-1)
- No se necesitan actualizaciones de contrato, es hora de escribir la UI
- Cambios solo en
page.tsx
- Presenta los hooks principales de Scaffold-Stark (
useScaffoldWriteContract
,useScaffoldReadContract
,useScaffoldMultiWriteContract
,useTargetNetwork
,useDeployedContractInfo
) - Ahora puede interactuar con el contrato usando los hooks en la UI e implementar el contrato y el sitio web en la red que elija
- En este punto deberíamos mostrar una implementación de
MAINNET
oSEPOLIA
- En este punto deberíamos mostrar una implementación de
VERCEL
- Ver cambios desde step-0 al step-1
-
Paso 2: Soporte Multi-Token (branch: step-2)
- Actualiza
YourContract.cairo
para admitir depósitos de STRK y ETH - Mejora
page.tsx
con selección de tokens y visualización de balances. - Introduce el hook
useScaffoldEventHistory
para obtener eventos filtrados del contrato - No necesitamos mostrar aquí la implementación de
MAINNET
oSEPOLIA
ni la implementación deVERCEL
- En este punto, el usuario debería poder enviar STRK y ETH al contrato a través de nuestra UI y ver los eventos registrados en la parte inferior.
- Ver cambios del step-1 al step-2
- Actualiza
-
Paso 3: Integración Completa con zklend (branch: step-3)
- Actualiza
YourContract.cairo
con la integración del protocolo zklend - Todos los depósitos de STRK y ETH ahora se envían a zklend para rendimientos haciendo yield farming
- Presenta el desarrollo en un mainnet fork
- Pequeñas actualizaciones en
page.tsx
yscaffold.config.ts
para admitir pruebas en mainnetFork - Incluye pasos para despliegue en mainnet
- Puedes enviar STRK y ETH junto con un saludo, estos depósitos generarán rendimiento desde el primer segundo en adelante, el propietario puede retirar el rendimiento en cualquier momento
- Ver cambios de step-2 a step-3.
- Actualiza
Cada paso se construye sobre el anterior, introduciendo nuevos conceptos y características mientras se mantiene una base de código limpia y lista para producción.
-
Clonar y Configurar
git clone https://github.com/Scaffold-Stark/basecamp.git cd basecamp git checkout step-0 yarn install
-
Configuración del Entorno
# [OPCIONAL] La instalación posterior debería haber creado el archivo .env para usted; de lo contrario, copie el archivo env de ejemplo en packages/snfoundry cp packages/snfoundry/.env.example packages/snfoundry/.env
Ejemplo de
packages/snfoundry/.env
para Sepolia:PRIVATE_KEY_SEPOLIA=0xTUCLAVE RPC_URL_SEPOLIA=https://starknet-sepolia.public.blastapi.io/rpc/v0_7 ACCOUNT_ADDRESS_SEPOLIA=0xTUDIRECCION
⚠️ NUNCA compartas ni subas tu archivo.env
ni expongas tu clave privada.
💡 El archivo.env
pertenece al directoriopackages/snfoundry/
donde viven tus contratos inteligentes.
🔥 ¡Prueba usar mainnet para enseñar! Usa el mismo formato pero reemplazaSEPOLIA
conMAINNET
en los nombres de las variables. -
Iniciar el Desarrollo
# Terminal 1 yarn deploy --network sepolia # Terminal 2 yarn start
-
Guía de desarrollo
- Comienza con la rama
step-0
que proporciona el diseño básico - Abre
packages/nextjs/app/page.tsx
en tu editor - Compara con los cambios de step-0 a step-1 para ver qué se debe implementar
- Implementa los ganchos y la funcionalidad como se indica en los comentarios de la sección
What You'll Build
, asegúrate de comprender lo que estamos construyendo a través de cada uno de los pasos - Usa la vista de comparación como referencia si te quedas atascado
- Comienza con la rama
💡 Sugerencia: La rama de cada paso contiene la implementación completa. Si te quedas atascado, siempre puedes verificar el código final en la rama correspondiente o usar los enlaces de comparación provistos anteriormente.
Para actualizar la rama base desde Scaffold-Stark main:
# Desde un terminal sin el directorio `basecamp-temp`
git clone [email protected]:Scaffold-Stark/basecamp.git basecamp-temp && cd basecamp-temp && git checkout base && mkdir temp_scaffold && cd temp_scaffold && git clone [email protected]:Scaffold-Stark/scaffold-stark-2.git . && rm -rf .git .github README.md && cp -r * ../ && cd .. && rm -rf temp_scaffold && git add . && git commit -m "Update framework to latest version" && git push origin base
Para actualizar cada paso con cambios desde el paso anterior:
git checkout step-0 && git merge base --no-edit && git push origin step-0
git checkout step-1 && git merge step-0 --no-edit && git push origin step-1
git checkout step-2 && git merge step-1 --no-edit && git push origin step-2
git checkout step-3 && git merge step-2 --no-edit && git push origin step-3
Este proceso hará lo siguiente:
- Clonará el repositorio del tutorial
- Actualizará el marco base
- Fusionará los cambios progresivamente de cada paso al siguiente
- Enviará las ramas actualizadas