Is there a way to separate possession from title in an NFT smart contract? I'm not sure these are the best terms, but here are some examples:
Renting out NFTs, say for use in a game. The rental is fixed term, during which the renter wants full use of the token; and after which owner wants to know they'll get it back. And the game operator need to know whose signature to seek before allowing use of the NFT.
Putting up an NFTs as collateral for a loan, while continuing to use it. It's common for people to do this with a house or a car when borrowing from the bank, and they don't vacate the house or deliver the car to the bank, they maintain possession and the bank simply holds the title deed to the house or registration papers for the car.
ENS has a live example today with their concept of a "Controller: The account that may edit the records of a name", analogous to possession. This is distinct from the Registrant (owner, title holder). Either Registrant or Controller can change Controller, but only Registrant can change Registrant.
I am aware of the concepts of owner, approved address and operator in ERC721. These all have permission to transfer ownership but there is no narrower concept of possession, such as the Controller in ENS.
One solution would be to extend ERC721 to have a possessor, being an address that can make all changes other than transfer ownership. Some potential problems with this:
Unfair repossession during the term of a rental. This can be solved by locking ownership in a smart contract for the term.
What happens if the renter decides they want to rent the NFT out, like subletting with property? Does this concept need some kind of stack? I don't think so. That could hopefully be solved by wrapping the NFT in another NFT (and so on), but the this again depends on the innermost NFT having a concept of possession vs title.
All apps that look for a signature from the owner of a token now need to look for the possessor instead. This could be solved by considering the owner the possessor and introducing the the term titleholder which can override owner. In fact, the approved address could have this function, just disallow owner from calling transfer when an approved address is set and composability can do the rest. But this definitely abuses the terminology.
I'm sure this is a common problem so have looked around and found:
- ERC-994 Delegated Non-Fungible Token Standard
- ERC-998 Composable Non-Fungible Token Standard
- EIP-2615 Non-Fungible Token with mortgage and rental functions
All looks useful but very application specific. What minimal extension to ERC-721 or ERC-1155 might be enough that composition could do the rest?