MINING
Mining is live. Two ways, both at once.
kHeavyHash seals every block. Work already being done for Bitcoin Cash, Litecoin, Ravencoin or Zcash can commit to Kronex as well and be paid for it — without giving up the parent-chain reward and without changing what the hardware does.
01 · TWO WAYS TO MINE
Direct and merged
They are not alternatives. Both run at once, and both are paid from the same reward pool.
| Algorithm | What you mine | What you earn | |
|---|---|---|---|
| Direct | kHeavyHash | Kronex blocks | The block reward |
| Merged | SHA256d · Scrypt · KawPoW · Equihash | Bitcoin Cash, Litecoin, Ravencoin or Zcash blocks | Workshare rewards, on top of the parent-chain payout |
02 · DIRECT MINING
kHeavyHash, unchanged
The pre-image matches Kaspa byte for byte, so existing kHeavyHash miners and hardware mine Kronex with no firmware change. Only the source of work differs.
Works todaytestnet
- GMiner
- lolMiner
- BzMiner
- IceRiver
- Goldshell
A node hands out work only when it is building blocks. The reward goes to the node's etherbase; a stratum login is only an accounting label as far as the chain is concerned.
NODE — BUILD TEMPLATES WITHOUT MINING ON THE NODE'S OWN CPU
krnxd --http --http.api eth,krnx,net,web3 --http.addr 127.0.0.1 --http.port 8545 \
--mine --miner.threads 0 --miner.etherbase 0xYOUR_ADDRESS --miner.recommit 3s- krnx_getWork
- an 11-element array: the work package
- krnx_submitWork
- true / false
- krnx_submitHashrate
- true, for the node's own stats
All three are mirrored under eth_ with the names stock go-ethereum uses, so existing ethash pool code needs only its hashing swapped out.
REAL CODE — PASTE IT INTO A TERMINAL AGAINST YOUR NODE
curl -s -X POST http://127.0.0.1:8545 \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"krnx_getWork","params":[]}' \
| jq -r '.result[0,2,3]'03 · TWO THINGS THAT BREAK INTEGRATIONS
Read this before you write a pool
- Index [10] is milliseconds
- It is the TIME of the pre-image, already in the right unit. Parse it as a 64-bit integer and pass it through unchanged — converting it, or storing it in a uint32, produces work nobody can solve.
- Share and consensus difficulty are 2^32 apart
- Index [2] is the exact target of the current work; the stratum scale is (2^224 − 1) ÷ difficulty. Converting network difficulty by hand is how a pool ends up counting hashrate four billion times too low.
- MixDigest must be zero
- kHeavyHash has no DAG, and consensus rejects a non-zero digest.
04 · MERGED MINING
Four parent chains
A merge-mining proof rides inside the block and earns rewards; it does not decide which block is valid. Every Kronex block is still sealed by kHeavyHash.
| Parent chain | ID | Algorithm | Header | Submit method |
|---|---|---|---|---|
| Bitcoin Cash | 1 | SHA256d | 80 bytes | krnx_submitShaBlock |
| Litecoin | 2 | Scrypt (N=1024, r=1, p=1) | 80 bytes | krnx_submitScryptBlock |
| Ravencoin | 3 | KawPoW | 120 bytes | krnx_submitKawpowBlock |
| Zcash | 4 | Equihash (200,9) | 1487 bytes | krnx_submitEquihashBlock |
Dogecoin rides along on the Litecoin side, on the same Scrypt work. Each chain carries its own difficulty state and its own reward curve. Losing one parent chain reduces the work flowing into Kronex; it does not stop the chain.
The payload reduces to one header field, KRNXAuxRoot, and that field is part of the proof-of-work pre-image — not just of the block hash. Rewriting who gets paid costs a re-mine.
The proofs are called workshares: the parent-chain header, the coinbase transaction that commits to Kronex, and the Merkle path binding one to the other. Anyone can verify a workshare from the data it carries, and no workshare can be forged more cheaply than the hashrate it claims.
05 · FOR POOL OPERATORS
Four methods, nothing else
Your miners need no changes — this is an ordinary SHA256d, Scrypt, KawPoW or Equihash header. Only the source of work is different. A parent-chain node is not required.
- krnx_getMiningInfo
- the window, in blocks, in which a share can still be included — inclusionWindowBlocks, 5 today
- krnx_getBlockTemplate
- work: rules, your KRNX coinbase address, extranonce, a 30-byte extradata tag
- krnx_submit…Block
- share — Sha, Scrypt, Kawpow or Equihash
- krnx_getWorkshareReward
- reward lookup by workshareId, optional
The reward lands on the KRNX address the pool names in the template request — a 20-byte 0x address, never a parent-chain one. The parent coin does not go to the pool and parent transactions are never handed out. Complete client implementations exist in Go, Rust, Node.js and Python.
Pool integration — the full node-to-stratum contractMining pool guide
06 · GETTING PAID
One reward pool
Workshares in a block share the reward pool with the sealer and any uncles.
Block rewards, recipient distribution and coin locking are implemented on the testnet and documented. To confirm a specific share was credited, call krnx_getWorkshareReward with the workshareId recorded at submit time. The reward curve is configured per parent chain.
07 · WHAT EXISTS TODAY
What exists today
- Network
- public testnet · chain 5768
- RPC
- https://rpc.kronex.network
- Explorer
- https://explorer-testnet.kronex.network
- Mainnet
- chain 5769 · not launched
Testnet assets have no value. The network has not been reset yet but may be, and a reset destroys testnet state. Mainnet has a chain ID and no blocks.
Hashpower Market — the buyer's view, planned →Hashpower Providers — the supply side, planned →
Related
