EN
x

深入淺出OSNMA系列:Merkle Tree

Merkle Tree,一般也被叫作Hash Tree,由此可見,就是說內存hash值的一株樹。從ICD的對merkle tree的說明下圖也可不可以能夠。

在最底(di)部(bu),和(he)哈(ha)(ha)希(xi)(xi)(xi)(xi)詳細(xi)信(xin)息這樣(yang)的(de)(de)(de)(de)(de),小(xiao)編把(ba)數(shu)據(ju)報告表(biao)(biao)(biao)格劃(hua)分為小(xiao)的(de)(de)(de)(de)(de)數(shu)據(ju)報告表(biao)(biao)(biao)格塊,有相表(biao)(biao)(biao)示的(de)(de)(de)(de)(de)地哈(ha)(ha)希(xi)(xi)(xi)(xi)和(he)它表(biao)(biao)(biao)示。但(dan)向上(shang)(shang)走,并不(bu)算之間去運算根(gen)哈(ha)(ha)希(xi)(xi)(xi)(xi),然而把(ba)相距的(de)(de)(de)(de)(de)兩根(gen)哈(ha)(ha)希(xi)(xi)(xi)(xi)一(yi)(yi)并連成一(yi)(yi)片個空(kong)數(shu)組,第二步運算這是(shi)(shi)空(kong)數(shu)組的(de)(de)(de)(de)(de)哈(ha)(ha)希(xi)(xi)(xi)(xi),這樣(yang)的(de)(de)(de)(de)(de)每(mei)兩根(gen)哈(ha)(ha)希(xi)(xi)(xi)(xi)就接婚生子,至(zhi)(zhi)個”子哈(ha)(ha)希(xi)(xi)(xi)(xi)“。倘若最底(di)部(bu)的(de)(de)(de)(de)(de)哈(ha)(ha)希(xi)(xi)(xi)(xi)數(shu)是(shi)(shi)單(dan)數(shu),那到另(ling)外必(bi)定有一(yi)(yi)單(dan)身哈(ha)(ha)希(xi)(xi)(xi)(xi),此(ci)種實際情況就之間對它參與哈(ha)(ha)希(xi)(xi)(xi)(xi)運算,以至(zhi)(zhi)于一(yi)(yi)定會到它的(de)(de)(de)(de)(de)子哈(ha)(ha)希(xi)(xi)(xi)(xi)。于向上(shang)(shang)推,但(dan)依然是(shi)(shi)這樣(yang)的(de)(de)(de)(de)(de)的(de)(de)(de)(de)(de)的(de)(de)(de)(de)(de)方(fang)法,應(ying)該到狀(zhuang)況更加少了(le)的(de)(de)(de)(de)(de)新(xin)3級哈(ha)(ha)希(xi)(xi)(xi)(xi),終(zhong)究必(bi)定形連成一(yi)(yi)片棵下(xia)跌情況的(de)(de)(de)(de)(de)樹,至(zhi)(zhi)樹根(gen)的(de)(de)(de)(de)(de)這是(shi)(shi)位址,這新(xin)一(yi)(yi)批(pi)就完(wan)剩一(yi)(yi)根(gen)哈(ha)(ha)希(xi)(xi)(xi)(xi)了(le),小(xiao)編把(ba)它叫 Merkle Root。

Merkle Tree的特點


01

MT都是香香公主化妝品,絕大部分數是二叉樹,也能夠 多叉樹,無論否是幾叉樹,它都有著樹節構的很多性能。
02

Merkle Tree的(de)小(xiao)葉接(jie)點的(de)value是數(shu)劇資料(liao)匯合的(de)單(dan)無數(shu)劇資料(liao)一些單(dan)無數(shu)劇資料(liao)HASH。

03

非樹(shu)嫩葉域的(de)(de)value是只能根據它(ta)接下每個(ge)的(de)(de)樹(shu)嫩葉域值,之后(hou)決定Hash運(yun)算(suan)方式運(yun)算(suan)而給出的(de)(de)。

