Lição 3

Implementación de prueba de trabajo en Blockchain

En esta sesión nos concentraremos en implementar el método de consenso de prueba de trabajo en nuestra cadena de bloques. La prueba de trabajo es un método de seguridad que exige un esfuerzo computacional para agregar un nuevo bloque a la cadena de bloques, evitando que los malos actores cambien rápidamente la cadena.

3.1 Comprensión de la prueba de trabajo

  1. Presente el concepto de prueba de trabajo: explique que la prueba de trabajo requiere que los mineros resuelvan un rompecabezas computacionalmente difícil para agregar un nuevo bloque. Este rompecabezas implica encontrar un valor hash que cumpla con ciertos criterios, como tener un número específico de ceros a la izquierda.

    Python 
     pythonCopiar código 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.difficulty = 4 # Ajusta el nivel de dificultad según sea necesario
    

    Este código agrega un atributo difficulty a la clase Blockchain , que representa la cantidad de ceros iniciales necesarios en el hash.

  2. Implemente el proof_of_work : este método generará un hash válido ajustando un valor nonce hasta que el hash cumpla con los criterios de dificultad.

    Python 
     pythonCopiar código 
     importar hashlib 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.dificultad = 4defproof_of_work(self, block): 
     target = "0" * self.dificultad 
     nonce = 0 while True: 
     datos = str(block) + str(nonce) 
     hash_value = hashlib.sha256(data.encode()).hexdigest()
             si valor_hash[:self.dificultad] == objetivo: 
     devolver valor_hash 
     nonce += 1
    

    Este código agrega el proof_of_work a la clase Blockchain . Utiliza una cadena target con el número requerido de ceros a la izquierda y ajusta el valor nonce hasta que se encuentra un hash válido.

3.2 Agregar prueba de trabajo a la creación de bloques

  1. Actualice el método add_block : modifique el método add_block para incluir prueba de trabajo. Genere un hash válido para el nuevo bloque utilizando el proof_of_work .

    Python 
     pythonCopiar código 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.difficulty = 4defproof_of_work(self, block): 
     # Detalles de implementacióndef add_block(self, block): 
     anterior_hash = self.cadena[-1].hash() si len(auto.cadena) > 0 más Ninguno 
     block.previous_hash = anterior_hash 
     bloque.mío(auto.dificultad)
         self.chain.append(bloquear)
    

    Este código modifica el método add_block para establecer el previous_hash del nuevo bloque, llama al método mine en el bloque con el nivel de dificultad y agrega el bloque a la cadena.

  2. Implemente el método mine en la clase Block : el método mine ajustará el valor nonce del bloque hasta que se encuentre un hash válido.

    Python 
     pythonCopiar código 
     importar hashlib 
     bloque de clase: 
     def __init__(self, index, timestamp, data, anterior_hash, nonce=0): 
     self.index = index 
     self.timestamp = timestamp 
     self.data = datos 
     self.previous_hash = anterior_hash 
     self.nonce = nonce 
     self.hash = self.calculate_hash()
    
     def calcular_hash(self): 
     datos = str(self.index) + str(self.marca de tiempo) + str(auto.datos) + str(self.previous_hash) + str(self.nonce)
         devolver hashlib.sha256(data.encode()).hexdigest()
    
     def mine(self, dificultad): 
     objetivo = "0" * dificultad 
     while self.hash[:dificultad] != objetivo: 
     self.nonce += 1 
     self.hash = self.calculate_hash()
    

Este código agrega el método mine a la clase Block . Ajusta el valor nonce y vuelve a calcular el hash del bloque hasta que el hash cumpla con los criterios de dificultad.

3.3 Prueba de la implementación de prueba de trabajo

  1. Cree una nueva instancia de blockchain: cree una instancia de un nuevo objeto Blockchain y agregue algunos bloques a la cadena.

    Python 
     pythonCopiar código 
     blockchain = Blockchain() 
     block1 = Block(1, datetime.now(), "Datos del bloque 1") 
     bloque2 = Bloque(2, datetime.now(), "Datos del bloque 2") 
     bloque3 = Bloque(3, datetime.now(), "Datos del bloque 3")
    

    Este código crea un nuevo objeto Blockchain y tres bloques.

  2. Agregue los bloques a la cadena de bloques: use el método add_block para agregar los bloques a la cadena.

    Python 
     pythonCopiar código 
     blockchain.add_block(block1)
    blockchain.add_block(bloque2)
    blockchain.add_block(bloque3)
    

    Este código agrega los bloques a la cadena de bloques.

  3. Imprime la cadena de bloques: muestra los bloques de la cadena de bloques y sus hashes.

    Python 
     pythonCopiar código 
     para bloque en blockchain.chain:
     print(f"Bloque: {block.index}") 
     print(f"Hash: {block.hash}")
    

    Este código itera sobre los bloques de la cadena de bloques e imprime su índice y valores hash.

3.4 Conclusión

En esta lección, hemos implementado el algoritmo de consenso de prueba de trabajo en nuestra cadena de bloques. Introdujimos el concepto de prueba de trabajo, explicamos cómo requiere que los mineros resuelvan un rompecabezas computacionalmente difícil y lo implementamos en nuestra cadena de bloques ajustando un valor nonce hasta que se encuentre un hash válido. También probamos la implementación de prueba de trabajo agregando bloques a la cadena y mostrando el contenido de la cadena de bloques.

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.
Catálogo
Lição 3

Implementación de prueba de trabajo en Blockchain

