
讀到double.one團隊開發的EIP4907,實現了NFT的無抵押租賃,覺得挺有用的。EIP4907文檔寫的很好,認真讀下面這兩個鏈接,基本上就明白了它的原理。
https://medium.com/double-protocol/3-steps-of-making-nfts-rentable-1-8d8f82485706#576a
https://ethereum-magicians.org/t/eip4907-erc-721-user-and-expires-extension/8572
本文嘗試為EIP4907補充一個科普式的場景描述,幫助讀者理解NFT的所有權和使用權。
所有權和使用權
EIP4907是在ERC721的基礎上做了一個擴展,核心是增加了一個“租戶”角色。具體的代碼實現如下:
使用EIP4907這個NFT合約模板發行NFT,除了有owner(擁有者)外,還可以設置User(使用者)。
owner角色就是持有該NFT的地址,只有使用該地址的私鑰簽名才能調用transfer函數將該NFT轉讓給其他地址。這就是所有權的具體含義。
User也是一個ETH地址,這個地址可以獲得NFT的使用權,但不可以對NFT調用transfer函數,無法賣出這個NFT。
NFT具體的使用權是要配合具體的項目來完成,比如NFT的staking挖礦功能,是特定的項目方開發一個合約允許用戶將NFT存進來(即staking),然后項目方將自己的代幣陸續釋放給staking過來的NFT。
而使用權轉讓,就是原本staking只能將代幣釋放給owner地址的,現在可以讓釋放給user地址了。
一個符合EIP4907的NFT,owner地址就可以設置一個user地址,以允許user地址使用該NFT的一塊功能。當然也可以反過來,user地址主動發起租賃,owner地址批準即可。
對于利用NFT的項目來說,對EIP4907規范的NFT就要多一個識別owner還是user的動作。
wNFT兼容ERC721
現在的ERC721標準的NFT都是沒有user角色的,但EIP4907可以兼容ERC721標準的NFT。
方式是和ETH和wETH類似。
wETH本質上是開發一個合約,允許任何用戶存進ETH進這個合約,合約就增發一個wETH給用戶;反過來呢,就是用戶存入一個wETH進合約,合約則銷毀該wETH,同時還給用戶一個ETH。
wNFT也可以采用同樣的策略,開發一個合約托管NFT,允許用戶將NFT存進合約,合約生成一個符合EIP4907規范的wNFT。wNFT就是在原NFT的基礎上增加一個設置user地址的接口,其他都一樣;反過來,用戶可以拿wNFT做為憑證去贖回自己原來的NFT。