前篇寫到 EVM NFT 標準與瓦斯費 https://noise.cash/post/lqz735kx 在找適合的能上架 Oasis 的 ERC721Enumerable 程式碼時 找到了 0xcert 的瓦斯最佳化的架構 https://github.com/0xcert/framework/tree/master/packages/0xcert-ethereum-erc721-contracts 既然是瓦斯優化就表示不是 100% 按照標準要求的實作: For this reason, we also have some opinionated implementations of, for example, how we handle token URIs. 其中 Token URI 的做法是假設 NFT URI 是序列 Token URI = URI 頭 + f(token ID) + URI 尾 這樣就可以省去許多無謂的儲存 URI 頭尾的鏈上空間(= $$$) 老鼠跟 Reapers 看起來就都可能是這樣的做法 其中 Reapers 更是用了 IPFS 的資料夾結構來處理 TokenURI 的部分 @Ayukawayen Smart Waifu 的做法也很有趣 是去呼叫外部合約來產生適當的回傳值 不過看起來在儲存圖片映射關係的合約上並沒有在圖片位址上做瓦斯最佳化 目前 BCH 因為幣價跟 gas price 的雙重關係 所以瓦斯費都幾可忽略(早發早享折扣) 但如果未來 smartBCH 要接管天下大小事 許多 scaling 的考量應該都會慢慢浮上檯面 0xcert 也有 ERC721 規格的標準實作程式碼庫 https://github.com/nibbstack/erc721 (跟 OZ 比起來感覺 0xcert 比較容易整合使用...) Edit: OZ 也有 base + _tokenURI 的範本 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/ERC721URIStorage.sol
12 comments
Token URI 太長了, 所以GAS Price 降不下來嗎? 後面換標準的話, 想一個兼容方案不就可以了?
目前 smartBCH 上瓦斯大概不是什麼問題 只是先想想是這麼回是這樣 兼容方案來說 @Ayukawayen 的 Smart Waifu TokenURI 方案就蠻有意思的 不過因為智能合約沒辦法隨便更新 所以兼容有時候不是那麼容易 已經存上鏈的 ipfs hash 瓦斯已經燒了也就沒有移除的需要 以 Smart Waifu 的作法來說 如果需要把整批圖換掉是可以換 imager 合約位址 然後用更精簡省瓦斯的方式貯存圖片位址 不過這應該不會被需要啦 目前他用到的是新增屬性 總之蠻有趣的他的做法
除了產生網址外也順便把圖檔hash存在鏈上
上鏈偏執 XD
這個有趣 未來會出現編譯出最省錢obj code的compiler嗎
這我就不知道了 多少都有人當解謎題來做吧 就跟拿樹梅派跑節點跟拿打洞卡電腦挖礦一樣 XD
現在大概就是區塊鏈時期的打洞卡電腦 XDD
https://medium.com/@novablitz/storing-structs-is-costing-you-gas-774da988895e XDD
太酷了 各種優化gas神技準備出爐
Remix開optimization有差 是不是最省的就不曉得 XD
這是gcc -O3概念嗎 好奇optimization什麼
發現你的翻譯文: https://noise.cash/post/lgk89kp5