B2POOL connecting…

Bring whatever you have.

Most pools have one port and assume an ASIC is behind it. This one has a port for each class of hardware, because BLAKE2b is cheap enough that a CPU is a real participant and not a courtesy. Pick your machine below and the three fields you need are on the next screen — there is no account to create, and no password to remember. Your payout address is your account.

Or run the whole thing yourself: your own node builds the blocks, you pick the transactions, and the pool only answers who gets paid what. Same 1 % fee, and the only path the stratum phase-out leaves untouched. Set up your own DATUM gateway, step by step →

Every share goes into a rolling window of the pool’s recent work. Each block the pool finds is split across that window, so a share earns a little from several blocks rather than everything from one — and you are paid whether or not the winning share was yours.

Six regions, one pool, one balance. Every endpoint on this page follows your choice — we are measuring which one is closest to you.

Fees 1 % on Stratum V1, DATUM and RATUM.

You build the blocks. Your own node picks the transactions and assembles the template; your gateway asks us one question — who gets paid what — and writes our answer into the coinbase. We never see the block before it exists, and we cannot censor what we do not build. This is the way the chain is meant to be mined.

It costs you a machine that stays on, about 40 GB of disk and a day or three for the first sync. There is no compiler step — the gateway is a single static binary of 2.4 MB. Bitcoin Knots 29.4.2 or newer is required: an older node puts coinbase spends into your template that the network rejects from block 973,440 on.

Every command and every setting, step by step →

Endpoint
de.b2pool.io:28915Your gateway connects here, never a miner.
Gateway
0.1.23 or newerOr the C datum_gateway, built from 40cf813 or later.
Minimum difficulty
2,048
Payout window
8 × network difficulty
Fee
1 %

A miner, free and open source

Supryolo — MIT licensed, no fee, no developer cut, and quick.

github.com/ocminer/supryolo mines BLAKE2b on NVIDIA (CUDA), AMD (OpenCL) and CPUs, picking an AVX2 kernel automatically where one is available. FPGA and ASIC backends are next. Its published benchmarks, put against the port each device belongs on:

DeviceHashratePortA share every…
NVIDIA RTX 509017.21 GH/s444432 s
AMD RX 7900 XTX5.78 GH/s444495 s
Ryzen 9 3950X, 15 threads367 MH/s555512 s

Hashrates are the project's own figures; the cadence is arithmetic from the port difficulty. Note the CPU line — twelve seconds a share is a processor doing real work, not a gesture.

Building it needs CMake 3.24 or newer, a C++20 compiler and the OpenSSL development files. The CUDA toolkit is optional and only wanted for NVIDIA cards.

git clone https://github.com/ocminer/supryolo
cd supryolo
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES=120
cmake --build build -j

No CUDA toolkit, or a CPU-only machine? Build without it:

cmake -S . -B build-cpu -DCMAKE_BUILD_TYPE=Release -DYOLO_CUDA=OFF -DYOLO_OPENCL=OFF
cmake --build build-cpu -j

Then point it here. GPU on the FPGA/GPU port:

./build/supryolo --url stratum+tcp://de.b2pool.io:4444 \
  --user <your-payout-address>.rig1 --gpu-device 0 --no-cpu

Or CPU on the difficulty-1 port:

./build/supryolo --no-gpu --cpu-threads 15 \
  --url stratum+tcp://de.b2pool.io:5555 --user <your-payout-address>.cpu1

--list-devices shows what it found, --benchmark measures without connecting, and --gpu-core-clock, --gpu-mem-clock, --powerlimit and --gpu-fan-speed are there if you tune.

Supryolo is not ours and we take nothing for pointing at it — it is MIT licensed and has no developer fee. We link it because it is the fastest way onto this chain with a graphics card or a processor, and because a pool with a published protocol and no working open-source client is only half a thing.

Pick the closest region

Measured from your own browser to each one, not guessed from a map.

Frankfurt

measuring…

de.b2pool.io:3333

Helsinki

measuring…

hel.b2pool.io:3333

Chicago

measuring…

ord.b2pool.io:3333

Los Angeles

measuring…

lax.b2pool.io:3333

Kyiv

measuring…

ua.b2pool.io:3333

Hong Kong

measuring…

hkg.b2pool.io:3333

The port follows the hardware tab and the payout switch above, so the line under each region is the URL to paste. They all feed the same pool and the same balance — picking the nearest one only saves you the round trip on every share.

Take the one with the lowest ping to you — that host runs the stratum endpoint you connect to, and a shorter round trip means less time between finding a share and having it counted. They all feed the same pool and the same balance, so switching costs you nothing.

Mining from mainland China

Hong Kong is the endpoint to use from the mainland, and the reason is the route rather than the distance: it sits on a CN2 direct line into China Telecom's network, so the path never touches the congested ChinaNet backbone and holds up at peak hours. Measured from the host, ten pings to each: around 60 ms to Beijing (China Unicom, 57–67 ms) against around 180 ms to Frankfurt (177–187 ms). Roughly a third of the round trip, and it holds at peak hours because the path stays on CN2. Southern China is closer still.

