国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

比特幣區(qū)塊結(jié)構(gòu)Merkle樹及簡(jiǎn)單支付驗(yàn)證分析

zzzmh / 425人閱讀

摘要:區(qū)塊體則包括當(dāng)前區(qū)塊經(jīng)過驗(yàn)證的區(qū)塊創(chuàng)建過程中生成的所有交易記錄。假如要驗(yàn)證區(qū)塊結(jié)構(gòu)圖中交易,節(jié)點(diǎn)會(huì)通過向相鄰節(jié)點(diǎn)索要通過消息包括從交易哈希值沿樹上溯至區(qū)塊頭根哈希處的哈希序列即哈希節(jié)點(diǎn)稱為認(rèn)證路徑來(lái)確認(rèn)交易的存在性和正確性。

本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:比特幣區(qū)塊結(jié)構(gòu)Merkle樹及簡(jiǎn)單支付驗(yàn)證分析原文已更新,請(qǐng)讀者前往原文閱讀

在比特幣網(wǎng)絡(luò)中,不是每個(gè)節(jié)點(diǎn)都有能力儲(chǔ)存完整的區(qū)塊鏈數(shù)據(jù),受限于存儲(chǔ)空間的的限制,很多節(jié)點(diǎn)是以SPV(Simplified Payment Verification簡(jiǎn)單支付驗(yàn)證)錢包接入比特幣網(wǎng)絡(luò),通過簡(jiǎn)單支付驗(yàn)證可以在不必存儲(chǔ)完整區(qū)塊鏈下對(duì)交易進(jìn)行驗(yàn)證,本文將分析區(qū)塊結(jié)構(gòu)Merkle樹及如何進(jìn)行交易驗(yàn)證。

區(qū)塊結(jié)構(gòu)

在工作量證明中出現(xiàn)過一個(gè)區(qū)塊信息截圖:

細(xì)心的同學(xué)一定已經(jīng)在里面發(fā)現(xiàn)了很多未講的其他信息,如:時(shí)間戳,版本號(hào),交易次數(shù),二進(jìn)制哈希樹根(Merkle根)等。

我們來(lái)看看一個(gè)區(qū)塊結(jié)構(gòu)到底是怎樣的:

如上圖(下文稱:區(qū)塊結(jié)構(gòu)圖)所示:每個(gè)數(shù)據(jù)區(qū)塊包含區(qū)塊頭和區(qū)塊體。
區(qū)塊頭封裝了當(dāng)前版本號(hào)、前一區(qū)塊哈希值、當(dāng)前區(qū)塊PoW要求的隨機(jī)數(shù)(Nonce)、時(shí)間戳、以及Merkle根信息。
區(qū)塊體則包括當(dāng)前區(qū)塊經(jīng)過驗(yàn)證的、 區(qū)塊創(chuàng)建過程中生成的所有交易記錄。這些記錄通過 Merkle樹的哈希過程生成唯一的Merkle根并記入?yún)^(qū)塊頭.

區(qū)塊哈希值實(shí)際上并不包含在區(qū)塊的數(shù)據(jù)結(jié)構(gòu)里,其實(shí)區(qū)塊打包時(shí)只有區(qū)塊頭被用于計(jì)算哈希(從網(wǎng)絡(luò)被接收時(shí)由每個(gè)節(jié)點(diǎn)計(jì)算出來(lái)),常說的區(qū)塊哈希值實(shí)際是區(qū)塊頭哈希值,它可以用來(lái)唯一、明確地標(biāo)識(shí)一個(gè)區(qū)塊。

區(qū)塊頭是80字節(jié),而平均每個(gè)交易至少是250字節(jié),而且平均每個(gè)區(qū)塊包含2000個(gè)交易。因此,包含完整交易的區(qū)塊比區(qū)塊頭的4千倍還要大。
SPV節(jié)點(diǎn)只下載區(qū)塊頭,不下載包含在每個(gè)區(qū)塊中的交易信息。這樣的不含交易信息的區(qū)塊鏈,大小只有完整區(qū)塊鏈的幾千分之1,那SPV節(jié)點(diǎn)是如何驗(yàn)證交易的呢?

哈希驗(yàn)證

上面先留一個(gè)引子,先來(lái)回顧下哈希函數(shù),記賬原理我們知道原始信息任何微小的變化都會(huì)哈希完全不同的哈希值。

簡(jiǎn)單文件驗(yàn)證

我們通常用哈希來(lái)檢驗(yàn)下載的文件是否完整,我經(jīng)常看到這樣的下載頁(yè)面:

