<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Hashcats News</title>
    <link>https://news.hashcats.fun/</link>
    <description>Every change to the Hashcats protocol, art and numbers — written by the people who shipped it, in the order it happened.</description>
    <language>en</language>
    <lastBuildDate>Mon, 14 Sep 2026 09:00:00 GMT</lastBuildDate>
    <image>
      <url>https://news.hashcats.fun/news-touch-icon.png</url>
      <title>Hashcats News</title>
      <link>https://news.hashcats.fun/</link>
    </image>
    <atom:link href="https://news.hashcats.fun/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Three days in, the first wave is over</title>
      <link>https://news.hashcats.fun/first-wave</link>
      <guid isPermaLink="true">https://news.hashcats.fun/first-wave</guid>
      <pubDate>Mon, 14 Sep 2026 09:00:00 GMT</pubDate>
      <description>Mining has gone quiet after 9 204 cats. Here is what the chain says about the burn rate, the price curve and where the $HASH went — every figure read from the contracts.</description>
      <content:encoded><![CDATA[<p>The opening rush is done. For the first two days a cat arrived about every fourteen seconds — 660 of them in a typical two-and-a-half-hour stretch, against a protocol target of one every ten. Then it stopped: the last cat was mined at 17:55 UTC today, and nobody has beaten the target since. Fees for the day came to about <strong>$36 000</strong>, against <strong>$1.08 million</strong> two days earlier.</p><p>This is the expected shape of a mining launch, not a problem — but it is the first moment where the numbers say something, so here they are. Every one of them is read from the contracts, and every one can be read again by anyone.</p><p>Cat <a href="https://robin.etherscan.io/token/0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721?a=9204">#9 204</a>, the last one of the wave, drawn from the seed the contract stores for it. <a href="https://hashcats.fun/hash?seed=0x3dba8920e6fd8e2a9f4e71fab58510fc14554df3d2c24a6b0fa40f52c902d6c4">Hashcat from seed 0x3dba8920e6fd8e2a9f4e71fab58510fc14554df3d2c24a6b0fa40f52c902d6c4</a></p><h2>Where it stands</h2><table><thead><tr><th>Reading</th><th>Value</th><th>Where it comes from</th></tr></thead><tbody><tr><td>Cats mined</td><td>9 204</td><td><code>totalMinted</code></td></tr><tr><td>Cats burned</td><td>3 758</td><td><code>burnedCount</code></td></tr><tr><td>Current epoch</td><td>10</td><td><code>currentEpoch</code></td></tr><tr><td>Entry price now</td><td>0.16368 ETH</td><td><code>mintPrice</code></td></tr><tr><td>Rent waiting to be claimed</td><td>38.25 ETH</td><td>balance of the collection</td></tr></tbody></table><p>Two of those deserve a second look.</p><h2>Four cats in ten have been burned</h2><p>3 758 of 9 204 is <strong>40.8%</strong>, and it happened in three days. Burning is not a failure mode here — it is one of the three exits the design gives a cat, and the only one that produces $HASH. A burned cat stops earning rent, and its share goes to the cats still alive.</p><h4>The exits compete, which is the point</h4><p>Hold and the rent accrues. Burn and you get tokens instead, at a rate that halves over the course of each epoch. Sell and you get whatever someone pays. The rate decays so that waiting is never free: a cat held for another epoch is worth half as much $HASH as it was, and that is the pressure that keeps the three exits honest against each other.</p><h2>The price went up 2 372 times</h2><p>Epoch 0 cost 0.000069 ETH. Epoch 10 costs 0.16368 ETH. That is not inflation and not a fee change — it is the same single line running the whole time: the price of a mint is <strong>the number of cats that already exist, times 0.00002 ETH</strong>.</p><table><thead><tr><th>Epoch</th><th>Cats in it</th><th>Entry price</th></tr></thead><tbody><tr><td>0</td><td>8</td><td>0.000069 ETH</td></tr><tr><td>5</td><td>256</td><td>0.00496 ETH</td></tr><tr><td>10</td><td>8 192</td><td>0.16368 ETH</td></tr><tr><td>11</td><td>16 384</td><td>0.32752 ETH</td></tr></tbody></table><p>Every one of those steps went somewhere specific: 0.000014 ETH of each step to the cats already alive, 0.000006 ETH to the hook. Nothing is left over — the price is exactly the sum of the two.</p><h2>Where the $HASH is</h2><p>Burning cats has produced <strong>3 708 712 $HASH</strong>. The hook has bought back and destroyed <strong>2 125 590</strong> of them — 57% of everything burning has produced — spending 234 ETH from the buyback queue to do it.</p><h4>The first million came before any of that</h4><p>$HASH was deployed with 1 000 000 tokens minted to the deployer, and they did not stay there. One transfer in block 60 412 646 — before the first cat existed — moved the entire amount to the hook, which put it into the pool as liquidity. That address has had exactly two token transfers in its life — the mint in, and that one transfer out — so its balance of $HASH has been zero ever since, and <a href="https://robin.etherscan.io/token/0xCA75082b85bb7Bec8325d513F615b16BDa260020?a=0xCA75a875857691f2a8bbCCecAa7E4448aCdc12ca">the token page</a> says so in one line.</p><h2>What happens next is mechanical</h2><p>Nobody has to do anything for mining to resume. The target loosens on its own until cats arrive at the pace the contract aims for — one every ten seconds — and it will keep loosening while nobody is mining. The entry price does not move with it: that number only ever depends on how many cats exist, so it stays at 0.16368 ETH until cat 16 377 starts epoch 11.</p><p>Meanwhile the rent keeps accruing to whoever is still holding, and the 38.25 ETH in the collection is waiting to be claimed by the cats that earned it.</p><h2>Read it yourself</h2><ul><li><p><a href="https://robin.etherscan.io/address/0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721">The collection</a> — <code>totalMinted</code>, <code>burnedCount</code>, <code>mintPrice</code>, and the ether balance that is the rent pool</p></li><li><p><a href="https://robin.etherscan.io/address/0xCA757986E932BC55776492Cca0b413E9b3D02aCC">The hook</a> — <code>buybackSpent</code> and <code>buybackBurned</code></p></li><li><p><a href="https://robin.etherscan.io/token/0xCA75082b85bb7Bec8325d513F615b16BDa260020">$HASH</a> — supply, holders, and the pool</p></li><li><p><a href="https://stats.hashcats.fun">Stats</a> — the same readings, plotted and refreshed</p></li></ul>]]></content:encoded>
      <category>protocol</category>
      <category>numbers</category>
      <category>mining</category>
    </item>
    <item>
      <title>Hashcats is on DefiLlama</title>
      <link>https://news.hashcats.fun/defillama-listing</link>
      <guid isPermaLink="true">https://news.hashcats.fun/defillama-listing</guid>
      <pubDate>Sun, 13 Sep 2026 09:00:00 GMT</pubDate>
      <description>Fees, revenue and TVL now come straight from the chain into DefiLlama — here is what each series counts, what it deliberately does not, and how to check any of it yourself.</description>
      <content:encoded><![CDATA[<p>Hashcats now has a page on DefiLlama, and every figure on it is read from the chain by adapters we wrote and they merged. This post is the reading guide: what each series means, why one of them is smaller than you might expect, and how to check any of it yourself.</p><h2>What is counted</h2><p>Five series went in, and they measure different things. The names are DefiLlama's, and they are not interchangeable:</p><table><thead><tr><th>Series</th><th>What it counts</th></tr></thead><tbody><tr><td>Fees</td><td>Everything users pay: the price of every mint, the trading fee the hook takes on the $HASH pool, and the secondary-market royalty</td></tr><tr><td>Supply-side revenue</td><td>The rent, which goes to the cats already alive</td></tr><tr><td>Revenue</td><td>Fees minus that rent — the part the protocol keeps</td></tr><tr><td>Holders' revenue</td><td>The share of revenue that buys $HASH back on the pool and burns it</td></tr><tr><td>Protocol revenue</td><td>The developer's share of revenue, at the hook's <code>devBps</code> rate, read from the chain</td></tr></tbody></table><p>Two identities hold on the page, and they are the quickest way to see that the series mean what they say:</p><pre><code>Fees     = Revenue + Supply-side revenue
Revenue  = Holders' revenue + Protocol revenue</code></pre><p>The rent is supply-side and not &quot;holders' revenue&quot; on purpose. A cat holder is a supplier whose asset earns — the rent is a cost of doing business, not a dividend. What DefiLlama calls holders' revenue is the buyback: money that leaves the protocol to purchase $HASH and destroy it.</p><h4>Mint price is derived, not read from the transaction</h4><p>The adapter computes each mint from the contract's own curve — cats created so far, times <code>PRICE_STEP</code> — instead of taking the ether attached to the call. Send a mint with excess value and the figure does not move.</p><h2>TVL is one number, and a small one</h2><p>TVL is the ether sitting in the collection contract: rent that has accrued to living cats and has not been claimed yet. Nothing else.</p><p>On the day of the listing it stood at about <strong>$149 000</strong>, while fees for the preceding 24 hours came to about <strong>$479 000</strong> — three days' worth of TVL moving through the protocol in one of them. That is not an error and not a good thing or a bad thing: it is what a mining protocol looks like. Value passes through rather than sitting still, and rent is claimed continuously, so the balance never accumulates.</p><h2>What is not counted, and why</h2><p>The hook holds a Uniswap V4 position and a buyback queue. Neither is in TVL. This was argued, not assumed: a maintainer asked whether hook-owned liquidity counts, and the honest answer is that it does not.</p><h4>The test that settles it</h4><p>Both <code>removeLiquidity</code> and <code>withdrawQueue</code> on the hook are owner-only — call either from any other address and it reverts. Value that one address can remove at will is not locked value, it is inventory. Counting it would inflate TVL by the protocol's own holdings, which is exactly the number DefiLlama exists to keep honest.</p><p>The collection's ether balance is a different matter, and it does count. The contract has no owner withdrawal, no sweep and no rescue — there is no function that takes ether out of it to an arbitrary address. Two paths move ether out, and both are someone's earned share: the hook's cut, and the claim that pays a cat's owner. Nobody else can take it.</p><h2>Two things we had to fix after the merge</h2><p>Maintainers at DefiLlama do not merge external pull requests directly — they copy the code into their own and merge that. It is a sensible way to run a repository with thousands of adapters, and it means the code that ships is not always the code you wrote. Ours came out with two changes, and both were wrong.</p><h4>What shipped</h4><p><code>options.api.call({ block })</code> — a per-call block argument, which <code>ChainApi</code> accepts and silently ignores. The reader stays pinned to the head of the window.</p><h4>What it should have been</h4><p><code>new ChainApi({ chain, block }).call(...)</code> — a separate reader pinned to the block we actually asked for.</p><p>The second was the deployment guard. The original returned an empty result for any window that ended before the collection existed; the rewrite compared timestamps instead of block numbers, and on the hour of launch that check passed while the contract call underneath still reverted.</p><p>Both were provable rather than arguable, which is the only reason the fix went in quickly:</p><pre><code>window of Sep 11, 09:00–10:00 UTC

  master   → Failed to call: uint256:PRICE_EPOCH0
  ours     → dailyFees = {}</code></pre><h4>Merged</h4><p><a href="https://github.com/DefiLlama/dimension-adapters/pull/9419">dimension-adapters#9419</a> — the fix, on top of the original fees adapter in <a href="https://github.com/DefiLlama/dimension-adapters/pull/9418">#9418</a> and the TVL entry in <a href="https://github.com/DefiLlama/DefiLlama-Adapters/pull/21006">DefiLlama-Adapters#21006</a>.</p><h2>Checking it yourself</h2><p>Every figure is a difference of two on-chain reads, and you can take them yourself. The rent owed to the hook, for instance, is read at both ends of the window and subtracted:</p><pre><code>const [dueBefore, dueAfter] = await Promise.all([
  new ChainApi({ chain, block: windowStart - 1 }).call({
    abi: 'uint256:hookDue',
    target: COLLECTION,
  }),
  options.toApi.call({ abi: 'uint256:hookDue', target: COLLECTION }),
])</code></pre><p>The <code>- 1</code> is the whole subtlety. Log ranges include the block they start at, but <code>fromApi</code> is the state <strong>after</strong> that block has run — read it without the offset and the first block of every window is counted twice.</p><p>The cheapest check of all needs no adapter and no logs. Ask the collection how many cats exist (<code>totalMinted</code>), put that number through the price curve — each epoch's entry price times the cats in it — and you have every mint ever paid for, in ether. It should land just under the fees total. The gap is the other two flows: the pool fee and the royalties. While the pool is young that gap is small, and watching it widen is the most direct way to see trading start to matter.</p><h4>Their chart is labelled by the start of the day</h4><p>A point on the DefiLlama chart carries the day it opens, and the day in progress holds a rolling 24-hour sum. This means the all-time total can go <strong>down</strong> when a day closes — which looks alarming and is not.</p><h2>Where to look</h2><ul><li><p><a href="https://defillama.com/protocol/hashcats">The Hashcats page on DefiLlama</a></p></li><li><p><a href="https://stats.hashcats.fun">Our stats site</a>, which reads the same contracts directly and updates faster</p></li><li><p><a href="https://robin.etherscan.io/address/0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721">The collection on RobinScan</a> — the balance that TVL reports is this contract's</p></li><li><p>The adapters themselves, in <code>dimension-adapters/fees/hashcats</code> and <code>DefiLlama-Adapters/projects/registries/sumTokens.js</code></p></li></ul>]]></content:encoded>
      <category>protocol</category>
      <category>numbers</category>
    </item>
    <item>
      <title>The collection is live</title>
      <link>https://news.hashcats.fun/launch</link>
      <guid isPermaLink="true">https://news.hashcats.fun/launch</guid>
      <pubDate>Fri, 11 Sep 2026 09:00:00 GMT</pubDate>
      <description>Mining opened on September 11. The first cat was found at block 60 415 844 — here is what the contracts do, where they live and what a mint actually costs.</description>
      <content:encoded><![CDATA[<p>Mining opened. Cats are not sold, they are found: you search for a hash, and what the hash turns into is the cat you get.</p><h2>The contracts</h2><p>Three addresses, deployed in that order — the token first, because the hook needs it, and the collection last, because it needs the hook:</p><table><thead><tr><th>Contract</th><th>Address</th><th>Deployed at block</th></tr></thead><tbody><tr><td>$HASH</td><td><a href="https://robin.etherscan.io/address/0xCA75082b85bb7Bec8325d513F615b16BDa260020"><code>0xCA75082b85bb7Bec8325d513F615b16BDa260020</code></a></td><td>60 412 325</td></tr><tr><td>Hook</td><td><a href="https://robin.etherscan.io/address/0xCA757986E932BC55776492Cca0b413E9b3D02aCC"><code>0xCA757986E932BC55776492Cca0b413E9b3D02aCC</code></a></td><td>60 412 354</td></tr><tr><td>Collection</td><td><a href="https://robin.etherscan.io/address/0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721"><code>0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721</code></a></td><td>60 412 470</td></tr></tbody></table><p>Each address is also readable from the one before it: the collection returns the hook, and the hook returns the token. Nothing here has to be taken on trust — <code>hook()</code> and <code>token()</code> are public views, and the three addresses above are what they answer.</p><h4>First cat</h4><p>Block <a href="https://robin.etherscan.io/block/60415844"><strong>60 415 844</strong></a>, 3 374 blocks after the collection went up — the time it took for somebody to find a hash below the opening target. The mint cost 198 883 gas.</p><h2>What mining actually is</h2><p>The contract does not pick your cat. It reads it out of the work you did.</p><p>Three parts, and only the first one is slow.</p><ol><li><strong>You search</strong><p>Your machine tries nonces until a hash comes out below the current target. This happens entirely on your side — no transaction, no gas, nothing on chain until you have won.</p></li><li><strong>The contract checks</strong><p>It recomputes the hash from what you submit. There is nothing to trust here: the check either passes or the call reverts.</p></li><li><strong>The cat is read from the hash</strong><p>Fur, traits and background are positions inside the number you found. The same function the site uses to draw it is the one the contract uses to store it.</p></li></ol><p>Cat <a href="https://robin.etherscan.io/token/0xCA75DF55Cc9C476DB27a7375D1fc8E794cf80721?a=1">#1</a>, drawn here from its own seed — the one <code>seedOf(1)</code> returns — by the same code the contract runs. <a href="https://hashcats.fun/hash?seed=0x6c869bc51d6a31fd5ce501b74c80f9d102ffaf6c5d026b50dec24106063fd8ff">Hashcat from seed 0x6c869bc51d6a31fd5ce501b74c80f9d102ffaf6c5d026b50dec24106063fd8ff</a></p><h2>Difficulty</h2><p>The target moves so that cats keep arriving at roughly the same rate no matter how much hardware is pointed at it: the contract aims for one cat every <strong>10 seconds</strong> and retargets against that. If more people mine, the target tightens; if they stop, it loosens. Nothing about this is unusual — it is the same mechanism Bitcoin uses, at a much smaller scale.</p><h2>What a mint costs</h2><p>The price is not a number somebody sets. It comes out of one line in the contract: <strong>the number of cats that already exist, times 0.00002 ETH</strong>.</p><table><thead><tr><th>Epoch</th><th>Cats in it</th><th>Entry price</th></tr></thead><tbody><tr><td>0</td><td>8</td><td>0.000069 ETH</td></tr><tr><td>1</td><td>16</td><td>0.00016 ETH</td></tr><tr><td>2</td><td>32</td><td>0.00048 ETH</td></tr><tr><td>3</td><td>64</td><td>0.00112 ETH</td></tr></tbody></table><p>Each epoch holds twice as many cats as the one before it, so the price roughly doubles from epoch to epoch — exactly ×2 once the counts get large, more than that at the start.</p><h4>Mining late costs more and earns less</h4><p>That 0.00002 ETH step splits in two: <strong>0.000014 goes as rent to every cat already alive</strong>, and <strong>0.000006 goes to the hook</strong>. Both numbers are constants in the contract, and the price is exactly their sum — a mint cannot pay one without the other.</p><p>So a late cat pays for every cat before it, and then earns the same fixed step from everyone who comes after. Epoch 0 is the one exception: those eight cats have nobody to pay, and their price goes to the hook whole.</p><h2>Where to go next</h2><ul><li><p><a href="https://hashcats.fun">Mine a cat</a> — the miner runs in the browser</p></li><li><p><a href="https://hashcats.fun/docs">How it works</a> — the full mechanism, with instruments you can turn</p></li><li><p><a href="https://stats.hashcats.fun">Stats</a> — difficulty, rent, burns and holders, read from the chain</p></li></ul>]]></content:encoded>
      <category>protocol</category>
      <category>mining</category>
    </item>
  </channel>
</rss>
