作者:?GuillaumeBallet
翻譯&校對:?裴奇?&阿劍
來源:以太坊愛好者
賬戶和合約存儲數據的方式是影響以太坊的眾多問題之一。以太坊協議選用了MerklePatriciaTree來組織賬戶及合約數據。盡管這種數據結構在理論上效果很好,但在實際應用中,它帶來的問題卻比它能夠解決的問題多。核心開發者們已經討論多年,想要把這種數據結構換為二叉樹,我將在這篇文章中闡述我對這個問題的看法以及如何實現這種轉變。
我所提議的處理方法包括一段時間的過渡期,在這段時間內,網絡要同時維護兩種樹結構。這樣做的好處是,轉換樹結構的過程不會影響鏈的運行,并且可以確保所有的賬戶都被轉換成了二進制格式。
背景
目前,以太坊的狀態樹是十六叉制的。十六叉制表示每個節點有16個孩子節點。理論上講,這種方式挺好的,因為孩子節點多意味著只需要更少的“層”便可存儲所有數據。
穩定幣crvUSD科普創新清算機制LLAMMA,可在抵押品價格下跌時逐步替換為穩定幣:1月17日消息,Curve官方科普其穩定幣crvUSD創新的清算機制LLAMMA,解釋了LLAMMA通過AMM的特性進行針對債務人更友善的清算方式,讓抵押品在價格下跌時逐漸轉移成穩定幣,讓原本要清償的債務有一定程度的穩定幣可以償還,同時在價格回穩時再逐漸把穩定幣換回抵押品,而不是直接的觸發清算導致債務人的虧損。
此前報道,2022年11月23日,去中心化交易平臺CurveFinance開發者發布Curve即將推出的去中心化Stablecoin“crvUSD”的官方代碼和白皮書。[2023/1/17 11:17:13]
例如,下圖是用十六叉樹表示的鍵值對?(170,v)。十六進制中,170?記作?0xaa,因此你只需要兩層:第一層記錄第一個?a,第二層記錄第二個?a。
國務院:推進科普與區塊鏈技術深度融合:為貫徹落實黨中央、國務院關于科普和科學素質建設的重要部署,依據《中華人民共和國科學技術進步法》、《中華人民共和國科學技術普及法》制定《全民科學素質行動規劃綱要(2021-2035年)》,其中要求實施智慧科普建設工程。推進科普與區塊鏈等技術深度融合,強化需求感知、用戶分層、情景應用理念,推動傳播方式、組織動員、運營服務等創新升級,加強“科普中國”建設,強化科普信息落地應用,與智慧教育、智慧城市、智慧社區等深度融合。(新華社)[2021/7/10 0:40:52]
-圖1.十六叉樹的例子,展示了值v是如何在在對應鍵0xaa處是存儲的。這棵樹的鍵長度只有2個字節,只有沿著0xaa的子樹被表現出來了。為了簡潔,不相關的子樹替換為“...”-
動態 | 人民日報官方微博科普區塊鏈 強調區塊鏈不等于比特幣:人民日報官方微博今早發表9圖科普區塊鏈。其中涉及區塊鏈的特點有:1、安全;2、不可篡改;3、可訪問;4、無第三方。區塊鏈對未來的影響:1、不需繁瑣個人證明;2、看病避免反復檢查;3、旅行消費更加便捷;4、交易無需第三方。同時強調,區塊鏈不等于比特幣。比特幣只是區塊鏈技術的一種應用,區塊鏈還有醫療衛生、食品安全、版權保護等諸多應用領域。[2019/10/28]
可以看出,上圖的樹很矮,而且很寬。給定相同的鍵值對,下圖展示了二叉樹存儲的情形。170?在二叉樹中被表示為?10101010。
-圖2.與圖1相同的鍵值對,存儲在二叉樹中。為了簡潔,不相關的子樹被表示為“...”-
動態 | 央行官微舊文重發“再科普”:范一飛詳解數字貨幣:據中國經濟網消息,今日,央行官微公眾號頭條重新發布央行副行長范一飛在2018年1月25日題為《關于央行數字貨幣的幾點考慮》的文章,對央行數字貨幣再次進行科普。同時,微信公眾號第二條發布支付司副司長穆長春8月10日在第三屆中國金融四十人伊春論壇上的演講。近年來,各主要國家和地區央行及貨幣當局均在對發行央行數字貨幣開展研究,新加坡央行和瑞典央行等已經開始進行相關試驗,人民銀行也在組織進行積極探索和研究。[2019/8/21]
從圖中可見,二叉樹要深得多,也窄得多。
以太坊中,每個區塊包含一個?stateRoot?字段,這是該塊處理完成后表示以太坊全局狀態的MPT的樹根哈希值。總的來說,這個哈希值是對根節點的16個孩子節點的哈希值所組成的列表作哈希運算得到的。這些孩子節點的哈希值又是孩子的16個孩子節點的哈希值所組成的列表做哈希運算得到的,以此類推。
中科院自動化研究所將面向大中小學生開展區塊鏈等主題的科普講座:5月21日,新華網訊,今年,中國科學院自動化研究所將舉辦第十四屆“自動化之光”公眾科學開放日活動。屆時,自動化所將面向大中小學生分別開展《腦與智能》、《區塊鏈技術與平行智能》、《大數據時代的視覺智能》、《動畫真奇妙》等4個主題報告,用實例和生動的演示深入淺出地為大家揭示智能技術的原理和奧妙。[2018/5/21]
每次打包交易生成新區塊時,礦工都會更新賬戶樹,重新計算根哈希。根哈希存儲在新區塊的?stateRoot?字段,然后新區塊被共識。
-圖3.區塊頭中的狀態根字段,指向十六叉樹的樹根-
問題在于:如果要對所有節點做哈希,重新計算根哈希的時間就太長了,因此,為了計算根節點的哈希,礦工將從數據庫中檢索?同層節點的兄弟哈希值。雖然后者花費的時間沒有前者那么多,這個操作還是很耗時。因為每個哈希都必須從數據庫中取出。
在十六叉樹中,通常每一層你都需要取出15個兄弟哈希值。在上面那個我構造的例子中,就需要30個哈希值。
盡管二叉樹層次更深一點,但在每一層只需要一個兄弟哈希值。在上述例子中,僅僅需要8個哈希值!這就是為什么在實際中二叉樹更優。
覆蓋層轉變方法
不幸的是,轉換為二叉樹并不簡單。需要轉換的數據?太多了,執行轉換花費的時間將多于15秒的區塊生成時間。
除此以外,設想你要翻譯一本5000頁的書,作者還在不停地告訴你他們對故事做了些修改,并且這些修改會影響你已經翻譯過的頁……那這個過程就沒完沒了。轉換狀態樹的格式也是一樣的問題:可能你剛完成某個地址的格式轉換,用戶就使用了該地址,那你又得從頭轉換一遍。
解決這個問題的辦法是增加一個過渡期,過渡期間,在十六叉樹基層上建立一棵覆蓋樹。這棵覆蓋樹是二叉樹格式的,它的作用是保存狀態上發生的所有變化,直到基層十六叉樹完全轉換為二叉樹。轉換分為3步進行。
第1步——轉換
在這種方法下,區塊高度為?
H1?時肯定會有?
兩個?狀態根:一個是“基層”十六叉樹狀態根,一個是“覆蓋層”二叉樹狀態根。
-圖4.轉換過程中,區塊擁有兩個狀態根:一個是傳統十六叉樹的只讀根,一個是覆蓋二叉樹的可讀寫根-
十六叉樹被設置為只讀,因此對狀態的任何更新都將在覆蓋樹上進行。
當一筆交易讀取或者更新一個賬戶時,系統首先會搜索覆蓋樹。如果在覆蓋樹中找不到賬戶,接著將會在舊的十六叉樹中搜索值。
與此同時,十六叉樹在后臺進行轉換。此時不需要擔心值插入的問題,因為所有的改變都會存儲在上層的覆蓋樹中。
第2步——基層樹切換
當后臺轉換過程完成,礦工對外宣告,他們已經準備好用轉換結果來替換只讀的十六進制基層樹根。對狀態的讀寫與步驟1階段是一樣的。
-圖5.轉換的第二個階段,礦工在區塊頭使用轉換所得二叉樹的樹根替換十六叉樹根,向網絡示意他們已經準備好了-
當足夠多的一系列區塊對轉換所得的二叉基層樹根給出了相同的值,意味著大多數礦工都完成了轉換,并且認可轉換后的樹。合并過程則開始。
第3步——合并兩棵樹
合并過程不斷推進:每產生一個新的區塊,就從覆蓋樹上刪除n個鍵,把它們重新插入二叉基層樹。此過程一直持續,直到所有的鍵都從覆蓋樹上移除。到達這步時,區塊頭就不再保留覆蓋狀態樹的樹根。
整個步驟的核心只有一個:如果交易執行時要寫的鍵存在于覆蓋樹上,這個鍵就會從覆蓋樹上刪除,寫操作直接在二叉基層樹上進行。
下一步
為了估計完成轉換所需要的時間,我已經做了一個低轉換率的原型系統。我們確信,整個過程花費的時間不會太離譜,也就是說幾天時間就夠了。我們會隨著算法的改進而公布更多細節。
致謝
此提議得益于AlexeyAkhunov、VitalikButerin、AnnaGeorge、SinaMahmoodi、TomaszStanczak以及MartinH.Swende的寶貴意見。
原文鏈接:https://medium.com/@gballet/ethereum-state-tree-format-change-using-an-overlay-e0862d1bf201
本文來源:證券日報·金融1號院 作者:邢萌 作為數字經濟的發展基石,新一代信息技術引領的新型基礎設施建設已成為我國謀求高質量發展的重要要素.
1900/1/1 0:00:00Overview概述 幣圈用戶的投資或投機行為決定了高收益產品注定成為市場主流。但重點是,在這些不確定的高收益的背后隱藏了確定的真實的風險.
1900/1/1 0:00:00摘要:美原油5月WTI期貨現負值,短時出現“踩踏擠兌”,大量交易者“不計代價”移倉6月合約,以規避實物交割的風險。出現此次極端行情,和原油需求銳減下的庫存告急有關:原油積壓不利于實物交割.
1900/1/1 0:00:004月15日,以太坊2.0構建團隊PrysmaticLabs發布以太坊2.0主網配置測試網Topaz.
1900/1/1 0:00:004月23日,比特幣突然連續拉升,一個小時的時間里一路從7172美元漲至最高7756美元,暴漲近600美元,漲幅超過8%.
1900/1/1 0:00:00編者注:原標題為《解決供應鏈瓶頸問題,世界經濟論壇發布區塊鏈工具包》據BTCManager?援引《福布斯》4月29日的報道,世界經濟論壇推出了被稱為“重塑信任”的區塊鏈工具包.
1900/1/1 0:00:00