cosmos主網(wǎng)即將上線,對文檔做了大量更新。特地翻譯了一下,方便小伙伴們閱覽, 之后會持續(xù)更新
第四章客戶端:
輕客戶端概覽
在這里查看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)。

預計所有應用程序僅針對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è)計遵循兩個原則:
- 不信任任何區(qū)塊鏈節(jié)點,包括驗證人節(jié)點和其他全節(jié)點
- 只信任整個驗證人集合
最初的可信驗證人集合應該預先放置到其可信存儲中,通常這個驗證人集合來自創(chuàng)世文件。在運行期間,如果輕客戶端檢測到不同的驗證器集合,它將驗證它并將新的通過驗證的驗證人集合保存到可信存儲中。

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

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