import hashlib as hasher
import datetime as date
class Block:
def __init__(self,index,timestamp,data,previous_hash,proof):
self.index=index
self.timestamp=timestamp
self.data=data
self.previous_hash=previous_hash
self.proof=proof
self.hash=self.hash_block()
def hash_block(self):
sha=hasher.sha256()
sha.update((str(self.index)+
str(self.timestamp)+
str(self.data)+
str(self.previous_hash)).encode("utf-8"))
return sha.hexdigest()
def create_genesis_block():
return Block(0,date.datetime.now(),"Genesis Block","0",80)
def proof_of_work(last_proof):
proof=0
while hasher.sha256(f'{last_proof}{proof}'.encode()).hexdigest()[:4] != '0000':
proof += 1
return proof
def next_block(last_block):
this_index=last_block.index+1
this_timestamp=date.datetime.now()
this_data="I choose"+str(this_index)
this_hash=last_block.hash
this_proof=proof_of_work(last_block.proof)
return Block(this_index,this_timestamp,this_data,this_hash,this_proof)
blockchain=[create_genesis_block()]
previous_block = blockchain[0]
num_of_blocks_to_add = 20
for i in range(0,num_of_blocks_to_add):
block_to_add=next_block(previous_block)
blockchain.append(block_to_add)
previous_block=block_to_add
print('Block #{} has been added to the blockchain'.format(block_to_add.index))
print("Hash:{}".format(block_to_add.hash))
print("P:{}".format(block_to_add.proof))
print("Date:{}\n\n\n".format(block_to_add.data))
BlockChain
最新推荐文章于 2024-07-07 18:45:00 发布