Skip to content

We're upgrading our operations to serve you better. Orders ship as usual from Laval, QC. Questions? Contact us

Bitcoin accepted at checkout  |  Ships from Laval, QC, Canada  |  Expert support since 2016

OCEAN_DATUM_ERR Warning

Ocean Pool DATUM Template Error

Ocean Pool DATUM template construction failed — miner connected to ocean.xyz on a DATUM endpoint but the upstream DATUM Gateway is unreachable, the operator's Bitcoin node is unsynchronized, or the stratum side is timing out before a coinbase template lands at the miner. Pool-side hashrate stays at zero while the miner reports it is hashing locally.

Warning — Should be addressed soon

Affected Models: Any Bitcoin miner pointed at Ocean — Bitaxe (Supra, Ultra, Hex, Gamma, GT, Max), NerdMiner, NerdAxe, NerdQAxe, NerdNOS, PiAxe, StealthMiner, Antminer (S9 / S17 / S19 / S21 families running stock or DCENT_OS / Braiins OS+ / LuxOS / Vnish), Whatsminer M-series, Avalon A12-A15 series. DATUM Gateway hosts: any Bitcoin Core 25.x+ node running the official DATUM Gateway daemon (github.com/ocean-mining/datum).

Symptoms

  • Miner reports it is hashing locally (firmware UI shows H/s) but ocean.xyz dashboard shows 0 effective hashrate
  • Bitaxe AxeOS / NerdMiner / Antminer firmware logs reference `pool not ready`, `stratum subscribe failed`, or `template not received`
  • Self-hosted DATUM Gateway log emits `template construction failed`, `getblocktemplate RPC error`, or `coinbase build failed` lines
  • DATUM Gateway log shows `connection refused` or `endpoint unreachable` against `datum.ocean.xyz` or the configured upstream
  • Bitcoin Core node still in Initial Block Download (IBD) — `getblockchaininfo` shows `verificationprogress` < 0.999
  • ocean.xyz worker dashboard shows the worker as `offline` despite a miner that has been hashing for hours
  • Switching the same miner to a non-DATUM Ocean endpoint (`mine.ocean.xyz:3334`) immediately restores share flow
  • Worker / payout address field is empty, contains a Lightning address, or contains a non-Taproot legacy `1...` / `3...` BTC address
  • Stratum handshake completes but `mining.notify` is silent for 30+ seconds before the daemon flips back to `connecting`
  • Self-hosted DATUM Gateway port 3334 is filtered by the home firewall, or `datum_gateway` is not bound to the LAN interface
  • DNS lookup of `datum.ocean.xyz` is intermittent or returns slowly — common on Bell, Rogers, Vidéotron, Cogeco resolvers
  • Template error coincides with Bitcoin Core restart, reorg event, or a recent DCENT_OS / AxeOS / NerdMiner firmware update
  • Antminer running stock Bitmain firmware: stratum dies silently against DATUM endpoints because Bitmain's stratum client doesn't tolerate version-rolling extensions Ocean uses

Step-by-Step Fix

1

Verify Ocean's DATUM service is up. Open https://status.ocean.xyz in a browser and confirm green status on the DATUM endpoint. Cross-check the @OCEANMiningPool feed and the Ocean Discord #status channel. If Ocean's DATUM is in degraded or maintenance state, the entire fleet of operator gateways will return template errors — wait it out, or fail miners over to a non-DATUM Ocean endpoint (`mine.ocean.xyz:3334`) for the duration. This single check resolves about 15% of DATUM tickets at D-Central's bench.

2

Confirm the pool URL, port, and worker format on the miner. Ocean's DATUM endpoint is `datum.ocean.xyz:3334` (TCP, plain stratum) for the public gateway, or `<your-gateway-ip>:3334` if you're running your own. The worker must be a native SegWit `bc1q...` Taproot-compatible Bitcoin address — Ocean enforces a Taproot-mandate payout policy and will silently refuse templates to legacy `1...` / `3...` addresses. No Lightning address, no exchange address, no rig name only. Power-cycle the miner for 30 seconds after saving config — warm reboots don't always clear stuck stratum state.

3

