En este artículo, vamos a explorar las diferencias entre una implementación básica de blockchain en Python que hicimos hace unos dias y una versión mejorada que incluye la funcionalidad de monederos para los usuarios. Esta comparación te ayudará a entender cómo se puede evolucionar una blockchain básica para manejar transacciones de manera más eficiente y segura.
Implementación Básica de la Blockchain
Primero, recordemos cómo era la implementación básica de nuestra blockchain:
- Clases Principales:
Block: Representa un bloque en la blockchain.Blockchain: Maneja la cadena de bloques y las transacciones pendientes.Transaction: Representa una transacción en la blockchain.Node: Gestiona las transacciones y la minería de bloques.
- Funcionalidad Clave:
- Minerado de bloques mediante el algoritmo de prueba de trabajo (PoW).
- Verificación de la validez de la cadena de bloques.
- Adición de transacciones a una lista de transacciones pendientes.
Implementación Mejorada con Monederos
En la versión mejorada, introducimos la clase Wallet para representar a los usuarios y manejar sus saldos. A continuación, se detallan las principales diferencias y adiciones:
Nueva Clase Wallet:
-
- Propósito: Representar a los usuarios con atributos como dirección, nombre de usuario, clave privada derivada de la dirección y saldo.
- Funcionalidades:
- Generar una dirección única para cada monedero.
- Derivar una clave privada basada en la dirección.
- Manejar el saldo del monedero.

Modificaciones en la Clase Blockchain:
- Gestión de Monederos: Ahora la blockchain tiene un diccionario para almacenar los monederos (
wallets). - Validación de Transacciones: Antes de añadir una transacción a la lista de transacciones pendientes, se verifica que el remitente tenga fondos suficientes.
- Actualización de Saldos: Los saldos de los monederos se actualizan cuando se mina un nuevo bloque.

Actualización de la Clase Node:
- Gestión de Monederos: Añade la capacidad de gestionar monederos, permitiendo la creación y registro de monederos en la blockchain.

Función Principal Actualizada:
- Creación y Registro de Monederos: Ahora la función principal incluye la creación de monederos y la asignación de saldos iniciales.
- Transacciones y Minería: Se crean transacciones y se minan bloques como antes, pero ahora se valida que los monederos tengan suficientes fondos antes de permitir una transacción.

En resumen, hemos transformado nuestra implementación básica de blockchain para incluir una funcionalidad esencial: monederos para los usuarios. Ahora, cada usuario tiene una dirección única, una clave privada y un saldo, lo que permite una gestión más eficiente y segura de las transacciones. Esta mejora sienta las bases para futuras expansiones, como la adición de contratos inteligentes y la implementación de una red peer-to-peer.
Esta evolución muestra cómo una implementación básica puede ser el punto de partida para desarrollar aplicaciones más complejas y robustas en el fascinante mundo de la tecnología blockchain.
Como siempre podéis descargar o ver el código fuente en mi Github desde aquí 😉
¡Feliz codificación!
