file

Cosmos 能讓開發者輕鬆構建和部署可擴展和可互操作的面向特定應用的區塊鏈。但是,什麼是面向特定應用的區塊鏈?爲什麼你應該把構建去中心化應用看作一個針對應用定製的區塊鏈呢?

什麼是面向特定應用的區塊鏈?

如今,大多數去中心化應用都在現有的區塊鏈技術之上開發,例如以太坊。這是因爲很長一段時間,這是開發去中心化應用最簡單的最實用的方法。

file

基於以太坊的應用架構

Tendermint&Cosmos 提出另一種構建去中心化應用的方式。Cosmos 把區塊鏈作爲去中心化應用的基礎,而不是構建在基於區塊鏈的虛擬機,如 EVM,之上的去中心化應用。這就是所謂的面向特定應用的區塊鏈。

file

簡化的基於 Cosmos-SDK 的區塊鏈架構

面向特定應用的區塊鏈直到現在才被廣泛應用的主要原因就是區塊鏈開發的門檻很高。大多數人不得不基於現有的區塊鏈解決方案,例如比特幣,代碼之上開發。使用 Tendermint&Cosmos-SDK 構建一個區塊鏈就像編寫一個代碼模塊一樣容易。請繼續閱讀下面博文鏈接,深入解釋這些概念。
https://blog.cosmos.network/understanding-the-value-proposition-of-cosmos-ecaef63350d

既然我們知道什麼是面向特定應用的區塊鏈。那讓我們來理解爲什麼在大多數情況下,開發定製化的區塊鏈更有意義,而不是在一個基於區塊鏈的虛擬機之上。

性能

正如前面提到的文章所解釋的,區塊鏈結構可分爲三層 : 網絡層、共識層和應用層。Tendermint 共識引擎已實現了網絡和共識層的功能,而且吞吐量達到上千。去中心化應用真正的瓶頸是應用層。

file

簡化的區塊鏈架構

開發面向特定應用的區塊鏈意味着需要定義相關的事務類型和狀態轉換函數。這將大大提高應用程序的性能。

安全性

區塊鏈上虛擬機很容易遭受攻擊。這大部分歸根於虛擬機本身的複雜性。在面向特定應用的區塊鏈中,安全性分析比較簡單,因爲開發人員只需要考慮應用程序之間是如何相互作用的,而不必擔心應用程序和虛擬機之間的交互。虛擬機的複雜性是引起諸如調用堆棧限制 (DAOBug)、DelegateCall(Parity Bug #1)、contract suicide(Parity Bug #2) 等 Bug 的原因。

Cosmos-SDK 提供了另一種安全的方法,特別是 objectcapabilities 的概念。請注意,沒有一個框架能夠完全保護應用程序免於破壞。應用程序開發人員有責任確保不會發生任何安全事故。請注意,面向特定應用的區塊鏈可能會提供更多的可恢復選項,以防出現安全事故 (參見下一節)。

治理

在開發面向特定應用的區塊鏈時,你可以決定部署它爲公共的(PoS)或者私有(PoA)鏈。在這兩種情況下,驗證人只驗證應用相關的交易。這意味着管理應用程序間的管理不存在重疊。如果某個應用程序存在問題,線下管理機制可以修復它,而不會妨礙生態系統中的其他應用。

另一方面,如果基於虛機的去中心化應用出現了問題,而超出底層管理機制的範圍,那麼任何人都無法修復它。例如如果在一個以太坊上建立的去中心化應用被黑客攻擊,並且資金被竊取,如果以太坊社區不去修復,它將不會可能會被修復。最近發生的 Parity 多簽名攻擊就是一個很好的例子。

靈活性

在區塊鏈上的虛擬機之上構建應用的開發人員受到底層區塊鏈的開發環境的限制。對於以太坊開發人員來說,這意味着他們必須在有限的編程語言中進行選擇,像 Solidity 或 Serpent。此外,他們也受到虛擬機本身的限制。例如,大多數虛擬機區塊鏈不允許自動狀態轉換。每個狀態轉換都必須由發送事務的最終用戶觸發。雖然這種約束是合理的,但如果在虛擬機區塊鏈上構建應用,它仍然會給開發人員帶來限制。

區塊鏈上的定製化應用提供更多的靈活性。首先,開發者可以選擇他們喜歡的程序語言在 Tendermint 之上構建 ABCI 應用。然而,從頭構建應用程序可能會很困難。這就是爲什麼 Cosmos-SDK 存在的原因。目前,它只能在 Golang 使用。但在未來,我們希望其他語言的 sdk 也能出現。其他框架也存在,比如 LotionJS,它允許開發人員在 Javascript 中構建基於 Tendermint 的區塊鏈應用程序。

另一個提供給開發者的靈活的針對應用定製的區塊鏈的例子是出發自動狀態轉化的功能。ABCI 有兩種消息:BeginBlock 和 EndBlock。BeginBlock() 和 EndBlock() 函數在每個塊的開始和結束處自動執行。開發人員必須避免包含過大量計算邏輯,或者將應用程序暴露在死循環中,但是如果處理得當,這將是非常有用的。

區塊鏈上虛擬機也有其適用場景

我們已經介紹了區塊鏈上定製化開發應用所能提供的一些優勢。但是這並不意味着去中心化應用不應該構建在區塊鏈虛擬機上。每個框架都有其優點和缺點,開發人員必須選擇最適合的框架。下面是一些構建在區塊鏈虛擬機之上的案例:

小型的,低使用率的應用或原型。虛擬機非常實用,且用戶友好。他們允許開發者在幾分鐘內部署去中心化應用,這在實現不復雜的應用或者作爲概念證明時是十分方便。

如果您不想爲您的應用程序部署驗證人集合。虛擬機區塊鏈爲應用程序開發人員提供了共識,這樣就不必部署網絡了。請注意,未來的 Cosmos 將支持共享驗證人集合,允許開發人員部署獨立應用程序,而不需要支持驗證人。

如果需要終端用戶爲應用程序添加自定義邏輯。

結論

面向特定應用的區塊鏈直到現在一直不引人注目,這歸咎於構建它們的難度。但是有了 Cosmos,現在可以很容易地開發可互操作和可擴展的區塊鏈上的定製化應用。開發人員還在等什麼呢 ?