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