# Smart Mint

## **Tutorial**

{% embed url="<https://youtu.be/pDv95Mynkxg>" %}
NFTEye Mintbot Guide
{% endembed %}

### 1. Set Up Burner Wallets

On Mint Bot Page, you can add multi burner wallets. We recommend you use **burner wallet** when you are using features like Auto Bidding / Auto Mint that require a wallet private key. DO NOT store an exorbitant amount of crypto in your burner wallet.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FomYvmSjj4b7PJbjpFjuQ%2Fimage.png?alt=media&#x26;token=b2b5e8e7-ca32-4f13-995a-63dc6d2061b3" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2Fopt86Zfbvn51c2FOr7Fg%2Fimage.png?alt=media&#x26;token=296ff6f1-1ada-4661-8c15-e08c15c756a5" alt=""><figcaption></figcaption></figure>

### 2. Set Up a Mint Task

Click **Add Mint,** and then you can set up a mint bot in three easy steps.

**Step 1. Add Basic Contract info**

① Enter a name for your task, we recommend you use the name of the collection you want to mint, something like **Goblin Mint.**

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FEWTKxjultXsNn0cFPHJ2%2Fimage.png?alt=media&#x26;token=b678b6cd-aac4-407c-b807-cfc3d0e7e1c2" alt=""><figcaption></figcaption></figure>

② Enter the **contract address** of the collection you want to mint (please make sure it is the correct address).

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2F8mLjcir6iz6ux13JRO8j%2Fimage.png?alt=media&#x26;token=1e4ae6ef-3187-46ba-aeed-636551b08e2d" alt=""><figcaption></figcaption></figure>

③ Select the Mint Function and enter the parameters for the mint function. We take all the write functions from the contract and provide them as a drop-down menu. In NFT contracts, Mint functions are usually named mint / publicmint / preSale / preMint, etc. You can select the function and enter the parameters.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FLy6u6Q1ookNuZJ8BEBnj%2Fimage.png?alt=media&#x26;token=153ace2a-c2ec-4913-8833-dc11fd5be855" alt=""><figcaption></figcaption></figure>

**Step 2. Set Up Triggers**

If you set a trigger strategy and turn on Bot monitoring (click Start Monitor), your mint functions will be triggered when our Mint Bot detects the function being called.Mint bot supports three kinds of trigger strategies, and Mint Function you selected will be triggered when

