內部區塊鏈的優缺點

雪花又一年發表於2018-04-16
1620

我經常轉發與銀行或大型企業實施的區塊鏈實驗有關的新聞,並提出這樣的疑問:”他們為什麼會在這種內部場景使用區塊鏈呢?“

區塊鏈的作用是取代可信賴的第三方,或者是在不完全相互信任的實體之間建立信任關係,如此看來,內部區塊鏈似乎是矛盾的。

然而,許多公開發布的實驗,試驗性專案和針對應用的驗證性測試都著重於區塊鏈的內部使用案例,即區塊鏈中可能有一個或多個節點,但是都由同一組織控制,且通常侷限在一個區域內。

雖然最近有許多對比公有型(非許可型)與私有型(許可型)聯盟區塊鏈的討論,但是卻鮮有人思考內部區塊鏈的優點。

一些概念:

公有型(非許可型)意思是任何人都可以對交易進行校驗,以及新增新的區塊,同時,任何人都可以讀取區塊鏈中的資料,例如比特幣和以太坊。

私有型(許可型)意思是在區塊鏈中,可以新增區塊的實體物件對整個區塊鏈網路的其餘部分來說是已知的,並且得到了它們的許可。這種型別的區塊鏈可以分為兩大類。第一類即區塊鏈的參與者是同一型別的實體,例如產業區塊鏈。第二類則是內部區塊鏈,即所有區塊的新增者都由同一組織控制。


內部區塊鏈實驗

使用內部區塊鏈進行實驗的主要原因似乎是:

(1)在實施內容與區塊鏈有關的情況下對工作壓力和預算的考慮

(2)相比於同外部組織(通常是競爭對手)進行合作,內部設定更加簡單

(3)可以親自動手體驗一些最新的技術

以下是一些關於內部區塊鏈解決方案相較於傳統資料庫的優缺點的想法。我非常歡迎有這方面技術知識的讀者,例如資料庫管理員,對這些想法進行補充或指正,因為我並不是一個技術專家。


對資料安全的考慮

資料讀取

目前,對非區塊鏈式資料庫的讀取訪問往往記錄在日誌檔案中。而區塊鏈的讀取特點是,你可以自由地讀取區塊鏈中某一節點的資料(通常儲存在一個固定的資料庫中),只需要通過與其相連的節點。基於區塊鏈的資料庫本身並沒有任何內建機制可以改善這個問題。因而你仍然會使用日誌檔案來記錄誰讀取了你的區塊鏈,所以在這一方面,區塊鏈式資料庫和普通資料庫的解決方案几乎沒有什麼差別。

資料寫入(新增)

非區塊鏈式資料庫通常使用使用者名稱和密碼對使用者進行身份驗證,同時根據使用者許可權來決定他是否可以寫入資料,並使用日誌檔案記錄新資料寫入行為。

區塊鏈在新增資料時通常需要額外使用資料簽名。資料簽名的使用首先在交易層面,其次則是新增區塊時(針對私有鏈)

在交易層面,例如在比特幣交易中,你通過在支付資訊中新增數字簽名來證明你是這筆錢的所有者。儘管用於儲存非交易性資料的區塊鏈不需要使用此機制,但是許多用於數字資產轉移的區塊鏈都在使用它。區塊鏈節點的軟體理論上可以接收來自任何人的資料並將其新增到區塊中,而不需要來自資料傳送者的數字簽名。

在增加區塊的層面上,對於私有鏈的區塊新增者來說,一種獲取許可的機制就是在要新增的區塊上使用數字簽名來證明他們的身份,這樣其他驗證人員就會接受這個區塊。但這種情況並不適用於公有鏈,例如比特幣。在比特幣區塊鏈中,你完全可以在沒有明確表示你是誰的情況下進行挖礦,儘管你的IP地址和你通過挖礦獲得的比特幣地址都會洩露你的資訊。

數字簽名能夠在人們寫入更改時在安全性和不可否認性上新增額外的一層保障。所以區塊鏈能夠在資料寫入這個方面為資料庫增加使用價值。

資料修改或刪除

非區塊鏈式資料庫通常使用使用者名稱和密碼對使用者進行身份驗證,同時根據使用者許可權來決定他是否可以修改資料,並使用日誌檔案記錄資料修改行為。

區塊鏈包含許多節點,資料一旦寫入,拒絕更改,除非你得到了絕大部分或者所有節點的同意,或者你濫用旨在解決區塊建立的同步問題的“最長鏈規則”。這意味著你可以降低流氓管理員更改歷史資料的風險,通過讓區塊鏈執行在不同資料中心的節點上,每個資料中心都配備不同的資料庫管理團隊。如果要更改歷史資料(假設私有區塊鏈設定不能在單一節點連續新增多個區塊),那麼需要多個團隊合謀,共同協作才能辦得到。

