如何創建可擴展的去中心化應用程式? 使用更少的區塊鏈

不,在區塊鏈上啟動去中心化應用程式(dapp)不會帶來成功的業務。 事實上,大多數用戶甚至不會考慮應用程式是否在區塊鏈上運行——他們只是選擇更便宜、更快、更簡單的產品。

不幸的是,即使區塊鏈有其獨特的功能和優勢,但在其上運行的大多數應用程式都比其中心化競爭對手更昂貴、更慢且更不直觀。

如何創建可擴展的去中心化應用程式? 使用更少的區塊鏈

在基於區塊鏈構建的應用程式的白皮書中,你經常可以找到這樣的一段話:「區塊鏈價格昂貴,無法支援每秒所需的交易數量。幸運的是,許多聰明的人正在致力於擴展區塊鏈,並且當我們的應用程式啟動時,它將變得非常可擴展。”

在一個簡單的段落中,dapp 開發人員可以放棄對可擴展性問題和問題的替代解決方案進行更深入的討論。 這通常會導致架構效率低下,在區塊鏈上運行的智慧合約充當應用程式的後端和核心。

然而,仍然存在未經測試的去中心化應用程式架構方法,這些方法可以透過減少對區塊鏈的依賴來實現更好的可擴展性。 例如,Blockstack 正在開發一種架構,其中大部分應用程式資料和邏輯都儲存在鏈外。

讓我們先來看看更傳統的方法,它使用區塊鏈作為應用程式使用者之間的直接中介,並且擴展性不是特別好。

方法#1:區塊鏈作為後端

為了更清楚說明問題,我們以酒店業為例。 這是一個巨大的產業,像 Booking.com 這樣的中介機構, 他們收取巨額費用 用於連接客人和飯店。

在任何情況下,如果我們想要使用這種方法擊敗這樣的中介,我們將嘗試使用以太坊等區塊鏈上的智慧合約來複製其業務邏輯。

在「世界電腦」上運行的開源智慧合約可以將商家與消費者連接起來,而無需第三方介入,最終減少中介收取的費用和佣金。

如下圖所示,飯店使用去中心化應用程式在區塊鏈上發布有關房間的資訊、工作日或週末的可用性和價格,甚至可能還包括房間的描述以及所有其他相關資訊。

如何創建可擴展的去中心化應用程式? 使用更少的區塊鏈

任何想要預訂房間的人都可以使用此應用程式來搜尋區塊鏈上託管的飯店和房間。 一旦用戶選擇了房間,就可以透過向飯店發送所需數量的代幣作為押金來進行預訂。 作為回應,智能合約會更新區塊鏈中的信息,表明該號碼不再可用。

這種方法的可擴展性問題有兩個面向。 首先,每秒最大交易數。 其次,區塊鏈上可以儲存的資料量。

我們來做一些粗略的計算。 Booking.com 表示,他們有近 2 萬家飯店在其註冊。 假設飯店平均有 10 間客房,而每間客房每年僅被預訂 20 次 - 這意味著我們平均每秒有 13 次預訂。

從這個數字來看,值得注意的是以太坊每秒可以處理約 15 筆交易。

同時,值得考慮的是,我們的應用程式還將包含飯店的交易 - 用於下載和不斷更新有關其房間的資訊。 飯店非常頻繁地更新房價,有時甚至每天更新,每次價格或描述變更都需要在區塊鏈上進行交易。

這裡還存在大小問題 - 以太坊區塊鏈的重量最近超過了 2TB 大關。 如果採用這種方法的應用程式真正流行起來,以太坊網路將變得極不穩定。

這種基於區塊鏈的系統可以排除外來者,因為它的公正性和缺乏中心化是區塊鏈技術的主要優點。 但區塊鏈還有其他特性——它是分散式的、不可重寫的,這些都是優秀的特性,但你必須在交易的速度和佣金上付出代價。

因此,dapp開發者必須仔細評估使用區塊鏈的每個功能是否真的需要分散式和不可寫性。

例如:將每家飯店的資料分佈在世界各地的數百台機器上並永久儲存在那裡有什麼好處? 房價和供應情況的歷史數據始終包含在區塊鏈中真的很重要嗎? 可能不會。

如果我們開始提出這樣的問題,我們就會開始發現我們所有的功能不一定需要所有昂貴的區塊鏈功能。 那麼,還有什麼選擇呢?

方法#2:受 Blockstack 啟發的架構

