# Creator LUXY ERC-721 V1

[LuxyFactory721 Polygon](https://polygonscan.com/address/0xd26519B772837Cfca34b5e45d33f4372C7060eB0): 0xd26519B772837Cfca34b5e45d33f4372C7060eB0

[LuxyPrivateFactory721 Polygon](https://polygonscan.com/address/0x8D86e2A89Df98555a9Ffb5e1E1cD41478D74328D): 0x8D86e2A89Df98555a9Ffb5e1E1cD41478D74328D

There are two different factory contracts for creating your own Collection at Luxy. The main difference between them is that [LuxyFactory721](https://polygonscan.com/address/0xd26519B772837Cfca34b5e45d33f4372C7060eB0) is for minting and creating collections that anyone can mint from, and [LuxyPrivateFactory721](https://polygonscan.com/address/0x8D86e2A89Df98555a9Ffb5e1E1cD41478D74328D) uses an `onlyoperator`modifier that will enable only the owner-specified addresses to mint from the collection.

Besides the privacy of the minting function there are some other parameters:&#x20;

**Name**: name of the collection

**Symbol**: symbol of the collection

**Creator**: creator of the collection (defaults to owner)

**baseURI**: IPFS (preferable) or API folder location (defaults to empty-string)&#x20;

**maxSupply**:  You can set a maximum supply for the collection. A collection can be made unlimited by setting **maxSupply** to 0. This parameter is publicly visible.

**isChangeable**: If this parameter is set to `True` then the **baseURI** of the NFT can be changed. If `False` then it's impossible to change the **baseURI**. An example of usefulness is for gaming collections using IPFS instead of their own private APIs. This parameter is publicly visible.

**salt**: a random number used by [CREATE2](https://eips.ethereum.org/EIPS/eip-1014) to deploy the contract

Luxy implementation also enables royalties to be added onChain:

* Set NFT royalties using [EIP-2981](https://eips.ethereum.org/EIPS/eip-2981) - only one royalty per NFT created.
* &#x20;LUXY standard - enables collaborative royalties where you can add as many different addresses you wish
* The factory contracts will always transfer ownership to the address that is called the `contract(msgSender)`&#x20;
* The address receiving the royalties can be changed by the address that receives the royalties
