miércoles, 1 de mayo de 2024

Creando una blockchain desde cero en Python

 Fuente: https://tinyurl.com/ymg2yrgl

Traducción: Google translator para paginas web.

¡Construyendo una Blockchain desde cero con Python!

Aprenda los conceptos básicos de la tecnología Blockchain y cree su propia Blockchain en Python con instrucciones paso a paso. 

  

La tecnología Blockchain ha estado causando sensación en el mundo de la tecnología y las finanzas en los últimos años. Es un sistema descentralizado, seguro e inmutable para registrar y verificar transacciones. La tecnología detrás de blockchain tiene el potencial de revolucionar industrias que van desde las finanzas hasta la atención médica, la gestión de la cadena de suministro y más. 

En este artículo, profundizaremos en el mundo de la tecnología blockchain y le mostraremos cómo crear su propia blockchain usando Python. Este artículo es perfecto para principiantes que son nuevos en blockchain y quieren aprender más sobre cómo funciona, así como para aquellos que quieren ensuciarse las manos y construir una blockchain simple desde cero. Lo guiaremos a través de cada paso del proceso, desde la definición de las clases Block y Blockchain hasta las pruebas de blockchain, y le explicaremos la lógica y el código en detalle. Al final de este artículo, comprenderá mejor la tecnología blockchain y una cadena de bloques simple que puede desarrollar y personalizar según sus propias necesidades. 

 

Comprender los componentes de una cadena de bloques

Una cadena de bloques consta de varios componentes clave:

  • Libro mayor distribuido: es una base de datos descentralizada que almacena todas las transacciones que han ocurrido en la cadena de bloques.
  • Bloques: Cada bloque contiene un conjunto de transacciones, y cada bloque está vinculado al bloque anterior mediante un hash criptográfico.
  • Hash criptográfico: es una firma digital única que se crea para cada bloque. Se utiliza para verificar la integridad del bloque y vincularlo al bloque anterior.
  • Mecanismo de consenso: este es un proceso mediante el cual los participantes de la red blockchain llegan a un acuerdo sobre la validez de un nuevo bloque que se agrega a la cadena.
  • Minería: este es el proceso mediante el cual los participantes de la red compiten para agregar nuevos bloques a la cadena. Los mineros son recompensados ​​con criptomonedas por agregar con éxito un nuevo bloque. 
  •  
 

Creando una cadena de bloques simple en Python

En esta sección, crearemos una cadena de bloques simple en Python para demostrar cómo funciona la tecnología blockchain.

Paso 1: Importar bibliotecas

El primer paso es importar las bibliotecas necesarias. Usaremos la hashlib para crear un hash criptográfico de los bloques y la datetime para marcar la hora de cada bloque. 

>>import hashlib
>>import datetime as date

Paso 2: crear la clase de bloque

A continuación, crearemos una clase Block que definirá la estructura de cada bloque en la blockchain. Cada bloque tendrá los siguientes atributos:

  • Índice: esta es la posición del bloque en la cadena de bloques.
  • Marca de tiempo: esta es la hora en la que se agregó el bloque a la cadena.
  • Datos: Son los datos que se almacenan en el bloque.
  • Hash anterior: Este es el hash criptográfico del bloque anterior de la cadena.
  • Hash: Este es el hash criptográfico del bloque actual. 
  •  

 class Block:
    def __init__(self, index, timestamp, data, previous_hash):
        self.index = index
        self.timestamp = timestamp
        self.data = data
        self.previous_hash = previous_hash
        self.hash = self.calculate_hash()

    def calculate_hash(self):
        hash_string = str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash)
        return hashlib.sha256(hash_string.encode()).hexdigest()

 

Paso 3: Crear la clase Blockchain

Ahora, crearemos una clase Blockchain que definirá la estructura de la cadena de bloques. Cada blockchain tendrá los siguientes atributos:

  • Cadena: esta es la lista de bloques en la cadena de bloques. 

class Blockchain:
    def __init__(self):
        self.chain = [self.create_genesis_block()]

    def create_genesis_block(self):
        return Block(0, date.datetime.now(), "Genesis Block", "0")

    def get_latest_block(self):
        return self.chain[-1]

    def add_block(self, new_block):
        new_block.previous_hash = self.get_latest_block().hash
        new_block.hash = new_block.calculate_hash()
        self.chain.append(new_block)

    def is_valid(self):
        for i in range(1, len(self.chain)):
            current_block = self.chain[i]
            previous_block = self.chain[i-1]

            if current_block.hash != current_block.calculate_hash():
                return False

            if current_block.previous_hash != previous_block.hash:
                return False

        return True 

Paso 4: Probar la Blockchain

Ahora que hemos definido las clases Block y Blockchain, probemos nuestra blockchain creando algunos bloques y agregándolos a la cadena. 

 # Create the blockchain
blockchain = Blockchain()

# Add blocks to the blockchain
blockchain.add_block(Block(1, date.datetime.now(), "Transaction Data 1", ""))
blockchain.add_block(Block(2, date.datetime.now(), "Transaction Data 2", ""))
blockchain.add_block(Block(3, date.datetime.now(), "Transaction Data 3", ""))

# Print the contents of the blockchain
for block in blockchain.chain:
    print("Block #" + str(block.index))
    print("Timestamp: " + str(block.timestamp))
    print("Data: " + block.data)
    print("Hash: " + block.hash)
    print("Previous Hash: " + block.previous_hash)
    print("\n")

 

Cuando ejecutamos el código, deberíamos ver el siguiente resultado: 

 

Fuente de la imagen: lubricationsroom755. Google Colab
 

Como podemos ver, la cadena de bloques se ha creado con éxito y le hemos agregado algunos bloques. El hash de cada bloque se basa en los datos del bloque y el hash del bloque anterior, lo que garantiza la integridad y seguridad de la blockchain.

En este artículo, hemos aprendido sobre el concepto de blockchain y cómo funciona. También creamos una cadena de bloques simple usando Python y explicamos cada paso en detalle. Aunque esta implementación es muy básica y no es adecuada para su uso en aplicaciones del mundo real, proporciona una buena base para seguir aprendiendo y comprendiendo la tecnología blockchain.

 
 
Conclusiones
  • Es fácil crear un block chain en Python 
  • Para trabajar con BlockChain se requieren conceptos previos de POO (programación orientada a objetos).
  • Cada vez que ejecutes el código la salida tendrá las fechas y horas actuales y locales según tu ubicación.

No hay comentarios.:

Publicar un comentario

Entradas recientes

Sympy: Mecanica, Ejemplo de oscilador con un pendulo

  Oscilador Duffing con un péndulo En este ejemplo demostramos el uso de la funcionalidad proporcionada en sympy.physics.mechanics para de...

Entradas Populares