我們對OSNMA而(er)言(yan),選用(yong)打了(le)個個16個樹(shu)(shu)(shu)葉點(dian)(dian)位(wei)的(de)(de)(de)(de)層次性默克爾樹(shu)(shu)(shu),16個樹(shu)(shu)(shu)葉點(dian)(dian)位(wei)不同相(xiang)匹配(pei)的(de)(de)(de)(de)m0~m15,對mi做好連續哈希,則擁(yong)有X(0,i),故此(ci)樹(shu)(shu)(shu)從底往前,第0層的(de)(de)(de)(de)點(dian)(dian)位(wei)總(zong)數(shu)為(wei)(wei)16,然后(hou)層的(de)(de)(de)(de)點(dian)(dian)位(wei)數(shu)為(wei)(wei)8,第2層的(de)(de)(de)(de)點(dian)(dian)位(wei)數(shu)為(wei)(wei)4,然后(hou)層的(de)(de)(de)(de)點(dian)(dian)位(wei)數(shu)為(wei)(wei)2,然后(hou)層點(dian)(dian)位(wei)數(shu)為(wei)(wei)1,也(ye)(ye)是(shi)(shi)(shi)根(gen)點(dian)(dian)位(wei)。往前1層,點(dian)(dian)位(wei)數(shu)少半是(shi)(shi)(shi)為(wei)(wei)了(le)選用(yong)的(de)(de)(de)(de)就(jiu)是(shi)(shi)(shi)一個壓(ya)根(gen)二叉樹(shu)(shu)(shu)。在其中(zhong)mi的(de)(de)(de)(de)值是(shi)(shi)(shi)由私鑰(yao)類型的(de)(de)(de)(de)+私鑰(yao)代號+私鑰(yao)形(xing)成,這(zhe)也(ye)(ye)就(jiu)相(xiang)關在了(le)osnma電(dian)本文中(zhong)采用(yong)的(de)(de)(de)(de)加密文件神經網絡(luo)算(suan)法的(de)(de)(de)(de)查證。

OSNMA中再(zai)生利用默克爾樹交接看到DSM-PKR華(hua)圖共秘鑰的認證,是經過(guo)hash不要逆和只需要播(bo)發(fa)六個進(jin)程配合通用秘鑰自個轉成(cheng)一些進(jin)程,組(zu)成(cheng)7個進(jin)程就(jiu)能完整對(dui)根進(jin)程的校正。現實情(qing)況舉一些事(shi)件就(jiu)很加容易懂得了。

ICD中(zhong),MID是(shi)中(zhong)用提(ti)示之前播發的(de)DSM-PKR中(zhong)的(de)服務(wu)性秘鑰(yao)的(de)表示相互關系(xi),舉列(lie)MID=0的(de)時期,mi=公(gong)(gong)開(kai)密鑰(yao)形式+0+公(gong)(gong)開(kai)密鑰(yao),另一個再播剛(gang)發X(0,1),X(1,1),X(2,1),X(3,1)。驗證工(gong)藝流(liu)程是(shi)這樣子(zi)的(de),

獨一(yi)部mi去sha-256能(neng)夠 X(0,0)

第2步將X(0,0)+X(0,1),接下(xia)來對(dui)之和的數劇開始(shi)sha-256控(kong)制,所得的沒想(xiang)到標記符號為X(1,0)

第(di)三點步將X(1,0)+X(1,1),后(hou)來對(dui)之(zhi)和的資料做出sha-256控制,增值稅的結(jie)果圖標為X(2,0)

4.步將X(2,0)+X(2,1),然(ran)后呢對求和(he)的數據庫去(qu)sha-256操作方法(fa),所(suo)獲資金結果圖標(biao)為X(3,0)

第三步步將X(3,0)+X(3,1),接下來對累加的數據(ju)分析來sha-256方法,所有的結(jie)果符號為X(4,0)

X(4,0)就(jiu)是(shi)指根連接點(dian)(dian),與從服(fu)務管理免費下載的(de)根連接點(dian)(dian)對其進行較(jiao)為必須指導檢定可(ke)不可(ke)以可(ke)以利用。

表(biao)示(shi)任何的(de)(de)MID,只(zhi)需(xu)要將步(bu)湊中的(de)(de)下表(biao)依照規定(ding)表(biao)示(shi)工作(zuo)表(biao)格中寫出的(de)(de)進行轉換,方法就是致(zhi)的(de)(de)。

python實例

'''實計(ji)運行的(de)(de)時(shi),不想(xiang)要顧慮那(nei)麼復(fu)雜(za)的(de)(de),直觀做一兩個優(you)化的(de)(de)merkleTree,就可(ke)使用(yong)OSNMA的(de)(de)運作。鑒于OSNMA的(de)(de)merkleTree的(de)(de)層高(gao)和時(shi)間數(shu)是放置(zhi)的(de)(de)

'''


class OSNMAMerkleTree:

def __init__(self,hashFun):

self.hashFun = hashFun

self.allNodes=dict()#所有端點的(de)信息動用三個(ge)數字(zi)(zi)(zi)6數字(zi)(zi)(zi)代表(biao),首先(xian)個(ge)數字(zi)(zi)(zi)代表(biao)層,2個(ge)數字(zi)(zi)(zi)代表(biao)這1層的(de)第(di)這幾個(ge)

self.leafm0_15=[]

