Openzeppelin
ERC721 契約是否必須依賴外部代理才能成為批准的支出方?
我正在創建一個為遊戲提供服務的 dApp。遊戲中的“房子”是我使用 Web3.js 創建智能合約的遊戲伺服器。它還擁有遊戲開始時的所有不可替代資產,所有代幣。我目前的意圖是創建一個繼承 Open Zeppelin ERC721 智能合約的智能合約。該智能合約將處理在遊戲期間向各種玩家授予不可替代資產(即代幣)的問題。
我剛剛完成了這篇關於 Open Zeppelin ERC721 令牌實現的文章:
https://medium.com/blockchannel/walking-through-the-erc721-full-implementation-72ad72735f3c
文章指出,ERC721 代幣與處理支出邏輯的外部契約一起使用,並且該“代理”契約的地址放在主契約的“允許”映射中,因此契約知道他們是“已批准”的支出者。如果我理解正確的話,ERC721 代幣充當代幣所有權記錄的管理實體,並促進代幣轉移和津貼的完整性,而另一個智能合約處理涉及消費/轉移代幣的邏輯。
不使用外部批准的支出策略是否有任何危害或風險?相反,為什麼不在我的 ERC721 派生智能合約中進行公開呼叫,當合約所有者呼叫時直接進行轉賬,在我的情況下這將是“房子”?我試圖弄清楚為什麼這個額外的複雜層,即使用另一個智能合約作為“批准的支出者”,是必要的還是被推薦的?
我了解到您在質疑 ERC-721 標準中的
operator
和approved
工作流程。從您的角度來看,您無需擔心這些,您可以保留參考實現行為。您可能會認為最終使用者正在使用您的 dApp。但實際上,最終使用者可能會將他們對代幣的所有權委託給交易所或其他實體/錢包。這就是存在這種間接級別的原因。