Hey Daniel,
I like your proposal. One observation that I had is that this interface requires the consumer to trust the owner/operator as they are no guarantee that the rental agreements will be honored. For example, after a consumer pays the rental fees, the owner or an approver will still be able to change the consumer.
Or I am missing something?
I spent some time looking at NFT rental and to address this trust issue, I thought to delegate the rental agreement logic to a contract IERC721RentalAgreement
. This contract controls whether the rent can be started or stopped.
The rent is initiated and stopped from the ERC721
and a callback function to IERC721RentalAgreement
can guarantee that the rental terms are fulfilled. For example, IERC721RentalAgreement
can enforce that the renter cannot be changed when there is an active rent.
(Also maybe IERC721RentalAgreement
contract could handle the role definition?)
Here is the more concrete idea: ERC721 extension to enable rental