pyside2入門–藥品管理ui3.0,對于匯出日志的簡易區塊鏈生成、同步、校驗
需要改進的地方,還是一個指定關系,指定用戶生成,
一、搭建環境
from qu import *#自己寫的,沒法下載,哈哈哈
自己學的區塊鏈簡易實作,
這里兩個可以學學,1、落拓大佬,里面有區塊檢驗,交易區塊生成,js寫的,2、python寫的區塊鏈,
二、實驗結果,
1、基本介紹

2、匯出日志的hash作為區塊值

3、服務器生成區塊
4、客戶節點同步區塊
同步結果
具體顯示
5、檢驗合法性,包括區塊檢驗和日志的檢驗,

6、篡改結果
(1)、篡改日志


(2)篡改區塊值,第三個區塊的前向hash
檢驗:
終端結果:
三、代碼分析,
1、區塊生成,附上簡易的生成代碼
import hashlib
from datetime import datetime
import json
#block
class Block:
def __init__(self,value,prehash,time):
self.value=value
self.prehash=prehash
self.time=time
self.hash=self.computehash()
def computehash(self):
sha256 = hashlib.sha256()
sha256.update((str(self.value)+self.prehash+self.time).encode('utf8'))#錯在update寫成updata了
return sha256.hexdigest()
def outblock(self):
print('Block:\n\t\tvalue:{}\n\t\tprehash:{}\n\t\tnowhash:{}\n\t\ttime:{}'.format(self.value,self.prehash,self.hash,self.time),end='\n')
#chain
class Chain:
def __init__(self):
self.chainlist=[self.genesisblock()]
def genesisblock(self):
return Block('genesisblock','',str(datetime.today()))
def insertblock(self,value,time):
newblock=Block(value,self.chainlist[-1].hash,time)
self.chainlist.append(newblock)
def outchain(self):
print('chain:')
for i in range(len(self.chainlist)):
print('第%d個'%(i+1),end='')
self.chainlist[i].outblock()
2、區塊檢驗
對日志和區塊的前向hash、現在的hash依次檢驗,一個回圈即可,
3、區塊同步
將區塊的time和value寫在串列中,轉json格式,用socket加密發送過去,用戶再轉回串列格式,用以上兩個值自行生成區塊,即同步成功,
注意判斷,當前用戶區塊個數是否為1,為1要從頭開始同步,不為1不用,因為用戶自建區塊開始的time和服務器不一樣,所以要從頭同步,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/246603.html
標籤:區塊鏈
下一篇:C語言·XDOJ練習·股票計算
