# Launching on Launchpad

## Step 0 - Prepare your NFT Images & metadata

So you want to start a collection?

When you plan, you plan to succeed! So let's plan for our success shall we?

Most important for us launchpad Partners, is to setup our NFT images and metadata. If you head over to Step 2, you will see an attribute labeled `token_uri`. What this attribute is, is the URI which rolls a digit behind from 1 -  \<NFT collection size>.

Let's take the example of [`LunaBugz`](https://launchpad.lunapunks.io/viewall/1/1), our first ever launched NFT Project by TrashClanz & Finn.&#x20;

Their token URI is [https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/](https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/1)

Consequently, their token IDs of their NFT collection fall into place from:

<https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/1>

<https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/2>

..

..

<https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/298>

All the way to 298, which is the size of their collection.

Their launch transaction can be tracked here <https://finder.terra.money/classic/tx/36B09A43C3B42D62754C7C40E913865540D0DF730EB01E33F86BE9061A70C36C>

Hence, launching is simple, we just have to prepare the NFT metadata + images as per a fixed link with incremental numbers behind.

The NFT metadata that we run in our Launchpad dApp follows closely to [Opensea's metadata standard](https://docs.opensea.io/docs/metadata-standards). Reason why we do so is because of potential interoperability. Creating a USB-c charging port should be universal and enforced for our users' convenience.&#x20;

## Step 1 - Allow Launchpad contract to burn on behalf

Firstly, we head to [LunaPunks NFT contract ](https://station.terra.money/contract/execute/terra1qfy2nfr0zh70jyr3h4ns9rzqx4fl8rxpf09ytv)and execute the following message.

```json
{
    "approve":
    {
        "spender":"terra1dkeg3uvglsgph0vqwz9ejyaye6nla3d8smlsxl",
        "token_id":"890"
    }
}

```

What this does is it allows the Launchpad smart contract to become authorised as a spender of the token id. Currently, only launching of contracts require this initial approval. Do remember to run this step only once step 0 is done.

## Step 2 - Launch Message

Next, we head to [LunaPunks Staking contract ](https://station.terra.money/contract/execute/terra1dkeg3uvglsgph0vqwz9ejyaye6nla3d8smlsxl)and execute the following message.

```json
{
    "launch":
    { 
        "launch_date": "1650385200000000000", 
        "token_id": "890", 
        "icon_image_url": "https://ipfs.lunapunks.io/ipfs/QmcYd3ae6wPVgFggasANeaCW895ZMYYxdtzg4hoeTKjhsk/icon.jpg", 
        "banner_image_url": "https://ipfs.lunapunks.io/ipfs/QmcYd3ae6wPVgFggasANeaCW895ZMYYxdtzg4hoeTKjhsk/banner.jpg", 
        "social_links": [
            "https://twitter.com/LunaBugz", 
            "https://t.me/lunabugz", 
            "https://lunabugz.com/"
        ], 
        "nft": { 
            "name": "Luna Bugz", 
            "symbol": "BUGZ" 
        }, 
        "marketplace": { 
            "royalty_fee": 500, 
            "royalty_wallet": "terra1250kexag0jkafftdc5lu3qt394ut4uv89zynhr" 
        }, 
        "minter": { 
            "public_mint_height": 0, 
            "price_bag": [{"amount":"42069000000","denom":"uluna"}], 
            "max_supply": 298, 
            "mint_limit": 298,
            "nft_name": "Luna Bugz", 
            "nft_description": "Appearing randomly in Terra Luna smart contracts.", 
            "token_uri": "https://ipfs.lunapunks.io/ipfs/Qmaiz46i8JJTcszoctiiF6sgvfPYWLXXKYiauVNbbziMg6/" 
        } 
    }
}
```

#### Important attributes

`launch_date` is the date which minting opens. You can use the service <https://www.epochconverter.com/> to obtain the timestamp. Note\* that the `launch_date` parameter is accurate to nanoseconds. Hence from the EpochTimestamp value that you generate, add 9 zeroes to it.

`token_id` is the id of the LunaPunks which you have approved for launchpad wallet to burn, as well as LunaPunk you want to burn to launch your NFT collection.

`royalty_fee` is a number from (0 - 9900). 0 being 0% of marketplace transaction goes to you while 9900 means 99% of marketplace transaction fees go to you.&#x20;

`royalty_wallet` is the wallet address which marketplace royalty fees goes to.

`price_bag` the amount follows the decimals of the token, for Lunc, we use uluna, and it has 6 decimals, hence we add 6 zeroes to the back of the price point.

`max_supply` is the total supply that you have in the NFT collection.

`mint_limit` is the limit set for individual wallets.

`token_uri` is extremely important to setup, refer to Step 0 for detailed setup instructions.

`public_mint_height` doesn't do anything at the moment.


---

# 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://lunapunks.gitbook.io/launchpad/product-guides/launching-on-launchpad.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.
