-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
54 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,57 @@ | ||
import hashlib | ||
from STMDL.BK_Usuarios import usuarios | ||
# from ST1MDL.BK_ST2_2 | ||
# from ST1MDL.BK_ST2_3 | ||
# from ST1MDL.BK_ST2_4 | ||
# BK_ST2.py - Archivo principal que maneja la blockchain y la comunicación entre nodos | ||
|
||
def registrar_usuario(username, password): | ||
from BK_ST2_1 import crear_bloque_genesis, agregar_bloque, guardar_blockchain, cargar_blockchain | ||
from BK_ST2_1_nodo import iniciar_servidor | ||
from BK_ST2_1_sincronizacion import sincronizar_blockchain | ||
|
||
def iniciar_red(): | ||
""" | ||
Esta función será el punto de entrada para iniciar el nodo y sincronizarlo con otros nodos. | ||
Primero, se asegura de que la blockchain esté sincronizada con la de otros nodos y luego | ||
arranca el servidor del nodo local. | ||
""" | ||
print("Iniciando la sincronización de la blockchain con otros nodos...") | ||
|
||
# Sincronizar la blockchain con otros nodos | ||
blockchain = sincronizar_blockchain() | ||
|
||
# Verificar si la blockchain local está vacía o es el bloque génesis | ||
if len(blockchain) == 1: # Solo contiene el bloque génesis | ||
print("Blockchain vacía. Creando el bloque génesis...") | ||
blockchain = [crear_bloque_genesis()] # Crear el bloque génesis si no existe | ||
|
||
# Guardar la blockchain sincronizada | ||
guardar_blockchain(blockchain) | ||
print(f"Blockchain sincronizada y guardada. Total de bloques: {len(blockchain)}") | ||
|
||
# Iniciar el servidor del nodo | ||
print("Iniciando el servidor del nodo...") | ||
iniciar_servidor() | ||
|
||
def agregar_bloque_a_la_red(datos): | ||
""" | ||
Registra un nuevo usuario con su contraseña. | ||
Devuelve True si el usuario fue registrado, False si ya existe. | ||
Esta función permite agregar un nuevo bloque a la blockchain. | ||
Recibe los datos del bloque, lo crea y lo agrega a la blockchain. | ||
""" | ||
if username in usuarios: | ||
return False | ||
hashed_password = hashlib.sha256(password.encode()).hexdigest() | ||
usuarios[username] = hashed_password | ||
return True | ||
blockchain = cargar_blockchain() | ||
print("Agregando un nuevo bloque a la blockchain...") | ||
|
||
# Agregar un nuevo bloque | ||
agregar_bloque(blockchain, datos) | ||
|
||
# Guardar la blockchain actualizada | ||
guardar_blockchain(blockchain) | ||
print(f"Nuevo bloque agregado con datos: {datos}") | ||
print(f"Blockchain actualizada. Total de bloques: {len(blockchain)}") | ||
|
||
if __name__ == "__main__": | ||
""" | ||
El archivo principal. Aquí puedes elegir qué funcionalidad deseas ejecutar. | ||
Por ejemplo, puedes iniciar el nodo y sincronizar la blockchain con otros nodos. | ||
""" | ||
# Llamada para iniciar la red de nodos | ||
iniciar_red() | ||
|
||
# Si deseas agregar bloques manualmente: | ||
# Puedes descomentar la siguiente línea para agregar un bloque con datos personalizados. | ||
# agregar_bloque_a_la_red("Este es un nuevo bloque con información.") |