INIPool.org
community mining pools
Pool audit · community notice

drillhash.com is not publishing the blocks its miners find

We connected four NEXA mining machines to drillhash.com and watched every share they sent in. In 35 hours one of them found a real block, the thing miners get paid for. drillhash.com accepted it, and the block never appeared on the Nexa network. Nobody was paid for it.

If you mine NEXA on drillhash.com, your blocks are not reaching the network. A mining pool can only pay you when the blocks its miners find are published on the Nexa network. We recorded drillhash.com accepting a real block that was never published. Until that is fixed on the pool's side, no amount of hashrate there will produce a block, and there is nothing to be paid from. We shared this report with drillhash.com's operator before publishing it. They told us the pool works correctly. The evidence is below, and anyone can check it.
118,280
shares sent to drillhash
0
refused by drillhash
1
real block found by our miners
0
blocks drillhash put on the network

What we did

You know the deal as a miner: your machine sends shares to the pool all day, and every share is a lottery ticket. Most of the time a share is just proof that you are working. Once in a while a share is good enough to be a block. That is the moment the pool exists for. It has seconds to publish that block on the Nexa network, the block reward lands in the pool's wallet, and the pool splits it among everyone who sent shares. No published block, no reward, nothing to split. A pool's dashboard shows hashrate and shares, but the blocks it has published on the network are what actually pay you.

drillhash.com has shown a lot of NEXA mining power for weeks and has reported no blocks at all. We wanted to know for sure, so we tested it. We placed a small piece of software between four mining machines and drillhash.com. It changes nothing: every message goes through untouched, and drillhash.com sees the machines exactly as if they had connected directly. But it keeps a copy of every share and checks its quality itself, using the same rule the Nexa network uses. It also writes down what drillhash.com answered.

If a share is good enough to be a block, it is a block. It does not matter what the pool says about it afterwards. That is the whole test.

What we found

On 21 September 2026 at 01:40:48 UTC, the miner nexa:nqtsq5g5nwxfq4n4z7tmw06wyxrfyg90lyu3v8mx4ntm3t6z sent in a share that was 2.31 times better than needed for a block. Its winning guess, the nonce, was 59617ba000002501e1ebca4b83aa61da. drillhash.com answered "accepted". That block should have appeared on the Nexa network moments later. It never did. The next block on the network came nine minutes later, found by somebody else.

The block, exactly as we recorded it

The raw details, exactly as recorded, so that anyone who wants to can check our work.

