Solidity

將外部 ERC721 作為新 ERC721 的鑄幣方法的一部分進行刻錄的最佳實踐

  • November 2, 2022

我正在製定一份合約,將來自不同合約的代幣燒毀以鑄造一個“新代幣”。我只是在尋找一些指導,以確保我不會遇到任何陷阱。

架構如下:

  • contract1- 現有代幣
  • contract2- 新代幣

contract2的 mint 方法將要求來自contract1的“ X ”代幣被燒毀。我已經想到了兩種不同的想法來處理這個問題,我不確定是否有最佳實踐或任何關於此的內容。

  1. 為要銷毀的每個代幣在contract1上設置批准,然後為每個代幣從contract2呼叫contract1burn的方法。
  2. 實現一個ERC721Recieveron contract2並將代幣發送給它,然後呼叫 burn 方法。

我有理由選擇一種方法而不是另一種方法嗎?

我認為兩者都是有效的選擇。我會說第一個更安全,更不容易搞砸,因為第二種方法中有這兩個問題:

  1. 你能確定每次代幣轉移都會觸發嗎onERC721Received?IERC721 中也有transferFrom不會觸發的。
  2. 您能否確定每個令牌轉移contract2都意味著觸發您的新鑄幣功能。

所以第二個選項聽起來簡單而優雅,但它可能被證明是危險的。第一種方法是一種相當典型的方法,並且非常防彈。

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