從這方面來看,區塊鏈式資料庫比傳統資料庫更安全。對於沒有存檔和業務連續性需求的不受監管的物件來說,區塊鏈可能是一個極佳的解決方案。但是對於金融機構來說,頻繁地備份以及長期儲存這些備份是必須的,因此,不難想象,對於一個銀行來說,比較各個備份來檢測資料是否發生了更改可能更為直截了當。但是,在這種方式下每個資料庫你都需要構建相應的比較方法,區塊鏈則不然,你可以直接獲得這種不可變性。


存檔和備份

儘管如上所述,區塊鏈不如存檔簡單,但我可以想象,未來區塊鏈將會代替存檔。如果你的區塊鏈在全球範圍內有多個複製這些不可變資料的節點,你還需要額外的定期備份嗎?


適應性

新增一個新的節點並使其與現有區塊鏈同步是非常容易的。只需要安裝相應軟體,輸入區塊鏈上其他計算機的地址,讓它開始下載區塊並校驗新出現的交易和區塊就可以了。在我看來,這比傳統企業資料庫提供的解決方案更容易操作,也更經濟實惠。但也有可能我是錯的。


跨境時的資料隔離

區塊鏈在各個節點之間進行資料的複製。如果你的某些資料需要保留在特定的司法管轄區內(例如新加坡的客戶資料),那麼你需要找到適合的方法來解決這個問題。找到解決方案是相對比較簡單的,只需要認真思考一下。這些資料和常規資料庫中的客戶端資料,以及內部區塊鏈上的交易資料是十分相似的。


資料隱私

是否要考慮交易中的中國牆問題呢?如果需要,鑑於區塊鏈的實現需要不斷複製資料,那麼使用區塊鏈可能不會是一個好的解決方案。雖然隱私問題可以通過加密來解決,即將金鑰安放在需要的地方,但是,資料需要在加密以及保持一定可見性用於校驗這兩者之間實現動態變化,尤其是交易資料。

思考一下:你在某個區塊鏈中並新增了一些表示A(你)和B(交易另一方)之間交易的資料。同時,C也在這個區塊鏈中。那麼,交易資料新增到區塊鏈上後,C就可以看到A在與B通訊。此外,C也可以在沒有攻破A和B的系統的情況下,用自己的時間嘗試解密或者分析所有A和B之間的通訊資訊。從敏感的商業視角來看,這難道也可以接受嗎?


第三方訪問

對於為何使用內部區塊鏈,有時我會聽到這樣的理由:監管機構或審計人員獲取訪問許可權十分簡單 – 他們可以很容易地接入區塊鏈並從那裡開始獲取他們想要的資料。確實如此,但是,讓他們從常規資料庫中獲取資料真的比這個要難嗎?

另一個可能更好的理由是互操作性 – 當你希望其他的參與者也可以寫入資料時,如果你有一個以區塊鍊形式構建的內部資料庫(即新增的資料記錄中包含了塊雜湊的值,並且安裝有有一些能夠和外界通過對等網路進行互動的伺服器軟體),那麼資料庫接入其他參與者會更加簡單。但你必須注意那些你與外部參與者共享的資料和後設資料(參見上面的資料隱私部分)。


速度

區塊鏈中資料的讀取速度很快。同時,鑑於區塊鏈節點複製的資料用傳統資料的格式儲存,你可以向讀取普通資料庫一樣進行讀取。

但如果寫入速度對專案來說十分重要,或者你需要處理大量的資料,那麼區塊鏈的效能還不如常規資料庫。

不過,我經常聽到關於比特幣區塊鏈交易速度受限問題的擔憂。但這種速度受限並不一定會體現在內部的,私有的,使用工作量證明協議的區塊鏈上:內部區塊鏈如果位於具有良好通訊能力的資料中心,其交易處理速度可以達到比特幣的3倍以上。


結論

儘管最開始我們並沒有任何令人信服的理由能說明為什麼要在解決內部問題時使用區塊鏈,但從技術的角度來說,兩者的結合是有利的。畢竟,這是一次實踐,一次試驗,是在創新和改良現有的技術以尋求更出色的解決方案。鑑於建立私有型區塊鏈並不需要挖礦開銷,也不復雜,在區塊鏈技術還在發展的這個階段,如果有人問:“為什麼要用區塊鏈呢?”,那麼正確答案可以是:“為什麼不用呢?”

請對上述關於在解決內部問題時使用區塊鏈代替傳統資料庫的理由發表您的看法!

原文釋出時間為:2018-03-13
本文作者:伊澤小王子
本文來源:騰訊雲 雲+社群,如需轉載請聯絡原作者。


相關文章