2.BTC-數(shù)據(jù)結(jié)構(gòu)

本篇文章主要介紹比特幣中的數(shù)據(jù)結(jié)構(gòu):Merkle Tree痊土。

一把篓、Merkle Tree

Merkle Tree翻譯中文的意思是梅克爾樹(shù)纫溃。Merkle Tree是BTC的區(qū)塊中的交易組織方式,它和傳統(tǒng)的二叉樹(shù)主要區(qū)別在于Merkle tree的指針均為Hash指針纸俭。

下圖就是一個(gè)Merkle Tree

在這個(gè)merkle tree 中最底層的葉子節(jié)點(diǎn)表示的是數(shù)據(jù)塊data block皇耗,在區(qū)塊鏈中代表的就是交易信息tx,圖中總共由8個(gè)tx塊揍很,對(duì)其從左往右編號(hào)為1-8郎楼。在tx塊這一層的上面三層均為hash指針,在最頂層為包含兩個(gè)hash指針的節(jié)點(diǎn)窒悔,對(duì)這個(gè)節(jié)點(diǎn)取hash值便可以得到這顆merkle tree的根hash值merkle root呜袁。這個(gè)根hash值是存儲(chǔ)在區(qū)塊中的。區(qū)塊分為block header和block body 兩部分简珠,根hash值存儲(chǔ)在block header中阶界,但在bloker header 并不存儲(chǔ)具體的交易內(nèi)容,而在blocker body里存有交易列表聋庵。比特幣中的節(jié)點(diǎn)由兩種膘融,一種為全節(jié)點(diǎn),包括blocker header 和blocker body,另一種為輕節(jié)點(diǎn)僅有blocker header祭玉。觀察merkle tree這種數(shù)據(jù)結(jié)構(gòu)氧映,所有的節(jié)點(diǎn)相連均使用了hash指針,顯然是使用這種數(shù)據(jù)結(jié)構(gòu)可以確保數(shù)據(jù)是無(wú)法被篡改的脱货,一旦想要修改某個(gè)交易信息tx岛都,就必須往上修改hash指針中的hash值律姨,而修改了hash指針中的hash值就必須再修改上一層hash指針中的hash值,如此以往直到根hash指針臼疫,你只需要保存根hash的值不被篡改就可以保證所有交易不被篡改择份。通過(guò)使用這種數(shù)據(jù)結(jié)構(gòu)可以實(shí)現(xiàn)merkle proof,它的應(yīng)用場(chǎng)景主要是在節(jié)點(diǎn)為輕節(jié)點(diǎn)的情形下,輕節(jié)點(diǎn)種僅有根hash的值烫堤,如果交易發(fā)生荣赶,要如何向輕節(jié)點(diǎn)證明已經(jīng)將交易寫(xiě)入?yún)^(qū)塊中,也就是merkle proof的過(guò)程塔逃,具體過(guò)程如圖讯壶。圖中描述的是向輕節(jié)點(diǎn)證明黃色的交易塊tx,也就是編號(hào)3已經(jīng)寫(xiě)入?yún)^(qū)塊鏈中merkle proof的過(guò)程。首先輕節(jié)點(diǎn)要向全節(jié)點(diǎn)發(fā)出請(qǐng)求湾盗,請(qǐng)求能證明黃色方塊在這顆merkle tree中的mekle proof伏蚊。之后全節(jié)點(diǎn)將返回給輕節(jié)點(diǎn)圖中標(biāo)注紅色的hash值,在有了紅色的hash值之后格粪,輕節(jié)點(diǎn)能在本地計(jì)算出所有綠色的hash值躏吊,進(jìn)而計(jì)算出根hash的值,再和blocker header中原先保存的根hash值進(jìn)行對(duì)比即可知道交易是否已經(jīng)寫(xiě)入?yún)^(qū)塊中帐萎。這個(gè)過(guò)程其實(shí)就是在二叉樹(shù)從葉子節(jié)點(diǎn)出發(fā)找到一條到達(dá)節(jié)點(diǎn)的路徑比伏,所以merkle proof 的時(shí)間復(fù)雜度是log(n)級(jí)別的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疆导,一起剝皮案震驚了整個(gè)濱河市赁项,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澈段,老刑警劉巖悠菜,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異败富,居然都是意外死亡悔醋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)兽叮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芬骄,“玉大人,你說(shuō)我怎么就攤上這事鹦聪≌俗瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵泽本,是天一觀的道長(zhǎng)宰僧。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么琴儿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮嘁捷,結(jié)果婚禮上造成,老公的妹妹穿的比我還像新娘。我一直安慰自己雄嚣,他們只是感情好晒屎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著缓升,像睡著了一般鼓鲁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上港谊,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天骇吭,我揣著相機(jī)與錄音,去河邊找鬼歧寺。 笑死燥狰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斜筐。 我是一名探鬼主播龙致,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顷链!你這毒婦竟也來(lái)了目代?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嗤练,失蹤者是張志新(化名)和其女友劉穎榛了,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體潭苞,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忽冻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此疹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僧诚。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝗碎,靈堂內(nèi)的尸體忽然破棺而出湖笨,到底是詐尸還是另有隱情,我是刑警寧澤蹦骑,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布慈省,位于F島的核電站,受9級(jí)特大地震影響眠菇,放射性物質(zhì)發(fā)生泄漏边败。R本人自食惡果不足惜袱衷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笑窜。 院中可真熱鬧致燥,春花似錦、人聲如沸排截。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)断傲。三九已至脱吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間认罩,已是汗流浹背箱蝠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猜年,地道東北人抡锈。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乔外,于是被迫代替她去往敵國(guó)和親床三。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348