區塊鏈研究實驗室|加密區塊鏈資料庫詳解(第一部分)

買賣虛擬貨幣

區塊鏈資料庫是將區塊鏈和資料庫的屬性結合起來的儲存系統,如去中心化、抗篡改、低查詢延遲和支援複雜查詢。隨著它們得到更廣泛的採用,人們對它們管理的資料的保密性的擔憂也會增加。已經有多個專案使用區塊鏈來儲存敏感資料,例如電子醫療保健和財務記錄,法律檔案和客戶資料。

在本文中,我們討論了我們的新論文《加密的區塊鏈資料庫》,其中我們設計了端到端加密的區塊鏈資料庫,以支援需要儲存和查詢敏感資料的去中心化應用程式。特別是我們專注於我們所稱的區塊鏈加密多對映(EMM),它可用於例項化各種NoSQL區塊鏈資料庫,如鍵值儲存或文件資料庫。

密碼學領域的重點是端到端加密資料庫的設計,更廣泛地說,是對加密資料的搜尋問題,這一領域被稱為加密搜尋。關於這個領域的介紹,請參閱布朗大學加密系統實驗室的這一系列部落格文章。特別是第五篇文章,描述了一個標準的/集中的EMM的構造(在這篇文章中稱為加密資料庫(EDB))。

加密多重對映

NoSQL資料庫由於其簡單性、可擴充套件性和高效能保證,近年來在資料庫行業中越來越突出。各種NoSQL資料庫,如鍵值儲存(例如DynamoDB)和文件資料庫(例如MongoDB),可以用多對映資料結構例項化。多重對映是將標籤對映到值元組的字典的泛化。它們支援get和put操作,在給定標籤的情況下,可以儲存或檢索與標籤相關聯的值的元組。加密多對映(EMM)是一種端到端的加密多對映,它支援get和put操作,但對加密資料進行過度加密。由於多個對映可以用來表示NoSQL資料庫,因此設計區塊鏈加密的NoSQL資料庫本質上與設計區塊鏈EMM相同。

舊版友好

設計區塊鏈EMM有兩種主要方法。首先是設計一個專門支援EMM的新區塊鏈。這種方法的優勢在於可以共同設計EMM和區塊鏈以最佳化效能。第二種方法是設計一種對傳統友好的解決方案,因為它可以在已有的區塊鏈之上使用。這種方法的優勢在於,區塊鏈EMM可以建立在多個平臺之上,無需建立新的區塊鏈。然而,第二種方法存在一些挑戰:

1. 我們如何在區塊鏈上儲存資料結構?特別是,如何儲存加密的多對映資料結構?大多數現有區塊鏈旨在儲存金融交易或智慧合約的狀態,但不是任意的資料結構。

2. 由於區塊鏈在設計上是防篡改的,我們如何更新EMM,尤其是如何從中新增/刪除資料?

另外一個簡單的解決方案如下:每次更新時,我們都可以從區塊鏈讀取整個EMM,進行必要的更改,然後將其寫回一個全新的EMM。這是查詢正確性的理想解決方案,因為每個查詢總是從最新的EMM中讀取。然而,這種解決方案對於更新操作效率極低,因為每次更新操作都必須讀取和寫回整個結構。因此,我們還需要考慮以下第三個挑戰:

如何針對查詢和更新複雜性設計高效的區塊鏈EMM?

在描述我們的區塊鏈EMM構建之前,讓我們先討論一下第一個挑戰——第二個和第三個挑戰更為棘手,因此我們將在詳細描述構建本身時解決它們。

區塊鏈上儲存任意資料結構

大多數區塊鏈(例如比特幣,以太坊,Algorand)都允許使用者在交易中儲存任意資料。由於在單個事務中只能儲存有限數量的資料,因此必須在多個事務中拆分大型資料結構。然後問題變成:

我們如何將這些事務連結在一起以構建任意資料結構?

要回答這個問題,請首先注意,可以透過將以前事務的“地址”儲存在較新的事務中來連結事務。利用這一特性,我們將在區塊鏈頂部疊加一個資料結構,這樣我們就可以更新和查詢資料結構,而不必對後端(區塊鏈)進行任何修改。在下面,我們提供了一個簡單的示例,演示如何疊加一個連結列表。為了在區塊鏈上儲存一個值為V=(v1,…,vn)的列表,我們執行以下操作(請參閱圖1瞭解此過程的說明):

1. 將每個值vi與儲存vi-1的先前事務的地址ri-1連線起來。

2. 使用vi || ri-1建立一個新交易,並將其傳送到區塊鏈。這將生成ri,即新交易的地址。

3. 對所有值重複此操作。

4. 最後,儲存與客戶的最後一筆交易的地址rn。

要讀取值,請執行以下操作:

1. 將rn傳送到區塊鏈以恢復值vn和地址rn-1。

2. 然後使用rn-1恢復vn-1和rn-2。

3. 繼續此過程,直到已讀取所有值。

類似地,我們可以在區塊鏈上疊加更復雜的資料結構,例如二叉樹。這可以透過將兩個地址連線到每個值來完成:一個用於其左子項,一個用於其右子項。如圖2所示。

智慧合約的侷限性

對於支援智慧合約的區塊鏈,另一種方法可能是將整個資料結構儲存為智慧合約的狀態,並將查詢和更新操作作為智慧合約來實現。不幸的是,這種方法有兩個主要的侷限性。首先它不是通用的,因為(1)許多區塊鏈不支援智慧合約(例如比特幣),以及(2)許多智慧合約平臺不維護跨交易的狀態(例如Algorand)。第二個限制與使用此類平臺的成本有關。事實上,智慧合約平臺不僅需要支付儲存資料和程式碼的費用,還需要支付執行程式碼的費用;程式碼越複雜,成本就越高。請注意,我們將資料結構疊加在區塊鏈之上的第一種方法不僅通用,而且成本更低,因為我們可以將資料儲存在交易中而不是智慧合約,並且不需要在區塊鏈上執行任何程式碼 。

在本系列的下一部分中,我們將描述三種在區塊鏈上儲存動態emm的方案,每種方案在查詢、新增和刪除效率之間實現了不同的權衡。

---------------------------------------------------------

原文作者:Daniel Adkins, Archita Agarwal, Seny Kamara, Tarik Moataz

譯者:鏈三豐

譯文出處:http://bitoken.world

----------------------------------------------------------------------

描下方二維碼新增我,拉您進入技術交流群

掃碼

關注我們

獲得

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;