That matters on every share you submit, not once — a longer round trip is time your hardware spends on work that may already be stale. If you run a farm there, measure it yourself before you move: ping hkg.b2pool.io and mtr hkg.b2pool.io from your own network decide this better than any claim on a website, and we would rather you checked.

The two fields that never change

Whichever port you picked, these are the same.

Worker
<payout-address>.<rig-name>e.g. bc1q8zq…vty4.shed-01 — the address is your account, and the rig name only separates your machines on the miner page.
Password
xAnything works. The field exists because stratum requires it. d=<number> sets a difficulty floor of your own.
You are paid
From the payout window, on every block Every block is split across a rolling window of the pool's recent work — eight times the network difficulty of it. Depending on how the block was found you are paid straight from its coinbase or by transaction from the pool. Only the subsidy is shared; the block's transaction fees stay with the pool.
Fee
1.0% of the block subsidyTransaction fees in the block stay with the pool and cover running it.
  1. 01

    Get an address

    Create a fresh wallet for this chain and copy a receiving address. Never reuse an address that already holds coins on the other side of the split.

  2. 02

    Pick your port

    Your hardware chooses the port, and how you want to be paid chooses whether it ends in the shared or the solo number. Nothing else differs between them.

  3. 03

    Fill in three fields

    URL, worker, password. Open your miner's web interface or command line and enter the values from your tab above.

  4. 04

    Save and watch

    Save, let the unit reconnect, and look for accepted shares. Your page appears under Miners within a minute or two.

And then you get paid by the block.

There is no withdrawal step, because there is nothing to withdraw.

When the pool finds a block, your address is written into that block's coinbase — the transaction that creates the coins — with your slice next to it. The coins are yours from that moment; they never sit in a pool wallet and never depend on an operator sending them on. Freshly mined coins still have to mature before they can be spent, which is a rule of the chain and the same for every miner on it. Amounts under 10,000 sat are carried to your next slice.

How the pool pays, in full →

Two endpoints for failover

Add a second region as Pool 2 with the same worker and password.

Frankfurt as Pool 1 and Helsinki as Pool 2, for instance. Every region feeds the same pool and the same balance, so a failover costs you nothing but the seconds spent reconnecting. Use the same port number in both slots — the ports mean the same thing everywhere.

When it does not work

The miner connects, then immediately disconnects

Almost always the worker field. It must be your payout address, optionally followed by a dot and a rig name. If the address is malformed the pool drops the connection rather than mining into an address nobody can spend from.

Shares are submitted but all rejected

Check the unit's clock first — a system time far from real time is the usual cause. After that, check the worker field. Changing ports will not help: every port runs the same protocol and they differ only in the difficulty you start on.

Nothing at all is submitted, but the miner says it is hashing

You are probably on a port meant for faster hardware, and the first share has not arrived yet. Multiply the port's starting difficulty by 4.295 × 109 and divide by your hash rate: that is the wait. The pool cannot lower your difficulty until it has seen one share from you, so a GPU parked on the ASIC port can sit silent for days. Move down a port, or name the difficulty yourself with d= in the password field and skip the wait entirely.

"Low worker difficulty" from a rental platform

Use the ASIC port. It starts at 16,384 and never goes under 1,024, which clears the minimum any rental platform is likely to enforce. If the platform has a difficulty field of its own, leave it alone — the pool's figure is passed through.

A rented rig is usually far bigger than 16,384 suits: at 100 TH/s that is a share every 0.7 seconds, more traffic than either side needs before vardiff settles it. Put d=1000000 in the password field and you start near one share every 45 seconds instead.

Can I set my own starting difficulty?

Yes. Put d= and a number in the password field — d=50000 for a large rented rig, d=2000 for a small one. The pool answers with that difficulty in your first mining.set_difficulty, before your first share. That is the only moment it matters: vardiff cannot adjust anything until one share has arrived, so until then the starting value decides alone.

The number is rounded to the nearest power of two. On this chain a share target is 2224−1 shifted right by a whole number of bits, so nothing exists between 32,768 and 65,536 — d=50000 becomes 65,536 and d=2000 becomes 2,048. The port's floor still applies: ask for less than the port allows and you get the floor. mining.suggest_difficulty does the same thing if your miner speaks it.

Why can a CPU not get an easier difficulty?

Because the chain has a floor. A difficulty-1 share costs 232 hashes — about 4.3 billion — and no smaller unit of work exists to give out. The CPU port already sits on that floor. Eight cores land a share about every 81 seconds there, and nothing the pool does can make it faster.

My hashrate on the site is lower than on the miner

The pool can only measure the shares it receives, so it estimates your rate over a window and the number moves around. Compare over an hour, not a minute. A persistent gap of more than a few percent usually means rejected shares or a flaky link.

Can I test without an ASIC?

Yes — that is what the CPU port is for. Any BLAKE2b CPU miner that speaks stratum can connect and submit shares, which is enough to confirm your address and worker string are accepted before you repoint real hardware.