本文主要討論使用區塊鏈智能合約和數據倉庫安全共享去中心化數據。

背景

Alice和Bob想雙方相互共享數據,但不是以傳統集中的模式進行。集中數據存儲在一個位置或一個公司,這就使數據面臨着不安全,公開,不受控制(簡而言之被濫用)的風險。

集中數據共享:面臨數據可能丟失、被盜、出售等風險

相反Alice和Bob希望以去中心化的方式共享數據。去中心化的數據是由多個地點由多個公司持有。這可能會使數據更安全、更私密、更可控。

去中心化的數據共享:降低濫用風險

本文的其餘部分討論了此重要問題的解決方案。

討論

Alice和Bob希望共享數據,包括消息、郵件、文檔、圖像和任何其他分散在雲端中某處的文件。

共享數據包括存儲數據和控制誰有權訪問哪些數據以及何時訪問。

解決這個問題的方法之一是將數據訪問控制與數據存儲分開。

我們想在區塊鏈上使用智能合約來控制對數據的訪問,因爲智能合約非常擅長控制誰在何時何地做什麼,何時何地執行,並且它們存在於去中心化平臺上。

然而由於存儲成本非常高的原因,區塊鏈並不適合存儲數據。存儲一小部分字節的開銷已經足夠大了,存儲一個文件的開銷往往高得讓人望而卻步,有時甚至不可能。

我們認爲,安全地存儲共享數據的最佳位置是隻有用戶可以在數據保險存儲服務器上訪問這些數據,並且由用戶決定使用哪個數據倉庫存儲服務器(或數據倉庫存儲服務器的組合)。

因此Alice和Bob都想在他們選擇的數據倉庫服務器上共享他們的數據,用戶訪問由智能合約控制,所有這些都通過互聯網連接在一起。

智能合約和數據倉庫必須提供哪些功能才能啓用此解決方案?

組合功能

所需的用戶角色,計算機狀態和對象取決於所部署的特定智能合約。但是當智能合約與數據倉庫交互時,雙方必須指定和實現可能的對象和操作。

爲此需要智能合約和數據倉庫存儲接口規範。

  • 智能合約功能

智能合約對可以在哪些對象上執行哪些操作,通過哪些角色以及在哪種計算機狀態下進行編碼。

某些智能合約功能可以由用戶直接調用,而某些可以由數據倉庫調用。

智能合約導出一個公共接口,該接口提供檢查和更改當前機器狀態的用戶功能。

智能合約中可能的角色和機器狀態包括:

智能合約還導出符合接口規範的公共接口,從而爲數據倉庫提供檢查在當前機器狀態下是否允許角色對對象執行操作的功能。

因此數據倉庫操作的控制被編碼在智能合約中。

  • 數據倉庫功能

數據庫保存加密的文件,並且必須要清楚智能合約的區塊鏈上接口規範的地址。

每當用戶向數據存儲庫發出對對象執行操作的請求時,數據存儲庫將與智能合約一起檢查用戶是否具有執行該操作的權限(考慮到智能合約的計算機狀態),如果有,則執行該操作。

數據倉庫與智能合約一起檢查是否允許用戶請求

數據倉庫保存具有以下操作的對象:

  • 智能合約和數據倉庫操作

合約所有者創建智能合約並將其部署在區塊鏈上,然後創建一個將使用它的數據倉庫。這兩個組件都必須符合接口規範。

用戶可以向智能合約或數據倉庫發出請求。

智能合約請求檢查或更改合約的機器狀態。

當其中一個用戶發出數據倉庫請求時,數據倉庫會在執行之前與智能合約檢查是否允許該操作。

只有智能合約所有者可以終止智能合約,並且他們可以在智能合約允許的任何時間終止智能合約。終止的合約會將所有剩餘資金釋放給合約所有者,最終將導致數據保管庫被刪除。

示例解決方案

我們將提供一個有效的解決方案,使用datona-cli提供針對此問題的可行解決方案。下一章節會涉及到。

結論

Alice和Bob以及其他許多人都希望能夠以分散的方式共享數據。這可能會使數據更安全、更私密、更可控。

結合使用智能合約和符合接口規範的數據倉庫來做到這一點是很實際的。

原文作者:Julian Goddard

譯者:鏈三豐

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

相關文章