以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

引介 | 如何開發出好用的輕客戶端(三)_TRI

Author:

Time:1900/1/1 0:00:00

科普 | 如何開發出好用的輕客戶端,Part-1

科普 | 如何開發出好用的輕客戶端,Part-2

大多數錢包軟件都依賴于 Infura 等中心化提供商。如果我們想要別出心裁一些,就需要開發一個可以在低資源設備上運行的新型輕客戶端。

在本文中,我們將介紹以太坊狀態是什么,以及如何讓輕客戶端輕而易舉地獲得它。

當我們提到 “狀態” 時,我們指的是所有賬戶信息(如 ETH 余額)以及所有存儲在智能合約中的數據。目前,狀態包括:

1.32 億個賬戶

大約 10 GB 的賬戶數據

大約 30 GB 的合約 storage 數據

大約 60 GB 的 Trie 節點經常性數據

我們先來看一下客戶端目前是如何訪問狀態的。

以太坊節點需要訪問完整的狀態才能處理新挖出的區塊。我們可以通過執行從創世塊開始到鏈首塊的每個區塊來從頭計算出狀態。通常情況下,我們不會采用這個方法,因為計算成本太高。

Arkham:所有推薦鏈接都將包含推薦人郵箱地址的加密版本,此更改已生效Arkham Intelligence:7月11日消息,社區消息顯示,區塊鏈情報公司Arkham的邀請鏈接會泄露邀請者的郵箱,只需解密url后綴的base64就能獲得邀請者的具體郵箱地址。對此Arkham首席執行官Miguel Morel發推回應表示,該系統是在測試版開始時創建的,目的是能夠通過電子郵件跟蹤用戶推薦,以獎勵用戶,除了與用戶溝通和追蹤推薦之外,我們不會將它們用于任何其他目的。今后所有推薦鏈接都將包含推薦人電子郵件的加密版本,因此無法對其進行逆向工程,此更改已經生效。[2023/7/11 10:47:07]

客戶端傾向于直接從其它完全同步的客戶端那里獲取完整的狀態副本。雖然不同的客戶端執行該操作的具體方式不同,但無論是哪種客戶端,在首次上線或離線一段時間后再次上線的情況下,通常都要花費一段時間同步至最新區塊。

同步可能需要花費很多時間。如果你使用自己的節點與區塊鏈交互,這會是一大缺陷。要讓客戶端一直保持同步狀態,你不僅需要花時間等待客戶端同步,還需要消耗計算機的計算和存儲資源。

Binance宣布在未能獲得許可后退出荷蘭:金色財經報道,Binance公告稱,即日起,將不接受居住在荷蘭的新用戶,自北京時間2023年7月17日08:00起,現有的荷蘭居民用戶將只能從Binance平臺提取資產,無法進一步購買、交易或存款。Binance鼓勵用戶采取適當的行動,從他們的Binance賬戶中提取資產。

Binance表示,作為虛擬資產服務提供商,它一直在向監管機構進行全面的注冊申請。盡管Binance探索了許多替代途徑來為荷蘭居民提供符合荷蘭法規的服務,但不幸的是,這并沒有導致在荷蘭進行VASP注冊。Binance表示將繼續與荷蘭監管機構接觸。[2023/6/16 21:42:14]

我們的解決方案是專門針對資源受限的設備而設計的,可以一舉解決上述兩個問題。我們的輕客戶端在運行時只需消耗最少的 CPU/RAM/HDD/帶寬資源,而且可以保證永遠在線。

當然了,不同的設備之間存在差異,甚至有可能出現無法承受基礎負載的情況。為了應對這一情況,我們正在努力免去完全同步的需求。在我們設計的模型下,客戶端只需要準確獲得鏈首塊的信息即可。

上海經信委阮力:加快運用元宇宙、AIGC等技術推進制造品牌升級:金色財經報道,在中國制造品牌發展論壇上,上海市經濟信息化委副主任阮力表示:一是要著力打造競爭力強、美譽度高的“上海牌”,深入推進設計賦能、科技創新和品牌培育緊密融合;

二是持續提升“上海制造”卓著品牌形象,加強與長三角地區、全國及全球品牌的協同聯動和戰略合作,推動上海制造領軍品牌和標桿品牌全球化布局和國際化運營;加快運用元宇宙、AR/VR、AIGC等新一代信息技術手段推進制造品牌升級發展;

三是加快營造生機勃勃的品牌發展生態,強化政策供給,依托中國品牌日等平臺,打造輻射全球的引力場,積極形成集聚高端品牌培育建設資源的虹吸效應,持續推廣“上海品牌100+”優秀成果,放大品牌建設的協同效應。[2023/5/14 15:02:15]

