Doichain Core v31.1.6, and a core image that starts on testnet and regtest.
| Component | Image |
|---|---|
| Doichain Core | doichain/core:v31.1.6-1 — Core v31.1.6 (commit 373973af51) with this repository's entrypoint fix |
| ElectrumX | doichain/electrumx:v2.0.0-doi1 — built from Doichain/electrumx v2.0.0-doi1, commit 11877d7b |
| Bitcoin (merge-mining parent) | doichain/bitcoind:v0.20.0 |
| p2pool | doichain/p2pool:v34.0 |
| dApp | doichain/dapp:v0.0.9.117 with mongo:3.2 |
What changed with this tag
- Doichain Core v31.1.6. Two fixes on top of v31.1.5, no consensus change and no reindex: plain
helpworks again — thename_doidescription began with a newline, whichRPCHelpMan::ToString()refuses, and sincehelprenders every command that one string took the whole call down in v31.1.2 through v31.1.5 — andCLIENT_BUGREPORTnow names a repository that accepts issues instead of the archived one. - The core image starts on testnet and regtest again (#8, #9). The entrypoint wrote
bind=into the global section of the generateddoichain.confwhileregtest=1ortestnet=1stood in that same section; Core refuses that, and becausedoichaindis PID 1 the container restart-looped. The bind stays — without it Core derives the onion target as P2P+1, which is the RPC port — it just sits in[regtest]or[test]now. This is why the image is taggedv31.1.6-1:doichain/core:v31.1.6on Docker Hub was pushed at 08:47 UTC on 2026-09-17, the fix landed at 10:22, so that image still carries the old entrypoint.latestcarries that same older build — same digest, pushed at 08:52 — so name the tag in your compose file and do not rely onlatest. - The Dockerfile pins a release tag by default.
ARG DOICHAIN_VERwasfeat/digishield-daa, a branch: two builds of the same Dockerfile could hold different code. - The chain notes say where the chains actually part. The new rules took effect with block 431,017, but that block is on both chains — the old 0.20 nodes accepted it, because Doichain never enforced
nBits. They part at 431,018, where this chain has71d50ff1…4b67and the old onebab49c13…2d34, both on the same parent.getblockhash 431018is the question that tells a node's chain apart; 431,017 proves nothing. Seedocs/stack-31.1.mdand the addendum indocs/history-2026-09.md.
Verified
The entrypoint fix was run one container per network against doichain/core:v31.1.6 with the fixed script mounted in: regtest with the bind under [regtest], testnet under [test], mainnet unchanged and global — each node answering, each reporting its own chain, and the failure reproduced beforehand on the unmodified image.
The chain facts were measured on 2026-09-18 against all four *.doi.works ElectrumX servers, doi-explorer.le-space.de and the explorer of the old chain: tips 432,230 here and 444,404 there, the latter ahead because it kept mining at the old difficulty (~203 M against ~717 M).
Upgrading
From v31.1.5-stack1: pull the new core image and restart. No reindex, no data migration, no change to ElectrumX, bitcoind, p2pool or the dApp.
docker compose -f docker-compose-mining.yml pull doichain
docker compose -f docker-compose-mining.yml up -d doichainA testnet or regtest stack that restart-looped on Config setting for -bind only applied on regtest network when in [regtest] section needs exactly this image; nothing else changes.
Coming from the 0.20.x era, the volume notes of v31.1.5-stack1 still apply: an Opt-In install needs an empty doichain-volume or a doichain-cli migratewallet run first, and an ElectrumX server coming from the 1.15 image needs an empty electrumx-db.