こちらのコードを分解していきます。
import hashlib
import json
import datetime
class Block:
def __init__(self, index, timestamp, transaction, previous_hash):
self.index = index
self.timestamp = timestamp
self.transaction = transaction
self.previous_hash = previous_hash
self.property_dict = {str(i): j for i, j in self.__dict__.items()}
self.now_hash = self.calc_hash()
def calc_hash(self):
block_string = json.dumps(self.property_dict, sort_keys=True).encode('ascii')
return hashlib.sha256(block_string).hexdigest()
def new_transaction(sender, recipient, amount):
transaction = {
"差出人": sender,
"宛先": recipient,
"金額": amount,
}
return transaction
block_chain = []
genesis_block = Block(0, 0, 0, "-")
block_chain.append(genesis_block)
transaction = new_transaction("タロウ", "花子", 100)
new_block = Block(1, str(datetime.datetime.now()), transaction, block_chain[0].now_hash)
block_chain.append(new_block)
for key, value in genesis_block.__dict__.items():
print(key, ':', value)
print("")
for key, value in new_block.__dict__.items():
print(key, ':', value)
[vagrant@localhost python]$ python app.py
property_dict : {‘transaction’: 0, ‘index’: 0, ‘previous_hash’: ‘-‘, ‘timestamp’: 0}
now_hash : 49f3a23af19229c5a1a12611bdb590f742154a5d11b5018f3f01b740800a5c20
transaction : 0
index : 0
previous_hash : –
timestamp : 0
property_dict : {‘transaction’: {‘宛先’: ‘花子’, ‘差出人’: ‘タロウ’, ‘金額’: 100}, ‘index’: 1, ‘previous_hash’: ’49f3a23af19229c5a1a12611bdb590f742154a5d11b5018f3f01b740800a5c20′, ‘timestamp’: ‘2019-10-18 10:55:22.499513’}
now_hash : b9b57282d7387add7e66d6209f06e4c132ec01cfece9615067bdffeb7b8f4c30
transaction : {‘宛先’: ‘花子’, ‘差出人’: ‘タロウ’, ‘金額’: 100}
index : 1
previous_hash : 49f3a23af19229c5a1a12611bdb590f742154a5d11b5018f3f01b740800a5c20
timestamp : 2019-10-18 10:55:22.499513