我們的最終目標是構建一個在首次安裝或離線一段時間后再次上線能夠立即使用的客戶端。這個客戶端只需能訪問正確的數據即可。

在如今的 DevP2P 以太坊協議中,有一個名為?GetNodeData?的消息。它可以用來檢索以太坊狀態的任意部分。我們已經在 Trinity 中使用該網絡消息來開發 “Beam” 同步模式并證明了其可行性。這是我們進行的基礎研究之一,旨在證明這種新型輕客戶端是可以實現的。

Lido:建議用戶自行檢查V2初始參數并與相關合約進行匹配:5月12日消息,流動性質押協議Lido在社交媒體透露,針對即將到來的V2版本升級(UTC時間5月12日14時),建議用戶自行檢查初始參數并與相關合約進行匹配。

此外,Lido還透露由于subgraph(子圖)重新同步,Rewards儀表板今日凌晨被短時關閉,但根據Lido官方Rewards界面顯示,目前儀表板已經恢復。[2023/5/12 14:58:37]

遺憾的是,當前的 DevP2P 以太坊網絡并不合適用于輕客戶端用例,因為它需要每個節點都能存儲超過 40 GB 的狀態數據,并提供狀態的任意部分。無法響應這些狀態數據請求的節點不太可能維持健康的對等連接。

當前網絡的設計是同步完整狀態。GetNodeData?消息適合我們的按需狀態檢索實驗只是一個巧合。為了讓客戶端能夠同步完整的狀態,高效的訪問模式是按順序遍歷數據,獲得連續的大數據塊。然而,在錢包用例以及我們的新型輕節點用例中,訪問狀態的需要需要很大程度上是隨機的。

Bit2Me未來12個月將員工人數翻倍并進行三項收購:金色財經報道,西班牙加密貨幣交易所Bit2Me聯合創始人兼首席執行官Leif Ferreira表示,計劃在未來12個月內增加250名員工,使其員工人數增加一倍。Ferreira補充說,該公司還簽署了三項收購的諒解備忘錄,包括收購一家拉丁美洲交易所90%的股份,以及收購一家總部位于西班牙的金融科技公司和一家軟件開發商。更多細節將在今年晚些時候公布。(coindesk)[2022/7/8 1:59:26]

錢包訪問狀態的主要方式是通過以下 JSON-RPC 方法:

eth_getBalance?用來檢查賬戶余額

eth_call?用來查詢合約數據(如代幣余額)

eth_getTransactionCount?和?eth_estimateGas?用來構建交易

eth_getBalance?和?eth_getTransactionCount?僅從主要賬戶 Trie 中讀取值。因此,可以通過調用該方法獲得Trie 上現有的 1 億多個賬戶中任意一個地址的情況。

eth_call?和?eth_estimateGas?都涉及實際的 EVM 執行。EVM 執行可以從 1 億多個賬戶中的任意一個及其底層合約存儲 Trie 中讀取數據。

我們發現,錢包只需讀取少量數據,而且讀取的需要是隨機的。這在根本上與同步完整狀態不同,因此這兩個用例不太可能通過同一個解決方案來解決。

新的網絡需要解決當前網絡存在的一些缺陷。

這個網絡上的節點要能為存儲完整狀態貢獻少量存儲空間。我們想讓網絡中的每個節點存儲一小部分狀態,而非完全復制所有狀態。有了足夠多的節點,整個網絡就可以輕而易舉地以極高的復制因子存儲所有狀態。

由于每個節點只需存儲小部分狀態,我們再也不能盲目地向網絡中的任意節點請求數據。因此,網絡需要一個節點發現機制,以便節點獲取所需數據。

不同于可以構建成只能添加型文件的區塊鏈歷史記錄,以太坊狀態是持續變化的。每個交易都會導致賬戶余額和合約存儲發生變化,這些更新需要在網絡中廣播。

重要的是,客戶端要能高效地從網絡中讀取數據。調用?eth_estimateGas?將根據最新的狀態根預測執行交易,來確定交易需要消耗的 gas。如果是一個只涉及兩個賬號的簡單轉賬交易,所需的數據量相對較小。然而,如果是與智能合約交互并且需要用到合約存儲的復雜交易,客戶端需要從數據庫讀取的數據量則大得多。

假設一次網絡往返需要 100 ms,那么一筆需要 100 個狀態部分的交易需要花費大約 10 秒時間來估算 gas 使用量。如果延遲太久,一些操作可能需要花費過多時間才能完成,這會大幅降低網絡的可用性。

賬戶 Trie 在設計上是平衡的,但合約存儲不是。這就導致合約存儲很難處理。

人們正在積極研究按需狀態可得性。目前,我們還不清楚該研究的未來方向,但是我們目前主要聚焦于兩個不同的方法。

