Python Criando Blockchain

Um blockchain contém uma lista de blocos encadeados entre si. Para armazenar a lista inteira, criaremos uma variável de lista chamada TPCoins -

TPCoins = []

Também escreveremos um método utilitário chamado dump_blockchainpara despejar o conteúdo de todo o blockchain. Primeiro imprimimos o comprimento do blockchain para saber quantos blocos estão presentes no blockchain.

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

Observe que, com o passar do tempo, o número de blocos no blockchain seria extraordinariamente alto para impressão. Portanto, ao imprimir o conteúdo do blockchain, você pode ter que decidir sobre o intervalo que gostaria de examinar. No código abaixo, imprimimos todo o blockchain, pois não adicionaríamos muitos blocos na demonstração atual.

Para iterar pela cadeia, criamos um for loop da seguinte forma -

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

Cada bloco referenciado é copiado para uma variável temporária chamada block_temp.

Imprimimos o número do bloco como um título para cada bloco. Observe que os números começam com zero, o primeiro bloco é um bloco de gênese que é numerado com zero.

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

Dentro de cada bloco, armazenamos uma lista de três transações (exceto para o bloco genesis) em uma variável chamada verified_transactions. Nós iteramos esta lista em umfor loop e para cada item recuperado, chamamos display_transaction função para exibir os detalhes da transação.

for transaction in block_temp.verified_transactions:
   display_transaction (transaction)

Toda a definição da função é mostrada abaixo -

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 ('=====================================')

Observe que aqui inserimos os separadores em pontos apropriados no código para demarcar os blocos e transações dentro dele.

Como agora criamos um blockchain para armazenar blocos, nossa próxima tarefa é criar blocos e começar a adicioná-lo ao blockchain. Para este propósito, adicionaremos um bloco genesis que você já criou na etapa anterior.