可以看到下載鏈接后面提供了一個(gè)MD5(MD5也是一種Hash算法),這樣我們可以在下載之后對(duì)文件計(jì)算MD5,如果MD5與提供的MD5相等,說明文件有沒有被損壞,這個(gè)驗(yàn)證過程相信大家都能理解。

多點(diǎn)文件驗(yàn)證(哈希列表)

現(xiàn)在復(fù)雜度提高一點(diǎn),在P2P網(wǎng)絡(luò)中下載時(shí),會(huì)把大文件切成小文件,同時(shí)從多個(gè)機(jī)器上下載數(shù)據(jù),這個(gè)時(shí)候怎么驗(yàn)證數(shù)據(jù)呢?

以BT下載為例,在下載真正的數(shù)據(jù)之前,我們會(huì)先下載一個(gè)哈希列表的(每個(gè)下小塊計(jì)算出一個(gè)哈希),如果有一個(gè)小塊數(shù)據(jù)在傳輸過程中損壞了,那我只要重新下載這一個(gè)數(shù)據(jù)塊就行了,這時(shí)有一個(gè)問題就出現(xiàn)了,那么多的哈希,怎么保證它們本身(哈希列表中的哈希值)都是正確地呢?

答案是把每個(gè)小塊數(shù)據(jù)的哈希值拼到一起,然后對(duì)這個(gè)長(zhǎng)字符串在作一次哈希運(yùn)算,得到哈希列表的根哈希。只要根哈希校對(duì)比一樣就說明驗(yàn)哈希列表是正確的,再通過哈希列表校驗(yàn)小數(shù)據(jù)塊,如果所有的小數(shù)據(jù)塊驗(yàn)證通過則說明大文件沒有被損壞。

Merkle樹

驗(yàn)證交易的過程和文件驗(yàn)證很相似,可以人為每個(gè)交易是一個(gè)小數(shù)據(jù)塊,但比特幣使用Merkle樹的方式進(jìn)行驗(yàn)證,相對(duì)于哈希列表,Merkle樹是一種哈希二叉樹,它的明顯的一個(gè)好處是可以多帶帶拿出一個(gè)分支來(lái)(作為一個(gè)小樹)對(duì)部分?jǐn)?shù)據(jù)進(jìn)行校驗(yàn),更加高效。

我們回看下上面的區(qū)塊結(jié)構(gòu)圖,區(qū)塊體就包含這樣一個(gè)Merkle樹,Merkle樹被用來(lái)歸納一個(gè)區(qū)塊中的所有交易。

每個(gè)葉子節(jié)點(diǎn)是每個(gè)交易信息的哈希,往上對(duì)相鄰的兩個(gè)哈希合并成字符串再哈希,繼續(xù)類似的操作直到只剩下頂部的一個(gè)節(jié)點(diǎn),即Merkle根,存入?yún)^(qū)塊頭。

因?yàn)镸erkle樹是二叉樹,所以它需要偶數(shù)個(gè)葉子節(jié)點(diǎn)。如果僅有奇數(shù)個(gè)交易需要?dú)w納,那最后的交易就會(huì)被復(fù)制一份以構(gòu)成偶數(shù)個(gè)葉子節(jié)點(diǎn),這種偶數(shù)個(gè)葉子節(jié)點(diǎn)的樹也被稱為平衡樹。

簡(jiǎn)化支付驗(yàn)證

SPV節(jié)點(diǎn)不保存所有交易也不會(huì)下載整個(gè)區(qū)塊,僅僅保存區(qū)塊頭,我們來(lái)看看它是如何對(duì)交易數(shù)據(jù)進(jìn)行驗(yàn)證的。

假如要驗(yàn)證區(qū)塊結(jié)構(gòu)圖中交易6,SPV節(jié)點(diǎn)會(huì)通過向相鄰節(jié)點(diǎn)索要(通過Merkleblock消息)包括從交易6哈希值沿Merkle樹上溯至區(qū)塊頭根哈希處的哈希序列 (即哈希節(jié)點(diǎn)6, 5, 56, 78, 5678, 1234 1~8 - 稱為認(rèn)證路徑) 來(lái)確認(rèn)交易的存在性和正確性。(在N個(gè)交易組成的區(qū)塊中確認(rèn)任一交易只需要計(jì)算log2(N)個(gè)字節(jié)的哈希值,非常快速高效)

大家明白了嗎?

? 深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。

? 我的知識(shí)星球為各位解答區(qū)塊鏈技術(shù)問題,歡迎加入討論。

? 關(guān)注公眾號(hào)“深入淺出區(qū)塊鏈技術(shù)”第一時(shí)間獲取區(qū)塊鏈技術(shù)信息。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/24077.html

