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.
- ✅ 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
- 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
fory condicionalmenteif - 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
memoryystorage
struct Task {
string description; // Descripción de la tarea
bool completed; // Estado de completitud
uint256 timestamp; // Momento de creación
}| 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 |
- Clonar el repositorio
git clone https://github.com/tu-usuario/todolist-solidity.git
cd todolist-solidity-
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
-
Compilar el Contrato
- En Remix: Tab "Solidity Compiler"
- Versión: 0.8.26
- Click "Compile ToDoList.sol"
-
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");
TodoList_TaskCreated(Task task)- Emitido al crear una tareaTodoList_TaskCompleted(Task task)- Emitido al completar una tareaTodoList_TaskDeleted(string description, uint256 timestamp)- Emitido al eliminar una tarea
- No hay control de acceso (cualquiera puede modificar tareas)
- Función
deleteTasksolo elimina la primera coincidencia - No hay límites en el número de tareas
- Potencial vector de griefing en loops
Basado en i3arba - 77 Innovation Labs
MIT License - Ver LICENSE para más detalles.
- Documentación de Solidity
- Remix IDE
- OpenZeppelin
- Dirección del Contrato desplegados en Sepolia
Proyecto desarrollado como parte del curso de desarrollo de Smart Contracts