Skip to content

Proyecto para el curso de algoritmos y estructuras de datos

Notifications You must be signed in to change notification settings

ByJuanDiego/block-chain-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open in Visual Studio Code

Blockchain

Miembros

  • Choqque Mejia, Fernando Adriano
  • Flores Panduro, Carlos Alonso
  • Castro Padilla, Juan Diego
  • Izaguirre Zavaleta, Luis Fernando

Introducción

¿Qué es Blockchain?

Un Blockchain es una cadena secuencial e inmutable de registros llamada Blocks. Pueden contener transacciones, archivos o cualquier dato que desee. Pero lo importante es que están encadenados mediante hashes.

structures

¿Qué es SHA256?

SHA-256 (Secure Hash Algorithm 256) es un algoritmo (o función) cuyo objetivo es generar hashes o códigos únicos con el que se pudieran asegurar documentos o datos informáticos frente a cualquier agente externo que desee modificarlos. Una de sus características es que la longitud del hash resultante es siempre igual, sin importar lo extenso que sea el contenido que uses para generar el hash (el resultado siempre es una cadena de 64 de letras y números).

structures

Objetivo

Implementar un sistema informático transaccional que permita a un usuario del sistema registrar operaciones de manera segura (Blockchain) para luego realizar búsquedas de manera eficiente usando diversas estructuras de datos como mecanismos de indexación para diferentes criterios de búsqueda.

Propuesta

Dominio transaccional utilizado : transferencias bancarias (emisor, receptor, monto, fecha)

3 clases principales :

structures

  • transaction :

  • block :

  • blockchain :

¿Qué estructuras usamos?

structures

  • Hash : Usamos esta estructura para:

    • indexar a los usuarios.
    • indexar las transacciones.
    • facilitar el acceso a un nodo de un double list.
  • Heap : Usamos esta estructura para:

    • obtener el valor máximo (maxheap) y mínimo (minheap) dentro de un grupo de valores.
    • obtener los valores máximos (maxheap) y mínimos (minheap) dentro de un grupo de valores.
  • Double List : Usamos esta estructura para:

    • facilitar el hash en cascada en la blockchain.
  • B Plus Tree : Usamos esta estructura para:

    • indexar las transacciones (por fecha y por monto).
    • hacer búsquedas por rango (transacciones hechas entre los montos A y B, transacciones hechas entre las fechas A y B).
    • indexar las transacciones por nombre (el nombre del usuario que hizo la transacción).

Analisis de la complejidad algoritmica

Blockchain::createUser       // O(k), k:=cantidad promedio de valores en cada bucket del hash
Inserta un nuevo usuario en la blockchain, ademas, guarda en un hash
un puntero al bloque de ese usuario.

Blockchain::setTx            // O(log2 (n), n := cantidad de elementos en el heap
Inserta una nueva transaccion en la blockchain. Ademas, realiza inserciones
en cada uno de los indices utilizados (Hash, Heap, B+Tree)

¿Cómo correr el proyecto?

Requerimentos :

Ejecutar en terminal :

g++ -IC:\SFML-2.5.1\include\ -c main.cpp -o main.o
g++ -LC:\SFML-2.5.1\lib .\main.o -o main.exe -lmingw32 -lsfml-graphics -lsfml-window -lsfml-system

Referencias Bibliograficas

About

Proyecto para el curso de algoritmos y estructuras de datos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published