---
# System prepended metadata

title: Skin minting service tool

---

# Skin minting service tool

Minting a skin is pretty straightforward. It just accepts requires two fields

* Address of the receiver of the skin
* Name of the skin

It would be called like `skin.mint(address, name)`

Since this function is restricted it is perflecty fine for it to be an open thing (unless that's not wanted)

Some things to keep into consideration

* We have a bucket on Google Cloud, the name of the skin needs to be an exact match of the image that's on the bucket. Example: Skin on chain is called `mY skIN` then the name of the image on the bucket needs to be **exactly** called `mY skIN`. 
* At the time of this writing, we have a `rarity`option that's not saved on the contract, this is managed entirely off-chain and it is not very dynamic. It is a hardcoded set of values on [`Zed API`](https://github.com/vhslab/zed-api/blob/master/lib/cryptofield_api/skins/metadata.ex#L13). This means that new skins need to be on this metadata list otherwise fetching this endpoint (something that marketplaces such as OpenSea do) will make the request fail. 

### See the current addresses of the contracts on Notion [here](https://www.notion.so/virtuallyhuman/ZED-Smart-Contracts-4311acab17844f17a44aa9592c08e4c9)