We have a platform where people borrow SUI with their NFTs as collateral. In our contracts we are trying to utilize kiosk module to implement an "escrowless" lending/borrowing platform. Our current flows are:
During the offer creation operation, a lender creates an offer and deposits a certain amount of SUI to our contract.
During the borrow operation, a borrower deposits an NFT as collateral to borrow the SUI that is defined in the offer. One kiosk is created for this operation and NFT is placed and listed with zero SUI price (we handle price outside of kiosk). Kiosk, KioskOwnerCap, TransferPolicy and PurchaseCap is stored as dynamic field objects inside our contract. Meaning only our contract can make changes in the kiosk that is created. This is needed because both lender and borrower must be able to access the kiosk. Both flows are defined below.
If the borrower pays back the loan during the right time (loan duration), NFT is taken out of kiosk and sent back to the borrower. Loan amount plus interest is sent to the lender.
If the borrower does not pay back the loan, lender can claim offer by calling a function that sends the NFT to the lender.
It's easy to see that we are utilizing kiosk as an escrow medium. Now because kiosks live in our contract for the loan duration, other platforms that depend on these locked NFTs (mainly ownership) doesn't know about if it's locked in Snotra. To them the owner field is the kiosk address but the actual owner is still the borrower. This complicates things for them and it becomes impossible for them to know the true owner of the NFT without coming to us, via an API we provide or directly asking our contract. Additional development is needed on both sides.
For us this is not the ideal case as we have talked to many teams and platforms and they are not happy about implementing such changes.
Is there any way that we can do this without an escrow solution and using kiosks?
One solution we can think of is having the "original" owner set as a field during the place operation inside kiosk. This field can tell us about who owns the asset that is being put and could be used directly by other platforms without needing extra development.
Looking forward to discuss this with the team!