科普 | 如何開發出好用的輕客戶端,Part-1
現在是 2021 年,以太坊區塊鏈已經運行 5 年多了。但目前還沒有不使用中心化提供者就能與以太坊協議交互的可靠的輕量級方式。各種研究表明,只要你能夠訪問必要的數據,就可以構建這一功能。在本文中,我們將介紹什么是區塊鏈歷史記錄,以及需要解決哪些問題才能讓輕量級客戶端輕松獲得這些歷史記錄。
“區塊鏈歷史記錄” 指的是所有區塊頭、區塊體和收據的歷史記錄。在當前所有以太坊客戶端用來通信的以太坊協議中,節點可以使用以下消息對來互相請求區塊鏈歷史記錄:
GetBlockHeaders?>?BlockHeaders
GetBlockBodies?>?BlockBodies
GetReceipts?>?Receipts
點擊此處,查看以太坊協議的完整規范。
人大附中物理老師李永樂科普拜占庭將軍問題和區塊鏈:5月14日,人大附中物理老師、科普視頻網紅李永樂在其公眾號發布視頻《拜占庭將軍問題是什么?區塊鏈如何防范惡意節點?》。李永樂老師在視頻中對拜占庭將軍問題和區塊鏈進行了講解,他表示,拜占庭將軍問題本質上指的是,在分布式計算機網絡中,如果存在故障和惡意節點,是否能夠保持正常節點的網絡一致性問題。在近40年的時間里,人們提出了許多方案解決這一問題,稱為拜占庭容錯法。例如蘭波特自己提出了口頭協議、書面協議法,后來有人提出了實用拜占庭容錯PBFT算法,在2008年,中本聰發明比特幣后,人們又設想了通過區塊鏈的方法解決這一問題。區塊鏈通過算力證明來保持賬本的一致性,也就是必須計算數學題,才能得到記賬的權力,其他人對這個記賬結果進行驗證,如果是對的,就認可你的結果。與拜占庭問題比起來,就增加了叛徒的成本。[2020/5/14]
區塊鏈歷史記錄是一個相對簡單的數據集。你可以把它當成是一個只能添加的文件。礦工每挖出一個新的區塊,這個區塊的區塊頭、交易、叔塊和收據都會被添加到文件中。
現場 | 火幣中國推出數字經濟及區塊鏈產業科普新書:金色財經現場報道,12月6日,由海南省工業和信息化廳主辦,南南合作金融中心協辦,海南生態軟件園、火幣中國承辦的“海南自貿港數字經濟和區塊鏈國際合作論壇”在海口舉行,這是全球首次區塊鏈部長級論壇。
在本次論壇上,火幣中國舉行了“數字經濟及區塊鏈產業科普系列新書發布”儀式,希望通過教材、專業教育、培訓等多種方式,幫助從業者、高校、研究機構深入了解區塊鏈,從而建立起區塊鏈全局性知識模型,真正推動區塊鏈應用落地。火幣中國CEO袁煜明介紹,將聯合機械工業出版社面向普通高等教育推出《區塊鏈導論》、《區塊鏈系統設計與應用》和《區塊鏈新商業模式分析》系列教材,這是國內最早推動的區塊鏈教材之一;火幣中國還積極參與數字經濟的研究,由中信出版社出版的新書《讀懂Libra》已經上市;由火幣中國負責編寫的區塊鏈技術科普讀物《區塊鏈技術進階指南》將于12月面世;首本行業內最全的區塊鏈應用案例集《區塊鏈產業應用100例》在本次論壇進行了首次刊印。[2019/12/6]
以太坊協議已經為這部分需要而優化過,所以一個新加入網絡的節點可以高效地檢索區塊鏈的所有歷史記錄。一旦客戶端實現完全同步,除了響應 JSON-RPC 請求之外無需使用這些數據。客戶端自己也不會頻繁用到這些數據,因為它們會通過 gossip 消息獲取新的區塊和區塊頭。作為區塊執行的一部分,收據會在本地生成。盡管如此,協議還是強迫客戶端要保留完整的歷史記錄。
聲音 | CNBC主持人:加密貨幣最大的缺點之一就是難以向外行快速科普:CNBC主持人Ran NeuNer近期發推稱,加密貨幣最大的缺點之一就是很難向外行快速解釋。當人們要求我向他們解釋比特幣時,我知道他們至少需要一個小時才能真正理解。[2019/9/10]
因此,我們需要的數據在以太坊節點所組成的網絡中其實都有,只不過網絡的架構沒有考慮過我們的用例。在以太坊協議上構建輕量級客戶端需要解決三大問題:
A:我們需要對正統鏈有一個簡明的了解
B:我們需要使用索引,便于按區塊號查找區塊,并按哈希值查找交易
C:我們需要減少單個節點存儲的總數據量
要找到區塊鏈最新區塊,最免信任的方式是從頭開始構建一條完整的區塊頭鏈(由區塊頭組成的鏈條)。為此,我們需要獲取大約 1100 萬個區塊頭,并為其提供大約 6GB 的存儲空間。
如果沒有完整的區塊頭鏈,客戶端就無法辨別區塊頭是屬于正統鏈還是叔塊的。對于手機和樹莓派等低資源設備來說,6GB 的存儲成本過于高昂。如果用戶要先獲得 1100 萬個區塊頭才能發出第一個請求的話,那就違反了客戶端無需同步的要求。
聲音 | ETC Labs主管:科普教育是未來幾年公鏈面臨的巨大挑戰:ETCLabs主管Darin Kotalik認為,科普教育是未來幾年公鏈面臨的巨大挑戰,人們必須要對區塊鏈有基本的認識,分清楚公鏈和私鏈的區別。[2019/8/25]
幸好我們可以借鑒信標鏈的機制來解決這一問題。我們只需在以太坊協議上添加一個 “雙倍批量默克爾 log 累加器(double-batched merkle log accumulator)”,就可以構建一個簡單易懂的機制來提供某個區塊頭是否包含在正統鏈上的證明。客戶端只需準確掌握最新區塊頭的信息,并通過累加器生成的簡單默克爾證明來證明歷史區塊頭包含在正統鏈上。
同步問題是一個可以在客戶端層面解決的用戶體驗問題。有兩種解決方案:1. 設置區塊頭“檢查點”;2. 信任觀察到的鏈首塊,并執行實際的工作來獲取該鏈首塊,然后對其進行異步驗證。我們可以將這些作為功能標志(feature flag)提供給用戶,讓用戶在安全性和便捷性方面自行權衡取舍。
財政部副部長朱光耀:數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展:今日,在中國發展高層論壇2018年會上,財政部副部長朱光耀表示:“數字經濟還處在發展的過程中,要以科普、推動的態度來推進數字經濟發展。也要關注數字經濟的其他影響,包括稅收征管、反洗錢監管措施等要跟上。”[2018/3/25]
有一些 RPC 端點很難直接構建在現有網絡架構上。客戶端目前可以通過在區塊鏈歷史記錄上創建索引來服務這些端點。存在問題的端點主要有:
eth_getBlockByNumber
eth_getTransactionByHash
eth_getBlockByNumber端點的難點在于叔塊。任意區塊高度都有可能出現無限個有效區塊,但是只有其中一個區塊在正統鏈上。因此,客戶端在拼湊正統鏈時也會構建自己的索引來將 block_number 映射到 block_hash 上。當客戶端通過 JSON-RPC 請求某個區塊號的區塊時,該索引會將這一請求轉化為請求某個哈希值的區塊。
eth_getTransactionByHash也存在同樣的問題。如果我們將叔塊納入考慮,一筆交易可能存在于多個不同的區塊中。但是,單就正統鏈而言,一筆交易只存在于一個區塊內。客戶端在處理正統鏈時會創建一個索引來將 transaction_hash 映射到 (block_hash, transaction_index) 上。當客戶端收到對某筆交易的數據請求時,該索引會將這一請求轉化為允許查找該交易以及包含該交易的正統區塊。交易和區塊都必須包含在 JSON-RPC 響應內。
因此,我們需要一個機制來顯示這些索引。
區塊頭累加器為我們提供了一種機制,可以讓索引數據成為正統鏈的一部分。
以太坊協議自設計之始,就將 DevP2P 以太坊網絡中的節點設想為能夠響應任何關于查找區塊鏈歷史記錄的請求 —— 無論是最新的區塊、很老的區塊還是介于二者之間的區塊。以太坊網絡沒有機制可以讓節點僅存儲區塊鏈歷史記錄的子集。從根本上來說,整個網絡都依賴于所有節點都存儲所有數據這一假設。網絡本身無法強制節點存儲所有數據,但是客戶端會與無法響應其請求數據的對等節點斷開連接。這在一定程度上保障了安全性,因為無法響應請求的客戶端不太可能會維護健康的對等連接。
因此,首先需要解決的問題是,創建一種機制讓單個節點可以僅存儲區塊鏈歷史記錄的子集,同時讓網絡為節點提供一種機制,以便節點快速找到擁有它們所需數據的節點。
事實證明,這是 Kademlia DHT 網絡的新興屬性。該網絡拓撲自身的系統就可以在任意大的密鑰集中進行?O(log(N))?查找。假設我們要查找區塊哈希和交易哈希之類的數據。我們可以通過 DHT 查找它們,使用對應區塊頭對其進行驗證,并使用區塊頭累加器來證明它們在正統鏈上。
“Alexandria” 是Kademlia DHT 網絡的暫定名稱。該網絡旨在按需提供區塊鏈歷史記錄的訪問權限。該網絡本身構建在 Discovery v5 協議上(信標鏈和以太坊網絡也是基于該協議構建的)。這就意味著,絕大部分(乃至所有)語言編寫的客戶端都會有可用的實現。
雖然我們沒有嚴格要求修改核心協議來添加區塊頭累加器,但是這樣做確實可以大幅改善這一情況。即使沒有Alexandria,使用累加器也會讓核心協議如虎添翼。
我們還需要解決可擴展性問題。將區塊號映射到的正統區塊哈希值的正統區塊頭索引相對較小,僅包含一個條目(每個區塊頭對應一個條目)。然而,交易索引很大,包含近十億個條目(每發送一筆交易都會有一個條目)。相比之下,廣泛使用的 BitTorrent DHT 包含大約 2600 萬個不同的種子。以太坊主網需要在我們的 DHT 上存儲大約 50 倍的數據。
構建 Alexandria DHT 并為其制定規范是一個持續性的研究主題,目前已經有了一個還在不斷完善中的大致規范和概念證明客戶端。我們還在繼續進行開發,之后會公布新的進展。
(未完)
(文內有許多超鏈接,可點擊左下 ”閱讀原文“ 從 EthFans 網站上獲取)
原文鏈接:
https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients-part-2/
作者:Piper Merriam
翻譯&校對:?閔敏 &阿劍
Tags:區塊鏈以太坊LOCLOCK區塊鏈幣圈以太坊幣今日價格行情查詢blockchain是什么網站blockchains
Instadapp和Gelato正聯手發布一項新的服務—Instadapp Actions,Instadapp近25000名用戶將體驗到這個應用,據悉.
1900/1/1 0:00:00衍生品爆發的黎明 2021年,加密世界最有前景的賽道是什么?一個主觀的答案是,Layer2以及去中心化衍生品DEX.
1900/1/1 0:00:00賽道以及市場背景: 項目賽道:DAO DAO 是一個了不起的話題,它也是整個區塊鏈系統的關鍵賽道之一。但由于其缺少強大的基礎設施,導致人們對DAO的高質量相關討論較少.
1900/1/1 0:00:00前言: DAOs是一種新的物種還是公司治理的特殊形式?信任與所有權、控制權是最好的說明。但 IT治理的最初提出者Weill和Ross,在考慮和設計公司完全由IT治理時的可能性時,卻完全沒有意識到.
1900/1/1 0:00:00原文標題:《聚焦游戲和 NFT 的 Polygon (Matic) 生態雛形初現,一圖解讀發展全景》上線主網 8 個多月的時間里,Polygon(Matic)的生態已初具規模.
1900/1/1 0:00:00Decentraland創立于2017年9月,是一個由區塊鏈驅動的虛擬現實平臺,也是第一個完全去中心化、由用戶所擁有的虛擬世界.
1900/1/1 0:00:00