Blockchain
如何將區塊鏈系統連接到雲數據庫
我對區塊鏈很陌生,所以我只是想得到一些初步的答案和清晰度。
所以目前我們有一個雲數據庫來管理某些文件(其中包含敏感資訊)。這些文件對貿易融資很重要且必要,即驗證人員需要查看這些文件(銀行、海關等)
1)如果一個組織開發了他們自己的區塊鏈,並要求我們成為他們網路的一部分(假設是私有區塊鏈),我們將如何將他們的區塊鏈系統與我們的雲數據庫互操作?
- 區塊鏈的每個“塊”中將包含哪些資訊?
- 據我了解,可以簡單地提供整個文件(即 PDF 或其他格式),並將其包含在區塊鏈中,但是由於文件的大小,它可能並不理想。
- 另一個潛在的選擇是讓區塊鏈系統創建一個雜湊值。驗證人員會將雜湊值與文件進行比較以檢查真實性。在這種情況下,文件是否也需要附加雜湊鍵?
- 第三種選擇(我不確定這是否可能)是為區塊鍊網路提供一個 URI,它可以將人員連結到我們的雲數據庫。URI 可以設計為將人員直接連結到文件,也可以為他們提供登錄密鑰。在這種情況下,是否需要以特殊方式格式化 URI?
你們可能知道我對這個區塊鏈相當陌生,所以如果我在任何地方有錯,請糾正我。
乾杯
這取決於您的特定安全需求和網路設置方式。我為企業做過一些諮詢工作,私有區塊鏈通常會消除氣體力學,因此文件大小不會成為問題。
在您的情況下,有兩種選擇:
- 加密 pdf blob,壓縮它,將其發送到合約,並為您的使用者提供一個私鑰來解壓縮和解密 blob。這樣,您就可以確保只有授權使用者才能訪問數據。
- 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
因此,在這兩個平台上,您都在儲存和提取相同的橙子。您只是根據平台的需要對橙子進行不同的包裝。