Blockchain

如何將區塊鏈系統連接到雲數據庫

  • September 28, 2017

我對區塊鏈很陌生,所以我只是想得到一些初步的答案和清晰度。

所以目前我們有一個雲數據庫來管理某些文件(其中包含敏感資訊)。這些文件對貿易融資很重要且必要,即驗證人員需要查看這些文件(銀行、海關等)

1)如果一個組織開發了他們自己的區塊鏈,並要求我們成為他們網路的一部分(假設是私有區塊鏈),我們將如何將他們的區塊鏈系統與我們的雲數據庫互操作?

  • 區塊鏈的每個“塊”中將包含哪些資訊?
  • 據我了解,可以簡單地提供整個文件(即 PDF 或其他格式),並將其包含在區塊鏈中,但是由於文件的大小,它可能並不理想。
  • 另一個潛在的選擇是讓區塊鏈系統創建一個雜湊值。驗證人員會將雜湊值與文件進行比較以檢查真實性。在這種情況下,文件是否也需要附加雜湊鍵?
  • 第三種選擇(我不確定這是否可能)是為區塊鍊網路提供一個 URI,它可以將人員連結到我們的雲數據庫。URI 可以設計為將人員直接連結到文件,也可以為他們提供登錄密鑰。在這種情況下,是否需要以特殊方式格式化 URI?

你們可能知道我對這個區塊鏈相當陌生,所以如果我在任何地方有錯,請糾正我。

乾杯

這取決於您的特定安全需求和網路設置方式。我為企業做過一些諮詢工作,私有區塊鏈通常會消除氣體力學,因此文件大小不會成為問題。

在您的情況下,有兩種選擇:

  1. 加密 pdf blob,壓縮它,將其發送到合約,並為您的使用者提供一個私鑰來解壓縮和解密 blob。這樣,您就可以確保只有授權使用者才能訪問數據。
  2. URI 思想也是一種有效的方法。您可以加密 URI,將其發送到合約,並為您的使用者提供私鑰來解密字元串;或將 URI 作為明文字元串發送到契約,並限制對後端授權使用者的訪問。

雜湊值比較的想法可能有效,但對我來說,這聽起來像是一個過度設計的解決方案。

只需將乙太坊區塊鏈視為可公開訪問的數據庫。

編輯_1:

您不必使您的文件在不同平台上兼容,您只需要以一種與不同平台兼容的方式打包和解包數據,具體取決於數據發送到的平台。

不深入研究虛擬碼很難解釋,所以我會用外行的術語來解釋。如果它看起來有點簡單和/或傲慢,請提前道歉,但我的目標是讓它易於理解。

單一平台

客戶給了你一個橙子,並要求你將橙子儲存在乙太坊上。乙太坊要求橙子去皮。

class StoreOrangeOnEthereum

 def store(orange, address)
   unpeeled_orange = unpeel(orange)
   transfer_to_blockchain(unpeeled_orange, address)
 end

 def withdraw(address)
   unpeeled_orange = withdraw_from_blockchain(address)
   orange = repeel(unpeeled_orange)
   return orange     
 end

end

非常簡單明了。

多平台

另一個客戶給了你一個橙子,並要求你將它儲存在 Hyperledger Fabric 上。Fabric 要求將橙子切片存放。

class StoreOrangeOnFabric

 def store(orange, address)
   unsliced_orange = unslice(orange)
   transfer_to_blockchain(unsliced_orange, address)
 end

 def withdraw(address)
   unsliced_orange = withdraw_from_blockchain(address)
   orange = reslice(unsliced_orange)
   return orange   
 end

end

您可以通過從單個 API 呼叫正確的集成來簡化後端,而不是到處呼叫不同的類:

class OrangeAPI

 def store(orange, address, platform)
    if (platform == 'Ethereum')
      StoreOrangeOnEthereum.store(orange, address)
    elsif (platform == 'Hyperledger Fabric')
      StoreOrangeOnFabric.store(orange, address)
    end
 end

 def withdraw(address, platform)
    if (platform == 'Ethereum')
      StoreOrangeOnEthereum.withdraw(orange, address)
    elsif (platform == 'Hyperledger Fabric')
      StoreOrangeOnFabric.withdraw(orange, address)
    end
 end

end

因此,在這兩個平台上,您都在儲存和提取相同的橙子。您只是根據平台的需要對橙子進行不同的包裝。

引用自:https://ethereum.stackexchange.com/questions/27289