github.com/gcash/bchd
v0.22.2
#3787 most downloaded on Go modules
gcash/bchd
What this package is like to depend on
Last release today
22 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 27 of 27 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
132 releases · first in 2018
26 releases in the last 12 months
see the full history below
Release timeline
132 releases · Jul 2018 to Aug 2026Releases
latest 60 of 132-
v0.22.3-0.20260822190104-e826a4e00fa622 Aug 2026 pre-releaseNothing published for this version
-
v0.22.3-0.20260806012119-f835ad37e92a06 Aug 2026 pre-releaseNothing published for this version
-
v0.22.3-0.20260726034531-b6f725caa30926 Jul 2026 pre-releaseNothing published for this version
-
v0.22.226 Jul 2026Release notes
Open source →Consensus & Network
- Only arm a peer stall deadline for a
getblockswith a non-zero stop hash. An open-endedgetblocksneeds no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317). - Stop replying to
getblockswith an emptynotfoundwhen pruned. - Fix a hang on shutdown caused by a blocking queue send to a peer that had already quit.
- Always signal the send completion channel when serving a merkle block, which could otherwise wedge a peer's input handler.
- Fix two data races in the connection manager on
ConnReq.Addr. - Log a warning when a transaction is relayed to no peer, which happens when its fee rate is below every peer's fee filter.
Mining
- Pad the coinbase to the minimum transaction size enforced at the block height. Block generation was permanently broken on regtest above height 1000 and simnet above 3000.
- Set the Upgrade9 behavior flag in
CheckConnectBlockTemplate, which rejected valid CashToken transactions ingetblocktemplate.
RPC & gRPC
- Match transaction subscriptions on the address funding an input, so spends of outputs the subscription did not watch arrive now notify. Confirmed parents require
--txindex. - Report the missing parent rather than "already have transaction" when submitting a transaction held in the orphan pool, matching BCHN.
- Make the
estimatefeenblocksparameter optional, matching BCHN and Bitcoin ABC 0.19.1.
Database
- Fix a panic when a block rolls the block store over to a new flat file. The panic was recovered while the file lock was held, leaving the database wedged rather than crashing.
Security
- Fix a CashTokens consensus rule violation allowing minting NFT forgery. The authorization check shared one flag across all output categories, so a single authorized minting output authorized every other one in the same transaction. Reported by 0xaudron.
- Fix a remotely triggerable crash in the committed filter handlers, which dereferenced a missing index.
--fastsyncalso advertisedNODE_CFwithout maintaining one. - Reject raw transactions with trailing bytes in
decoderawtransactionandsendrawtransaction, which were previously discarded and the transaction relayed.
Build & Packaging
- Publish the Docker image to GHCR on each release tag.
- Rewrite the deprecated
io/ioutilusage go-bindata emits, with amake bindatatarget so it survives regeneration. - Update dependencies, including
google.golang.org/grpc,golang.org/x/crypto, andgolang.org/x/net.
Other
- Export
bchec.ErrInvalidSquareRootfor use witherrors.Is. - Modernize loops to range over integers, and adopt
slices.Backwardandstrings.Builder. - Assert the CHIP-2021-05 hashing density limit in the VM limits tests, which previously carried a check that could never execute.
- Fail rather than skip in the invalid VMB vector tests when a vector executes without error.
- Fix flaky address manager tests by generating only routable addresses.
- Removed support for plan9.
Release notes
Open source →Consensus & Network
- Only arm a peer stall deadline for a
getblockswith a non-zero stop hash. An open-endedgetblocksneeds no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317). - Stop replying to
getblockswith an emptynotfoundwhen pruned. - Fix a hang on shutdown caused by a blocking queue send to a peer that had already quit.
- Always signal the send completion channel when serving a merkle block, which could otherwise wedge a peer's input handler.
- Fix two data races in the connection manager on
ConnReq.Addr. - Log a warning when a transaction is relayed to no peer, which happens when its fee rate is below every peer's fee filter.
Mining
- Pad the coinbase to the minimum transaction size enforced at the block height. Block generation was permanently broken on regtest above height 1000 and simnet above 3000.
- Set the Upgrade9 behavior flag in
CheckConnectBlockTemplate, which rejected valid CashToken transactions ingetblocktemplate.
RPC & gRPC
- Match transaction subscriptions on the address funding an input, so spends of outputs the subscription did not watch arrive now notify. Confirmed parents require
--txindex. - Report the missing parent rather than "already have transaction" when submitting a transaction held in the orphan pool, matching BCHN.
- Make the
estimatefeenblocksparameter optional, matching BCHN and Bitcoin ABC 0.19.1.
Database
- Fix a panic when a block rolls the block store over to a new flat file. The panic was recovered while the file lock was held, leaving the database wedged rather than crashing.
Security
- Fix a CashTokens consensus rule violation allowing minting NFT forgery. The authorization check shared one flag across all output categories, so a single authorized minting output authorized every other one in the same transaction. Reported by 0xaudron.
- Fix a remotely triggerable crash in the committed filter handlers, which dereferenced a missing index.
--fastsyncalso advertisedNODE_CFwithout maintaining one. - Reject raw transactions with trailing bytes in
decoderawtransactionandsendrawtransaction, which were previously discarded and the transaction relayed.
Build & Packaging
- Publish the Docker image to GHCR on each release tag.
- Rewrite the deprecated
io/ioutilusage go-bindata emits, with amake bindatatarget so it survives regeneration. - Update dependencies, including
google.golang.org/grpc,golang.org/x/crypto, andgolang.org/x/net.
Other
- Export
bchec.ErrInvalidSquareRootfor use witherrors.Is. - Modernize loops to range over integers, and adopt
slices.Backwardandstrings.Builder. - Assert the CHIP-2021-05 hashing density limit in the VM limits tests, which previously carried a check that could never execute.
- Fail rather than skip in the invalid VMB vector tests when a vector executes without error.
- Fix flaky address manager tests by generating only routable addresses.
- Removed support for plan9.
Release notes
Open source →Consensus & Network
- Only arm a peer stall deadline for a
getblockswith a non-zero stop hash. An open-endedgetblocksneeds no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317). - Stop replying to
getblockswith an emptynotfoundwhen pruned. - Fix a hang on shutdown caused by a blocking queue send to a peer that had already quit.
- Always signal the send completion channel when serving a merkle block, which could otherwise wedge a peer's input handler.
- Fix two data races in the connection manager on
ConnReq.Addr. - Log a warning when a transaction is relayed to no peer, which happens when its fee rate is below every peer's fee filter.
Mining
- Pad the coinbase to the minimum transaction size enforced at the block height. Block generation was permanently broken on regtest above height 1000 and simnet above 3000.
- Set the Upgrade9 behavior flag in
CheckConnectBlockTemplate, which rejected valid CashToken transactions ingetblocktemplate.
RPC & gRPC
- Match transaction subscriptions on the address funding an input, so spends of outputs the subscription did not watch arrive now notify. Confirmed parents require
--txindex. - Report the missing parent rather than "already have transaction" when submitting a transaction held in the orphan pool, matching BCHN.
- Make the
estimatefeenblocksparameter optional, matching BCHN and Bitcoin ABC 0.19.1.
Database
- Fix a panic when a block rolls the block store over to a new flat file. The panic was recovered while the file lock was held, leaving the database wedged rather than crashing.
Security
- Fix a CashTokens consensus rule violation allowing minting NFT forgery. The authorization check shared one flag across all output categories, so a single authorized minting output authorized every other one in the same transaction. Reported by 0xaudron.
- Fix a remotely triggerable crash in the committed filter handlers, which dereferenced a missing index.
--fastsyncalso advertisedNODE_CFwithout maintaining one. - Reject raw transactions with trailing bytes in
decoderawtransactionandsendrawtransaction, which were previously discarded and the transaction relayed.
Build & Packaging
- Publish the Docker image to GHCR on each release tag.
- Rewrite the deprecated
io/ioutilusage go-bindata emits, with amake bindatatarget so it survives regeneration. - Update dependencies, including
google.golang.org/grpc,golang.org/x/crypto, andgolang.org/x/net.
Other
- Export
bchec.ErrInvalidSquareRootfor use witherrors.Is. - Modernize loops to range over integers, and adopt
slices.Backwardandstrings.Builder. - Assert the CHIP-2021-05 hashing density limit in the VM limits tests, which previously carried a check that could never execute.
- Fail rather than skip in the invalid VMB vector tests when a vector executes without error.
- Fix flaky address manager tests by generating only routable addresses.
- Only arm a peer stall deadline for a
-
v0.22.2-0.20260725040657-3524fade54c725 Jul 2026 pre-releaseNothing published for this version
-
v0.22.2-0.20260715183033-1c26e26d8c4e15 Jul 2026 pre-releaseNothing published for this version
-
v0.22.2-0.20260713045753-3f8fedbee76e13 Jul 2026 pre-releaseNothing published for this version
-
v0.22.2-0.20260703212018-c59a2d12300603 Jul 2026 pre-releaseNothing published for this version
-
v0.22.130 Jun 2026Release notes
Open source →Consensus & Network
- Remove the defunct
dnsseed.electroncash.deDNS seed.
Mining
- Include the Upgrade9 (CashTokens) script flags when building block templates. Templates were previously validated with the bare
StandardVerifyFlags, so on token-active networks valid CashToken transactions already in the mempool were dropped from the template, producing empty or near-empty blocks; the flags are now computed the same way the mempool and consensus block validation do.
Other
- Modernize
sync/atomicusage with the typed atomic APIs and adoptWaitGroup.Go.
Release notes
Open source →Consensus & Network
- Remove the defunct
dnsseed.electroncash.deDNS seed.
Mining
- Include the Upgrade9 (CashTokens) script flags when building block templates. Templates were validated with the bare
StandardVerifyFlags, so on token-active networks valid CashToken transactions were dropped from the template, producing empty or near-empty blocks.
Other
- Modernize
sync/atomicusage with the typed atomic APIs and adoptWaitGroup.Go.
- Remove the defunct
-
v0.22.1-0.20260608012011-7d6c1802892408 Jun 2026 pre-releaseNothing published for this version
-
v0.22.1-0.20260528043118-5476365ae52928 May 2026 pre-releaseNothing published for this version
-
v0.22.1-0.20260516204940-bc6f5203f53a16 May 2026 pre-releaseNothing published for this version
-
v0.22.023 Apr 2026Release notes
Open source →This release adds support for the May 15, 2026 Bitcoin Cash network upgrade ("upgrade12"). All node operators must upgrade before activation to stay in consensus.
What's new
- CHIP-2021-05 — Bounded looping operations (
OP_BEGIN/OP_UNTIL) - CHIP-2025-05 Functions — Function definition and invocation (
OP_DEFINE/OP_INVOKE) - CHIP-2025-05 Bitwise — Re-enables
OP_INVERT,OP_LSHIFTNUM,OP_RSHIFTNUM,OP_LSHIFTBIN,OP_RSHIFTBIN - CHIP-2024-12 P2S — Pay-to-Script standardization
- VMB test vectors for all of the above
Activation
Network MTP activation Mainnet / testnet3 / testnet4 2026-05-15 12:00 UTC Chipnet 2025-11-15 12:00 UTC (already active) Regtest / simnet always active Upgrade notes
- No database migration required.
- Pre-upgrade script types (P2PKH, P2SH20, P2SH32, etc.) continue to behave as before.
- Upgrade before May 15, 2026 to avoid consensus divergence.
Full Changelog: v0.21.1...v0.22.0
Release notes
Open source →Consensus & Network
- Add network parameters and activation logic for the May 15, 2026 BCH upgrade (Upgrade12), gating the new script flags by activation time across chains.
- Implement CHIP-2024-12 P2S (Pay to Script).
- Implement CHIP-2025-05 Functions: function definition and invocation operations.
- Implement CHIP-2021-05 Loops: bounded looping operations.
- Implement CHIP-2025-05: re-enable the bitwise opcodes OP_INVERT, OP_2MUL, OP_2DIV, OP_LSHIFT, and OP_RSHIFT.
- Align Upgrade12 consensus, policy, and VMB tests with BCHN, including corrected operation-cost accounting.
Security
- Fix CVE-2018-17145 (inv-message memory-exhaustion denial-of-service vector).
Build & Packaging
- Bump the Dockerfile to the latest Go release and trim the Docker build context.
Other
- Add VMB (VM bytecode) test vectors for the May 2026 upgrade covering bitwise ops, loops, functions, and P2S.
- CHIP-2021-05 — Bounded looping operations (
-
v0.21.2-0.20260331193557-7a46109b845c31 Mar 2026 pre-releaseNothing published for this version
-
v0.21.2-0.20260303174748-2162090d407f03 Mar 2026 pre-releaseNothing published for this version
-
v0.21.2-0.20260212225254-185a2f768d0512 Feb 2026 pre-releaseNothing published for this version
-
v0.21.2-0.20260111080613-4572cac9744d11 Jan 2026 pre-releaseNothing published for this version
-
v0.21.2-0.20251220030900-8d82a6b12ff620 Dec 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20251121205757-ba377783960d21 Nov 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20251106202601-65d8b567d18f06 Nov 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20251017204407-2eb8c689de4117 Oct 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250923092711-b74cee1a21f323 Sep 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250913202751-7f509dd2928213 Sep 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250901222312-51ac5e1f2c2a01 Sep 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250716234315-a2ee1d8a33a516 Jul 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250604224113-491b12332b6204 Jun 2025 pre-releaseNothing published for this version
-
v0.21.2-0.20250528195539-f905503c967f28 May 2025 pre-releaseNothing published for this version
-
v0.21.119 May 2025Release notes
Open source →- Fixed "go get: module source tree too large" issue
- Reduced size for json tests
- Refactor: use the built-in max/min to simplify the code
Release notes
Open source →Build & Packaging
- Gzip test fixtures and ignore
node_modulesto dramatically reduce the module/package size, resolving "module source tree too large" errors when installing through the Go module proxy.
-
v0.21.1-0.20250517034232-72c24139a85e17 May 2025 pre-releaseNothing published for this version
-
v0.21.1-0.20250514010404-ccedcae68ea614 May 2025 pre-releaseNothing published for this version
-
v0.20.015 Jan 2025Release notes
Open source →- Ensure CashToken data is populated correctly for gRPC endpoints.
- Update README.md with accurate install directions.
- A few minor memory improvements.
- Update GW RPC tests.
Release notes
Open source →Consensus & Network
- Add full support for the BCH May 2023 network upgrade (Upgrade 9): native CashTokens, new token-aware opcodes, P2SH32 outputs, and updated transaction size limits (#545).
- Implement ABLA (Adaptive Blocksize Limit Algorithm) for the dynamic block size limit, with state persisted to the database and a fixed-size config option (#545, #553).
- Add chipnet support and bring TestNet4 onto the correct network magic bytes with updated chain parameters (#545).
- Bump the P2P protocol version to 70016 and update DNS seeds to match BCHN, adding bchd.cash seeds.
- Add support for receiving the
sendaddrv2message from peers, including before verack (#554). - Fix a consensus incompatibility in
txscript.IsUnspendablethat diverged from other implementations and posed a fork/UTXO-commitment risk (#475).
Mempool & Policy
- Actively prevent network discovery and outbound connections when running in regression-test (regnet) mode (#519).
RPC & gRPC
- Add the
signrawtransactionwithkeyJSON-RPC method (#497). - Expose CashTokens token data and TestNet4 in the gRPC (bchrpc) API, and populate token data correctly across endpoints.
- Increase RPC read/write timeouts to 5 minutes for expensive lookups (#515).
Wallet & Indexing
- Fix an SLP graph indexer bug and correct SLP index map allocation.
Performance
- Reduce map allocations during block processing and avoid slice reallocations in
processOrphans.
Security
- Fix an
opcodeCheckSigbug where input token data was not passed to the BIP143 signature hash under certain conditions (#552).
Build & Packaging
- Update to Go 1.23.4 and migrate CI from Travis to GitHub Actions.
- Fix
bchctlin the Dockerfile and update the Kubernetes deployment to handle certificates.
Bug Fixes
- Fix a bug when cloning the script engine stacks used by
meep(#506).
-
v0.20.0-rc221 Dec 2024 pre-releaseRelease notes
Open source →- Updated seeds to match BCHN and add newly restored BCHD seeds.
- Fixed syncing issue with nodes supporting sendaddrv2 messages.
- Fixed syncing testnet4 with SLP indexes.
-
v0.20.0-rc1.0.20241221041158-80f6be1357dd21 Dec 2024 pre-releaseNothing published for this version
-
v0.20.0-rc1.0.20241221034333-2f3d7431e3ff21 Dec 2024 pre-releaseNothing published for this version
-
v0.20.0-rc1.0.20241221031821-7c58c436927321 Dec 2024 pre-releaseNothing published for this version
-
v0.20.0-rc1.0.20241220230735-8a0f9278467d20 Dec 2024 pre-releaseNothing published for this version
-
v0.20.0-rc120 Dec 2024 pre-releaseRelease notes
Open source →This is a huge milestone. Finally are back in consensus with the rest of the BCH ecosystem!
-
v0.19.1-0.20240314222614-6e56fb2c422b14 Mar 2024 pre-releaseNothing published for this version
-
v0.19.1-0.20231222021202-bf5eafcd009e22 Dec 2023 pre-releaseNothing published for this version
-
v0.19.1-0.20231026203040-4957addd239026 Oct 2023 pre-releaseNothing published for this version
-
v0.19.1-0.20230816083225-909c8285a07a16 Aug 2023 pre-releaseNothing published for this version
-
v0.19.1-0.20221003013456-8d374526a86003 Oct 2022 pre-releaseNothing published for this version
-
v0.19.1-0.20220518215105-5964724713ae18 May 2022 pre-releaseNothing published for this version
-
v0.19.1-0.20220518211639-0fed8286bbe418 May 2022 pre-releaseNothing published for this version
-
v0.19.005 May 2022Release notes
Open source →Consensus & Network
- Implement the May 2022 BCH hard fork: 64-bit script integers, native introspection opcodes, and OP_MUL, with fork activation and new TestNet4 parameters (#499).
Mempool & Policy
- Treat
OP_RETURN OP_1NEGATEas a standard transaction (#476).
RPC & gRPC
- Add HTTPS support to the gRPC proxy (#478).
Bug Fixes
- Fix
NullDataScripthandling and standardness tests (#477).
-
v0.18.2-0.20220430161748-40ca3f1508b230 Apr 2022 pre-releaseNothing published for this version
-
v0.18.2-0.20210902194741-5d17f921971102 Sep 2021 pre-releaseNothing published for this version
-
v0.18.2-0.20210804191522-d9a20227c01904 Aug 2021 pre-releaseNothing published for this version
-
v0.18.2-0.20210614162947-a37c369d730814 Jun 2021 pre-releaseNothing published for this version
-
v0.18.2-0.20210611013410-5e937f2dd6d911 Jun 2021 pre-releaseNothing published for this version
-
v0.18.124 May 2021Release notes
Open source →Consensus & Network
- Improve peer and sync-manager candidate selection, including a regtest
isSyncCandidatefix (#470). - Isolate height checks in peer syncing (#471).
Wallet & Indexing
- Guard against nil buckets in the address, cfilter, SLP, and tx indexers to prevent panics (#473).
Other
- Promote select peer logging messages from trace to debug level (#469).
- Improve peer and sync-manager candidate selection, including a regtest
-
v0.18.1-0.20210524104807-34d7fe5c34b224 May 2021 pre-releaseNothing published for this version
-
v0.18.1-0.20210524044114-dc643242af4d24 May 2021 pre-releaseNothing published for this version
-
v0.18.1-0.20210522092846-10614544cf0022 May 2021 pre-releaseNothing published for this version
-
v0.18.1-0.20210518030245-193c9187a31d18 May 2021 pre-releaseNothing published for this version
-
v0.18.013 May 2021Release notes
Open source →Consensus & Network
- Avoid connecting to Bitcoin ABC nodes and prevent the connection manager from dialing duplicate addresses (#450).
- Remove the dead
seed-bch.bitcoinforks.orgDNS seed (#443). - Add a clean-shutdown check in
updateSyncPeerto avoid races during node shutdown (#442).
Mempool & Policy
- Allow multiple OP_RETURN (null-data) outputs per transaction via a configurable policy (#467).
Mining
- Add a
SignMuSigfunction to thebchecpackage (#457).
RPC & gRPC
- Add SLP gRPC/REST endpoints and fields:
GetParsedSlpScript,GetTrustedValidation,GetTokenMetadata, andCheckSlpTransaction(withDisableSlpBurnErrors), plus SLP token metadata/addresses onGetTransaction,GetUnspentOutput, and the transaction subscription filters (#387, #458). - Validate SLP transactions by default in
SubmitTransaction(clients must opt out viaskip_slp_validity_check) to guard against accidental token burns (#387). - Add a gRPC-gateway REST/JSON proxy server (with CORS and no-cache middleware) and regenerated Swagger definitions for the bchrpc API (#387).
- Return pubkey (P2PK) outputs from
GetAddressUnspentOutputs(#432).
Wallet & Indexing
- Add the SLP (Simple Ledger Protocol) token index, validating SLP/NFT1 token transactions (genesis, mint, send, mint-baton tracking, burn detection) with a new
--slpindexconfig option (#387, #452). - Add SLP Graph Search, building a token transaction graph to support trusted client-side validation (#451).
- Fix index-manager handling of indexers whose
StartBlock()height is greater than 0, so SLP and other late-starting indexes sync correctly (#455). - Refuse to start an index on a pruned node (print an error and exit) and prevent a crash when SLP index initialization fails (#433).
Performance
- Flush the UTXO cache during state reconstruction and correctly set
lastFlushHashon init, with tests for a hard shutdown mid-flush (#445, #446, #447).
Build & Packaging
- Add Prometheus metrics support and per-component shutdown logging (#453).
- Add
darwin/arm64(Apple Silicon) binary builds. - Add
RegressionTestAnyHostandRegressionTestNoResetregtest options for Docker-based setups (#462).
Bug Fixes
- Fix a panic in the fee estimator triggered by chain reorgs (#434).
- Fix a crash related to unconfirmed NFT child tokens in the gRPC server (#387).
-
v0.17.2-0.20210506191348-d969fadbed8006 May 2021 pre-releaseNothing published for this version
-
v0.17.2-0.20210417012214-cd08acb5ac9c17 Apr 2021 pre-releaseNothing published for this version
-
v0.17.2-0.20210409003819-79009c5655be09 Apr 2021 pre-releaseNothing published for this version
-
v0.17.2-0.20210408230630-5b35175470f008 Apr 2021 pre-releaseNothing published for this version