🎉 攢成長值,抽華爲Mate三折疊!廣場第 1️⃣ 2️⃣ 期夏季成長值抽獎大狂歡開啓!
總獎池超 $10,000+,華爲Mate三折疊手機、F1紅牛賽車模型、Gate限量週邊、熱門代幣等你來抽!
立即抽獎 👉 https://www.gate.com/activities/pointprize?now_period=12
如何快速賺成長值?
1️⃣ 進入【廣場】,點擊頭像旁標識進入【社區中心】
2️⃣ 完成發帖、評論、點讚、發言等日常任務,成長值拿不停
100%有獎,抽到賺到,大獎等你抱走,趕緊試試手氣!
截止於 8月9日 24:00 (UTC+8)
詳情: https://www.gate.com/announcements/article/46384
#成长值抽奖12期开启#
深入解析ERC-6551 底層原理
撰文: @0xCygaar 翻譯:MetaCat
本文是對ERC-6551 如何使任意NFT 擁有任何類型加密資產的簡要說明。
讓我們從大多數NFT 的實際情況開始。
以太坊上的NFT 只是智能合約中的數據條目,這些條目告訴你誰擁有NFT、誰可以轉移NFT,以及NFT 的元數據是什麼樣的。以下是返回有關給定NFT 信息的函數:
獲取給定NFT 的Owner
獲取給定NFT 的tokenURI
獲取給定NFT 被approve 的錢包地址
當你mint NFT 時,你只是設置數據條目所有者的值(錢包地址)。當你轉移NFT 時,你只是改變了所有者的值(錢包地址)。下面兩張圖是ERC721 合約中所有權設置相關代碼:
ERC721 合約中的mint 函數
ERC721 合約中的transfer 函數
大多數NFT 合約就是這麼簡單。正如我們在上面看到的,沒有代碼能夠使這些NFT 擁有其他NFT、ETH 或ERC20 代幣。
智能合約無法更改,那麼ERC-6551 如何讓任何NFT 擁有其他資產呢?
答案是:註冊表+ 合約錢包。
智能合約錢包(CA 錢包)只是一個可以接收NFT、ERC20 或ETH 並另外執行任意交易的智能合約。這些合約錢包都有自己的地址(就像所有智能合約一樣)。
如果你不熟悉註冊表,你可以將它們視為存儲信息的單個智能合約。 ERC-6551 註冊表包含:說明哪些NFT 映射到哪些智能合約錢包的信息,它還使用代理創建智能合約錢包(了解即可並不重要)。
註冊表合約代碼?
例如,Azuki #4567 可能映射到位於地址0x243F4E0d556EFD1006c52E85A6ddFb6748A4C0b7 的智能合約錢包。一個NFT 可以控制多個合約賬戶,但每個合約賬戶只屬於一個NFT,詳見下圖:
好了,我們現在有了一個註冊表,可以為NFT 創建錢包並將NFT 和錢包關聯在一起,這款NFT 綁定錢包現在可以作為普通錢包使用。這個錢包可以轉移ETH、購買NFT 或Swap ERC20 代幣,當然必須由NFT 所有者發起交易。
我想重申一下,這些與NFT 綁定的錢包是智能合約。它們與多簽錢包類似,必須有人調用合約上的函數才能讓錢包執行某些操作。對於ERC-6551 錢包,NFT 所有者將在錢包上調用uteCall 來啟動交易。
那麼這些NFT 綁定錢包有什麼特別之處?當控制NFT 的所有者發生變化時,錢包的控制權也同步變化。控制NFT 意味著你控制NFT 綁定錢包中的一切,NFT 將從單一資產轉變為捆綁的資產包。
TL;DR :ERC-6551 使所有NFT 能夠通過使用註冊表和智能合約錢包來擁有一個錢包。註冊表創建合約錢包並將該合約錢包關聯到NFT。合約錢包可以擁有其他資產,只有NFT 的所有者才能在此錢包上執行交易。