Openzeppelin
為代表 ERC721 契約處理銷售邏輯的外部代理契約正確打開 Zeppelin 契約?
我剛剛完成了這篇關於 Open Zeppelin ERC721 令牌實現的文章:
https://medium.com/blockchannel/walking-through-the-erc721-full-implementation-72ad72735f3c
我即將開始實施。文章指出,ERC721 代幣與處理支出邏輯的外部合約一起使用,並且該“代理”合約的地址最終出現在主合約的“允許”映射中。如果我理解正確的話,ERC721 代幣充當代幣所有權記錄的管理實體,並促進代幣轉移和配額的完整性。
那麼,我是否應該假設是否轉移代幣的邏輯(例如 - 銷售或託管釋放等)*應該駐留在外部契約中,*而不是從 ERC721 契約之一派生新契約並將該邏輯在派生契約的正文中?如果是這樣,是否有我應該查看的 Open Zeppelin 契約並將其用作我應該從中派生該契約的外部“代理”契約的模板?
至少就目前而言,我的情況非常簡單,代幣的價格是固定的,一旦買家付款,代幣應該從目前所有者(賣家)轉移給買家。我需要處理的一個主要細微差別是買家是否想要出售代幣。如果沒有,在目前所有者決定出售之前,它不應該出售給任何人。
簡單的架構設計:
合約 1——NFT 合約
- 實現 ERC-721
- 處理轉移
- 處理安全
- 定義傳輸“打開”或“關閉”的情況
契約 2——託管
- 代幣保管
- 實施託管方案
- 保管可出售的代幣並出售它們*
在某些架構中,例如 Su Squares,* 項是在原始第一方 NFT 合約中實現的。