|
Grado en Ingeniería Informática |
TRABAJOS FIN DE GRADO curso: 2021-22
Almacenamiento seguro de documentos basado en blockchain |
Tecnologías Específicas
Ingeniería de Computadores
Descripcion y Objetivos
La tecnología blockchain surge en el mundo de las criptomonedas, proporcionando un sistema altamente
distribuido donde registrar transacciones (inicialmente económicas, aunque las aplicaciones en diversos
ámbitos son múltiples). Blockchain ofrece propiedades como la inmutabilidad de los registros almacenados,
la transparencia de los datos, o la descentralización y la alta disponibilidad de la información
almacenada. Estas propiedades lo hacen atractivo para almacenar archivos digitales de diversos tipos
(libros, obras de arte en formato digital, …), asegurando su integridad y accesibilidad en todo momento. No
obstante, almacenar el documento en sí en la blockchain puede ser prohibitivo en términos de coste de
almacenamiento, sobre todo en caso de ficheros “pesados” (por ejemplo, un vídeo artístico en muy alta
definición). Es por ello que una aproximación comúnmente usada es almacenar en la blockchain algún tipo
de metadato asociado al archivo digital que asegure su integridad (por ejemplo, un hash) junto con su
localizador en un sistema de almacenamiento distribuido “off-chain”. Ejemplos de esto último
son InterPlanetary File System (IPFS) o Swarm.
Por otro lado, sobre el concepto básico inicial de blockchain se apoya la abstracción de los contratos
inteligentes (smart contracts). Un contrato inteligente especifica código almacenado en la blockchain que se
ejecuta de manera automática al ocurrir algún evento concreto. Los contratos inteligentes se ejecutan de
manera independiente en todos los nodos que participan en la cadena de bloques y pueden verse en
conjunto como un computador distribuido. Un conjunto de contratos inteligentes que se ejecutan en una
plataforma blockchain dan lugar a una DApp (decentralized application).
El objetivo general de este TFG es diseñar un prototipo de DApp que permita almacenar y recuperar de
forma segura archivos digitales a través de blockchain, junto con otro sistema de almacenamiento
distribuido.
Metodología y Competencias
Para el desarrollo de este TFG se hará uso de una metodología ágil basada en Scrum. Se mantendrán reuniones quincenales con los tutores para el correcto seguimiento y retroalimentación del trabajo.
En cuanto al plan de trabajo, a priori se definen las siguientes fases:
- Estudio de la tecnología blockchain y más concretamente de su implementación Ethereum.
- Análisis comparativo de las plataformas de almacenamiento distribuido existentes (IPFS, Swarm, …)
- Definición de la arquitectura de la solución propuesta, incluyendo el tipo de blockchain a utilizar (permissionless/permissioned/consortium), en base a los requisitos de la aplicación.
- Implementación y despliegue de la aplicación desarrollada, empleando contenedores Docker siempre que sea posible.
- Evaluación funcional y no funcional de la aplicación desarrollada.
Las competencias que se aplican en el caso de la Tecnología de Ingeniería de Computadores son:
[IC3] Capacidad de analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas.
[IC4] Capacidad de diseñar e implementar software de sistema y de comunicaciones.
[IC7] Capacidad para analizar, evaluar, seleccionar y configurar plataformas hardware para el desarrollo y ejecución de aplicaciones y servicios informáticos.
Medios a utilizar
PC o portátil
Software de código abierto: Docker, Ethereum, …
Bibliografía
Recursos para desarrolladores. Guías, recursos y herramientas para desarrolladores en Ethereum. Disponible en https://ethereum.org/es/developers/
Solidity Tutorial - A Full Course on Ethereum, Blockchain Development, Smart Contracts, and the EVM: https://www.youtube.com/watch?v=ipwxYa-F1uY.
Blockchain Tutorial For Developers: Step-By-Step Guide (Ethereum, Solidity, Web3.js) https://www.youtube.com/watch?l .
Ethereum Tutorial – A Deeper Look Into Ethereum!. https://www.edureka.co/blog/ethereum-tutorial-with-smart-contracts/.
Arshdeep Bahga y Vijay Madisetti, Blockchain Applications: A Hands-on Approach, VPT, 2017.
Decentralized storage, disponible en https://ethereum.org/en/developers/docs/storage/
Juan Benet, IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3), disponible en https://github.com/ipfs/papers/raw/master/ipfs-cap2pfs/ipfs-p2p-file-system.pdf.
Ethereum Development with Go, disponible en https://goethereumbook.org/en/
Tutores CAMINERO HERRÁEZ, Mª BLANCA NUÑEZ, CARLOS | Alumno BECERRA GARCÍA, JAVIER
|
| |