Cosmos-- 四.客戶端 -- 4.輕客戶端概覽

cosmos主網(wǎng)即將上線,對文檔做了大量更新。特地翻譯了一下,方便小伙伴們閱覽, 之后會持續(xù)更新

第四章客戶端:

  1. 客戶端
  2. CLI
  3. 服務提供商
  4. 輕客戶端概覽
  5. 開始
  6. 規(guī)范

輕客戶端概覽

這里查看Cosmos SDK輕客戶端的RPC服務文檔

介紹

輕客戶端允許手機這樣的客戶端從任何全節(jié)點接收區(qū)塊鏈狀態(tài)的證明。輕客戶端不必信任任何全節(jié)點,因為他們能夠驗證他們收到的任何證明,因此全節(jié)點不能虛構(gòu)網(wǎng)絡狀態(tài)。

輕客戶端可以提供與全節(jié)點相同的安全性,對帶寬,計算和存儲資源的要求最小化。同時,它還可以根據(jù)用戶的配置提供模塊化功能。這些出色的功能允許開發(fā)人員構(gòu)建完全安全,高效且可用的移動應用,網(wǎng)站或任何其他應用程序,而無需部署或維護任何區(qū)塊鏈全節(jié)點。

什么是輕客戶端

Cosmos SDK輕客戶端(Gaia-lite)分為兩個獨立的組件。第一個組件對于任何基于Tendermint的應用程序都是通用的。它處理鏈的區(qū)塊頭的安全性和連接性,并驗證來自全節(jié)點的證明,證明針對本地信任的驗證人集合。此外,它暴露和任何Tendermint核心節(jié)點完全相同的API。第二個組件專用于Cosmos Hub(gaiad)。它用作查詢的入口,并公開特定的應用程序的功能,這些功能可以是任意的。針對應用程序狀態(tài)的所有查詢都必須通過查詢?nèi)肟?。查詢?nèi)肟诘膬?yōu)點是它可以驗證應用程序返回的證明。

高級架構(gòu)

想要為Cosmos Hub(或任何其他分區(qū))構(gòu)建第三方客戶端應用程序的應用程序開發(fā)人員應該遵循API規(guī)范。該API由多個部分的組合。所有分區(qū)都必須暴露ICS0(TendermintAPI)。此外,任何分區(qū)都可以任意選擇模塊API來組合,具體取決于狀態(tài)機使用的模塊。Cosmos Hub最初將支持ICS0(TendermintAPI),ICS1(KeyAPI),ICS20(TokenAPI),ICS21(StakingAPI),ICS22(GovernanceAPI)和ICS23(SlashingAPI)。

high-level.ca0b5f8e.png

預計所有應用程序僅針對Gaia-lite運行。Gaia-lite是唯一一款穩(wěn)定提供API的軟件。

比較

ABCI的全節(jié)點與其輕客戶端的區(qū)別如下:

全節(jié)點 輕客戶端 描述
執(zhí)行和驗證交易 Yes No 全節(jié)點會執(zhí)行和驗證所有交易但是輕客戶端不會
驗證和保存區(qū)塊 Yes No 全節(jié)點會驗證和保存區(qū)塊但是輕節(jié)點不會
參與共識 Yes No 只有當全節(jié)點是驗證人節(jié)點時,才會參與共識。輕客戶端節(jié)點不會參與共識
帶寬消耗 巨大 全節(jié)點會接收所有的區(qū)塊。如果帶寬受限制,節(jié)點會落后于主網(wǎng)。更重要的是如果全節(jié)點正好是驗證人,將拖延共識過程。輕客戶端只需要很少的帶寬。只有在提供本地請求時才會消耗帶寬
運算資源 巨大 全節(jié)點將執(zhí)行所有交易并驗證所有需要大量計算資源的區(qū)塊
存儲資源 巨大 全節(jié)點將保存所有區(qū)塊和ABCI狀態(tài)。輕客戶端只保存驗證人集和一些檢查點
電力資源 巨大 必須在具有高性能并且將持續(xù)運行的機器上部署全節(jié)點。因此功耗將是巨大的。輕客戶端可以部署在與用戶應用程序相同的機器上,也可以部署在獨立的機器上,但性能較差。此外,輕客戶端可以在必要時隨時關(guān)閉。所以輕客戶端只消耗很少的功率,即使移動設(shè)備也能滿足功率要求
API接口提供 所有cosmos的API 模塊化的API 全節(jié)點支持所有cosmos API。 輕客戶端根據(jù)用戶的配置提供模塊化API
安全級別 全節(jié)點將自行驗證所有交易和區(qū)塊。輕客戶端無法執(zhí)行此操作,但它可以查詢來自其他全節(jié)點的任何數(shù)據(jù)并獨立驗證數(shù)據(jù)。因此,全節(jié)點和輕客戶端都不需要信任任何第三方節(jié)點,它們都可以實現(xiàn)高安全性

根據(jù)上表,輕客戶端可以滿足所有用戶的功能和安全要求,但只需要很少的帶寬,計算,存儲和電源資源。

安全實踐

可信的驗證人集合

輕客戶端的基本設(shè)計遵循兩個原則:

  1. 不信任任何區(qū)塊鏈節(jié)點,包括驗證人節(jié)點和其他全節(jié)點
  2. 只信任整個驗證人集合

最初的可信驗證人集合應該預先放置到其可信存儲中,通常這個驗證人集合來自創(chuàng)世文件。在運行期間,如果輕客戶端檢測到不同的驗證器集合,它將驗證它并將新的通過驗證的驗證人集合保存到可信存儲中。


validatorSetChange.29acad68.png

信任廣播

從上面的內(nèi)容,我們了解如何獲得可信驗證人集合以及l(fā)cd如何跟蹤驗證人集合的變化。驗證人集合是信任的基礎(chǔ),信任可以傳播其他區(qū)塊鏈數(shù)據(jù),例如區(qū)塊和交易。傳播架構(gòu)如下所示:

trustPropagate.8fcf2160.png

通常,通過可信驗證人集合,輕客戶端可以驗證包含所有預提交數(shù)據(jù)和區(qū)塊頭數(shù)據(jù)的提交區(qū)塊。然后,區(qū)塊哈希,數(shù)據(jù)哈希和appHash是可信的?;诖撕蚼erkle證明,所有交易數(shù)據(jù)和ABCI狀態(tài)也是可以被驗證的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容