如何在區塊鍊和智能合約中儲存私有數據
在我之前關於這個主題的問題之後,有沒有辦法通過區塊鏈儲存和共享私鑰?,我可能有一個解決方案,但我想改進這個過程。
圖片 A 是一些私有數據的所有者,並希望將這些數據的所有權交給區塊鏈的另一個成員 B。數據是私鑰,因此不能公開,但可以使用 A 或 B 公鑰對其進行編碼。
所以:
- 秘密數據用 A 公鑰編碼,並儲存在 A 資訊數據中 /
- B 想通過 A 秘密數據
- A 解碼秘密數據(使用他的私人錢包密鑰)並使用 B 公鑰對秘密數據進行編碼
- 數據的所有權授予 B
- 現在只有 B(還有 A,但那是另一回事)可以解碼秘密數據。
有沒有辦法使用智能合約來簡化這個過程?我假設智能合約可以訪問 A 和 B 公鑰,但是可以使用執行智能合約的私鑰對數據進行編碼/解碼嗎?
如果我理解正確的話,我認為你不需要區塊鏈技術來實現你想要的。這正是非對稱公鑰加密的設計目的。
A 簡單地使用 A 的私鑰和 B 的公鑰加密一些資訊……從而確保:
- 只有B可以解密資訊
- B 可以驗證資訊是否被 A 加密(使用 A 的公鑰)
A 無法向 B 證明他們的資訊副本已被 A 破壞或遺忘,但至少可以確保安全傳輸。
(即使我在 bitcoin.stackexchange 方面,這也提出了一個乙太坊標籤,所以我將從乙太坊的角度回答)
簡短的回答是:是的,這完全有可能。正如詹姆斯所說,使用非對稱公鑰加密。然而,這也是完全不經濟的。
一些新的、不同的私有/公共鏈專門設計用於處理鏈上數據儲存,因為目前的鏈(如乙太坊)使其成本過高。隨著您尋求儲存的數據量增加,“探勘”交易(使用您想要儲存的數據)的工作量也會增加。這就是為什麼網路費用以字節速率計算的原因。
在這裡查看 Tjaden 的答案:https ://ethereum.stackexchange.com/questions/872/what-is-the-cost-to-store-1kb-10kb-100kb-worth-of-data-into-the-ethereum-堵塞
我回答“智能合約簡化”方面的最佳嘗試是
- 已經知道解密密鑰
要麼
- 能夠解密智能合約中的數據以獲取解密密鑰。
在“2”中,您將擁有一個智能合約,該合約將接受具有一組解密的交易。每次 A 想要發送 B 可以讀取的消息時,它都會送出一個加密的解密密鑰。B 必須找到交易,解密密鑰,然後使用該密鑰解密消息。它更像是 2-auth,但用於加密的有效負載。
這既不優雅也不高效。有更好的方法來完成相同的任務。