Solidity
將外部 ERC721 作為新 ERC721 的鑄幣方法的一部分進行刻錄的最佳實踐
我正在製定一份合約,將來自不同合約的代幣燒毀以鑄造一個“新代幣”。我只是在尋找一些指導,以確保我不會遇到任何陷阱。
架構如下:
contract1
- 現有代幣contract2
- 新代幣contract2的 mint 方法將要求來自contract1的“ X ”代幣被燒毀。我已經想到了兩種不同的想法來處理這個問題,我不確定是否有最佳實踐或任何關於此的內容。
- 為要銷毀的每個代幣在contract1上設置批准,然後為每個代幣從contract2呼叫contract1
burn
的方法。- 實現一個
ERC721Reciever
on contract2並將代幣發送給它,然後呼叫 burn 方法。我有理由選擇一種方法而不是另一種方法嗎?
我認為兩者都是有效的選擇。我會說第一個更安全,更不容易搞砸,因為第二種方法中有這兩個問題:
- 你能確定每次代幣轉移都會觸發嗎
onERC721Received
?IERC721 中也有transferFrom
不會觸發的。- 您能否確定每個令牌轉移
contract2
都意味著觸發您的新鑄幣功能。所以第二個選項聽起來簡單而優雅,但它可能被證明是危險的。第一種方法是一種相當典型的方法,並且非常防彈。