Run your own Hacash mining pool

HBIT is a PPLNS payout pool for Hacash. It runs beside your own full node on a VPS or a mini PC. This page is the short path from a bare machine to a pool that pays miners.

Before you start

A pool holds other people's money. Everything below is written on that assumption, and the software refuses to start rather than guess when something important is missing.

Three things you must have. A machine that stays on, with more than 10 GB free. A Hacash address you control. A passphrase you have written down somewhere physical. Nothing here supplies a default for any of them, because a default address pays a stranger and a default passphrase protects nobody.

1. Download

Get the Linux package from the latest release:

curl -LO https://github.com/Moskyera/fullnodedev/releases/latest/download/hbit-pool-linux-x86_64.tar.gz

Verify it before running it. Every release is signed by GitHub with build provenance, and this is the only check that detects tampering:

gh attestation verify hbit-pool-linux-x86_64.tar.gz --repo Moskyera/fullnodedev

If that fails, delete the file. The .sha256 beside it only catches a truncated download; it comes from the same place as the archive, so a matching checksum is not proof the file is genuine.

tar -xzf hbit-pool-linux-x86_64.tar.gz
cd hbit-pool-linux-x86_64

2. What is in the box

FileWhat it is
hacashThe full node. The pool cannot work without one.
hbit-pool-serverThe pool: serves work, counts shares, pays out.
hbit-pool-payoutManual payout tool, for when you need it.
SETUP-POOL.shChecks the machine and tells you what is missing.
systemd/Unit files, to run both as services.
POOL-OPERATOR.mdThe long version. Read it before real money.

No wallet, no config and no address ship inside. You supply all three.

3. Set your address

cp hacash.config.ini.example hacash.config.ini
nano hacash.config.ini      # put YOUR mainnet address in [miner] reward

Type your own address. There is no default and there never will be one. An address you did not type yourself would receive block rewards permanently, with no error and no way to get them back.

4. Run the check

export HBIT_WALLET_PASSWORD='a long passphrase you have written down'
./SETUP-POOL.sh

It refuses to continue while the reward address is empty, while fast_sync is on, while there is no passphrase, or while the disk is too small. Each refusal says what it costs you to ignore it. Nothing starts until they all pass.

5. Sync the node, then start the pool

In that order, and the order matters more than it looks.

./hacash

Wait for all blocks sync finished and for the height to stop jumping. From another terminal you can block until it is ready:

./hbit-wait-for-node.sh http://127.0.0.1:8080 0

Do not start the pool early. A node part way through the chain serves work for blocks the network settled years ago. Every share is worthless, and it does not look wrong: down at low heights each hash costs a fraction of normal, so the miners connected to you report a higher hashrate than usual. It reads as success while nobody earns anything.

Once the node is at the tip:

./hbit-pool-server http://127.0.0.1:8080 pool-wallet.key 0.0.0.0:9777 20 mainnet 300

The 20 is share_bits: how many powers of two easier a share is than a block. Lower makes shares harder and the payout window cover more time. The pool refuses a value that would make a share cost less than 216 hashes, and the refusal names the number that would work.

6. Back up the two files that matter

pool-wallet.key             # the money
pool-wallet.key.state.json  # the record of who is owed what

Copy both somewhere that is not this machine. If you lose them, nobody can recover them: not the author of this software, not a support address, not the network.

Miners connect like this

Anyone with the Hacash miner points it at your address and port. In the miner panel that is Pool (RPC) plus your-host:9777, with their own Hacash address as the worker.

What the pool promises

The running pool serves those terms at /terms, so a miner never has to take your word for them.