雖然主要強調的是 Blockstack 在使用者是其資料所有者的應用程式上(例如, 文字, 奔騰音響, 圖像優化器石墨黑色),Blockstack 還有一個理念,即僅在絕對必要時才使用區塊鏈。 他們的主要論點是區塊鏈速度慢且昂貴,因此只能用於單一或不頻繁的交易。 與應用程式的其餘互動應透過點對點進行,即去中心化應用程式的用戶必須直接相互共享數據,而不是透過區塊鏈。 畢竟,BitTorrent、電子郵件和 Tor 等最古老、最成功的去中心化應用程式是在區塊鏈本身概念出現之前創建的。

如何創建可擴展的去中心化應用程式? 使用更少的區塊鏈
左:第一種方法,使用者透過區塊鏈進行互動。 右:用戶直接交互,區塊鏈僅用於識別等.

讓我們回到酒店預訂的例子。 我們需要一個公正、獨立和開放的協議來連接客人與酒店。 換句話說,我們要去掉中心化的中間人。 例如,我們不需要將房價不斷儲存在公共分散式帳本中。

為什麼我們不讓客人和飯店直接互動,而不是透過區塊鏈呢? 飯店可以將價格、空房情況和任何其他資訊儲存在每個人都可以存取的地方 - 例如,IPFS、Amazon S3,甚至他們自己的本地伺服器。 這正是 Blockstack 的去中心化儲存系統所稱的 蓋亞。 它允許用戶選擇他們想要儲存數據的位置,並透過一種稱為「存取數據」的方法來控制誰可以存取數據 多用戶存儲.

為了建立信任,所有飯店資料均由飯店本身進行加密簽署。 無論這些資料儲存在哪裡,都可以使用與儲存在區塊鏈上的飯店身分相關的公鑰來驗證其完整性。

對於 Blockstack,只有您的身分資訊儲存在區塊鏈上。 有關如何取得每個使用者資料的資訊儲存在區域文件中,並透過使用節點的對等網路進行分發。 再說一遍,您不需要信任節點提供的數據,因為您可以透過將其與儲存在區塊鏈和其他用戶中的雜湊值進行比較來驗證其真實性。

在該系統的簡化版本中,客人將使用 Blockstack 點對點網路搜尋飯店並獲取有關其房間的資訊。 您收到的所有資料的真實性和完整性可以使用儲存在中的公鑰和雜湊值進行驗證 虛電路 塊堆疊。

這種架構比第一種方法更複雜,並且需要更全面的基礎架構。 事實上,這正是 Blockstack 的用武之地,它提供了創建這樣一個去中心化系統所需的所有元件。

如何創建可擴展的去中心化應用程式? 使用更少的區塊鏈

透過這種架構,我們只將真正需要分發而不是覆蓋的資料儲存在區塊鏈上。 對於 Blockstack,您只需要區塊鏈上的交易來註冊並指示您的資料應儲存在哪裡。 如果您想更改任何此訊息,您可能需要進行更多交易,但這不是重複發生的事件。

此外,與第一種方法相反,應用程式邏輯在客戶端運行,而不是在智慧合約上運行。 這使得開發人員可以更改此邏輯,而無需進行昂貴的甚至有時甚至不可能的智能合約更新。 透過將應用程式資料和邏輯保持在鏈下,去中心化應用程式可以達到傳統中心化系統的效能和可擴展性等級。

結論

在 Blockstack 上運行的應用程式可以比傳統的區塊鏈應用程式更好地擴展,但它是一種較年輕的方法,有其自身的問題和未解決的問題。

例如,如果去中心化應用程式不在智慧合約上運行,那麼這會減少對實用代幣的需求。 考慮到 ICO 一直是去中心化應用程式(包括 Blockstack 本身)的主要資金來源,這可能會給企業帶來問題

這裡也存在技術問題。 例如,在智慧合約中實現飯店預訂功能相對容易,在原子操作中,預訂房間以換取代幣。 在沒有智能合約的情況下,如何在 Blockstack 應用程式中預訂還不是很明顯。

瞄準具有數百萬用戶潛力的全球市場的應用程式必須具有良好的擴展性才能取得成功。 在不久的將來僅依靠區塊鏈來實現這種程度的可擴展性是錯誤的。 為了能夠與 Booking.com 等大型中心化市場參與者競爭,去中心化應用程式開發人員應該考慮設計應用程式的替代方法,例如 Blockstack 提供的方法。

來源: www.habr.com

添加評論