作者:SinaMahmoodi
翻譯&校對:IANLIU&阿劍
來源:以太坊愛好者
摘要:區塊中每發生一次合約調用,無狀態客戶端都需要完整的合約代碼作為區塊見證的一部分,而傳輸合約代碼占用無狀態客戶端帶寬的比例,高居其帶寬開銷的第二位。
人們認為,代碼默克爾化方法能夠優化帶寬開銷。本文解釋了如何將代碼拆分為“塊”,默克爾化這些chunk,并只在交易需要的情況下傳遞這些chunk。實驗證明,基于目前的主網情況,我們能看到合約代碼傳輸的開銷節省了40%~60%。
巨大的無狀態區塊
代碼默克爾化的概念已經被提出好一陣子了,一開始主要用于代碼去重,但其他用途還未被很好地探索。現在它重新進入大眾視線,卻是因為另一個目的——用于降低無狀態客戶端所需要的帶寬開銷。如果你想知道無狀態客戶端為什么出現,我推薦這篇總結,或是AlexeyAkhunov的推文,里面還附上了他的實驗數據。為求簡短扼要,我不會深入整個無狀態客戶端模型的細節,僅提供相關細節的簡要總結。
在無狀態模式下,節點可以依賴其他節點來取得區塊內容并使用相關默克爾證明加以驗證,而不必自己存儲所有區塊狀態——這會給網絡帶寬帶來巨大的性能提升。AlexeyAkhunov和turbo-geth團隊一直在研究,希望能確定已經產出的主網區塊的區塊見證大小。下圖是對最近50000個區塊的測量結果:紅線追蹤每個無狀態區塊需要發送的合約代碼量。如果以太坊從當前的hexary字典樹結構轉為二進制trie,則見證數據所包含的哈希值數據大小約能減小3倍,這時候合約代碼量就成為構成見證大小的第一大頭了。
觀點:讓用戶能夠真正理解隱私的重要性,才能推進產業發展:7月13日19:00,LatticeX中國區大使Jason、Oasis Network中國社區技術顧問Vic、Secret Network中國營銷經理Kelvin、Findora內容負責人James參與了由ULink主辦的“區塊鏈技術不斷前行的當下隱私充當著怎樣的角色呢?”線上圓桌論壇。
Jason表示,區塊鏈技術的公開、透明、不可篡改特性是把雙刃劍,如果這個行業只有Token,隱私保護就是一個炒作的噱頭,但如果區塊鏈想要實現大規模使用,它承載的信息只會越來越多,數據之間的關聯性會越來越多,這時數據的主權和保護問題便不可忽視,
Vic表示,滴滴事件給整個隱私行業帶來了利好,從而推動用戶對于整個隱私行業和數據保護意識的提升,讓更多人意識到數據安全的重要性和必要性,也讓更多的企業意識到數據獲取需要在合法的范圍內進行。
Kelvin表示,在DeFi世界中存在著搶先交易的問題,大型的搶購活動之前一些公司或個人就可以獲取到大眾的礦工費,從而利用機器人礦工費搶先完成交易,獲取相應的利益,但這個隱私的暴露問題對于大多數人來說是不公平的。
James表示,我們需要通過現有案例分析、立法監管不斷推進、大數據行業的自覺性、隱私從業者的推進與教育讓用戶能夠真正理解隱私的重要性,才能推進產業發展。[2021/7/14 0:50:37]
觀點:未來12個月內DeFi鎖定總價值將超過1000億美元:金融科技公司Yield的創始人兼首席執行官Tim Frost在接受采訪時表示,2021年將是去中心化金融(DeFi)成為金融業“常見術語”的一年,因為金融業現在正認真對待這一問題,并建立研發實驗室。他預測,在未來12個月內,DeFi行業鎖定的總價值將超過1000億美元。(Bitcoin.com)[2020/12/26 16:33:14]
-圖表顯示最近50000個主網區塊的無狀態區塊見證大小變化,經過窗口=128個區塊的移動平均計算-
不要發送整段代碼
我們假設,其實每筆交易只會調用部分的合約代碼,所以我們的目標就是拆分這些代碼塊,每次交易只發送需要的chunk的區塊見證。如果這種假設合理,而且每筆交易真的只用到一小部分字節碼,那么區塊見證的合約代碼部分就能大大的減小。
為了更好地理解,想象我們正在部署一份新的合約,我們需要傳遞代碼和并確定basicblock有兩種特性:
觀點:對于區塊鏈存證應秉持開放、中立的態度進行個案分析:《民主與法制》雜志發表分析文章指出,區塊鏈存證要解決的是司法“信任”問題。提升司法公信力需要一種革新和顛覆性的思維理念,區塊鏈技術具有的去中介化、建立社會信任、實現共享正好契合了這一需求。文章表示,區塊鏈存證的本質是電子數據的證據保全創新,最大優勢在于保障電子數據的真實性。而區塊鏈存證在特定類型案件中顯著提高了司法效率。文章也同時提到,區塊鏈存證的司法運用前景仍有爭議,除成本昂貴外,尚不能完全解決信任問題,且不是所有場景都需要區塊鏈。法官對于區塊鏈存證應秉持開放、中立的態度進行個案分析,既不應盲目引入區塊鏈技術并盲信區塊鏈存證,也不應排斥新技術和提高電子數據的認定標準,應在審核電子數據的來源和內容的完整性、技術的安全性、方法的可靠性、形成的合法性的基礎上,綜合認定電子數據的證據效力。[2020/5/19]
-字節碼的basicblocks-
Basicblock要么從索引0開始,要么從?JUMPDEST?開始——這么做能保證每個無狀態客戶端都能安全地進行JUMPDEST分析。
每個basicblock都無法更改控制流。因此,我們可以確定一旦開始執行代碼,只會存在兩種情況:正確執行結束,或是gas耗盡。雖然還沒有和其他方案進行比較,我們先假設這么執行是相對更有效率的。
觀點:抵押借貸的最佳意義是“雪中送碳”:據幣格BigONE官方消息,幣格 BigONE 于 5 月 15 日 14:00 舉辦了主題為“幣格 BigONE 與您一起創造 2020”的新品線上發布會。
?發布會第二個圓桌論壇主題為“創優——借貸為誰而生?”,本圓桌由嗶嗶 News、小龜說創始人小龜主持,幣印礦池聯合創始人朱砝、火星云礦總裁商思林、貝寶金融 CEO 楊舟、嘉楠區塊鏈首席分析師 Kube Wu 擔任嘉賓參與了討論。
幾位嘉賓為大家解讀了數字資產抵押借貸功能的利弊,認為抵押借貸的背后是負債和杠桿,大家應該合理利用抵押借貸這個工具,所以不管是用戶還是交易所,都要做好對杠桿的把控,降低風險。除此之外,幾位嘉賓還針對挖礦現狀做了分析,火星云礦總裁商思林認為,未來一到兩年都處于豐水/電期,挖礦進入門檻相對較低,而挖礦也是學習和認識比特幣的好方式。
幣格 BigONE 已經上線 B2C 借貸功能,按日計息,隨借隨還,提前還款不收取手續費。幣格 BigONE 不只有數字資產安全。[2020/5/15]
出于效率考量,我們合并相鄰塊,直到每個代碼塊都至少有128字節為止。接著以第一個字節作為key,將這些合并后的代碼塊插進Trie。最后,客戶端將此Trie的根作為該合約賬戶的新記錄存儲下來。如下圖所示,記錄代碼的Trie會成為狀態樹的子樹。
觀點:印度最終將成為加密貨幣的主要市場:印度最高法院此前撤銷印度儲備銀行(RBI)加密禁令。然而,似乎并非所有的銀行都在遵守新規定,仍有銀行拒絕為加密相關公司提供服務。Exiom首席執行官Dileep Seinberg稱,在全球范圍內,采用新技術并了解其(對金融科技尤其是銀行)影響一直是挑戰。西方世界花了一些時間來理解區塊鏈技術對銀行業的影響,以及新貨幣將如何發揮作用。他仍然樂觀,盡管印度在監管方面采取保守態度,印度將成為加密貨幣的主要市場,正如人們在支付錢包行業看到的那樣。加密貨幣的采用將會很快發生,“印度只是在等待正確的推動。”印度區塊鏈傳道者和新興技術顧問Sharat Chandra稱,印度銀行正在等待RBI就與加密相關交易發表官方消息。商品和服務稅(GST)委員會可能會將加密貨幣納入其范圍,作為增加收入的手段。加密公司應繼續采取法律手段,迫使銀行遵循最高法院的裁決。在短期內,加密支付將變得更容易接受。“在新冠肺炎之后,數字和加密相關支付將占據主導地位。越來越多銀行開始對CBDC感興趣。我堅信RBI將擺脫抑制,加入其他央行的行列,通過利用數字貨幣進一步推動金融包容的事業。”(Cointelegraph)[2020/5/8]
-代碼默克爾化之后,會成為狀態樹的子樹。為了簡化,上圖我用了二進制樹,同時樹的路徑也不準確,不能完整表示真實的key-
為了測試部署的合約,我們試著發起一筆調用該合約的交易。礦工會執行這筆交易,并標記執行過程中觸及的每個chunk。當要發布區塊的時候,礦工會將合約狀態的證明,以及觸及哪些代碼chunk的turboproof證明,一起打包在區塊內。
-交易所觸及的所有chunk和驗證codeRoot所需的哈希值,都會以turboproof證明的形式發送出去-
收到這個區塊后,無狀態客戶端就能驗證合約是否屬于區塊狀態的一部分,也能驗證合約的余額、nonce、狀態根、codeRoot等其他參數。這些信息足以讓客戶端從chunk中重構部分字節碼,同時清空其他不需要的chunk。因為chunk算法的設計,所以客戶端知道所有的chunk都是從?JUMPDEST?開始,因此能夠安全地進行jump操作。
-我們可以通過turboproof重構字節碼;對于交易不需要的chunk則設為0-
實驗
為了驗證,我們編寫了一份測試原型,該原型可以從Geth客戶端的RPC端口獲取主網的區塊和過去的狀態,然后模擬執行交易。每當執行過程中遇到新的合約,就將合約拆分為多個chunk,并標記執行交易時觸及的chunk。當區塊中的交易全部執行完畢后,會為所觸及的chunk生成證明——turboproof。
接著重置狀態,用turboproof重構出來的代碼,替換掉原本的合約代碼,然后再次執行剛才的交易。為了檢查執行的正確性,我們比較前后兩次消耗的gas量和區塊的bloom過濾器。
對最近的50個區塊執行此過程,我們可以看到合約代碼量減少了40%~60%。
提醒:上圖的數據結果似乎令人充滿希望,但請記住,我們還需要成千上萬個區塊中的數據,才能得出令人信服的實驗結論;目前原型處于早期階段,一切結論都還為時尚早!
后續發展
你應該還記得,每個代碼塊的最小長度是可設置的參數,修改這個參數會在截然不同的兩個方面影響見證的大小。假設我們將參數設為32字節,則chunk的粒度變得更小,要傳遞的代碼量也就變得更少。但是這樣一來,Trie的深度就必須增加;換句話說,為了生成chunks的證明,我們需要進行更多次哈希運算。
所以下一步,我們將會深入分析——究竟要將區塊最小長度設為多少,才能獲得最優解。當然不論如何,只要將hexary字典樹結構二進制Trie,我們就能減少3/4的哈希運算,從而降低見證數據的大小。
在測試原型中,我們將合約代碼拆分為basicblock;而可選的代碼拆分算法當然有很多,有的簡單有的復雜。最簡單的一種就是拆分為固定大小的chunk,從目前來看,這種方法只會有push和jumpdest分析的問題。
更進一步地說,如果我們任意設置字節碼的最小值,則客戶端在收到chunk之后,可能會因為?PUSH?操作或任何多字節碼的操作,而碰上?JUMPDEST(0x5b)?報錯的情況。如下圖所示,有完整代碼的客戶端會發現這里的jump操作是非法的,因為?0x5b?屬于?PUSH1?的操作數,執行到這里應該終止。但如果客戶端只收到chunks#6和#8,而沒有收到#7,則他會跳到位置41繼續執行,就產生了對同一份合約代碼的不同解釋。后面我們會扼要地說明怎么在任意設置字節碼的情況下,避免這種錯誤。
為了解決這個問題,MartinHolstSwende建議向每個chunk添加一個元數據,該元數據記錄了有多少個chunk的首字節是push操作;然后,驗證者就能在jumpdest分析過程中跳過那些字節。Alexey正在探索的另一種方法是“不允許在EVM中進行動態跳轉操作”,這使我們只需在部署合約時做一次靜態的跳轉分析,而不需要在每次執行代碼時進行。AlexBeregszaszi建議使用合約控制流程圖,以更好地規范默克爾化流程;與之類似,ChristianReitweissner提出了一種執行證明方法,從合約的控制流程圖創建默克爾DAG。我不會在本文中評價這些想法,希望之后能披露更多信息。
最終結果可能表明,不同的chunk拆分算法之間的效率提升可以忽略不計,這么一來選擇的算法就越簡單越好。而好消息是,基于早期數據實驗,我們至少有一種算法可以顯著減少無狀態區塊中需要傳輸的代碼量。
本文著重討論如何默克爾化EVM字節碼,但總體思路并不局限于EVM。實際上,Ewasm團隊的其他成員也在嘗試默克爾化Wasm代碼,也遇到了相應的挑戰。這些挑戰主要是因為Wasm代碼由多個部分組成,并且在執行之前需要經過嚴格的驗證——這意味著重構的字節碼也必須通過驗證。
敬請期待后續更多信息!
原文鏈接:?https://medium.com/ewasm/evm-bytecode-merklization-2a8366ab0c90
Tags:區塊鏈ROOBLORBO區塊鏈的未來發展前景作者是誰Mushrooms Finance老版本blockchainCarbon
本文來源:第一財經,原題《姚前:Libra2.0與數字美元》 作者:姚前 2020年是不平凡的一年。黑天鵝事件頻發,美股多次熔斷,原油期貨價格跌至-37.63美元.
1900/1/1 0:00:00比特幣的減半不僅是我們普通投資者關注的話題,也是華爾街和科技界大佬們關注的話題。據近日的相關消息顯示CashApp和灰度在今年第一季度購買了所有新挖出的比特幣中的52.56%,其中29.41%被.
1900/1/1 0:00:00編碼信息的藝術,又稱密碼學,是保護信息的方法。密碼學主要解決的問題是:在向Bob發送關鍵信息時,Alice如何確保Eve無法解讀?在互聯網出現之前,歷史上已經出現過許多巧妙的信息編碼和發送方式,
1900/1/1 0:00:00原創?白話區塊鏈 比特幣減半是近一年來行業熱點,數據顯示,減半僅剩11天時間。臨近五一,減半即將來臨之際,白話區塊鏈邀請了區塊鏈行業內各個領域的頭部專家:OKexCEOJayHao、比特小鹿CM.
1900/1/1 0:00:00區塊鏈技術已經誕生多年了。近日減半的比特幣也發展了超過十個年頭。但是從社會總體的認知度以及與其它行業的橫向對比方面來講,這還算是個小眾的,新型的行業.
1900/1/1 0:00:00寫在前面:原文作者是LibraCalibra數字貨幣錢包項目的首席研究員DahliaMalkhi,在這篇文章中,她介紹了Calibra團隊最新研發的Twins拜占庭容錯系統檢測方法.
1900/1/1 0:00:00