# 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**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pbfranceschin.gitbook.io/venn/technical-info/compatibility.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
