Solidity

您如何使簽名僅對一筆交易有效?

  • February 16, 2022

我之前問過這個問題,但我措辭模棱兩可。

我在智能合約中有一個功能,只有具有簽名的使用者才能訪問,由合約所有者簽發。目標是,允許使用者僅使用此簽名一次,之後每次嘗試都被拒絕。該簽名將在鏈下發布,並且對每個使用者都是唯一的。

然而,這種方法的問題在於,由於簽名將在鏈下發布,因此沒有什麼可以阻止使用者保存他們的簽名並僅使用它來執行第二次交易。

我不只是創建一個映射或一個允許訪問此功能或已經訪問過此功能的使用者數組的原因是,對這些資料結構的操作在規模上很快就會變得非常昂貴。所以我想避免這些。

您是否看到任何方法可以在不借助鍊錶或映射的情況下實現這一目標?

謝謝!

您幾乎需要一個映射,但映射不必那麼昂貴。它只是一個映射(uint256 => bool),顯示地址是否已使用該簽名,並且我相信每個使用者需要 20k gas 來更新。

有什麼我在這裡遺漏的東西會讓這個太貴嗎?

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