Блокчейн содержит список блоков, связанных друг с другом. Чтобы сохранить весь список, мы создадим переменную списка с именем 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 ('=====================================')
Обратите внимание, что здесь мы вставили разделители в соответствующих точках кода, чтобы разграничить блоки и транзакции внутри него.
Так как мы создали блокчейн для хранения блоков, наша следующая задача — создать блоки и начать добавлять их в блокчейн. Для этого мы добавим блок генезиса, который вы уже создали на предыдущем шаге.