📜  Python创建区块链

📅  最后修改于: 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 ('=====================================')

请注意,这里我们在代码中的适当位置插入了分隔符,以在其中划分块和事务。

现在我们已经创建了用于存储块的区块链,接下来的任务是创建块并将其添加到区块链中。为此,我们将添加您在先前步骤中已经创建的创世纪块。