time
2026-09-21 01:40:48 UTC
pool
drillhash.com:3500
wallet
nexa:nqtsq5g5nwxfq4n4z7tmw06wyxrfyg90lyu3v8mx4ntm3t6z
worker
10x147
job id
7fe5b3f8
header commitment
9dd99b372c9b698589fd92fe0dd4a02e422029d18b1599400549a8e3f4d6daac
nonce
59617ba000002501e1ebca4b83aa61da
nbits (target set by the pool's own job)
1b00f7f5
difficulty needed for a block
2.906052e+14
difficulty of this share
6.712071e+14
how good it was
2.31 times what a block needs (1 or more is a block)
was the work current?
yes, it was for the job drillhash.com had just handed out
drillhash.com's reply
accepted, no error

What the Nexa network shows for those minutes

Every block on the network is public, numbered, and carries the nonce, the winning guess that made it. Our block was found between block 1152476 and block 1152477. Here are the blocks around that time, straight from the public Nexa explorer. Our winning guess is not in any of them, nor in any block since.

block numbertimetargetnonce
115247501:39:051b00f7c13f18d4b300001d00f7120b0000000000
115247601:39:231b00f7f53d04f4ba00007206bbe3dbca643bf706
115247701:50:041b00f7db057678e00000b7080ff2377942d4c74b
115247802:04:271b00f860c74ec13a00002200756f0b0000000000

Our block: 01:40:48, nonce 59617ba000002501e1ebca4b83aa61da. Not on the network.

The whole test on one picture

Each dot is one of the best shares our machines sent to drillhash.com over the 35 hours. The higher a dot, the harder the share, and the closer it came to being a block. The dashed line is the network difficulty, the bar a share has to clear to be a block. There is exactly one dot above the line, and that block was never published.

Difficulty of every strong share sent to drillhash.com, 19 to 21 September 2026 Each dot is a share; its height is the difficulty of its proof of work on a log scale. The dashed line is the network difficulty. One share sits above it: a block that drillhash.com accepted and never published. 1 T 10 T 100 T 1,000 T 18:00 20 Sep 00:00 06:00 12:00 18:00 21 Sep 00:00 time (UTC) difficulty block: network difficulty 291.4 T. On or above this line is a block block found: 671.2 T Difficulty of every strong share sent to drillhash.com, 19 to 21 September 2026 Each dot is a share; its height is the difficulty of its proof of work on a log scale. The dashed line is the network difficulty. One share sits above it: a block that drillhash.com accepted and never published. 1 T 10 T 100 T 1,000 T 20 Sep 12:00 21 Sep time (UTC) difficulty network difficulty 291.4 T block found: 671.2 T
sharethe blocknetwork difficulty
Show the same data as a table, hour by hour
hourshares sentbest share difficultynetwork difficulty
19 Sep 18:001,28916.0 T267.4 T
19 Sep 19:002,87946.7 T268.7 T
19 Sep 20:004,0508.7 T269.5 T
19 Sep 21:002,41226.2 T269.7 T
19 Sep 22:002,1973.6 T270.2 T
19 Sep 23:002,24612.3 T271.8 T
20 Sep 00:002,1999.4 T274.1 T
20 Sep 01:002,22117.4 T275.0 T
20 Sep 02:002,107246.3 T274.8 T
20 Sep 03:002,1724.9 T274.9 T
20 Sep 04:002,2124.7 T277.0 T
20 Sep 05:002,2896.1 T279.2 T
20 Sep 06:002,26710.5 T280.2 T
20 Sep 07:002,1614.9 T280.9 T
20 Sep 08:003,30119.0 T281.6 T
20 Sep 09:004,24615.7 T283.5 T
20 Sep 10:003,72356.0 T286.0 T
20 Sep 11:004,30946.7 T286.2 T
20 Sep 12:004,45223.1 T285.8 T
20 Sep 13:005,07254.4 T285.3 T
20 Sep 14:005,92625.5 T285.1 T
20 Sep 15:006,07513.2 T286.6 T
20 Sep 16:006,06796.2 T287.3 T
20 Sep 17:005,92573.6 T288.1 T
20 Sep 18:005,95434.6 T288.7 T
20 Sep 19:004,59412.6 T288.8 T
20 Sep 20:003,88116.8 T290.2 T
20 Sep 21:003,3969.2 T291.0 T
20 Sep 22:003,17411.2 T291.6 T
20 Sep 23:002,989220.9 T292.5 T
21 Sep 00:002,42111.1 T292.1 T
21 Sep 01:002,541671.2 T (block)291.7 T
21 Sep 02:002,53825.6 T290.7 T
21 Sep 03:002,6197.7 T290.2 T
21 Sep 04:002,13425.4 T290.8 T
21 Sep 05:00242328.6 G291.4 T

Could this be bad luck or a broken miner?

No. Mining is a game of chance with known odds, like rolling dice. From the amount of work our machines did, we can predict how many "near misses" of each size there should be. The near misses came in right on schedule, which means the machines were working normally and drillhash.com was giving them proper work. The only thing missing is the block itself, and chance cannot explain that: a block that was found and accepted does not disappear on its own.

how close to a blockexpected by the oddswhat we saw
within 1,000 times of a block(starting point)2,030
within 100 times of a block203209
within 10 times of a block20.315
a real block2.031

The machines in the test

walletmachinesshares sentrefusedbest share difficultyblocks found
nexa:nqtsq5g5…z843vx250,938073.6 T0
nexa:nqtsq5g5…tcruul244,9640246.3 T0
nexa:nqtsq5g5…tm3t6z111,9810671.2 T (a block)1
nexa:nqtsq5g5…g9wwhk110,397055.9 T0
total118,28001

drillhash.com refused none of the 118,280 shares. It accepted every one, including the block.

Check it yourself

You do not have to take our word for any of this. Everything needed to check it is on this page. The first step needs some technical skill; the others need none.

  1. For the technical reader: recompute the block. The script below is complete and needs nothing but Python 3. It computes the Nexa proof of work for the header commitment and nonce shown above, exactly as a Nexa node does, and compares it with the network difficulty encoded in the pool's own nbits value 1b00f7f5. It prints the share difficulty, the network difficulty, and whether it is a block.
    # NexaPoW check, plain Python 3, no libraries needed. Run: python3 verify_block.py
    import hashlib, hmac
    
    HEADER = "9dd99b372c9b698589fd92fe0dd4a02e422029d18b1599400549a8e3f4d6daac"
    NONCE  = "59617ba000002501e1ebca4b83aa61da"
    NBITS  = "1b00f7f5"
    
    # secp256k1 curve
    P = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
    N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
    G = (0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,
         0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)
    
    def add(a, b):
        if a is None: return b
        if b is None: return a
        if a[0] == b[0] and a[1] != b[1]: return None
        l = (3*a[0]*a[0]) * pow(2*a[1], P-2, P) if a == b else (b[1]-a[1]) * pow(b[0]-a[0], P-2, P)
        x = (l*l - a[0] - b[0]) % P
        return (x, (l*(a[0]-x) - a[1]) % P)
    
    def mul(k, pt=G):
        r = None
        while k:
            if k & 1: r = add(r, pt)
            pt = add(pt, pt); k >>= 1
        return r
    
    def rfc6979_k(key, msg):                      # deterministic nonce, as libsecp256k1
        blob = key + msg + b"Schnorr+SHA256  "
        V, K = b"\x01"*32, b"\x00"*32
        K = hmac.new(K, V + b"\x00" + blob, hashlib.sha256).digest(); V = hmac.new(K, V, hashlib.sha256).digest()
        K = hmac.new(K, V + b"\x01" + blob, hashlib.sha256).digest(); V = hmac.new(K, V, hashlib.sha256).digest()
        while True:
            V = hmac.new(K, V, hashlib.sha256).digest(); k = int.from_bytes(V, "big")
            if 0 < k < N: return k
            K = hmac.new(K, V + b"\x00", hashlib.sha256).digest(); V = hmac.new(K, V, hashlib.sha256).digest()
    
    def schnorr_sign(key, msg):                   # Bitcoin Cash Schnorr
        d = int.from_bytes(key, "big"); k = rfc6979_k(key, msg)
        Rx, Ry = mul(k)
        if pow(Ry, (P-1)//2, P) != 1: k = N - k
        Px, Py = mul(d)
        pub = (b"\x03" if Py & 1 else b"\x02") + Px.to_bytes(32, "big")
        e = int.from_bytes(hashlib.sha256(Rx.to_bytes(32, "big") + pub + msg).digest(), "big") % N
        return Rx.to_bytes(32, "big") + ((k + e*d) % N).to_bytes(32, "big")
    
    def nexa_pow(header, nonce):                  # exactly what a Nexa node computes
        mining_hash = hashlib.sha256(hashlib.sha256(header + bytes([len(nonce)]) + nonce).digest()).digest()
        sig = schnorr_sign(mining_hash, hashlib.sha256(mining_hash).digest())
        return int.from_bytes(hashlib.sha256(sig).digest(), "little")
    
    def target(nbits):                            # compact bits -> 256-bit target
        b = int(nbits, 16); mant = b & 0x7FFFFF; exp = b >> 24
        return mant << (8*(exp-3)) if exp > 3 else mant >> (8*(3-exp))
    
    value = nexa_pow(bytes.fromhex(HEADER), bytes.fromhex(NONCE))
    need  = target(NBITS)
    MAX   = 2**256 - 1
    def short(d): return f"{d/1e12:.1f} T"           # trillions, as on the report page
    print("header commitment :", HEADER)
    print("nonce             :", NONCE)
    print("nbits             :", NBITS)
    print("share difficulty  :", f"{MAX / value:,.0f}", f"({short(MAX / value)})")
    print("network difficulty:", f"{MAX / need:,.0f}", f"({short(MAX / need)})")
    print("is a block        :", value <= need)
  2. Look at the public record. Open block 1152476 and block 1152477 on the Nexa explorer, the public ledger anyone can read. Note their times: 01:39:23 and 01:50:04 UTC. Our block was found at 01:40:48. There is nothing between them.
  3. Look at drillhash.com's own block list for 21 September 2026 around 01:40 UTC. No block is listed for that time.

What this means for you

  • A pool pays its miners out of the blocks it publishes. If the blocks are not published, there is nothing to pay from. Whatever a pool's website shows, a payout needs a published block behind it.
  • Every hour on a pool that does not publish blocks costs electricity and earns nothing.
  • Any honest pool publishes every block its miners find, and you can see them on the public Nexa explorer. Any pool should be able to point you to its blocks there. That is the proof that matters.

How we made sure the test was fair

  • Our checking software does not touch anything. The machines used drillhash.com's own work assignments and difficulty settings, and every reply the machines saw came from drillhash.com. From the pool's side, nothing looked different from a normal miner.
  • The network difficulty we measured against came from drillhash.com's own work assignment, and it matches the difficulty of the real blocks around that time on the public explorer. The pool was handing out correct work; the block it received back was not published.
  • The rule we used to judge each share is the same one the Nexa network uses. The same code has found and published more than 4,500 blocks elsewhere without a single one going missing.
  • drillhash.com answered "accepted", not "rejected", and reported no problem with the share.
  • The machines belong to community members who volunteered them. Wallet addresses are shortened above, except the one that found the block, so the claim can be checked against drillhash.com's own website.

Thank you: rewards for the volunteers

To thank the community members who lent their machines to this audit, every 850M INIBOX earns 2,000,000 NEXA for each 24 hours of audited mining. Rewards are sent to the address each machine mined with.

We are giving our own reward to the volunteers too. Our machines took part in the audit and, at the same rate, earned 3,763,889 NEXA. We are not keeping it. It is shared out among the volunteers, and whoever mined longer gets a larger part. So each volunteer receives two amounts: the reward for their own mining, plus their part of ours.

walletmachinesaudited timeearned by miningpart of our rewardtotal paid, NEXA
nexa:nqtsq5g5…tcruul265.3 h5,444,444+ 2,517,8237,962,267
nexa:nqtsq5g5…g9wwhk117.0 h1,416,667+ 655,1482,071,815
nexa:nqtsq5g5…tm3t6z115.3 h1,277,778+ 590,9181,868,696
total497.7 h8,138,889+ 3,763,88911,902,778

Example. The first wallet mined 65.3 h out of the volunteers' 97.7 h, which is 66.9%. It earned 5,444,444 NEXA by mining, and it receives 66.9% of our 3,763,889 NEXA, which is 2,517,823. Together: 7,962,267 NEXA.

Audited time is the machine time of all of a wallet's machines, counted in 10 minute slots in which the machine had at least one share accepted by drillhash.com and checked by our software.

What drillhash.com says

We sent this report to drillhash.com's operator before publishing it and asked about the missing block. Their answer was that the pool works correctly. We have not received an explanation for where the block went, and it is still not on the network. We do not know what the cause is on their side, and this page does not claim to. What the data shows is simpler: a block was found, the pool accepted it, and the network never saw it. Until that changes, mining there cannot produce a block.

Questions and corrections are welcome through the community channels linked on the home page. If drillhash.com can show this block on the Nexa network, or explain what happened to it, we will update this page.

Update, 29 September 2026

Since this report was published, drillhash.com has made two announcements on its Telegram channel.

22 September. In a maintenance notice, drillhash.com confirmed the problem described in this report:

"A significant PoW verification bug has been identified in our block submission pipeline during a thorough audit conducted by INIPOOL's senior pool team. This bug prevented valid blocks from reaching the Nexa network."

In the notice's own words, "miners found valid solutions, pool accepted them, but they were never submitted to the chain". It says that the root cause was identified and a fix deployed, that the pool was being tested with drillhash.com's own miners before a full relaunch, and it recommends that miners use another pool during the maintenance.

23 September. In a second announcement, drillhash.com says the pool found its first mainnet block and paid the miners who contributed to it. It also says this about the pool's status:

"Mainnet is still private
Not open to public yet. We're keeping it in private testing while we tighten things up."

As of today, 29 September 2026, that has not changed: drillhash.com's mainnet pool is still private and not open for public mining.