作者:SinaMahmoodi
翻譯&校對:IANLIU&阿劍
來源:以太坊愛好者
摘要:區塊中每發生一次合約調用,無狀態客戶端都需要完整的合約代碼作為區塊見證的一部分,而傳輸合約代碼占用無狀態客戶端帶寬的比例,高居其帶寬開銷的第二位。
人們認為,代碼默克爾化方法能夠優化帶寬開銷。本文解釋了如何將代碼拆分為“塊”,默克爾化這些chunk,并只在交易需要的情況下傳遞這些chunk。實驗證明,基于目前的主網情況,我們能看到合約代碼傳輸的開銷節省了40%~60%。
巨大的無狀態區塊
代碼默克爾化的概念已經被提出好一陣子了,一開始主要用于代碼去重,但其他用途還未被很好地探索。現在它重新進入大眾視線,卻是因為另一個目的——用于降低無狀態客戶端所需要的帶寬開銷。如果你想知道無狀態客戶端為什么出現,我推薦這篇總結,或是AlexeyAkhunov的推文,里面還附上了他的實驗數據。為求簡短扼要,我不會深入整個無狀態客戶端模型的細節,僅提供相關細節的簡要總結。
在無狀態模式下,節點可以依賴其他節點來取得區塊內容并使用相關默克爾證明加以驗證,而不必自己存儲所有區塊狀態——這會給網絡帶寬帶來巨大的性能提升。AlexeyAkhunov和turbo-geth團隊一直在研究,希望能確定已經產出的主網區塊的區塊見證大小。下圖是對最近50000個區塊的測量結果:紅線追蹤每個無狀態區塊需要發送的合約代碼量。如果以太坊從當前的hexary字典樹結構轉為二進制trie,則見證數據所包含的哈希值數據大小約能減小3倍,這時候合約代碼量就成為構成見證大小的第一大頭了。
觀點:機構比特幣產品將在下一次減半之前拉動需求:金色財經報道,金融服務提供商XEROF首席執行官Marc Taverner表示,我們終于進入了比特幣金融產品時代,在眾多金融公司多次嘗試監管審批之后,貝萊德等公司的美國比特幣ETF可能最終獲得批準,而德意志銀行等全球性公司正在尋求自己的加密貨幣許可證。這些機構可能希望在下一次比特幣減半之前在其資產負債表上持有比特幣,但我相信他們更大的目的是為合格投資者和他們的普通客戶開發金融產品,以獲取比特幣。比特幣減半一直代表著經濟機會,即將到來的第四次減半將會有所不同,如果屆時有任何ETF成功獲得批準,歐洲的ETP將加入比特幣金融產品的行列,其明星效應將隨著比特幣需求的增長而上升。[2023/7/27 16:02:49]
-圖表顯示最近50000個主網區塊的無狀態區塊見證大小變化,經過窗口=128個區塊的移動平均計算-
不要發送整段代碼
我們假設,其實每筆交易只會調用部分的合約代碼,所以我們的目標就是拆分這些代碼塊,每次交易只發送需要的chunk的區塊見證。如果這種假設合理,而且每筆交易真的只用到一小部分字節碼,那么區塊見證的合約代碼部分就能大大的減小。
觀點:Coinbase員工獲贈的4250萬美元股票可能會買成加密貨幣:Coinbase發言人表示,Coinbase已向1700多名員工提供了100股股票。考慮到Coinbase直接上市的參考價格為250美元,這筆贈款可能價值4250萬美元。文章認為,精通加密市場的Coinbase員工可能會從其股票中套現,并將其收益轉換成加密貨幣。(Cryptonews)[2021/4/14 20:19:08]
為了更好地理解,想象我們正在部署一份新的合約,我們需要傳遞代碼和并確定basicblock有兩種特性:
-字節碼的basicblocks-
Basicblock要么從索引0開始,要么從?JUMPDEST?開始——這么做能保證每個無狀態客戶端都能安全地進行JUMPDEST分析。
每個basicblock都無法更改控制流。因此,我們可以確定一旦開始執行代碼,只會存在兩種情況:正確執行結束,或是gas耗盡。雖然還沒有和其他方案進行比較,我們先假設這么執行是相對更有效率的。
觀點:ETH下周將漲至2500美元:以太坊價格自2月21日以來首次突破1940美元的水平,區塊鏈咨詢公司Moonrock Capital的聯合創始人Simon Dedic認為ETH下周將漲至2500美元,加密貨幣分析師Carl Martin也表示ETH已經突破重要阻力位,目標2500美元。(Cryptoglobe)[2021/3/14 18:43:11]
出于效率考量,我們合并相鄰塊,直到每個代碼塊都至少有128字節為止。接著以第一個字節作為key,將這些合并后的代碼塊插進Trie。最后,客戶端將此Trie的根作為該合約賬戶的新記錄存儲下來。如下圖所示,記錄代碼的Trie會成為狀態樹的子樹。
-代碼默克爾化之后,會成為狀態樹的子樹。為了簡化,上圖我用了二進制樹,同時樹的路徑也不準確,不能完整表示真實的key-
為了測試部署的合約,我們試著發起一筆調用該合約的交易。礦工會執行這筆交易,并標記執行過程中觸及的每個chunk。當要發布區塊的時候,礦工會將合約狀態的證明,以及觸及哪些代碼chunk的turboproof證明,一起打包在區塊內。
谷燕西:橋水基金創始人關于BTC的投資觀點和決策不適用于普通投資者:2月1日,區塊鏈和加密數字資產研究者谷燕西發表專欄文章稱,比特幣目前的市值總量以及合規狀態并不適合于橋水基金創始人Ray Dalio作為其主要的投資產品。但這并不意味著普通投資者基于他的觀點做出同樣的投資決策。恰恰相反,由于普通投資者的投資決策更加自由靈活,反而能夠先于他投資于一些早期但非常有發展前途的產品,譬如比特幣。他在文中指出,Ray Dalio列舉了比特幣的三個風險因素當,波動性,監管風險和流動性。這三個因素是妨礙橋水基金以及其客戶投資比特幣的主要障礙。谷燕西認為,在這三個因素當中肯定會發生在全球范圍內金融監管機構合作,對比特幣交易進行進一步的監管。但這些監管措施會規范比特幣市場,促使比特幣成為一種主流的交易產品。比特幣交易的流動性會因此大幅提高,波動性也會相應的減小。這因此就有利于橋水基金這樣的資產管理公司開始投資比特幣。對普通的投資者來說,先于橋水基金這樣的機構持有比特幣,就有可能獲得這部分資產的增值收益。谷燕西最后還表示,作為加密數字資產首創和領先者,比特幣具有著不可取代的地位,且這個地位只會越來越加強。對投資者來說,這直接影響比特幣在其投資組合中所占的比例。如果投資者對比特幣的地位有著正確的判斷,它會將更多的資金投入比特幣,而不會分散地將資金投資于其它的加密數字貨幣。[2021/2/1 18:34:30]
動態 | 業內觀點:“區塊鏈+金融”有助于解決信用風險大、支付處理成本高等金融領域難題:在供應鏈金融、支付清算、貿易金融、金融交易等領域,“區塊鏈+”擁有豐富的應用場景和想象空間。業內人士指出,雖然區塊鏈技術的應用前景廣闊,但目前真正落地并產生社會效益的項目數量不多,區塊鏈技術處在早期發展階段,仍需理性看待。下一步,要利用區塊鏈技術探索數字經濟模式創新,為營商環境優化增加動力,為推動經濟高質量發展提供支撐。(人民日報)[2019/11/11]
-交易所觸及的所有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
來源:哈希派 作者:LucyCheng他,是最早一批比特幣領域的創業者,大學還沒畢業就創立了交易平臺BitInstant,22歲成為百萬富翁,常年位居比特幣富豪榜Top10;他.
1900/1/1 0:00:00作者:羅滔 愛爾蘭加密政策的不確定性使加密公司舉步維艱,銀行以不受監管為由拒絕為加密公司提供銀行賬戶,導致多家公司業務中斷.
1900/1/1 0:00:00本文,我們根據活躍開發者對項目的貢獻,比較了各個加密項目的活躍開發者人數。 什么是活躍開發者? 活躍開發者是指在一定時間內對項目做貢獻的開發者或貢獻者.
1900/1/1 0:00:00聽到喬·魯賓談論ConsenSys的未來時,你可能會認為他會說ConsenSys的未來在于代幣,事實確實如此。ConsenSys是他運營的以太坊風險投資工作室,他于2015年成立.
1900/1/1 0:00:00根據Coinbase的最新研究,比特幣正在充當山寨幣的門戶。研究發現,60%的客戶選擇購買比特幣作為第一種加密貨幣,但只有24%的投資者只購買比特幣.
1900/1/1 0:00:00開放金融協議Synthetix和研究組織Optimism已經合作推出了一個新的OptimisticRollup演示,朝著開發成熟的以太坊Layer-2擴容解決方案又邁出了一步.
1900/1/1 0:00:00