Учебники

Python Создание блокчейна

Блокчейн содержит список блоков, связанных друг с другом. Чтобы сохранить весь список, мы создадим переменную списка с именем TPCoins —

TPCoins = []

Мы также напишем служебный метод dump_blockchain для выгрузки содержимого всей цепочки блоков. Сначала мы печатаем длину блокчейна, чтобы узнать, сколько блоков в настоящий момент присутствует в блокчейне.

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

Обратите внимание, что с течением времени количество блоков в цепочке блоков будет чрезвычайно большим для печати. Таким образом, когда вы печатаете содержимое блокчейна, вам может потребоваться выбрать диапазон, который вы хотели бы изучить. В приведенном ниже коде мы напечатали весь блокчейн, так как мы не добавляем слишком много блоков в текущей демонстрации.

Чтобы перебрать цепочку, мы настроили цикл for следующим образом:

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

Каждый указанный блок копируется во временную переменную с именем block_temp .

Мы печатаем номер блока как заголовок для каждого блока. Обратите внимание, что числа будут начинаться с нуля, первый блок — это блок генеза, который нумеруется с нуля.

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

В каждом блоке мы сохранили список из трех транзакций (за исключением блока генезиса) в переменной с именем Verified_transactions . Мы повторяем этот список в цикле for, и для каждого полученного элемента мы вызываем функцию display_transaction, чтобы отобразить детали транзакции.

for transaction in block_temp.verified_transactions:
   display_transaction (transaction)

Полное определение функции показано ниже —

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

Обратите внимание, что здесь мы вставили разделители в соответствующих точках кода, чтобы разграничить блоки и транзакции внутри него.

Так как мы создали блокчейн для хранения блоков, наша следующая задача — создать блоки и начать добавлять их в блокчейн. Для этого мы добавим блок генезиса, который вы уже создали на предыдущем шаге.