📅  最后修改于: 2020-11-08 08:26:56             🧑  作者: Mango
区块链包含彼此链接的区块列表。为了存储整个列表,我们将创建一个名为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))
在每个块中,我们已将三个事务(创世块除外)的列表存储在一个称为verify_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 ('=====================================')
请注意,这里我们在代码中的适当位置插入了分隔符,以在其中划分块和事务。
现在我们已经创建了用于存储块的区块链,接下来的任务是创建块并将其添加到区块链中。为此,我们将添加您在先前步骤中已经创建的创世纪块。