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 的临时变量中。

我们将块号打印为每个块的标题。请注意,数字从零开始,第一个块是编号为零的 Genesis 块。

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

在每个块中,我们将三个交易(Genesis 块除外)的列表存储在一个名为 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 ('=====================================')

请注意,我们在此处代码中的适当位置插入了分隔符,以划分其中的区块和交易。

由于我们现在已经创建了用于存储区块的区块链,因此我们的下一个任务是创建区块并开始将其添加到区块链中。为此,我们将添加您在之前的步骤中已经创建的 Genesis 区块。