> For the complete documentation index, see [llms.txt](https://docs.scifn.com/instamint/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scifn.com/instamint/smart-contracts.md).

# Smart Contracts

### Contracts Library

Instamint maintains a library of smart contracts that serve different purposes. This includes ERC721 and ERC1155 contracts and variations of them. Each *deployed* smart contract is identified by a name ("moniker") and the name is identified during API calls. A moniker maps to an existing smart contract deployed on chain, and thus a smart contract address.

<table><thead><tr><th width="147.33333333333331">Moniker</th><th width="249">Description</th><th>Location</th></tr></thead><tbody><tr><td><mark style="color:orange;">INSTA1</mark></td><td>Clean OpenZeppelin 4.4.1 ERC721</td><td>../ethereum/contracts/Instamint721.sol</td></tr><tr><td><mark style="color:orange;">INSTA2</mark></td><td>Clean OpenZeppelin 4.4.1 ERC1155</td><td>../ethereum/contracts/Instamint1155.sol</td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

All smart contracts can be found at <https://github.com/instamint/smartcontracts>

Smart contracts can be deployed or minted to. When deployed, a smart contract type is specified. For example, deploying a new ERC721 or ERC115 and assigning it a moniker. If minting to an existing smart contract, as is the case with an ERC721 or ERC1155, a moniker is used in lieu of a contract address.&#x20;

### Algorand ASAs

For Algorand ASA’s, a token and smart contract are identical and therefore specifying a contract type of ARC3 both deploys and mints the asset. By default, an ASA's unit name is INSTA. This will be overridable in the Q4 2022 release.

### Contract Types Library

New contracts, above and beyond INSTA1 and INSTA2 can be deployed by specifying the `contractType`parameter to one of the following types.

<table><thead><tr><th width="129">Type</th><th width="297">Description</th><th>Reference</th></tr></thead><tbody><tr><td>erc721</td><td>Deploys the latest version of OpenZeppelin ERC721</td><td><a href="https://docs.openzeppelin.com/contracts/2.x/api/token/erc721">https://docs.openzeppelin.com/contracts/2.x/api/token/erc721</a></td></tr><tr><td>erc1155</td><td>Deploys the latest version of OpenZeppelin ERC721</td><td><a href="https://docs.openzeppelin.com/contracts/3.x/erc1155">https://docs.openzeppelin.com/contracts/3.x/erc1155</a></td></tr><tr><td>arc3</td><td>Deploys and mints an Algorand Asset</td><td><a href="https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0003.md

"><https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0003.md> <br> <br></a></td></tr><tr><td>arc18</td><td>Deploys, mints and adds royalties to Algorand Asset</td><td><a href="https://github.com/barnjamin/ARCs/blob/royalty/ARCs/arc-0018.md"><https://github.com/barnjamin/ARCs/blob/royalty/ARCs/arc-0018.md></a></td></tr></tbody></table>
