Skip to content

javierpmateos/tpclase04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

📋 ToDoList Smart Contract

Descripción del Proyecto

Este es un contrato inteligente desarrollado en Solidity que implementa una lista de tareas (ToDo List) descentralizada. El contrato permite a los usuarios crear, completar y eliminar tareas de manera segura en la blockchain.

Características Principales

  • Crear tareas con descripción y timestamp automático
  • Marcar tareas como completadas
  • Eliminar tareas por descripción
  • Consultar tareas individuales por índice
  • Eventos para tracking de actividades

Tópicos Técnicos Implementados

  • Structs: Definición de la estructura Task
  • Arrays Dinámicos: Almacenamiento de tareas en s_tasks[]
  • Tipos de Datos: Manejo de tipos valor y referencia
  • Variables Globales: Uso de block.timestamp
  • Estructuras de Control: Loops con for y condicionalmente if
  • Funciones Hash: Comparación de strings con keccak256
  • Funciones ABI: Encoding con abi.encodePacked
  • Events: Emisión de eventos para logging
  • Memory Management: Uso correcto de memory y storage

Estructura del Contrato

struct Task {
    string description;    // Descripción de la tarea
    bool completed;        // Estado de completitud
    uint256 timestamp;     // Momento de creación
}

Funciones Principales

Función Descripción Tipo
createTask() Crea una nueva tarea external
getTask() Obtiene una tarea por índice external view
completeTask() Marca una tarea como completada external
deleteTask() Elimina una tarea por descripción external

Cómo Clonar y Ejecutar

IDE Recomendado

  1. Clonar el repositorio
git clone https://github.com/tu-usuario/todolist-solidity.git
cd todolist-solidity
  1. Abrir en Remix IDE

    • Ve a remix.ethereum.org
    • Crea un nuevo archivo ToDoList.sol
    • Copia y pega el código del contrato
    • Compila con Solidity 0.8.26
  2. Compilar el Contrato

    • En Remix: Tab "Solidity Compiler"
    • Versión: 0.8.26
    • Click "Compile ToDoList.sol"
  3. Desplegar en Testnet

    • Conecta MetaMask a una testnet (Sepolia recomendada)
    • En Remix: Tab "Deploy & Run Transactions"
    • Selecciona "Injected Provider - MetaMask"
    • Click "Deploy"

## Contrato Desplegado

### 🌐 Información de Deployment

- **Red**: [Nombre de la testnet, ej: Sepolia]
- **Dirección del Contrato**: `[Dirección del contrato]`
- **Block Explorer**: [Enlace al contrato en Etherscan/Block Explorer]
- **Hash de Transacción**: `[Hash de deployment]`

### Verificación del Contrato

El contrato ha sido verificado en el block explorer y puede ser consultado públicamente.

## Ejemplo de Uso

```javascript
// Crear una nueva tarea
await toDoList.createTask("Estudiar Solidity");

// Obtener la primera tarea (índice 0)
const task = await toDoList.getTask(0);

// Completar la tarea
await toDoList.completeTask(0);

// Eliminar una tarea
await toDoList.deleteTask("Estudiar Solidity");

Eventos del Contrato

  • TodoList_TaskCreated(Task task) - Emitido al crear una tarea
  • TodoList_TaskCompleted(Task task) - Emitido al completar una tarea
  • TodoList_TaskDeleted(string description, uint256 timestamp) - Emitido al eliminar una tarea

Consideraciones de Seguridad

⚠️ ADVERTENCIA: Este contrato es para fines educativos únicamente. No usar en producción.

Limitaciones Conocidas

  • No hay control de acceso (cualquiera puede modificar tareas)
  • Función deleteTask solo elimina la primera coincidencia
  • No hay límites en el número de tareas
  • Potencial vector de griefing en loops

Autor

Basado en i3arba - 77 Innovation Labs

Licencia

MIT License - Ver LICENSE para más detalles.


🔗 Enlaces Útiles


Proyecto desarrollado como parte del curso de desarrollo de Smart Contracts

About

ToDoList Smart Contract: permite a los usuarios crear, completar y eliminar tareas de manera segura en la blockchain.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors