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))

各ブロック内で、3つのトランザクション(ジェネシスブロックを除く)のリストをという変数に格納しました。 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 ('=====================================')

ここでは、コード内のブロックとトランザクションを区別するために、コードの適切なポイントにセパレーターを挿入していることに注意してください。

ブロックを格納するためのブロックチェーンを作成したので、次のタスクはブロックを作成し、それをブロックチェーンに追加し始めることです。この目的のために、前のステップですでに作成したジェネシスブロックを追加します。