PackageTrack

Go modules · #2751 by repository stars

github.com/gcash/bchd

v0.22.2gcash/bchd

Release timeline

132 releases since 2018
2020202220242026

Releases

  1. v0.22.3-0.20260822190104-e826a4e00fa622 Aug 2026pre-release

    Nothing published for this version

  2. v0.22.3-0.20260806012119-f835ad37e92a6 Aug 2026pre-release

    Nothing published for this version

  3. v0.22.3-0.20260726034531-b6f725caa30926 Jul 2026pre-release

    Nothing published for this version

  4. v0.22.226 Jul 2026
    Release notes

    Consensus & Network

    • Only arm a peer stall deadline for a getblocks with a non-zero stop hash. An open-ended getblocks needs no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317).
    • Stop replying to getblocks with an empty notfound when 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 in getblocktemplate.

    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 estimatefee nblocks parameter 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. --fastsync also advertised NODE_CF without maintaining one.
    • Reject raw transactions with trailing bytes in decoderawtransaction and sendrawtransaction, which were previously discarded and the transaction relayed.

    Build & Packaging

    • Publish the Docker image to GHCR on each release tag.
    • Rewrite the deprecated io/ioutil usage go-bindata emits, with a make bindata target so it survives regeneration.
    • Update dependencies, including google.golang.org/grpc, golang.org/x/crypto, and golang.org/x/net.

    Other

    • Export bchec.ErrInvalidSquareRoot for use with errors.Is.
    • Modernize loops to range over integers, and adopt slices.Backward and strings.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.
    Open source →
    Additional notes

    Consensus & Network

    • Only arm a peer stall deadline for a getblocks with a non-zero stop hash. An open-ended getblocks needs no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317).
    • Stop replying to getblocks with an empty notfound when 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 in getblocktemplate.

    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 estimatefee nblocks parameter 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. --fastsync also advertised NODE_CF without maintaining one.
    • Reject raw transactions with trailing bytes in decoderawtransaction and sendrawtransaction, which were previously discarded and the transaction relayed.

    Build & Packaging

    • Publish the Docker image to GHCR on each release tag.
    • Rewrite the deprecated io/ioutil usage go-bindata emits, with a make bindata target so it survives regeneration.
    • Update dependencies, including google.golang.org/grpc, golang.org/x/crypto, and golang.org/x/net.

    Other

    • Export bchec.ErrInvalidSquareRoot for use with errors.Is.
    • Modernize loops to range over integers, and adopt slices.Backward and strings.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.
    Open source →
    Additional notes

    v0.22.2 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
    Additional notes

    Consensus & Network

    • Only arm a peer stall deadline for a getblocks with a non-zero stop hash. An open-ended getblocks needs no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317).
    • Stop replying to getblocks with an empty notfound when 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 in getblocktemplate.

    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 estimatefee nblocks parameter 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. --fastsync also advertised NODE_CF without maintaining one.
    • Reject raw transactions with trailing bytes in decoderawtransaction and sendrawtransaction, which were previously discarded and the transaction relayed.

    Build & Packaging

    • Publish the Docker image to GHCR on each release tag.
    • Rewrite the deprecated io/ioutil usage go-bindata emits, with a make bindata target so it survives regeneration.
    • Update dependencies, including google.golang.org/grpc, golang.org/x/crypto, and golang.org/x/net.

    Other

    • Export bchec.ErrInvalidSquareRoot for use with errors.Is.
    • Modernize loops to range over integers, and adopt slices.Backward and strings.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.
    Open source →
  5. v0.22.2-0.20260725040657-3524fade54c725 Jul 2026pre-release

    Nothing published for this version

  6. v0.22.2-0.20260715183033-1c26e26d8c4e15 Jul 2026pre-release

    Nothing published for this version

  7. v0.22.2-0.20260713045753-3f8fedbee76e13 Jul 2026pre-release

    Nothing published for this version

  8. v0.22.2-0.20260703212018-c59a2d1230063 Jul 2026pre-release

    Nothing published for this version

  9. v0.22.130 Jun 2026
    Release notes

    Consensus & Network

    • Remove the defunct dnsseed.electroncash.de DNS 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/atomic usage with the typed atomic APIs and adopt WaitGroup.Go.
    Open source →
    Additional notes2 sources agree

    Consensus & Network

    • Remove the defunct dnsseed.electroncash.de DNS 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/atomic usage with the typed atomic APIs and adopt WaitGroup.Go.
    Open source →
    Additional notes

    v0.22.1

    Compare

    Choose a tag to compare

    Open source →
  10. v0.22.1-0.20260608012011-7d6c180289248 Jun 2026pre-release

    Nothing published for this version

  11. v0.22.1-0.20260528043118-5476365ae52928 May 2026pre-release

    Nothing published for this version

  12. v0.22.1-0.20260516204940-bc6f5203f53a16 May 2026pre-release

    Nothing published for this version

  13. v0.22.023 Apr 2026
    Release notes

    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

    Open source →
    Additional notes2 sources agree

    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.
    Open source →
    Additional notes

    v0.22.0

    Compare

    Choose a tag to compare

    Open source →
  14. v0.21.2-0.20260331193557-7a46109b845c31 Mar 2026pre-release

    Nothing published for this version

  15. v0.21.2-0.20260303174748-2162090d407f3 Mar 2026pre-release

    Nothing published for this version

  16. v0.21.2-0.20260212225254-185a2f768d0512 Feb 2026pre-release

    Nothing published for this version

  17. v0.21.2-0.20260111080613-4572cac9744d11 Jan 2026pre-release

    Nothing published for this version

  18. v0.21.2-0.20251220030900-8d82a6b12ff620 Dec 2025pre-release

    Nothing published for this version

  19. v0.21.2-0.20251121205757-ba377783960d21 Nov 2025pre-release

    Nothing published for this version

  20. v0.21.2-0.20251106202601-65d8b567d18f6 Nov 2025pre-release

    Nothing published for this version

  21. v0.21.2-0.20251017204407-2eb8c689de4117 Oct 2025pre-release

    Nothing published for this version

  22. v0.21.2-0.20250923092711-b74cee1a21f323 Sept 2025pre-release

    Nothing published for this version

  23. v0.21.2-0.20250913202751-7f509dd2928213 Sept 2025pre-release

    Nothing published for this version

  24. v0.21.2-0.20250901222312-51ac5e1f2c2a1 Sept 2025pre-release

    Nothing published for this version

  25. v0.21.2-0.20250716234315-a2ee1d8a33a516 Jul 2025pre-release

    Nothing published for this version

  26. v0.21.2-0.20250604224113-491b12332b624 Jun 2025pre-release

    Nothing published for this version

  27. v0.21.2-0.20250528195539-f905503c967f28 May 2025pre-release

    Nothing published for this version

  28. v0.21.119 May 2025
    Release notes
    • 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
    Open source →
    Additional notes2 sources agree

    Build & Packaging

    • Gzip test fixtures and ignore node_modules to dramatically reduce the module/package size, resolving "module source tree too large" errors when installing through the Go module proxy.
    Open source →
    Additional notes

    v0.21.1

    Compare

    Choose a tag to compare

    Open source →
  29. v0.21.1-0.20250517034232-72c24139a85e17 May 2025pre-release

    Nothing published for this version

  30. v0.21.1-0.20250514010404-ccedcae68ea614 May 2025pre-release

    Nothing published for this version

  31. v0.20.015 Jan 2025
    Release notes
    • 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.
    Open source →
    Additional notes2 sources agree

    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 sendaddrv2 message from peers, including before verack (#554).
    • Fix a consensus incompatibility in txscript.IsUnspendable that 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 signrawtransactionwithkey JSON-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 opcodeCheckSig bug 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 bchctl in 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).
    Open source →
    Additional notes

    v0.20.0

    Compare

    Choose a tag to compare

    Open source →
  32. v0.20.0-rc221 Dec 2024pre-release
    Release notes
    • 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.
    Open source →
    Additional notes

    v0.20.0-rc2

    Compare

    Choose a tag to compare

    Open source →
  33. v0.20.0-rc1.0.20241221041158-80f6be1357dd21 Dec 2024pre-release

    Nothing published for this version

  34. v0.20.0-rc1.0.20241221034333-2f3d7431e3ff21 Dec 2024pre-release

    Nothing published for this version

  35. v0.20.0-rc1.0.20241221031821-7c58c436927321 Dec 2024pre-release

    Nothing published for this version

  36. v0.20.0-rc1.0.20241220230735-8a0f9278467d20 Dec 2024pre-release

    Nothing published for this version

  37. v0.20.0-rc120 Dec 2024pre-release
    Release notes

    This is a huge milestone. Finally are back in consensus with the rest of the BCH ecosystem!

    Open source →
    Additional notes

    v0.20.0-rc1

    Compare

    Choose a tag to compare

    Open source →
  38. v0.19.1-0.20240314222614-6e56fb2c422b14 Mar 2024pre-release

    Nothing published for this version

  39. v0.19.1-0.20231222021202-bf5eafcd009e22 Dec 2023pre-release

    Nothing published for this version

  40. v0.19.1-0.20231026203040-4957addd239026 Oct 2023pre-release

    Nothing published for this version

  41. v0.19.1-0.20230816083225-909c8285a07a16 Aug 2023pre-release

    Nothing published for this version

  42. v0.19.1-0.20221003013456-8d374526a8603 Oct 2022pre-release

    Nothing published for this version

  43. v0.19.1-0.20220518215105-5964724713ae18 May 2022pre-release

    Nothing published for this version

  44. v0.19.1-0.20220518211639-0fed8286bbe418 May 2022pre-release

    Nothing published for this version

  45. v0.19.05 May 2022
    Release notes
    • Includes changes required for the May 15th, 2022 upgrade. #499
    Open source →
    Additional notes2 sources agree

    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_1NEGATE as a standard transaction (#476).

    RPC & gRPC

    • Add HTTPS support to the gRPC proxy (#478).

    Bug Fixes

    • Fix NullDataScript handling and standardness tests (#477).
    Open source →
    Additional notes

    v0.19.0

    Compare

    Choose a tag to compare

    Open source →
  46. v0.18.2-0.20220430161748-40ca3f1508b230 Apr 2022pre-release

    Nothing published for this version

  47. v0.18.2-0.20210902194741-5d17f92197112 Sept 2021pre-release

    Nothing published for this version

  48. v0.18.2-0.20210804191522-d9a20227c0194 Aug 2021pre-release

    Nothing published for this version

  49. v0.18.2-0.20210614162947-a37c369d730814 Jun 2021pre-release

    Nothing published for this version

  50. v0.18.2-0.20210611013410-5e937f2dd6d911 Jun 2021pre-release

    Nothing published for this version

  51. v0.18.124 May 2021
    Release notes

    This is a maintenance release and we urge all users to upgrade!

    • Peer syncing improvements (#470)
    • Fix panic issue due to nil bucket (#473)
    Open source →
    Additional notes2 sources agree

    Consensus & Network

    • Improve peer and sync-manager candidate selection, including a regtest isSyncCandidate fix (#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).
    Open source →
    Additional notes

    v0.18.1

    Compare

    Choose a tag to compare

    Open source →
  52. v0.18.1-0.20210524104807-34d7fe5c34b224 May 2021pre-release

    Nothing published for this version

  53. v0.18.1-0.20210524044114-dc643242af4d24 May 2021pre-release

    Nothing published for this version

  54. v0.18.1-0.20210522092846-10614544cf0022 May 2021pre-release

    Nothing published for this version

  55. v0.18.1-0.20210518030245-193c9187a31d18 May 2021pre-release

    Nothing published for this version

  56. v0.18.013 May 2021
    Release notes2 sources agree

    Consensus & Network

    • Avoid connecting to Bitcoin ABC nodes and prevent the connection manager from dialing duplicate addresses (#450).
    • Remove the dead seed-bch.bitcoinforks.org DNS seed (#443).
    • Add a clean-shutdown check in updateSyncPeer to 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 SignMuSig function to the bchec package (#457).

    RPC & gRPC

    • Add SLP gRPC/REST endpoints and fields: GetParsedSlpScript, GetTrustedValidation, GetTokenMetadata, and CheckSlpTransaction (with DisableSlpBurnErrors), plus SLP token metadata/addresses on GetTransaction, GetUnspentOutput, and the transaction subscription filters (#387, #458).
    • Validate SLP transactions by default in SubmitTransaction (clients must opt out via skip_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 --slpindex config 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 lastFlushHash on 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 RegressionTestAnyHost and RegressionTestNoReset regtest 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).
    Open source →
  57. v0.17.2-0.20210506191348-d969fadbed806 May 2021pre-release

    Nothing published for this version

  58. v0.17.2-0.20210417012214-cd08acb5ac9c17 Apr 2021pre-release

    Nothing published for this version

  59. v0.17.2-0.20210409003819-79009c5655be9 Apr 2021pre-release

    Nothing published for this version

  60. v0.17.2-0.20210408230630-5b35175470f08 Apr 2021pre-release

    Nothing published for this version