> For the complete documentation index, see [llms.txt](https://pbfranceschin.gitbook.io/venn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pbfranceschin.gitbook.io/venn/technical-info/compatibility.md).

# Compatibility

## Dapps

The best way for dapps to become compatible with Venn Smart Accounts is through EIP-1271. Here is a [nice resource](https://docs.alchemy.com/docs/how-to-make-your-dapp-compatible-with-smart-contract-wallets) on how to make the proper adaptation.

## NFTs

Our VSA rent functionality supports any contract that implements `IERC721`. Venn Market Place supports contracts that use `ERC721URIStorage`or implements `IERC721Metadata`.

> **Soon we will be compatible with ERC1155 implementations. Be on the lookout!**

## Market Places

Any NFT market place platform can make itself compatible with Venn Smart Accounts renting functionality by implementing `IMarketPlace` and following a few requirements.

> ***`IMarketPlace`can be found*** [***here***](https://github.com/pbfranceschin/r-wallet-base-3/blob/main/blockchain/contracts/wallet/IMarketPlace.sol)***. Words MUST, REQUIRE, SHOULD in accordance*** [***RFC-2119***](https://www.rfc-editor.org/rfc/rfc2119.txt)***.***

```solidity
interface IMarketPlace {

    function rentNFT (address contract_, uint256 tokenId, uint256 duration) external payable;
    
}
```

### Requirements

Implementations MUST:

* Use `rentNFT`, as defined in `IMarketPlace`, as it's main method (outer most function) to execute rent transactions.
* REQUIRE callers are Venn Smart Accounts.
* REQUIRE caller's *operator count* for `contract_` to be ZERO.

### Prescriptions

Implementations SHOULD:

* REQUIRE `duration` be *less then* or *equal to* maximum duration specified by NFT owner.&#x20;
* REQUIRE `msg.value` be enough to cover the rent value and any outstanding service fee.

To see how this can be done, checkout our **Tutorials**.
