BlockChain

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值