以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

給以太坊做個大手術:MPT十六叉樹轉二叉樹需要這三步_以太坊

Author:

Time:1900/1/1 0:00:00

寫在前面:

想象一下,你正在翻譯一本5000頁的書籍,作者一直打電話告訴你他對故事做了調整,這會影響到你已經翻譯過的頁面……而這可能會一直持續下去,這就是以太坊從當前使用的MPT十六叉樹轉變為二叉樹結構中遇到的一個類似困境。對此,以太坊核心開發者GuillaumeBallet提出了一種方案,可以在大約幾天的時間內,通過3個步驟完成這一轉換手術。

(圖片來自:tuchong.com)

以下是譯文:

影響以太坊的眾多問題之一是賬戶和合約數據的存儲方式,以太坊目前選擇的結構稱為默克爾帕特里夏樹(MerklePatriciaTree,或簡稱MPT)。盡管從理論上講,它是很有意義的,但在實踐中,它帶來的問題要比其解決的問題要更多。多年來,核心開發人員一直在討論向二叉樹的轉換,在本文中,我將介紹我對這一問題的看法,然后給出一個解決它的方法。

DeFi借貸協議Timeswap推出游戲化測試網V2:12月27日消息,DeFi借貸協議Timeswap今日宣布推出Timeswap V2的游戲化測試網,并計劃很快上線,所有符合條件的參與者都可以參與競賽并獲得回報,參與者需注冊才能使用。[2022/12/27 22:09:39]

提議的過程引入了一個過渡期,在此期間,兩種樹結構都會存在。這樣做的好處是,在轉換樹結構時,主鏈可以保持運行,并且還可以確保將所有帳戶轉換為二叉樹格式。

背景

目前,以太坊的賬戶是被存儲到一棵十六叉樹當中的。所謂十六叉,就表示一個節點有16個子節點,理論上這是很好的,因為這意味著你需要更少的"階段"來存儲你所有的數據。

例如,這就是以十六叉樹的形式表示鍵與值對的過程。在十六進制中,170表示為0xaa,因此你只需要兩層:其中之一用于第一個a,另一層則用于第二個a。

CryptoCompare通過Blockdaemon發布質押收益率指數:金色財經報道,數據提供商 CryptoCompare 通過區塊鏈基礎設施平臺 Blockdaemon 推出了一組新的質押收益率指數。兩家公司周三表示,目標是幫助投資者制定更明智的投資策略。根據一份新聞稿, Staking Yield Index Family 將使機構能夠在去中心化金融平臺上獲得 Staking 收益率指標和年度化每日 Staking 獎勵的鏈下敞口。該指數將衡量數字資產產生的年化每日質押收益率,允許機構投資者創建回報和收益率互換產品。

據該公司稱,該指數組將采用五個單獨的指標來衡量表現最佳的權益證明(PoS) 數字資產的年化每日權益收益率:Solana、Avalanche、Cardano、Cosmos 和 Polkadot。(coindesk)[2022/9/29 5:59:58]

SBF:提議對漏洞賞金設置5%的上限:金色財經報道,FTX 首席執行官Sam Bankman-Fried與ShapeShift首席執行官Eric Voorhees在Bankless主持的播客中分享了與監管政策有關話題。SBF圍繞對 DeFi 監管的立場的爭議,分享了一份名為“可能的數字資產行業標準”的文件。該文件列出了一套供DeFi公司遵循的自愿政策,直到監管機構明確監管規定。?

該文件包含一些與空間監管有關的有爭議的語言。SBF敦促業界“尊重”支持Tornado Cash制裁的外國資產控制辦公室 (OFAC)。此外,還提議對漏洞賞金設置5%的上限。該文件與大多數加密社區不符。?[2022/10/30 11:57:46]

圖1:這是一棵十六叉trie樹示例,顯示了值“v”如何存儲在鍵0xaa處。此樹只有2字節長的鍵,并且只沿0xaa鍵的子樹被展開。為了簡潔起見,不相關的子樹被替換為“…”。