En esta sesión nos concentraremos en implementar el método de consenso de prueba de trabajo en nuestra cadena de bloques. La prueba de trabajo es un método de seguridad que exige un esfuerzo computacional para agregar un nuevo bloque a la cadena de bloques, evitando que los malos actores cambien rápidamente la cadena.

3.1 Comprensión de la prueba de trabajo

  1. Presente el concepto de prueba de trabajo: explique que la prueba de trabajo requiere que los mineros resuelvan un rompecabezas computacionalmente difícil para agregar un nuevo bloque. Este rompecabezas implica encontrar un valor hash que cumpla con ciertos criterios, como tener un número específico de ceros a la izquierda.

    Python 
     pythonCopiar código 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.difficulty = 4 # Ajusta el nivel de dificultad según sea necesario
    

    Este código agrega un atributo difficulty a la clase Blockchain , que representa la cantidad de ceros iniciales necesarios en el hash.

  2. Implemente el proof_of_work : este método generará un hash válido ajustando un valor nonce hasta que el hash cumpla con los criterios de dificultad.

    Python 
     pythonCopiar código 
     importar hashlib 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.dificultad = 4defproof_of_work(self, block): 
     target = "0" * self.dificultad 
     nonce = 0 while True: 
     datos = str(block) + str(nonce) 
     hash_value = hashlib.sha256(data.encode()).hexdigest()
             si valor_hash[:self.dificultad] == objetivo: 
     devolver valor_hash 
     nonce += 1
    

    Este código agrega el proof_of_work a la clase Blockchain . Utiliza una cadena target con el número requerido de ceros a la izquierda y ajusta el valor nonce hasta que se encuentra un hash válido.

3.2 Agregar prueba de trabajo a la creación de bloques

  1. Actualice el método add_block : modifique el método add_block para incluir prueba de trabajo. Genere un hash válido para el nuevo bloque utilizando el proof_of_work .

    Python 
     pythonCopiar código 
     clase Blockchain: 
     def __init__(self): 
     self.chain = [] 
     self.difficulty = 4defproof_of_work(self, block): 
     # Detalles de implementacióndef add_block(self, block): 
     anterior_hash = self.cadena[-1].hash() si len(auto.cadena) > 0 más Ninguno 
     block.previous_hash = anterior_hash 
     bloque.mío(auto.dificultad)
         self.chain.append(bloquear)
    

    Este código modifica el método add_block para establecer el previous_hash del nuevo bloque, llama al método mine en el bloque con el nivel de dificultad y agrega el bloque a la cadena.

  2. Implemente el método mine en la clase Block : el método mine ajustará el valor nonce del bloque hasta que se encuentre un hash válido.

    Python 
     pythonCopiar código 
     importar hashlib 
     bloque de clase: 
     def __init__(self, index, timestamp, data, anterior_hash, nonce=0): 
     self.index = index 
     self.timestamp = timestamp 
     self.data = datos 
     self.previous_hash = anterior_hash 
     self.nonce = nonce 
     self.hash = self.calculate_hash()
    
     def calcular_hash(self): 
     datos = str(self.index) + str(self.marca de tiempo) + str(auto.datos) + str(self.previous_hash) + str(self.nonce)
         devolver hashlib.sha256(data.encode()).hexdigest()
    
     def mine(self, dificultad): 
     objetivo = "0" * dificultad 
     while self.hash[:dificultad] != objetivo: 
     self.nonce += 1 
     self.hash = self.calculate_hash()
    

Este código agrega el método mine a la clase Block . Ajusta el valor nonce y vuelve a calcular el hash del bloque hasta que el hash cumpla con los criterios de dificultad.

3.3 Prueba de la implementación de prueba de trabajo

  1. Cree una nueva instancia de blockchain: cree una instancia de un nuevo objeto Blockchain y agregue algunos bloques a la cadena.

    Python 
     pythonCopiar código 
     blockchain = Blockchain() 
     block1 = Block(1, datetime.now(), "Datos del bloque 1") 
     bloque2 = Bloque(2, datetime.now(), "Datos del bloque 2") 
     bloque3 = Bloque(3, datetime.now(), "Datos del bloque 3")
    

    Este código crea un nuevo objeto Blockchain y tres bloques.

  2. Agregue los bloques a la cadena de bloques: use el método add_block para agregar los bloques a la cadena.

    Python 
     pythonCopiar código 
     blockchain.add_block(block1)
    blockchain.add_block(bloque2)
    blockchain.add_block(bloque3)
    

    Este código agrega los bloques a la cadena de bloques.

  3. Imprime la cadena de bloques: muestra los bloques de la cadena de bloques y sus hashes.

    Python 
     pythonCopiar código 
     para bloque en blockchain.chain:
     print(f"Bloque: {block.index}") 
     print(f"Hash: {block.hash}")
    

    Este código itera sobre los bloques de la cadena de bloques e imprime su índice y valores hash.

3.4 Conclusión

En esta lección, hemos implementado el algoritmo de consenso de prueba de trabajo en nuestra cadena de bloques. Introdujimos el concepto de prueba de trabajo, explicamos cómo requiere que los mineros resuelvan un rompecabezas computacionalmente difícil y lo implementamos en nuestra cadena de bloques ajustando un valor nonce hasta que se encuentre un hash válido. También probamos la implementación de prueba de trabajo agregando bloques a la cadena y mostrando el contenido de la cadena de bloques.

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o Gate Learn.