Features
Rental Offers
In order to initiate a rental, a rental offer has to be created.
A rental offer can be seen as a bundle of NFTs available for rental (with duration and percentage of rewards kept by the lender, for each NFT), an upfront rental cost, and a deadline for the validity of this offer.
A rental offer can either be public or private. Private rental offer are restricted to a chosen tenant, by the lender.
A rental offer can either be created on-chain or off-chain.
For on-chain offers, the offer is advertised via the preSignRentalOffer
function.
Until a rental starts the lender is still owning his NFTs.
Rental
Users can browse through a list of rental offers.
Even though a rental offer can be a bundle of multiple NFTs, a rental is always done on a per NFT basis. Each rented NFT has a dedicated duration and rewards distribution.
When a tenant starts a rental (rent
function), multiple actions are done:
the protocol fee is sent to a Cometh wallet (5% of the upfront cost specified by the lender)
the remaining upfront cost amount is sent to the lender
the original NFTs are transferred to the rental protocol contract
the lender receives a
LentNFT
per rented NFT, whosetokenId
are the ones of the original NFTsthe tenant receives a
BorrowedNFT
per rented NFT, whosetokenId
are the ones of the original NFTs
As
tokenId
are the same amongst all rental protocol NFTs, a player can either play with the original NFT or theBorrowedNFT
.
A rental is usually terminated when its end date is reached.
Either the lender or the tenant can end a rental, through the endRental
function.
When a rental is ended:
the lender gets back his original NFT
the lender
LentNFT
is burntthe tenant
BorrowedNFT
is burnt
A rental can be ended before its end date if both the lender and tenant agrees to do so.
A rental sublet can't be ended prematuraly.
When the first party is willing to end prematurely a rental, he calls the endRentalPrematuraly
function. A RequestToEndRentalPrematuraly
event is emitted.
Then the second party can either ignore or accept this request by calling the endRentalPrematuraly
function.
When a rental is ended prematurely the same process than the usual end rental workflow is applied, except the check on the end date.
Sublet
A tenant can sublet the borrowed NFTs to other users.
The main purpose of this feature is to handle guilds use-cases allowing a guild manager to rent multiple NFTs and then sublet them to the guild players.
A sublet has no up-front cost and can be ended at any time by the sublender (so the tenant from the rental).
The sublender can choose how many rewards percentage to keep to themselves and must give the address of the subtenant (guild player).
When a sublet is done, multiple actions are done:
the sublender transfers his
BorrowedNFT
to the subtenantthe sublender is given a
SubLentNFT
, whosetokenId
is the same as theBorrowedNFT
one
In order to end a sublet, the subtenant calls the endSublet
function.
When doing so:
the
SubLentNFT
is burntthe subtenant gets back the
BorrowedNFT
Recap of Rental Protocol NFTs
Matrix of allowed operations
Case 1 (without sublet)
Case 2 (with sublet)
Fees
Fees percentages are represented as basis points, from 0 to 10,000 (so 12.34% is the value 1234
).
Fee pencentages are not based on the rewards to be distributed, but what the lender and sublender keep for themselves.
Let's assume 150
ERC20 rewarded for a won game.
If the lender keeps 20%, they would earn 150 * 2000 / 10000 = 30
ERC20.
Remaining rewards to distribute: 150 - 30 = 120
ERC20.
If the sublender keeps 15%, they would earn 120 * 1500 / 10000 = 18
ERC20.
Remaining rewards sent to the player: 102
ERC20.
Last updated