# Reward Hash (Technical)

In order to create a pure random hash that can’t be manipulated, ThirdFi created a “reward hash” that uses ‘hash within hash’ as algo. This hash is a 32 bytes hexadecimal similar to transaction id(transaction hash). The hash is computed from **tokenid, msg.sender, block.chainid, boostCount\[tokenid], block.timestamp** and **blockhash(block.number).**

**tokenid** - token id for NFT, each minted NFT has its own unique id.\
**msg.sender** - wallet address that executes the mint/boost function.\
**block.chainid** - chain id, i.e. 56 for BNB.\
**boostCount\[tokenid]** - boost count for particular tokenid, which increases in each boost. This is used to distinguish the hash, to prevent the same hash generated within the same block.\
**block.timestamp** - timestamp(in seconds) of the block that executes the mint/boost function.\
**blockhash(block.number)** - block hash(similar to transaction hash) of the block that executes the mint/boost function.

These variables then compute with the popular hash function [keccak256](https://www.nervos.org/knowledge-base/what_is_keccak256_\(explainCKBot\)) into a hash that will emit through events within the mint/boost function. Users are able to check their hash through logs in Etherscan-like block explorers.

block.timestamp and blockhash(block.number) only disclose after the block is confirmed, so it is hard to predict whether a submitted transaction will get the desired hash, hence it provides some sort of randomness.

Check on [How to Verify your Reward Hash](https://thirdfi.gitbook.io/thirdfi.org-1/product/data-to-earn-program/how-to-verify-your-reward-hash).&#x20;

**Disclaimer:**

1. The combination **NEED** to be in consecutive order of *“abc”* or *“123”* **ONLY**.&#x20;
2. Character combination included for the **LAST 3** of the rewards hash **ONLY**.&#x20;
3. Please note that updates will be provided periodically as we work towards finalizing the content.
