Go-Ethereum
使用 KMS 和乙太坊在 IPFS 上儲存數據
我正在嘗試在乙太坊上建構區塊鏈,但將與塊相關的數據保存在一些分佈式文件儲存系統(如 IPFS 或 Storj)中,並將數據的雜湊儲存在塊中。但是我們需要我們的數據是私有/共享的,因此我們正在考慮使用一些密鑰管理服務,如 NuCypher KMS。但是我們將在乙太坊上有智能合約,可以訪問數據並執行一些操作。我的問題是,這是正確的方法還是可能?
由於以下問題,您的智能合約無法訪問數據:
1)數據在區塊鏈之外,合約無法訪問區塊鏈之外的任何東西
2)即使您的合約可以訪問數據,數據也會被加密(根據您的規範)。如果合約可以解密數據,這意味著任何人都可以解密數據,因為密鑰隨後在交易/合約內部可用。
有一些關於公鑰密碼學等將私有數據儲存在區塊鏈中的想法,但即使它們有效,使用成本(gas 成本)也會相當可觀。這個論壇上有幾篇關於它的文章,例如:如何加密挑戰公共/私人地址密鑰對?. 在乙太坊區塊鏈上儲存私有數據可以找到一些更一般的討論
正在對該領域(乙太坊內的隱私)進行研究,即 zk-Snarks。這裡有一些資訊:https ://blog.ethereum.org/2016/01/15/privacy-on-the-blockchain/
通過這種方式,您可以使用區塊鏈來驗證數據(以 ERC-735 為例),但您無法使用智能合約訪問鏈下數據。您設計您的智能合約,以便不需要原始數據進行操作。只要您只需要驗證,這就是正確的案例。