BlockChainPy/blockchainpy.py

46 lines
1.6 KiB
Python

import json
from hashlib import sha256
class BlockchainError(Exception): pass
class blockchain:
def __init__(self):
self.blockchain=[]
self.transactionbyffer=[]
def newgenesis(self, data):
if len(self.blockchain)==0:
temp={"id":0, "data":data, "transactions":[], "roothash":0}
temp0=json.dumps(temp)
temp0=sha256(temp0.encode()).hexdigest()
temp["hash"]=temp0
self.blockchain.append(temp)
else:
raise BlockchainError()
def setbc(self, bc):
self.blockchain=bc
def addtx(self, data):
self.transactionbyffer.append(data)
def newblock(self, data):
temp0={"id":len(self.blockchain), "data":data, "transactions":json.dumps(self.transactionbyffer), "roothash":self.blockchain[len(self.blockchain)-1]["hash"]}
temp1=json.dumps(temp0)
temp1=sha256(temp1.encode()).hexdigest()
temp0["hash"]=temp1
self.blockchain.append(temp0)
self.transactionbyffer=[]
def checkblocks(self):
correct=1
index=0
for block in self.blockchain:
temp0=json.dumps({"id":block["id"], "data":block["data"], "transactions":block["transactions"], "roothash":block["roothash"]})
temp0=sha256(temp0.encode()).hexdigest()
if block["id"]!=self.blockchain[block["id"]]["id"]:
correct=0
if block["id"]!=0:
if self.blockchain[block["id"]-1]["hash"]!=block["roothash"]:
correct=0
if block["hash"]!=temp0:
correct=0
index=index+1
return correct