:clock1:Timer Trigger. A timer trigger lets you run the **mint function** at a specific time(use your computer's time)

:space\_invader:Contract Monitoring. Mint function will be triggered when the return value of a contract view function matches the condition you set

:currency\_exchange:Transaction Trigger. Will trigger your mint function when a transaction is sent to the contract that matches the parameters you entered

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2F4f5EAU0Yq1D7uT71hRfz%2Fimage.png?alt=media&#x26;token=66106e8d-aa6b-48c6-80c9-4f7b367fadd0" alt=""><figcaption></figcaption></figure>

**Step 3. Speed Settings**

① Select wallets. Choose the wallets you want to mint out of. The Trigger Strategy you set will apply to all the wallets you choose.&#x20;

② Choose the Gas Option. For better user experience, NFTEye has preset 3 types of gas according to the block condition, and these 3 types of gas are updated dynamically according to the block status. If you want to use your own settings, you can also enter your own preset Max fee and Priority Fee. This setting of yours will be used when submitting Mint.&#x20;

③ You can use the Metamask default node. If you have your own node, you can enter the HTTP URL of the node. Optionally, you can use the private node provided by NFTEye.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FQzZN2taeHCTbRZLGbLxc%2Fimage.png?alt=media&#x26;token=0279379b-6188-4943-94a9-6c450490add7" alt=""><figcaption></figcaption></figure>

**Step 4. Start Monitor**

Click **Start Monitor** to enable the task. If you set a trigger strategy and enable the task (clicked **Start Monitor**), your mint functions will be triggered when our Mint Bot detects the function being called.

**Execute Now** is to start submitting Mint immediately, regardless of whether it matches the trigger strategy or not.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FB2T3HKPVrP50xXLKD2os%2Fimage.png?alt=media&#x26;token=e1f94c81-0a94-4608-a852-6c946fb7e8a0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2F7GqCVy45a4SmGneRlji5%2Fimage.png?alt=media&#x26;token=9072b277-3468-46b6-aef7-1e8508c273a0" alt=""><figcaption></figcaption></figure>

## **Notes About Merkletree Proof**

Most contract minting uses Merkle Tree to check whether the user is on the whitelist, which proof argument is required while minting. Usually, the proof argument is unique to each user. There are two ways to get the proof:

1. Ask the project owner to get your own proof argument (discord, etc.);
2. **Inspect API**: the api request of the project mint page. The project owner usually provides the proof via API request while the mint button is pressed.

Here is an example of Merkletree proof of NFTEye Lifetime Pass NFT.

#### **I**nspect API Example

The browser is Google Chrome in this example.

1. Open the mint page: <https://nfteye.io/lifetime\\_pass/D95VI0>
2. Open **Chrome Developer Console**
   1. Right-click the page and click **Inspect**
   2. Click **Network** in Developer Console
   3. Click **Fetch/XHR** label

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2F24vG6phI7JWrwaejCiPT%2Fimage.png?alt=media&#x26;token=815a248c-2237-4fa9-bb9f-3a607cde945a" alt=""><figcaption></figcaption></figure>

Now you can monitor the HTTP/HTTPS API request of the page. Then click the MINT button on the project page and you may find the Merkletree proof request on the list below the Fetch/XHR label.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2F3J8QOEflk2gxLP6YaPUa%2Fimage.png?alt=media&#x26;token=d639c3e9-e70c-426c-854c-37acc7c8dde8" alt=""><figcaption></figcaption></figure>

The above image shows the API request response of Merkletree proof info. In this example, the proof value is described as **proof\_path**:

```
0: "0xbb6bac279e155f19a9dbe73bb96132821b5cfee5a773e9c61c4e19beacbffb7a"
1: "0x7a213a4cee875018235dee629f1a78bdf66275f30671c2748cd3e106ae6a9fb5"
2: "0xcc3108ce2e6c6937eaffed0eddde703b2f6461eda8244523b8ade76c555a5c74"
3: "0x95f0469e9cca8bfd35b79db4b3fc6626ac720a1eef1baf02d482ae1d8c6a978e"
4: "0xd185c1b32472849d23ed7bbfa7559406fd5ad1c846fd52e96e0395d72216e713"
5: "0xd291c58bfd99fe6f8007ed5eb0a28f1f4f8a0d648fea8ea85167d7c3a53bc086"
6: "0x1b8ec7289193e831f37c79240f7c0237cebda78ccc4a60f91b378a29cdc4a2f5"
7: "0xe4e560c0d0e3f85f932917f95dda161e9e9e2099d9910cc82e48bc7575da5a5e"
8: "0xb33f997a7cb0291b7eec0e0b9a62c3ba4eb2390b85026d5a3eda029c11ceba50"
9: "0x7d8a6709e73862736543116b8b2a6987faecaad676562bd389b0bb98d54f86d6"
10: "0x218d95f31c8b713ec0675b6f9df4f0c0ac9784358c2bda70fdbd6c50ab92f294"
11: "0x346e4f06af595253de546b0afc9fc6811c9a2220ee64fc3a4d296138b91d2d02"
12: "0x06f5a21d79f90d63eb6183256e650317fe9b7fae4beff763c117ef99caada775"
13: "0xe0921e1abb61f146700bcabeea91ae018fe2e05ddc8ecc8b6ada9450ffd46201"
14: "0x6d45a418e3263fa73842e4b07ce91301f8a9a07052d66a5b9b394cb6c9869c0c"
15: "0xaa43970ba8717bcbc30121d5503d111e122862d59288b55542a79abd44b0da05"
16: "0x3c05863d19717d40f8d21033e817f4721613f7f90710fdc17d1030866199dcb4"
```

We need to transform the data structure to an array of strings like the following line, which should be a single line.

```
["0xbb6bac279e155f19a9dbe73bb96132821b5cfee5a773e9c61c4e19beacbffb7a","0x7a213a4cee875018235dee629f1a78bdf66275f30671c2748cd3e106ae6a9fb5","0xcc3108ce2e6c6937eaffed0eddde703b2f6461eda8244523b8ade76c555a5c74","0x95f0469e9cca8bfd35b79db4b3fc6626ac720a1eef1baf02d482ae1d8c6a978e","0xd185c1b32472849d23ed7bbfa7559406fd5ad1c846fd52e96e0395d72216e713","0xd291c58bfd99fe6f8007ed5eb0a28f1f4f8a0d648fea8ea85167d7c3a53bc086","0x1b8ec7289193e831f37c79240f7c0237cebda78ccc4a60f91b378a29cdc4a2f5","0xe4e560c0d0e3f85f932917f95dda161e9e9e2099d9910cc82e48bc7575da5a5e","0xb33f997a7cb0291b7eec0e0b9a62c3ba4eb2390b85026d5a3eda029c11ceba50","0x7d8a6709e73862736543116b8b2a6987faecaad676562bd389b0bb98d54f86d6","0x218d95f31c8b713ec0675b6f9df4f0c0ac9784358c2bda70fdbd6c50ab92f294","0x346e4f06af595253de546b0afc9fc6811c9a2220ee64fc3a4d296138b91d2d02","0x06f5a21d79f90d63eb6183256e650317fe9b7fae4beff763c117ef99caada775","0xe0921e1abb61f146700bcabeea91ae018fe2e05ddc8ecc8b6ada9450ffd46201","0x6d45a418e3263fa73842e4b07ce91301f8a9a07052d66a5b9b394cb6c9869c0c","0xaa43970ba8717bcbc30121d5503d111e122862d59288b55542a79abd44b0da05","0x3c05863d19717d40f8d21033e817f4721613f7f90710fdc17d1030866199dcb4"]
```

Here we fill the argument when adding contract basic info. Please note that in this example the data type of proof is **byte32\[]**, known as an **array of strings**. So fill in the blank with the proof data above in single-line format, or it will throw out the error with parsing string.

<figure><img src="https://2641746840-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE51qz0pQscaKZLyxANEv%2Fuploads%2FN9K5iXKBbqL8JMj9isM5%2Fimage.png?alt=media&#x26;token=c943911d-7695-4a57-ba89-d2d039c953d6" alt=""><figcaption></figcaption></figure>

This is how to get proof of minting NFT in this example. Different NFT contracts may have different proof data type requirements. All information can be found in the contract source code on etherscan. Read the source code and choose the right form of it.

### **FAQ**

#### **Is Smart Mint Bot free and open?**

For NFTEye Lifetime Pass Holder only.&#x20;

#### **Can I use private node if I'm a single pass Holder?**

&#x20;Yes, you can. Single pass holders can use it, multi pass holders will have faster node options.&#x20;

#### **Is there a limit to the number of Mint tasks I can create?**&#x20;

Yes, only one task(in a tab) can be created at the moment. Allocations will be made based on the count of passes held by the holder.&#x20;

#### **Is there a limit to the number of wallets I can use for a single task?**&#x20;

Max 5 wallets per task, the number of wallet addresses will be limited according to the holder's Pass holdings, and holders of multiple Passes will receive more allowances.&#x20;

#### **How do I select a Mint Function?**&#x20;

The Mint bot scans the contract functions and provides all write functions in the contract as suggestions. In NFT contracts, Mint functions usually named **mint** / **publicMint** / preSale / preMint, etc. We will do matching optimization to show users the functions have the word **'mint'** first. You can select a function and enter the parameters.&#x20;

#### **What is the use of trigger strategy?**&#x20;

If you set a trigger strategy and enable Bot monitoring (click **Start Monitor**), your mint functions will be triggered when our Mint Bot detects the function being called.

#### What is the difference between Start Monitor and Execute Now?&#x20;

1\. **Start Monitor** is to turn on monitoring, and if it matches the trigger strategy you set, your mint transaction will be triggered automatically with the Gas presets and node you set.&#x20;

2\. **Execute Now** is to start submitting Mint immediately, regardless of whether it matches the trigger strategy or not.&#x20;

#### **Is the time trigger based on my local time?**&#x20;

Yes, the Mint bot uses your computer time.&#x20;

#### **How does the Gas Preset work?**&#x20;

For better user experience, NFTEYE has preset 3 types of gas according to the block condition, and these 3 types of gas are updated dynamically according to the block status. 1. Default. 2. Fast. 3. Flash. If you want to use your own settings, you can also enter your custom Max fee and Priority Fee. This setting of yours will be used when submitting Mint.&#x20;

#### **How to use Private Node?**&#x20;

1\. You can use the Metamask default node.&#x20;

2\. If you have your own node, you can enter the HTTP URL of the node.&#x20;

3\. Optionally, you can use the private node provided by NFTEye.
