Python creando blockchain

Una cadena de bloques contiene una lista de bloques encadenados entre sí. Para almacenar la lista completa, crearemos una variable de lista llamada TPCoins -

TPCoins = []

También escribiremos un método de utilidad llamado dump_blockchainpara descargar el contenido de toda la cadena de bloques. Primero imprimimos la longitud de la cadena de bloques para saber cuántos bloques están presentes actualmente en la cadena de bloques.

def dump_blockchain (self):
   print ("Number of blocks in the chain: " + str(len (self)))

Tenga en cuenta que a medida que pasa el tiempo, la cantidad de bloques en la cadena de bloques sería extraordinariamente alta para imprimir. Por lo tanto, cuando imprime el contenido de la cadena de bloques, es posible que deba decidir el rango que le gustaría examinar. En el siguiente código, hemos impreso toda la cadena de bloques, ya que no estaríamos agregando demasiados bloques en la demostración actual.

Para recorrer la cadena, configuramos un for bucle de la siguiente manera:

for x in range (len(TPCoins)):
   block_temp = TPCoins[x]

Cada bloque referenciado se copia a una variable temporal llamada block_temp.

Imprimimos el número de bloque como un encabezado para cada bloque. Tenga en cuenta que los números comenzarían con cero, el primer bloque es un bloque de génesis que se numera con cero.

print ("block # " + str(x))

Dentro de cada bloque, hemos almacenado una lista de tres transacciones (excepto el bloque génesis) en una variable llamada verified_transactions. Repetimos esta lista en unfor bucle y para cada elemento recuperado, llamamos display_transaction función para mostrar los detalles de la transacción.

for transaction in block_temp.verified_transactions:
   display_transaction (transaction)

La definición completa de la función se muestra a continuación:

def dump_blockchain (self):
   print ("Number of blocks in the chain: " + str(len (self)))
   for x in range (len(TPCoins)):
      block_temp = TPCoins[x]
      print ("block # " + str(x))
      for transaction in block_temp.verified_transactions:
         display_transaction (transaction)
         print ('--------------')
      print ('=====================================')

Tenga en cuenta que aquí hemos insertado los separadores en los puntos apropiados del código para demarcar los bloques y transacciones dentro de él.

Como ahora hemos creado una cadena de bloques para almacenar bloques, nuestra siguiente tarea es crear bloques y comenzar a agregarlos a la cadena de bloques. Para ello, agregaremos un bloque de génesis que ya ha creado en el paso anterior.