相關(guān)文章

  • 區(qū)塊鏈技術(shù)學(xué)習(xí)指引

    摘要:引言給迷失在如何學(xué)習(xí)區(qū)塊鏈技術(shù)的同學(xué)一個(gè)指引,區(qū)塊鏈技術(shù)是隨比特幣誕生,因此要搞明白區(qū)塊鏈技術(shù),應(yīng)該先了解下比特幣。但區(qū)塊鏈技術(shù)不單應(yīng)用于比特幣,還有非常多的現(xiàn)實(shí)應(yīng)用場(chǎng)景,想做區(qū)塊鏈應(yīng)用開發(fā),可進(jìn)一步閱讀以太坊系列。 本文始發(fā)于深入淺出區(qū)塊鏈社區(qū), 原文:區(qū)塊鏈技術(shù)學(xué)習(xí)指引 原文已更新,請(qǐng)讀者前往原文閱讀 本章的文章越來(lái)越多,本文是一個(gè)索引帖,方便找到自己感興趣的文章,你也可以使用左側(cè)...

    Cristic 評(píng)論0 收藏0
  • 用 Go 構(gòu)建一個(gè)區(qū)塊鏈 -- Part 6: 交易(2)

    摘要:到目前為止,我們幾乎已經(jīng)實(shí)現(xiàn)了一個(gè)區(qū)塊鏈數(shù)據(jù)庫(kù)的所有元素。使用根據(jù)在區(qū)塊鏈中找到一筆交易。是一個(gè)比特幣輕節(jié)點(diǎn),它不需要下載整個(gè)區(qū)塊鏈,也不需要驗(yàn)證區(qū)塊和交易。到目前為止,我們只是將一個(gè)塊里面的每筆交易哈希連接了起來(lái),將在上面應(yīng)用了算法。 翻譯的系列文章我已經(jīng)放到了 GitHub 上:blockchain-tutorial,后續(xù)如有更新都會(huì)在 GitHub 上,可能就不在這里同步了。如果...

    spacewander 評(píng)論0 收藏0
  • 區(qū)塊鏈發(fā)展歷程

    摘要:不光是技術(shù)領(lǐng)域,其他如哲學(xué)自然科學(xué)數(shù)學(xué)等領(lǐng)域,這種現(xiàn)象也是屢見不鮮,區(qū)塊鏈的產(chǎn)生和發(fā)展也是遵從了這個(gè)模式。以太坊登場(chǎng),區(qū)塊鏈以太坊是創(chuàng)立發(fā)明的,這個(gè)俄羅斯小伙子很早就在比特幣領(lǐng)域做開發(fā)新聞的報(bào)道,最后自立門戶開發(fā)了以太坊。 1、史前紀(jì)事,區(qū)塊鏈?zhǔn)非霸?showImg(http://files.jouypub.com/static/images/bd67cbaca4ac41a78e01...

    sf190404 評(píng)論0 收藏0
  • 基于Java語(yǔ)言構(gòu)建區(qū)塊鏈(六)—— 交易(Merkle Tree)

    摘要:截止年月號(hào),比特幣中有個(gè)區(qū)塊,并且這些數(shù)據(jù)占據(jù)了的磁盤空間。每個(gè)比特幣節(jié)點(diǎn)都是路由區(qū)塊鏈數(shù)據(jù)庫(kù)挖礦錢包服務(wù)的功能集合。是比特幣的輕量級(jí)節(jié)點(diǎn),它不需要下載所有的區(qū)塊鏈數(shù)據(jù),也不需要驗(yàn)證區(qū)塊和交易數(shù)據(jù)。 showImg(https://img.i7years.com/blog/pexels-photo-38136.jpeg); 最終內(nèi)容請(qǐng)以原文為準(zhǔn):https://wangwei.one/...

    liuhh 評(píng)論0 收藏0
  • 基于Java語(yǔ)言構(gòu)建區(qū)塊鏈(六)—— 交易(Merkle Tree)

    摘要:截止年月號(hào),比特幣中有個(gè)區(qū)塊,并且這些數(shù)據(jù)占據(jù)了的磁盤空間。每個(gè)比特幣節(jié)點(diǎn)都是路由區(qū)塊鏈數(shù)據(jù)庫(kù)挖礦錢包服務(wù)的功能集合。是比特幣的輕量級(jí)節(jié)點(diǎn),它不需要下載所有的區(qū)塊鏈數(shù)據(jù),也不需要驗(yàn)證區(qū)塊和交易數(shù)據(jù)。 showImg(https://img.i7years.com/blog/pexels-photo-38136.jpeg); 最終內(nèi)容請(qǐng)以原文為準(zhǔn):https://wangwei.one/...

    KevinYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

zzzmh

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<