想象一下,你正在翻譯一本5000頁的書籍,作者一直打電話告訴你他對故事做了調整,這會影響到你已經翻譯過的頁面……而這可能會一直持續下去,這就是以太坊從當前使用的MPT十六叉樹轉變為二叉樹結構中遇到的一個類似困境。對此,以太坊核心開發者Guillaume Ballet提出了一種方案,可以在大約幾天的時間內,通過3個步驟完成這一轉換手術。
對于該提案,以太坊聯合創始人vitalik評論稱:
以下是譯文:
影響以太坊的眾多問題之一是賬戶和合約數據的存儲方式,以太坊目前選擇的結構稱為默克爾帕特里夏樹(Merkle Patricia Tree,或簡稱MPT)。盡管從理論上講,它是很有意義的,但在實踐中,它帶來的問題要比其解決的問題要更多。多年來,核心開發人員一直在討論向二叉樹(binary tree)的轉換,在本文中,我將闡明我對這一問題的看法,然后給出一個解決它的方法。
Binance:將在以太坊完成上海升級且網絡穩定后將重新開放相關Token的充提服務:4月12日消息,據官方消息,Binance 在社交媒體上發文表示,在其認為以太坊上海升級后的網絡已趨于穩定后,Binance 將重新開放 ETH、OP、ARB 以及其他 ERC-20 Token 的存款和取款服務。BETH 質押在升級期間將不受影響。[2023/4/12 13:59:43]
提議的過程引入了一個過渡期,在此期間,兩種樹結構都會存在。這樣做的好處是,在轉換樹結構時,主鏈可以保持運行,并且還可以確保將所有帳戶轉換為二叉樹格式。
背景
目前,以太坊的賬戶是被存儲到一棵十六叉樹當中的。所謂十六叉,就表示一個節點有16個子節點,理論上這是很好的,因為這意味著你需要更少的"階段"來存儲你所有的數據。
例如,這就是以十六叉樹的形式表示鍵與值對(170,v)的過程。在十六進制中,170表示為0xaa,因此你只需要兩層:其中之一用于第一個a,另一層則用于第二個a。
Lido以太坊質押數量突破500萬枚ETH,價值超80億美元:金色財經報道,據 Lido 官方網站數據顯示,通過該平臺的以太坊質押量已經突破 500 萬枚 ETH,截至目前達到 5,000,550 ETH,價值約合 8,090,663,184 美元,APR 為 4.9%,已支付獎勵觸及 224,738 ETH,約合 363,616,237 美元。在其他代幣質押方面,Solana 當前質押總量為 2,364,169 SOL(約合 58,111,254 美元)、Polygon 為 65,588,684 MATIC(約合 76,738,760 美元)、Polkadot 為 2,568,097 DOT(約合 16,902,198 美元)。[2023/1/30 11:35:36]
Chiliz將于21:30暫停ETH及以太坊網絡Token存取款服務:9月14日消息,據官方消息,Chiliz交易平臺將于北京時間21時30分暫停ETH及以太坊網絡Token存取款服務。若發生硬分叉并創建新鏈,以太坊工作證明(PoW)主網及其分叉Token的名稱將是ETHW。若ETHW鏈持續存在,Chiliz將對所有在錢包中持有ETH的用戶進行快照,將分叉的Token(ETHW)以1:1的比例記入符合條件的賬戶。合并完成且網絡穩定后,將恢復ETH和以太坊網絡Token的充提,具體恢復時間另行通知。[2022/9/14 13:29:51]
圖1: 這是一棵十六叉trie樹示例,顯示了值“v”如何存儲在鍵0xaa處。此樹只有2字節長的鍵,并且只沿0xaa鍵的子樹被展開。為了簡潔起見,不相關的子樹被替換為“…”。
注意,這棵樹很淺,也很寬。然后將其與以下相同鍵與值對的二叉樹表示法進行比較。在二進制中,170表示為10101010。
以太坊未確認交易為108,381筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易108,381筆,當前全網算力為260.91TH/s,全網難度為3.46P,當前持幣地址為50,579,086個,同比增加142,832個,24h鏈上交易量為4,234,551.87ETH,當前平均出塊時間為13s。[2020/11/23 21:50:12]
圖2: 和圖1中相同的鍵值對,以二叉樹形式進行存儲。為了簡潔起見,不相關的子樹被表示為“…”。
你可以看到,這棵樹要深得多,也窄得多。
在以太坊中,每個區塊都包含一個stateRoot字段,它是MPT根的哈希值。總而言之,這個哈希,是通過對根的16個子項的哈希列表進行哈希運算而獲得的。這些子哈希列中的每一個,又依次是其子哈希列表的哈希,依此類推。
動態 | 以太坊基金會公布項目資助規則以及評估標準:日前,以太坊基金會發布一篇博文,博文中闡述了基金會對以太坊項目的撥款準則。 必須要是開源項目、避免團隊重復、避免用于應用層建設等。
項目評估標準涉及:對構建生態系統的重要性、緊急性、使用人數、研究人數以及未來收益。重要的是,要與以太坊的價值觀高度吻合。[2018/10/25]
每次生成一個新區塊時,礦工都會更新帳戶樹并重新計算其根哈希值。哈希存儲在新區塊的stateRoot字段中,然后新區塊被密封。
圖3為區塊頭的state root字段指向十六叉樹的根。
問題就出現在這里了:通過對所有節點進行哈希運算來重新計算哈希根花費的時間太長,因此,為了計算根節點,礦工將從數據庫中檢索同級哈希(sibling hash)。盡管從數據庫中獲取所有子葉并對整棵樹進行哈希運算所需的時間不多,但此操作仍然需要大量時間。這是因為必須要從數據庫中獲取每個哈希。
在十六叉樹中,通常每個階段要獲取15個同級哈希。在上面的示例中,這就是30個哈希。
即使更深入,二叉樹每個階段也只需要一個同級哈希。在上面的示例中,就只有8個哈希!這就是為什么在實踐當中,二叉樹實際上要更好的原因。
覆蓋轉化法
不幸的是,要將以太坊從十六叉樹切換到二叉樹,并不是一件容易的事。有很多數據需要轉換,并且執行更改需要花費超過15秒的區塊時間。
除此之外,想象一下,你正在翻譯一本5000頁的書籍,作者一直打電話告訴你他對故事做了調整,這會影響到你已經翻譯過的頁面……而這可能會一直持續下去。
這就是目前以太坊遇到的問題,因為用戶可以更新已轉換的地址,這意味著你必須重新開始轉換過程。
解決此問題的建議是設一個過渡期,在此期間,在十六叉樹的頂部放置一棵覆蓋二叉樹,它的作用是保存狀態發生的所有更改,直到基樹轉換為二叉樹。
這種過渡會分成三步進行:
在這種方法中,確定在區塊高度H1處,區塊具有兩個stateRoots:一個用于“基礎”十六叉樹,一個用于“覆蓋”二叉樹。
圖4: 在轉換過程中,區塊具有2個狀態根(state Root):一個是傳統十六叉樹的只讀根,第二個是“覆蓋”二叉樹的根。
十六叉樹被認為是只讀的,因此對狀態的任何更新都將是對覆蓋樹的更新。
當一筆交易讀取或更新一個帳戶時,系統首先搜索覆蓋樹。如果在那里找不到帳戶,系統將在舊的十六叉樹中搜索該值。
而在同時,十六叉樹正在后臺轉換。現在可以不用擔心插入,因為所有更改都存儲在頂部樹中。
后臺轉換過程完成后,礦工將通過轉換結果替換只讀的十六叉樹基礎根來宣布他們已準備好進行切換。對狀態的讀寫操作與步驟1相同。
圖5:轉換的第二個階段,區塊頭將十六叉樹基礎根替換為其二叉樹轉換基礎根,以向網絡發送信號,告知它們已準備就緒。
當一個足夠大的序列區塊對轉換后的基礎根具有相同的值時,這意味著大多數礦工都完成了轉換,并對轉換后的樹的外觀達成了共識。接下開,就進入到合并過程。
合并過程會逐漸進行:每次生成新區塊時,都會從疊加層中刪除n個鍵,然后將其重新插入到基礎樹中。該過程將持續進行,直到從疊加層中刪除所有鍵為止。在此階段,覆蓋狀態根將從區塊頭中刪除。
除此之外,如果交易執行寫入覆蓋樹中找到的鍵,則該鍵將從覆蓋樹中刪除,并直接寫入到基礎樹。
下一步
我們已經創建了一個初步的原型,以便估計完成轉換所需的時間。我們相信,整個過程可以在合理的時間內(大約幾天)完成。隨著算法的改進,我將發布更多的細節。
致謝
這項提議得益于Alexey Akhunov,Vitalik Buterin,Anna George,Sina Mahmoodi,Tomasz Stanczak以及Martin H. Swende提供的寶貴意見。
相關討論:https://ethresear.ch/t/overlay-method-for-hex-bin-tree-conversion/7104
Tags:以太坊ETHKENTOK怎么得到以太坊幣的錢Ethlyte CryptoBitrace Token3X Short Sushi Token
3月18日,區塊鏈情報公司Chainalysis發布上周尤其是3月12-13日比特幣暴跌事件的研究報告.
1900/1/1 0:00:001.金色觀察|a16z:為什么說區塊鏈的性能難以衡量?我們需要一種更細致、徹底的方法來衡量和比較區塊鏈性能——應將性能分解為多個組件,并在多個軸上進行比較權衡.
1900/1/1 0:00:00最近的一項Paxful調查顯示,印度加密貨幣市場在印度央行解禁前后呈現出不斷增長的趨勢。由點對點比特幣(BTC)交易市場Paxful于4月2日發布的一項調查顯示,在印度,人們對加密貨幣的采用越來.
1900/1/1 0:00:003月19日下午,由清華大學互聯網產業研究院指導,互鏈脈搏、獵聘聯合出品的《2020年中國區塊鏈人才發展研究報告》正式發布.
1900/1/1 0:00:00整體市場趨勢 本周,全球加密貨幣市場整體處于持續的超跌反彈,市場波動開始趨于平緩,出現了一定的反彈受阻跡象,當前加密總市值穩定在1700億美元上方.
1900/1/1 0:00:00根據愛立信最近的一份報告預測,到2025年,將會有65%的全球人口能夠用上5G技術,而智能手機數據的使用量,也將從目前的平均每月7.2GB增長到每月24GB.
1900/1/1 0:00:00