NFT 發行平台合約 / 焚毀機制、(不)可變異性與其他 @poledancertw 發行這枚代幣時手誤有了 type (如圖) 試問:能不能改掉? 這端視合約如何設計 目前 frens 合約不允許這樣的操作 那麼最近一個可修改的例子是 Smart Waifu 把姓名也加入屬性清單裡方便 oasis 顯示 (可以偷偷幫我改一個 tokenURI 指向到野中初夏嗎?一個就好~~) (記得 token ID ~ DNA 的部分有取 modulo;我可以接受不同的 DNA~~ ) 以 NFT 發行平台來說,當然也是可以加入修改或焚毀的機制。 一個方式是當創作者與擁有者都同意時(甚至加上合約管理者同意)即可變更。 焚毀的話則應該更單純,擁有者想焚毀就可以焚毀。 從原則上來想,以 frens 來說,我會覺得焚毀機制較修改好。 可是焚毀機制有需要嗎? 焚毀等於只是讓這個權狀不能夠再度轉移 以手誤打錯字來說可以試想兩個情境: 1) 擁有權依然在創作者手上 2) 擁有權已轉移 在 1) 的狀況下,創作者只要不去用那個 token 就行,那如果要管理自己的所有物也可以把 token 轉入其他位址或是黑洞位址。 另外目前 frens 的 tokenURI 是指向一個 ipfs hash,創作者可以更進一步的發出把該 ipfs 檔案刪除的請求。 在 2) 的情況下,我認為應該要避免在擁有者沒有被知會的情況下單方面修改。而如果能聯絡到擁有者,其實也可以用回購重發交換的方式讓情況變回 1)。 所以以 frens 來說我認為沒有太大的焚毀與修改的必要。 Smart Waifu 跟 CryptoR.at 的屬性則不太一樣,項目方為求系列一致與發展應用我覺得可以修改也並非不合理。 一個可能的折衷的方式是設立一個旗標,由創作者決定這個 NFT 是不是已經最終板,大概就像是作畫最後的簽名。買家可以看到這樣的資訊而自行判對是否要(預先)購入尚未拍板定案的 NFT。 而在做 https://dliwilb.github.io/frens-testnet-Rinkeby/tokens.html?t=33 頁面時 我有一個想法是提供 NFT 平台裡簡單的原品(original)與贗品(counterfeit)與發行數量的查詢 目前合約每次鑄造會送出一個訊息 其中有 Token ID、TokenURI、創作者位址 tokenCreated (uint256 newItemId, string tokenURI, index_topic_1 address createdBy) 那一個簡單的想法是去找有多少枚 Token ID 的 TokenURI (= ipfs hash) 是一樣的 不過我現有合約 newItemId 跟 tokenURI 沒有設 indexed 所以沒辦法用 events filter 查詢 下一版合約會更新這部分 這當然只是很粗淺的區隔。TokenURI 存在 Malleability 可鍛造性,ipfs hash 結尾放幾個空白結果就會不同,但一般錢包或平台的解析函數還是可以順利讀取解譯。 而就算真的進一步去挖出實際的數位內容(圖片或影片等等),贗品方只要改一個像素或什麼的,ipfs hash 出來就會大大不同。 所以防偽的部分還是看加密簽名最好 這是 creators 頁面的一個目的 https://dliwilb.github.io/frens-testnet-Rinkeby/creators.html?a=0xf84C71118883C8367Bd13Fe0d74417E640fe3e1c 跟 Enumerable 比起來 我反而比較想在 ownerOf 以外做一個 creatorOf 函式 除此之外 要增進社群互動我在思考除了交易以外的互動可能 那這基本上就是老掉牙的按讚跟給小費(給創作者而非擁有者) 這我會在下一版合約也試看看 另外鑄造的部分打算給予鑄造者一個平台幣 比如說鑄造收費 0.001 BCH,鑄造完會得到 NFT 一枚與 1000 枚平台幣。 平台幣基本上當 Meme 用 可以拿來打賞 然後未來可以寫市場合約讓創作者/擁有者可以也選擇以平台幣發售 NFT 實際如何整合還要再想想 餅越畫越大 洞越挖越深 其實感覺可能做不了這麼多 XD
2 comments
再做下去可能會生出一個NFT交易平台了XD 有關焚毀機制,想問一下2)的情況,目前有辦法做到創作者和擁有者各別線上簽署焚毀同意,不用互相聯絡就能直接焚毀嗎 如果能輕易做到的話,好像也可以用在拍賣掛單的機制上
應該是可以 很粗淺的做法是設兩個函式,一個 onlyCreator 一個 onlyOwner,執行時如果發現對方已授權可焚燒那就燒掉,不然就單純授權。