本實驗用到的原始數據和腳本:https://github.com/mandrigin/ethereum-mainnet-resolver-witness-stats引言有一種辦法也許能加速初始同步過程(initial sync process,指從創世塊開始的區塊鏈同步),就是使用區塊見證數據(witness)預先建構出緩存樹(cache trie),來避免速度較慢的狀態訪問。這樣做需要額外占用硬盤空間和網絡帶寬,但也許可以大幅加速同步過程。
其中的原理是,一般來說,要執行一個區塊,我們就需要默克爾樹上的一些數據。雖然在某個塊執行以前,默克爾樹上已經有一些數據了,但這些數據可能不足以執行區塊。所以,正常來說,我們還要從狀態數據庫(state db)中提取出數據并加到默克爾樹上,然后才能驗證交易。這個過程可能會很慢,因為 硬盤訪問/數據庫查詢 的速度比較慢。
根據這個問題描述,我們可以劃分出三種不同的方案:
1)正常流程(也就是當前在以太坊節點中使用的方案)
以太坊開發平臺Tenderly推出節點產品“Web3 Gateway”:11月3日消息,以太坊開發平臺Tenderly宣布推出節點產品“Web3 Gateway”,幫助Web3開發人員讀取、傳輸和分析區塊鏈數據,該產品建立Tenderly的可觀察性堆棧之上,據稱該堆棧索引了20多個區塊鏈網絡中超過90億筆交易,其直接競爭對手是Infura背后公司ConsenSys、以及節點提供商Alchemy。Tenderly在2021年7月完成1530萬美元A輪融資,之后在2022年3月完成4000萬美元B輪融資。(thebharatexpressnews)[2022/11/3 12:12:25]
在區塊 B 執行以前,我們有狀態樹 T1;
在需要執行 B 的時候,我們把 T1 中遺漏的數據添加到 T1 上,形成 T1',T1'',等等。每次遇到 T1 上沒有的信息,我們就在數據庫中查找(速度慢)。
執行完 B 之后,我們有了狀態樹 T2,T2 具備執行 B 所需的所有賬戶狀態。
保持 T2,以備后續使用。
2)無狀態流程
以太坊未確認交易為90,726筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易90,726筆,當前全網算力為252.59TH/s,全網難度為3.36P,當前持幣地址為49,635,703個,同比增加214,187個,24h鏈上交易量為2,750,350.15ETH,當前平均出塊時間為13s。[2020/11/5 11:39:55]
在區塊 B 執行以前,我們并沒有狀態樹;不過,我們可以拿到一個見證數據 W,來重組執行這個區塊所需的狀態樹。
我們執行 W,獲得了狀態樹 T2。
在 T2 上執行區塊 B,不需要查找數據庫。
區塊執行完之后就把 T2 丟掉。
3)準無狀態流程(semi-stateless folw)(即本實驗要測試的方案)
在區塊 B 執行之前,我們有狀態樹 T1,見證數據 W1、W2、……,足以將 T1 轉成 T2
依次在 T1 上執行 W1、W2、……,最后獲得 T2,也不需要查詢數據庫。
在 T2 上執行區塊 B,也不需要查詢數據庫。
以太坊上gas費消耗最多的前七個項目中有五個疑似龐氏騙局:ethgasstation數據顯示,以太坊上gas費消耗最多的前七個項目中有五個疑似龐氏騙局。gas費消耗前七大項目中,除了Tether USD和 IDEX,其他五個均為資金盤,分別是MMM、SmartWay Forsage、Million Money 2.0、Easy Club 和 BEB。在過去30天內,這五個項目消耗gas費用約32600ETH,占本月消耗gas費總量的15%。[2020/5/21]
留著 T2 以備后續使用。
在初始同步中使用準無狀態流程可以獲得無狀態流程的大部分好處 ?,又不需要傳輸那么多數據,因為我們重用了狀態樹緩存。
? 在準無狀態方案中,區塊的并行執行會受到更大的限制
那么,為了測試準無狀態方案的性能,我們需要測量兩件事:
這一方法需要額外占用多少 硬盤/帶寬?與完全富狀態的方法相比,它真的更好嗎?
其初始同步速度會快多少?
本文中我們會集中測試硬盤需求。
狀態樹(默克爾樹)的最大規模:100 萬個 node。一旦節點數超過這個值,我們就驅逐 LRU 節點,以釋放內存。用這種辦法,我們就能控制狀態樹對內存的使用。
聲音 | 前以太坊核心開發者:波卡平行鏈插槽數量有限 需競拍才能獲得:據區塊律動消息,針對波卡平行鏈開始要如何分配,如何成為平行鏈等問題,前以太坊核心開發者Web3foundation對此表示,1. 平行鏈插槽是有一定數量的,開始是數量不多,后面慢慢增加。2. 會有未經許可的,插槽出租的市場行為。為了保證平行鏈插槽的公平性,會使用競拍的方式。任何人都可以參加。3. 如果有人(個人或智能合約)贏得拍賣,可以不需要任何許可,直接部署他們的平行鏈。4. 平行鏈插槽不是無限時間使用的。5. 由Web3基金會管理的平行鏈,會保留一段時間。此外,波卡平行鏈插槽將從大約5個增加到50到200個插槽,而由Web3 Foundation管理的平行鏈現在有4種。[2019/5/31]
部分見證數據會存儲在數據庫中(我們用的是 boltdb)。每個條目的結構如下:
key: byte // 區塊號 + 狀態樹上節點的最大數量value: []byte // 見證數據,按文檔中的描述予以序列化我們不會在見證數據里存儲合約代碼(這是我們當前架構的不足)。
以太坊企業聯盟今年或將發布統一業務區塊鏈標準:據ethnews消息,倫敦區塊鏈博覽會上傳出,以太坊企業聯盟(EEA)很快將發布面向不斷增長區塊鏈生態系統的標準。雖然今天早些時候來自倫敦區塊鏈博覽會的消息細節很少,但EEA確實已經向ETHNews正式將有“一系列即將發布的公告”。[2018/4/20]
數據按下述方法得到(需要一個同步好的 turbo-geth 節點)
(in the turbo-geth repository)make state./build/bin/state stateless \ — chaindata ~/nvme1/mainnet/mainnet/geth/chaindata \ — statefile semi_stateless.statefile \ — snapshotInterval 1000000 \ — snapshotFrom 10000000 \ — statsfile new_witness.stats.compressed.2.csv \ — witnessDbFile semi_stateless_witnesses.db \ — statelessResolver \ — triesize 1000000 \實驗結果存儲從創世塊開始同步 6, 169, 246 (619 萬)區塊,見證數據的數據庫(bolt db)達到了 99GB。
python quantile-analysis.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv
平均值 0.038 MB中值 0.028 MB90 分位值 0.085 MB95 分位值 0.102 MB99 分位值 0.146 MB最大值 2.350 MB數據大小python absolute_values_plot.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv從創世塊到 610 萬區塊高度的階段的見證數據大小,圖表在 1MB 處截頂了。按 1024 個塊取滑動平均值。
absolute_values_plot.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv 3000000解決上海 DDoS 攻擊之后的見證數據大小,按 1024 個區塊取滑動平均值。
python ddos_zoom.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv放大看 DDoS 攻擊對見證數據大小的影響(原始數據)。
可以看到,在 230 萬高度到 250 萬高度,以及 265 萬高度到 275 萬高度期間,見證數據的大小顯著增大。
python full_vs_semi.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv
完全無狀態下的見證數據大小是根據準無狀態下的見證數據加上缺失的合約代碼部分調整得來的.
從這張圖可以看出,使用準無狀態方法,可以節約大量數據(與完全無狀態方法相比)。
加上一個無狀態解析器會讓每個區塊需要 傳輸/存儲 的數據量增加 0.4 MB。這個值與按區塊提供見證數據相比,節約太多,即使算上我們改變狀態樹模式能夠得到的增益相比,也節約非常多(關于十六進制樹和二進制樹模式下見證數據大小的區塊,可見我的上一篇文章)(譯者注:中譯本見文末超鏈接)。
如果這個性能還算可以,那么它顯然是加速初始同步的好辦法;而且它的數據需求比完全無狀態方法更小。
金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、行情與合約數據、礦業信息、項目動態、技術進展等行業動態。本文是其中的合約周刊,帶您一覽本周的合約市場數據.
1900/1/1 0:00:00當越來越多的人開始談論 DAO 的商業化應用場景時,或許就是它的價值爆發點即將出現的信號。在這以前,我們對 DAO 的關注和討論大都集中在它的機制設計和技術層面,但最近我周邊的聲音開始逐漸向商業.
1900/1/1 0:00:00美國證券交易委員會再次擊碎了比特幣交易所交易基金的夢想,迄今為止所有 BTC ETF 申請均被拒絕.
1900/1/1 0:00:00澳大利亞一家法院已經同意,可以將加密貨幣交易賬戶用作潛在法律費用的擔保。法官了解去中心化數字資產的不穩定性,但他承認,在當前不確定的金融時代,加密貨幣是一種公認的投資形式.
1900/1/1 0:00:00近期多次回踩30日線確認支撐有效后開啟反彈,目前價格漲至9900美元附近,站上所有均線之上,5日有拐頭上行趨勢,短線有再次走強跡象,其余中長期均線依舊保持向上姿態,大方向還是處于多頭趨勢.
1900/1/1 0:00:00金色財經 區塊鏈2月27日訊 對于區塊鏈治理系統而言,買賣選票通常很難被社區接受,但是對于EOS來說,他們似乎希望將購買選票公開化,并優化出一種代理投票的商業模式.
1900/1/1 0:00:00