> For the complete documentation index, see [llms.txt](https://docs.xenblocks.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xenblocks.io/technicals/hashing.md).

# Hashing

## **XEN11**

Hashing involves your computer making numerous attempts at discovering a specific hash. The server employs an algorithm to look for a hash that contains "...XEN11...". When your mining device identifies a sequence of 65 characters that contain 'XEN11' within the hashes, a XenBlock is recognized as found.&#x20;

```
{'hash_to_verify': '$argon2id$v=19$m=1827,t=1,p=1$WEVOMTAwODIwMjJYRU4$Z5K2z48kj4Rwp2SXEN11JRaqRGjr+bbdolMmiXnZnpXMpcNPpfIeO1fqOCHlwozBzUEdArHUGmra+29xJwJnug', 'key': '8352e490f6927d1cff31392d8be7b909a68fb567118b8d8e38aaa9ef8ade4c548734cdc01a109afb5ffc5d4b32ae97be5d07f10e0998a1bf42f5b4e8407b49b5', 'account': '0x34...', 'attempts': 12465538, 'hashes_per_second': 1212.7330427037584}
HTTP Status Code: 200
Proof of Work successful: {'message': 'POW Record stored successfully!'}
Block ID: 12603, Merkle Root: cbd22b24776e5b3f8b036aac2924baf005d183f7ddfccfa4e64b967778f7d560
Server Response: {'message': 'Hash verified successfully and block saved.'}
```

Above is a successful found hash with XEN11 in it. It took 12.5M hashes ("guesses") to find it.

* argon2id - cryptographic hashing algorithm used
* v - version of argon2
* m - difficulty. adjusts based on how many miners there are and hashes produced.&#x20;
* t - time. set to minimum.&#x20;
* p - parallelism - set to 1. inside algorithm can run multiple versions itself w/o increasing the algorithm.

## **Key**

The key is essential for cryptographic hashing. Because if the goal is to find a hash looking like this:

Hash:

```
$WEVOMTAwODIwMjJYRU4$Z5K2z48kj4Rwp2SXEN11JRaqRGjr+bbdolMmiXnZnpXMpcNPpfIeO1fqOCHlwozBzUEdArHUGmra+29xJwJnug
```

Someone could simply come up with random numbers and fake the hash - push it out to nodes and hope they will accept it. No, this is not possible and its because you must also present a corresponding key to the found hash.&#x20;

Key:

```
8352e490f6927d1cff31392d8be7b909a68fb567118b8d8e38aaa9ef8ade4c548734cdc01a109afb5ffc5d4b32ae97be5d07f10e0998a1bf42f5b4e8407b49b5
```

The key is produced by your hashing algorithm to prove that you really did the work to find the hash. \
Because even though you can fake the XEN11 hash - you cant fake it together with a corresponding key.&#x20;

<figure><img src="/files/nd73FRLjHMSYlNoWJkxx" alt=""><figcaption></figcaption></figure>

This is a key that's produced and its matching my hash that I mined. \
Dashboard runs verification and it will only insert my result if the key matches the hash I mined.&#x20;

{% hint style="info" %}
Try out the Argon2 Hash Generator & Verifier:    <https://argon2.online/>
{% endhint %}
