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

# Hashrate

Your hashrate is a single number derived from four signals in your wallet's on-chain history. It determines your share of every emission.

## The formula

Each metric is log-scaled and weighted, then summed and rounded:

```
age_hr  = log2(1 + ageDays)   × 120
tx_hr   = log2(1 + txCount)   × 180
vol_hr  = log2(1 + volumeUSD) ×  95
hold_hr = log2(1 + holdDays)  × 140

hashrate = round(age_hr + tx_hr + vol_hr + hold_hr)
```

| Signal            | Weight | Meaning                                          |
| ----------------- | ------ | ------------------------------------------------ |
| Wallet age (days) | 120    | first transaction to now                         |
| Transactions      | 180    | count of successful transactions                 |
| Volume (USD)      | 95     | lifetime native-token value moved, priced in USD |
| Hold time (days)  | 140    | days since the last outgoing value transfer      |

## Why log scaling

The `log2(1 + x)` curve is the heart of the anti-sybil design:

* A wallet **10× older** is **not** 10× the hashrate — it's a bit more.
* Doubling any metric adds a **fixed** amount of hashrate, not a proportional one. The 1,000,000th transaction barely moves your score.

This flattens the advantage of whales and makes it expensive to fabricate activity, because the payoff per unit of faked history shrinks quickly.

## Worked example

A wallet that is 500 days old, with 3,000 transactions, $120,000 lifetime volume, and a 200-day hold:

```
age  = round(log2(501)   × 120) = round(8.968 × 120) ≈ 1076
tx   = round(log2(3001)  × 180) = round(11.551 × 180) ≈ 2079
vol  = round(log2(120001) × 95) = round(16.873 × 95)  ≈ 1603
hold = round(log2(201)   × 140) = round(7.652 × 140)  ≈ 1071
                                          hashrate ≈ 5829
```

## How each signal is measured

* **Age** — days from the wallet's first transaction to the epoch snapshot.
* **Transactions** — successful transactions up to the snapshot (failed transactions don't count).
* **Volume** — sum of native-token value transferred, converted to USD.
* **Hold time** — days since the wallet last sent value out. A wallet that never sells has a hold time equal to its age; selling resets it. This rewards conviction.

## Floor and snapshot

* A **minimum hashrate floor** (`MIN_HASHRATE`, currently 100) keeps brand-new dust wallets from registering.
* Metrics are frozen at the **start of the current epoch**, so activity inside the running epoch does not yet count. This blocks last-second gaming.

## Tunable weights

The weights above are the launch defaults. They live in the indexer's configuration and can be tuned before mainnet. The **contract does not store the formula** — it only trusts the signed number the indexer produces — so weight changes never require a contract upgrade.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.mineglyph.xyz/protocol/hashrate.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