From a laptop on the same LAN, run `nslookup datum.ocean.xyz` and `nc -vz datum.ocean.xyz 3334`. DNS should resolve quickly to a public IP and the TCP test should connect within 2 seconds. If DNS is slow or fails, override the router's resolver to `1.1.1.1` (Cloudflare) and `8.8.8.8` (Google), reboot the router, retry. Canadian residential ISPs (Bell, Rogers, Vidéotron, Cogeco, Shaw) occasionally produce flaky DNS for newer mining hostnames at their default resolvers — not blocked, just slow enough to trip the miner's stratum-handshake timeout.

4

Fail-over test against a non-DATUM Ocean endpoint. Re-point the miner at `mine.ocean.xyz:3334` (Ocean's classic non-DATUM stratum) keeping the same `bc1q...` worker address. Save, power-cycle 30 seconds. If shares start flowing immediately at this endpoint, Ocean's network and your miner are both healthy — the failure is isolated to DATUM. If shares still don't flow, the problem is upstream of the pool (DNS, NAT, ISP, firmware) and you need Tier 2 isolation.

5

If you are running your own DATUM Gateway: check the gateway daemon process. SSH to the host running `datum_gateway`. Run `systemctl status datum-gateway` (or your equivalent service unit). Confirm the binary is alive, not crash-looping, and listening on `0.0.0.0:3334` (use `ss -tlnp | grep 3334`). Tail the gateway log: `journalctl -u datum-gateway -f --since '15 min ago'`. Look for `template construction failed`, `getblocktemplate timeout`, or `connection to bitcoind failed`. Each error string maps to a specific Tier 3 fix below.

6

Verify Bitcoin Core node sync and RPC reachability. Run `bitcoin-cli getblockchaininfo` and confirm `verificationprogress` is `1.0` (or at least `0.9999`+). A node still in IBD cannot serve `getblocktemplate` cleanly — DATUM Gateway will log template errors continuously until the node is fully synced. On a fresh Core install on consumer hardware, full IBD takes 1-3 days. Run `bitcoin-cli getmempoolinfo` to confirm the mempool is populated. Run `bitcoin-cli -rpcwait getnetworkinfo` to confirm RPC connectivity from the gateway host.

7

Check the Bitcoin Core RPC config used by `datum_gateway`. Open the gateway's config file (commonly `/etc/datum-gateway/datum.conf` or per the install method's docs at github.com/ocean-mining/datum). Confirm `rpcuser`, `rpcpassword` (or `rpccookiefile`), `rpchost`, and `rpcport` match what's in `bitcoin.conf`. Test with `curl --user user:pass --data-binary '{"jsonrpc":"1.0","method":"getblocktemplate","params":[{"rules":["segwit"]}]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/`. If you don't get a JSON template back in under 2 seconds, the RPC path is broken — fix that before troubleshooting anything else.

8

Confirm `bitcoind` has the indexes DATUM Gateway expects. At minimum, `bitcoin.conf` should include `server=1`, `rpcallowip=127.0.0.1` (or the gateway's IP), `rpcbind=0.0.0.0` (only if remote), `txindex=1` if you want full mempool template flexibility, and `blockfilterindex=1`. Restart `bitcoind` after changes — the node will rebuild indexes on next start (10 minutes to several hours depending on hardware). Re-test `getblocktemplate` from Step 7 once the indexes are ready.

9

Open the firewall path between miner and DATUM Gateway. If `datum_gateway` runs on a separate box on your LAN, confirm the miner's subnet can reach `<gateway-ip>:3334`. On a typical home router behind CGNAT or a strict firewall, you may need a port-forward or LAN-rule. If the gateway is exposed to the public internet (some operators do this), expect more aggressive abuse traffic — bind it to a Tor onion service for sanity. Sample iptables rule on Linux: `iptables -A INPUT -p tcp --dport 3334 -s 192.168.1.0/24 -j ACCEPT`. Restart, retest from the miner.

10

On Bitaxe (any model — Supra, Ultra, Hex, Gamma, GT, Max), update AxeOS / ESP-Miner to the latest stable release at github.com/skot/ESP-Miner. Some older AxeOS builds had stratum-handshake bugs against version-rolling pools that present as template errors. Flash via the Web UI > System > Update OTA path. For ESP32-based NerdMiner / NerdAxe / NerdQAxe / NerdNOS hardware, follow the firmware's documented update procedure — most use a USB-C OTA flash. D-Central pioneered the Bitaxe Mesh Stand and the Bitaxe Hex heatsink; if you're a customer, contact our support for the firmware version we ship out of the box.

11

On Antminer hardware, flash DCENT_OS — D-Central's open-source Antminer firmware — for clean Ocean DATUM stratum support, per-chip diagnostics, and modern stratum-extension handling. Bitmain's stock stratum client is conservative and does not always tolerate version-rolling extensions Ocean's DATUM endpoint negotiates. DCENT_OS ships a stratum stack rebuilt from the ground up for the open-source community. Alternatives: Braiins OS+, LuxOS, Vnish — all four expose better stratum diagnostics than stock. Get DCENT_OS at https://d-central.tech/dcent-os/ — built by Mining Hackers, for Mining Hackers, source on GitHub at https://github.com/DCentralTech/DCENT_OS.

12

Capture a packet trace of the stratum handshake. From the miner's network or a tap point, run `tcpdump -i any -w /tmp/datum.pcap host datum.ocean.xyz and port 3334` for 2 minutes while the miner attempts to connect. Open the pcap in Wireshark, filter on `tcp.port == 3334`, and look for: TCP SYN → SYN-ACK → ACK (network OK), then JSON `mining.subscribe` → `mining.notify` (stratum OK), or `mining.subscribe` with no response (pool-side issue), or no SYN-ACK (network filtering). This isolates client vs network vs pool in 5 minutes flat.

13

Restart `datum_gateway` cleanly after Bitcoin Core is healthy. Some gateway builds cache an unhealthy upstream RPC connection on first start — the only way out is a clean restart once the node is at tip. `systemctl restart datum-gateway` on a systemd host, or relaunch the binary in your terminal multiplexer. Tail the log on restart: the first 60 seconds should emit `connecting to bitcoind`, `RPC handshake OK`, and `stratum listening on 0.0.0.0:3334`. If any of those don't appear, the gateway has a config or network problem — re-walk Steps 7-9.

14

Verify the worker payout address on Ocean's web dashboard. Log in to ocean.xyz with the `bc1q...` address you configured on the miner. Confirm the address shows up under your account, has the correct Taproot-compatible format, and that the worker name (the part after the period in `bc1q...XYZ.workername`) matches what the miner is sending. Mismatched workers can authenticate (Ocean is permissive on workername) but can produce confusing template-acceptance behaviour — clean this up before assuming it's a node-side issue.

15

Run a 30-minute soak test. After applying the fix, leave the miner alone for 30 minutes. Check ocean.xyz dashboard at the 5-, 15-, and 30-minute marks. Effective hashrate should rise from 0 to a value within ±15% of the miner's local H/s (variance window is wider than other pools because Ocean's payout is per-block per-miner not per-share averaged). If hashrate is stable and shares are landing, you're fixed. If it's flapping, return to Step 12 and capture a longer trace — a flapping symptom usually means upstream NAT, ISP backbone routing, or DATUM Gateway memory leak (rare, but documented in the github.com/ocean-mining/datum issues).

16

If you are running your own DATUM Gateway, harden it for production. Bind to localhost-only and front it with Tor for inbound miner connections (datum.conf supports a `listener_tor` config block — see Ocean's official docs). Set up Prometheus / textfile exporter on `datum_gateway` log lines so you alert on `template construction failed` rate-of-change. Run the gateway as a non-root systemd unit. Keep `bitcoind` on a separate user, separate disk, and back up `wallet.dat` (if used) off-host. Sovereign template construction is a privilege; harden accordingly.

17

Stop DIY and engage D-Central when: (a) DATUM Gateway log shows `template construction failed` at high rate against a fully synced node and you've ruled out RPC, txindex, and firewall, (b) you want the Mining Hackers to deploy a turnkey DATUM Gateway + Bitcoin Core stack on dedicated hardware, (c) Antminer hardware needs DCENT_OS deployed with a known-good Ocean DATUM stratum config, (d) Bitaxe / NerdMiner firmware is suspect and you want a clean flash + Ocean DATUM bring-up, (e) you're standing up Ocean DATUM as part of a hosting/colo deployment in Canada, or (f) physical damage on the miner is suspected. Book at https://d-central.tech/services/asic-repair/ — or hit Discord for the open-source firmware crew.

When to Seek Professional Repair

If the steps above do not resolve the issue, or if you are not comfortable performing these repairs yourself, professional service is recommended. Attempting advanced repairs without proper equipment can cause further damage.

Related Error Codes

Still Having Issues?

Our team of Bitcoin Mining Hackers has been repairing ASIC miners since 2016. We have seen it all and fixed it all. Get a professional diagnosis.