# Mint INJS

INJS is an implementation of the INJRC-20 protocol on the Injective blockchain

<table><thead><tr><th width="201">Info</th><th>Detail</th></tr></thead><tbody><tr><td>Tick</td><td>INJS</td></tr><tr><td>Max Supply</td><td>1,000,000,000</td></tr><tr><td>Limit Per Mint</td><td>5000</td></tr></tbody></table>

### Mint Rules

Send **any** value to **any** address using the base64 encoded operation in memo&#x20;

### Mint Process

<figure><img src="/files/xnh3eaNQe0h5jwegCom7" alt=""><figcaption><p>INJS Pow Mint Process</p></figcaption></figure>

1. The user opens [injs.ink](https://injs.ink)  and connect with wallet, initiating the random generation of nonce
2. The frontend computes and obtains a nonce, such that `sha256(seed+address+nonce) <`` `**`HASH_TARGET`**, where the **HASH\_TARGET** is a fixed value of **0x000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff**. The seed is the hash of the block where the tick **Deploy** operation is located
3. A nonce could only be used once by an address
4. The user submits a mint operation with base64 encode: data:,{"p":"injrc-20","op":"mint","tick":"INJS","amt":"5000", "non": "0xabc..."}&#x20;
5. The indexer verifies the legitimacy of the user's mint operation

**Sample code to generate the nonce:**

```javascript
const {sha256} = require('js-sha256');

function generateNonce() {
  let nonce = '';
  const characters = '0123456789abcdef';
  for (let i = 0; i < 20; i++) {
    nonce += characters.charAt(Math.floor(Math.random() * characters.length));
  }
  return nonce;
}

// Function to compute Proof of Work
async function computeProofOfWork(seed,address,target) {
    let nonce = 0;
    let hash;
    do {
        nonce = generateNonce();
        hash = sha256(seed + address + nonce);
    } while (BigInt('0x'+hash) >= target);
    return nonce;
}

// Example usage
(async () => {
    const address = 'userAddress';
    const seed = 'Block Hash Of Deploy Operation';
    const target = 0x000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn; 

    const nonce = await computeProofOfWork(seed, address, target);
    console.log('Found nonce:', nonce);
})();
```


---

# 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://docs.injs.ink/mint-injs.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.