我們可以采用的最簡單的解決方案之一就是,采用與?GetNodeData?相同的運作方式,但是僅要求每個節點存儲距離自己最近的數據,而非所有數據。Trie 上的每個節點都有一個哈希值,我們可以使用這些哈希值將 Trie 數據與DHT 鍵空間(keyspace)關聯起來。你可能還記得,Kademlia DHT 網絡有一個新特性:遍歷鍵空間只需?O(log(N))。

這個方法的缺陷在于效率和速度。存儲由單個節點哈希哈希作為鍵的 Trie 數據需要存儲大量中介 Trie 節點,這會導致網絡需要存儲的數據總量翻倍。

這個方法也會讓數據檢索變得低效。通過該結構查找數據時,你必須從狀態根開始遍歷 Trie 節點。對于賬戶Trie 來說,這平均需要 7 次查詢,才能獲得實際的賬戶數據。

這個方法確實具有很大的優勢。它徹底避開了合約存儲失衡問題,因為各個 Trie 節點的哈希值是隨機的,因此數據會自動呈隨機分布。再進一步來看,如果網絡大到足以存儲完整的 6TB 存檔歷史,這個網絡最終將變成一個歸檔節點。

這個方法的另一個主要優勢是,可以免去對證明的需求。我們直接構建 Trie 和所有中間節點,因此無需相關的默克爾證明。

目前,我們正在努力確定這個方法是否能夠達到性能要求。

另一個方法是將 Trie 的葉子節點組成共享同一條基礎路徑的連續的塊。各個節點會存儲 Kademlia DHT 網絡中離自己最近的 Trie 路徑 “周圍” 的所有葉子節點。對于高度平衡的賬戶 Trie 來說,這個方法非常有吸引力。

通過 Trie 路徑處理數據,我們無需遍歷 Trie,訪問葉子數據的復雜度將下降到?O(1)。如果你還記得的話,GetNodeData?風格的原生方法平均需要 7 次網絡往返,才能訪問存儲在 Trie 葉子節點中的數據。然而,本節所介紹的方法在性能上的優勢非常重要,而且是實現網絡可用性必不可少的。

這個方法的優勢也是有代價的。確保數據是最新的會極大提高復雜性。有很多方法可以做到這點,但是每個方法都有權衡取舍。雖然數據可以就地更新,但是這需要每個節點都進行昂貴的計算。或者,每次挖出一個新的區塊后,更新后的證明都會廣播至全網節點。這些方法都在計算和帶寬之間進行了權衡取舍。但無論是計算還是帶寬,這兩個在我們眼中都是稀缺資源。

Tags:TRINCEANCETHSTRI幣Songbird FinanceTorii FinanceKTETH幣

歐易交易所
科普 | 了解 0x 協議的生態_區塊鏈

這是一場多么奇妙的旅程? 0x 的早期用戶或許還記得曾經的去中心化交易所生態是什么樣的 —— EtherDelta 還沒有得到廣泛采用,自動化做市商才剛誕生不久.

1900/1/1 0:00:00
HECO每日快訊:4月13日-4月23日_HEC

致力于挖掘HECO公鏈潛力項目,促進HECO生態繁榮。共同抵制無審計、合約代碼無開源的、虛假宣傳項目,維護良好HECO生態環境。對于故意宣傳抹黑友商項目、HECO品牌的讀者還請多擔待.

1900/1/1 0:00:00
黑客松手把手教程:三步創建NFT 獲得100枚ROS代幣獎勵_TOKE

?本教程將引導您完成以下任務:◎ 如何在Oasis Ethereum ParaTime上部署ERC-721智能合約◎ 用關聯的數字資產鑄造ERC-721代幣◎ 將ERC-721代幣轉讓給其他人.

1900/1/1 0:00:00
Yield Guild Games:當你一無所有 來游戲公會逆天改命_YIELD

本文作者是DeanTakahashi,以下為C社翻譯的原文: “是時候通過玩游戲賺錢了。” 游戲公會 Yield Guild Games 已經籌集了132.5萬美元,以實現這一目標.

1900/1/1 0:00:00
對話DeFi項目Orca:將推出治理代幣及流動性挖礦機制_ORC

律動 BlockBeats 消息,4 月 14 日,基于 Solana 生態的 DEX 項目 Orca 在社區舉辦了一場 AMA.

1900/1/1 0:00:00
解讀NFT碎片化交易協議Unicly 收藏家與投機者的博弈_NFT

4 月 8 日,MultiCoin Capital 合伙人 Mable Jiang 在微博發長文介紹了一款新 NFT 碎片化交易協議 Unicly(app.unic.ly).

1900/1/1 0:00:00
ads