以太坊中的Merkle Patricia Tree(1):基本概念

1. Trie/Radix樹

Trie樹,又稱 前綴樹或字典樹 拖叙,是一種有序樹,用于保存關(guān)聯(lián)數(shù)組. 其中的鍵通常是字符串 夺艰。與二叉查找樹不同捍岳, 鍵不是直接保存在節(jié)點(diǎn)中富寿,而是由節(jié)點(diǎn)在樹中的位置決定 。一個(gè)節(jié)點(diǎn)的所有子孫都有相同的前綴锣夹,也就是這個(gè)節(jié)點(diǎn)對(duì)應(yīng)的字符串页徐,而 根節(jié)點(diǎn)對(duì)應(yīng)空字符串

一般情況下银萍,不是所有的節(jié)點(diǎn)都有對(duì)應(yīng)的值变勇, 只有葉子節(jié)點(diǎn)和部分內(nèi)部節(jié)點(diǎn)所對(duì)應(yīng)的鍵才有相關(guān)的值 。 實(shí)際上trie每個(gè)節(jié)點(diǎn)是一個(gè) 確定長(zhǎng)度的數(shù)組 贴唇,數(shù)組中每個(gè)節(jié)點(diǎn)的值是一個(gè)指向子節(jié)點(diǎn)的指針搀绣,最后有個(gè)標(biāo)志域, 標(biāo)識(shí)這個(gè)位置為止是否是一個(gè)完整的字符串.

常見的用來存英文單詞的trie每個(gè)節(jié)點(diǎn)是一個(gè) 長(zhǎng)度為27的指針數(shù)組戳气,index0-25代表a-z字符链患,26為標(biāo)志域 。如圖:

image.png

2. Patricia 帕特里夏樹

Patricia樹瓶您,或稱Patricia trie锣险,或crit bit tree蹄皱,壓縮前綴樹,是一種更節(jié)省空間的Trie芯肤。對(duì)于基數(shù)樹的每個(gè)節(jié)點(diǎn)巷折,如果 該節(jié)點(diǎn)是唯一的兒子的話,就和父節(jié)點(diǎn)合并 崖咨。


image.png

3. Merkle 默克爾樹

  1. MT是一種樹锻拘,大多數(shù)是 二叉樹 ,也可以多叉樹击蹲,無論是幾叉樹署拟,它都具有樹結(jié)構(gòu)的所有特點(diǎn);
  2. Merkle Tree的 葉子節(jié)點(diǎn)的value是數(shù)據(jù)集合的單元數(shù)據(jù)或者單元數(shù)據(jù)HASH 歌豺。
  3. 非葉子節(jié)點(diǎn)的value是根據(jù)它下面所有的葉子節(jié)點(diǎn)值 推穷,然后按照Hash算法計(jì)算而得出的。

4. MPT(Merkle Patricia Trees)

知道了Merkle Tree类咧,知道了Patricia Tree馒铃,顧名思義,MPT(Merkle Patricia Tree)就是這兩者混合后的產(chǎn)物痕惋。

在以太坊中, 對(duì)于交易樹來說区宇,二叉Merkle Tree是非常好的數(shù)據(jù)結(jié)構(gòu)。因?yàn)橐坏湟呀?jīng)建立值戳,花多少時(shí)間來編輯這棵樹并不重要议谷,它就會(huì) 永遠(yuǎn)存在并且不會(huì)改變

但是堕虹,對(duì)于狀態(tài)樹卧晓,情況會(huì)更復(fù)雜些。

  • 以太坊中的狀態(tài)樹基本上包含了一個(gè) 鍵值映射 赴捞,其中的 鍵是地址 禀崖,而值包括賬戶的 聲明、余額螟炫、隨機(jī)數(shù)nonce波附、代碼以及每一個(gè)賬戶的存儲(chǔ) (其中存儲(chǔ)本身就是一顆樹)。
  • 狀態(tài)樹需要經(jīng)常地進(jìn)行更新:
    • 賬戶余額和賬戶的隨機(jī)數(shù)nonce經(jīng)常會(huì)更變
    • 新的賬戶會(huì)頻繁地插入昼钻,存儲(chǔ)的鍵( key)也會(huì)經(jīng)常被插入以及刪除掸屡。

我們需要這樣的數(shù)據(jù)結(jié)構(gòu):

  1. 它能 在一次插入、更新然评、刪除操作后快速計(jì)算到樹根 仅财,而不需要重新計(jì)算整個(gè)樹的Hash。
  2. 樹的 深度是有限制 的碗淌,即使考慮攻擊者會(huì)故意地制造一些交易盏求,使得這顆樹盡可能地深抖锥。不然,攻擊者可以通過操縱樹的深度碎罚,執(zhí)行拒絕服務(wù)攻擊(DOS attack)磅废,使得更新變得極其緩慢。
  • 樹的根只取決于數(shù)據(jù) 荆烈,和其中的更新順序無關(guān)拯勉。換個(gè)順序進(jìn)行更新,甚至重新從頭計(jì)算樹憔购,并不會(huì)改變根宫峦。

MPT是最接近同時(shí)滿足上面的性質(zhì)的的數(shù)據(jù)結(jié)構(gòu)。MPT的工作原理的最簡(jiǎn)單的解釋是:

  • 值通過鍵來存儲(chǔ)
  • 鍵被編碼到搜索樹必須要經(jīng)過的路徑中
  • 每個(gè)節(jié)點(diǎn)有 16個(gè)孩子 玫鸟,因此路徑由16進(jìn)制的編碼決定:例如导绷,鍵‘dog’的16進(jìn)制編碼是6 4 6 15 6 7,所以從root開始到第六個(gè)分支屎飘,然后到第四個(gè)妥曲,再到第六個(gè),再到第十五個(gè)枚碗,這樣依次進(jìn)行到達(dá)樹的葉子逾一。
  • 當(dāng)樹稀少時(shí)需要一些額外的優(yōu)化铸本。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肮雨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子箱玷,更是在濱河造成了極大的恐慌怨规,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锡足,死亡現(xiàn)場(chǎng)離奇詭異波丰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舶得,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門掰烟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沐批,你說我怎么就攤上這事纫骑。” “怎么了九孩?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵先馆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我躺彬,道長(zhǎng)煤墙,這世上最難降的妖魔是什么梅惯? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮仿野,結(jié)果婚禮上铣减,老公的妹妹穿的比我還像新娘。我一直安慰自己设预,他們只是感情好徙歼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳖枕,像睡著了一般魄梯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宾符,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天酿秸,我揣著相機(jī)與錄音,去河邊找鬼魏烫。 笑死辣苏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哄褒。 我是一名探鬼主播稀蟋,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼呐赡!你這毒婦竟也來了退客?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤链嘀,失蹤者是張志新(化名)和其女友劉穎萌狂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怀泊,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茫藏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霹琼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片务傲。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枣申,靈堂內(nèi)的尸體忽然破棺而出售葡,到底是詐尸還是另有隱情,我是刑警寧澤糯而,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布天通,位于F島的核電站,受9級(jí)特大地震影響熄驼,放射性物質(zhì)發(fā)生泄漏像寒。R本人自食惡果不足惜烘豹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诺祸。 院中可真熱鬧携悯,春花似錦、人聲如沸筷笨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胃夏。三九已至轴或,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仰禀,已是汗流浹背照雁。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留答恶,地道東北人饺蚊。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悬嗓,于是被迫代替她去往敵國(guó)和親污呼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容