今日恐慌與貪婪指數為42,恐慌程度有所下降:金色財經消息,今日恐慌與貪婪指數為42(昨日為39),恐慌程度有所下降,等級仍為恐慌。注:恐慌指數閾值為0-100,包含指標:波動性(25%)+市場交易量(25%)+社交媒體熱度(15%)+市場調查(15%)+比特幣在整個市場中的比例(10%)+谷歌熱詞分析(10%)。[2022/7/30 2:47:38]

注意,這棵樹很淺,也很寬。然后將其與以下相同鍵與值對的二叉樹表示法進行比較。在二進制中,

170表示為

10101010。

圖2:和圖1中相同的鍵值對,以二叉樹形式進行存儲。為了簡潔起見,不相關的子樹被表示為“…”。

你可以看到,這棵樹要深得多,也窄得多。

BlockFi第二季度透明度報告:擁有18億美元的未償貸款,已制定流動性方案:7月22日消息,加密借貸公司BlockFi披露,截至第二季度末,公司擁有來自機構和散戶投資者的18億美元未償貸款,其中6億美元是無抵押貸款。機構貸款占未償貸款總額的15億美元,而零售貸款占剩余的3億美元。

BlockFi表示已經制定了指導方案,以幫助其保持必要的流動性來履行核心業務活動,包括機構和零售借貸和交易活動。該指導方案將根據客戶的需求在庫存中持有至少10%的總金額,并準備好退還給客戶。還將在可在7天內收回并返還給客戶的地方持有至少50%的欠款,并將根據需要將欠客戶總額的至少90%用于存貨或可償還的貸款中。這類貸款將在一年內召回。(Cointelegraph)[2022/7/22 2:30:56]

在以太坊中,每個區塊都包含一個stateRoot字段,它是MPT根的哈希值。總而言之,這個哈希,是通過對根的16個子項的哈希列表進行哈希運算而獲得的。這些子哈希列中的每一個,又依次是其子哈希列表的哈希,依此類推。

每次生成一個新區塊時,礦工都會更新帳戶樹并重新計算其根哈希值。哈希存儲在新區塊的stateRoot字段中,然后新區塊被密封。

圖3區塊頭的stateroot字段指向十六叉樹的根。

問題就出現在這里了:通過對所有節點進行哈希運算來重新計算哈希根花費的時間太長,因此,為了計算根節點,礦工將從數據庫中檢索同級哈希。盡管從數據庫中獲取所有子葉并對整棵樹進行哈希運算所需的時間不多,但此操作仍然需要大量時間。這是因為必須要從數據庫中獲取每個哈希。

在十六叉樹中,通常每個階段要獲取15個同級哈希。在上面的示例中,這就是30個哈希。

即使更深入,二叉樹每個階段也只需要一個同級哈希。在上面的示例中,就只有8個哈希!這就是為什么在實踐當中,二叉樹實際上要更好的原因。

覆蓋轉化法

不幸的是,要將以太坊從十六叉樹切換到二叉樹,并不是一件容易的事。有很多數據需要轉換,并且執行更改需要花費超過15秒的區塊時間。

除此之外,想象一下,你正在翻譯一本5000頁的書籍,作者一直打電話告訴你他對故事做了調整,這會影響到你已經翻譯過的頁面……而這可能會一直持續下去。

這就是目前以太坊遇到的問題,因為用戶可以更新已轉換的地址,這意味著你必須重新開始轉換過程。

解決此問題的建議是設一個過渡期,在此期間,在十六叉樹的頂部放置一棵覆蓋二叉樹,它的作用是保存狀態發生的所有更改,直到基樹轉換為二叉樹。

這種過渡會分成三步進行:

第1步-轉換

在這種方法中,確定在區塊高度

H1處,區塊具有兩個

stateRoots:一個用于“基礎”十六叉樹,一個用于“覆蓋”二叉樹。

圖4:在轉換過程中,區塊具有2個狀態根:一個是傳統十六叉樹的只讀根,第二個是“覆蓋”二叉樹的根。

十六叉樹被認為是只讀的,因此對狀態的任何更新都將是對覆蓋樹的更新。

