防止智能合约在网站外进行铸造



我有一个网站,它为用户选择的作品(背景色、鼻子类型、眼睛类型等(铸造了一个头像。

我现在使用的合同对网站来说很好。然而,它也能够从雪痕中铸币。我想限制我的合同,使其只允许从网站上铸造。

我想防止任何其他人使用合同交互snowtrace在我的合同中制造虚假的东西。合同应只允许从网站上铸造。

我认为使用签名散列是可能的,mint函数需要来自地址的签名,该私钥地址将保存在网站后端,它将在mint函数上签名待验证的消息。

只要私钥只能由网站后端访问,用户总是需要通过它。我只是不确定如果用户使用了之前已知的哈希消息,您将如何阻止他/她再次薄荷,但我想这也可以解决。

一些资源也可能有所帮助:https://solidity-by-example.org/signature/https://blog.chainsafe.io/how-to-verify-a-signed-message-in-solidity-6b3100277424

更新:您可以通过添加动态数据作为所需哈希消息的一部分来防止用户在网站外创建,即使他/她知道以前的哈希消息,例如,msg.sender及其nonce。因此,即使用户尝试再次使用前一条消息进行铸币,它也将无效,因为随机数不同且不再有效,一旦签订合同,就需要一条具有msg.sender.的最新随机数的哈希消息

嗯,我认为这是不可能的。你不能检查那个条件。除非你创建了另一个合同,并仅为该合同限制铸造。你使用这个新合同在你的网站上进行交互,但你没有在Snowtrace上验证它,所以你不能直接从Snowtrac与它进行交互。

不太可能。智能合约无法知道交易的来源。你最好的选择是只允许在特定的时间铸造薄荷糖。

相关内容

  • 没有找到相关文章

最新更新