El uso de la tecnología blockchain en la contabilidad es una idea emergente que promete traer transparencia, seguridad y trazabilidad a las transacciones financieras. La blockchain se puede visualizar como un libro mayor digital donde cada transacción es registrada y vinculada a la transacción anterior y posterior a través de un proceso criptográfico.
Vamos a desarrollar una pequeña aplicación en python que simula un sistema contable basado en blockchain.
Características:
- Creación de un bloque que contenga transacciones.
- Validación de la integridad de la cadena.
- Visualización de la cadena de bloques.
Estructura del Bloque:
- Índice
- Marca de tiempo
- Lista de transacciones
- Prueba de trabajo (para simplificar, no implementaremos un sistema de minería completo)
- Hash del bloque anterior
Empecemos por definir la estructura básica del bloque y algunas funciones esenciales en Python
Hemos creado una estructura básica para la cadena de bloques (blockchain) con las siguientes características:
1.- Block: Representa un bloque en la cadena. Cada bloque tiene:- Un índice
- El hash del bloque anterior
- Una marca de tiempo
- Una lista de transacciones
- Una prueba de trabajo (que en este caso simplificado es sólo un número)
- Un hash que representa toda la información en el bloque.
- Una lista de bloques
- Una lista de transacciones pendientes
- Funciones para agregar transacciones y bloques
- Una función para validar la integridad de la cadena.
create_genesis_block crea el primer bloque de la cadena, llamado bloque génesis, que tiene valores predeterminados y sirve como punto de partida para la cadena.
A continuación, podemos agregar algunas transacciones y bloques a la blockchain para demostrar su funcionamiento.
Hemos agregado dos bloques a nuestra cadena de bloques con varias transacciones en cada uno.
Actualmente, nuestra cadena de bloques tiene 3 bloques:
1.- Bloque Génesis (sin transacciones, es el bloque inicial)
Aquí tienes el contenido de cada bloque en nuestra cadena:
1.-Bloque Génesis:
- Índice: 0
- Hash anterior: 0 (por ser el primer bloque)
- Marca de tiempo: La hora y fecha exacta de creación
- Sin transacciones
- Hash del bloque: Un código único generado a partir de la información del bloque
2.- Primer bloque:
- Índice: 1
- Hash anterior: El hash del bloque génesis
- Marca de tiempo: La hora y fecha exacta de creación
- Transacciones:
- Juan envió 100 unidades a Ana
- Ana envió 50 unidades a Pedro
- Hash del bloque: Un código único generado a partir de la información del bloque
- Índice: 2
- Hash anterior: El hash del primer bloque
- Marca de tiempo: La hora y fecha exacta de creación
- Transacciones:
- Pedro envió 30 unidades a Lucia
- Lucia envió 10 unidades a Juan
- Hash del bloque: Un código único generado a partir de la información del bloque
Como puedes ver, cada bloque tiene un hash que lo identifica y también almacena el hash del bloque anterior, lo que asegura la integridad de la cadena. Si alguien intenta alterar la información de un bloque, el hash cambiaría, lo que haría que toda la cadena posterior a ese bloque se invalidara.

0 Comentarios