當一筆交易讀取或更新一個帳戶時,系統首先搜索覆蓋樹。如果在那里找不到帳戶,系統將在舊的十六叉樹中搜索該值。

而在同時,十六叉樹正在后臺轉換。現在可以不用擔心插入,因為所有更改都存儲在頂部樹中。

第2步-基轉換

后臺轉換過程完成后,礦工將通過轉換結果替換只讀的十六叉樹基礎根來宣布他們已準備好進行切換。對狀態的讀寫操作與步驟1相同。

圖5:轉換的第二個階段,區塊頭將十六叉樹基礎根替換為其二叉樹轉換基礎根,以向網絡發送信號,告知它們已準備就緒。

當一個足夠大的序列區塊對轉換后的基礎根具有相同的值時,這意味著大多數礦工都完成了轉換,并對轉換后的樹的外觀達成了共識。接下開,就進入到合并過程。

第3步-合并兩顆樹

合并過程會逐漸進行:每次生成新區塊時,都會從疊加層中刪除n個鍵,然后將其重新插入到基礎樹中。該過程將持續進行,直到從疊加層中刪除所有鍵為止。在此階段,覆蓋狀態根將從區塊頭中刪除。

除此之外,如果交易執行寫入覆蓋樹中找到的鍵,則該鍵將從覆蓋樹中刪除,并直接寫入到基礎樹。

下一步

我們已經創建了一個初步的原型,以便估計完成轉換所需的時間。我們相信,整個過程可以在合理的時間內完成。隨著算法的改進,我將發布更多的細節。

致謝

這項提議得益于AlexeyAkhunov,VitalikButerin,AnnaGeorge,SinaMahmoodi,TomaszStanczak以及MartinH.Swende提供的寶貴意見。

相關討論:https://ethresear.ch/t/overlay-method-for-hex-bin-tree-conversion/7104

Tags:以太坊STATERBLOC以太坊最新價格行情分析美元BACKSTABDOGEVitalick Neuterinblockchain平臺交易

以太坊交易
以太坊的歷史你知道多少?這里有一份簡史_以太坊

以太坊是一個用于去中心化應用的全球性開源區塊鏈平臺,由智能合約提供支持并嵌入本地數字貨幣Ether。在以太坊上,可以編寫代碼根據編程條件控制數字價值的傳輸.

1900/1/1 0:00:00
加密騙局瞄準新冠疫情慈善捐款?德州監管機構緊急叫停_LTR

德州證券監管機構繼續打擊加密貨幣騙局,發現一家涉嫌欺詐的加密公司利用COVID-19捐贈發表虛假聲明.

1900/1/1 0:00:00
3月增發近100億?操縱BTC?USDT究竟什么來頭?_USD

區塊鏈大星說公眾號良心出品。緊追圈內熱點潮流,用有趣的漫畫講有料的事件。實乃新一代鏈圈青年硬核入門的好幫手、上班摸魚的好朋友.

1900/1/1 0:00:00
比特幣奇葩8問:為何區塊620826比區塊620825早1秒誕生?_比特幣

寫在前面: 關于比特幣,我們有時會遇到一些難以理解的技術問題,例如“新區塊比舊區塊早1秒誕生”、“同一時間不同全節點的大小不同”等奇葩現象,對于這些問題,就需要求助專業的開發者來幫忙解惑.

1900/1/1 0:00:00
從瑞典海盜黨學點DAO運動的方法論_DAO

如果DAO像海盜黨為瑞典公民所做的那樣為企業做事,將是一番什么樣的景象?原文標題:HowtobuidlamovementWhattheSwedishPiratePartyteachesusabo.

1900/1/1 0:00:00
觀察 | 雄安三周年,區塊鏈發展推向新高度_區塊鏈

3月31日,在雄安新區成立三周年的前一天,雄安區塊鏈實驗室正式揭牌。據介紹,雄安區塊鏈實驗室是一個綜合性科技創新服務平臺,以打造開放創新基地、探索實驗室經濟新模式為目標,重點圍繞技術創新、測評認.

1900/1/1 0:00:00
ads