self.InterNode=[[(0,1),(1,1),(2,1),(3,1)],#m0

[(0,0),(1,1),(2,1),(3,1)],#m1

[(0,3),(1,0),(2,1),(3,1)],#m2

[(0,2),(1,0),(2,1),(3,1)], [(0,5),(1,3),(2,0),(3,1)], [(0,4),(1,3),(2,0),(3,1)], [(0,7),(1,2),(2,0),(3,1)], [(0,6),(1,2),(2,0),(3,1)], [(0,9),(1,5),(2,3),(3,0)], [(0,8),(1,5),(2,3),(3,0)],

[(0,11),(1,4),(2,3),(3,0)],#m10

[(0,10),(1,4),(2,3),(3,0)],#m11

[(0,13),(1,7),(2,2),(3,0)], [(0,12),(1,7),(2,2),(3,0)], [(0,15),(1,6),(2,2),(3,0)],

[(0,14),(1,6),(2,2),(3,0)],#m15

] #只需(xu)要的(de)連接點(dian)表(biao)


def AddLayer(self,floorindex,nodeSize):


index =0 indexkey = 0

for i in range(nodeSize):

leftNodeValue=self.allNodes[(floorindex,index)] #完成左方子進程數據(ju)統計

rightNodeValue=self.allNodes[(floorindex,index+1)]#獲得(de)下方子結點(dian)參數

blocktmp=leftNodeValue+rightNodeValue

self.allNodes.update({(floorindex+1,indexkey):self.hashFun(blocktmp).digest()})#求算父點位的統計(ji)數據


index+=2 indexkey+=1


def GeneratorMerkleTree(self,data_blocks):

if not data_blocks:

return None


self.leafm0_15 = data_blocks

self.allNodes.clear()

floorindex=0 index =0

for block in data_blocks:

self.allNodes.update({(floorindex,index):self.hashFun(block).digest()})

index+=1


self.AddLayer(0,8)

self.AddLayer(1,4)

self.AddLayer(2,2)

self.AddLayer(3,1)


#獲取分別的(de)頂點

def GetNodeValue(self,floor,index):

return self.allNodes[(floor,index)]


#領取mi對應著(zhu)的(de)幾個(ge)頂點

def GetMiNodes(self,miIndex=0):

Nodes=[]

for i in range(4):

tmp=self.InterNode[miIndex][i]

nodedata=self.GetNodeValue(tmp[0],tmp[1])

Nodes.append(nodedata)

return Nodes


def verifyRoot(self,mid,ITNS,leaf):

node = self.hashFun(leaf).digest()

for it_node in ITNS:

if mid % 2 == 0:

node = self.hashFun(node + it_node).digest()

else:

node = self.hashFun(it_node + node).digest()

mid = mid // 2

return node==self.allNodes[(4,0)]

#index為MID,mi為小編子域

def verifycalRoot(self,MID,mi):

x0i=self.hashFun(mi).digest()

for item in self.InterNode[MID]:

ifMID%2==0:

x0i=x0i+self.allNodes[item]

else:

x0i=self.allNodes[item]+x0i

MID =MID // 2

x0i=self.hashFun(x0i).digest()

return x0i


def showallnodes(self):


for i, v in self.allNodes.items():

print(i,v)

def getAllNodes(self):

return self.allNodes

def getleafi(self,i):

return self.leafm0_15[i]

參考資料://en.wikipedia.org/wiki/Merkle_tree
上一篇:聚焦 | 我們八周年啦!
下一篇:年終回顧 | 衛導的2023年
需用關心亦或是中遇情況? 聯系我們
解決方案
定位、導航與授時(PNT)
導航自動化檢測與認證
自動化測試實驗室
復雜電磁環境模擬測試系統
北斗室內外無縫定位系統
導航干擾監測定位系統
產品中心
衛星導航星座模擬器
導航安全性檢測模擬器
導航監測與防護設備
信號記錄與回放系統
三維場景建模與仿真
自動化測試評估軟件
行業應用
航空航天
電力
通信
汽車
企業
政府
公司
關于我們
加入我們
資訊中心
新聞資訊
媒體報道
展會及產品發布
視頻中心
支持
技術支持
資源庫
在線支持中心
聯系我們
聯系我們
供應商招募
合作伙伴招募
辦公電話:0731-89603147轉801
客服郵箱:gln@obuv.cn
地址:長沙高新開發區尖山路18號長沙中電軟件園二期B2棟10層1001-1010室
日本一区二区在线视频_毛片网站在线_超碰最新地址_欧美日韩一区二区三区在线观看 日本一区二区在线视频_毛片网站在线_超碰最新地址_欧美特黄一级 日本一区二区在线视频_毛片网站在线_超碰最新地址_性色AV无码成人亚洲一区 日本一区二区在线视频_毛片网站在线_超碰最新地址_午夜影院毛片 日本一区二区在线视频_毛片网站在线_超碰最新地址_奇米影视7777狠狠狠狠色

m.v7330.cn

m.szxing.cn

m.r5774.cn

m.jiatunjuan.cn

m.dzbeite.cn