Solidity

儲存加密數據並在鏈上解密

  • May 10, 2019

這個想法是儲存加密的代幣數量,當使用者發送他的私鑰時,智能合約將解密數據並執行將代幣發送給其他人的操作。問題是,使用者沒有自己的乙太坊地址,所以我需要為此生成另一個私鑰,一切都將由後端的一個帳戶執行。這也是一次性的操作——一旦發送了私鑰並釋放了代幣,就不再需要這個私鑰了,所以它可以暴露在公共鏈中。

我發現唯一的解決方案是在鏈下加密,將其保存在智能合約中,讓某人在那裡閱讀並再次在鏈下解密,但我需要在此之後執行一個操作,所以它不適合這裡.

希望大家給點建議,謝謝。

儲存加密的代幣數量,當使用者發送他的私鑰時……智能合約將……發送代幣給其他人。

我將把“私鑰”放在一邊,簡單地稱它為“秘密”,以反映這是密碼而不是錢包私鑰。

您將擁有一份包含虛擬“投遞箱”的合約,每個投遞箱都包含欠款餘額和目的地地址。這些投遞箱將使用“拼圖”以索引的方式組織在映射中。謎題將是投遞箱內容(例如目的地)的不可更改屬性和一個秘密詞的散列。

使用者的 UI 將計算散列,例如散列(目的地,秘密字)。使用者或伺服器將創建一個由雜湊標識的投遞箱,並將投遞箱的內容寫入合約——金額、目的地、到期日等。

這就是“挑戰”階段。“響應”階段讓使用者提供秘密。如果秘密映射到已知的投遞箱,則合約會將資金轉發到投遞箱詳細資訊中指定的目的地。

一旦使用,“秘密”就會被燒毀。注意使用帶有秘密的雜湊拒絕存款已經解決。存在競爭條件/搶先風險。重要的是,投遞箱包含有關將資金發送到哪裡的明確資訊,並且只在那裡。這是因為“秘密”在 tx.pool 中被洩露,每個人都可以在解決方案交易被探勘之前看到它們。

希望能幫助到你。

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