Skip to content

backport : Merge bitcoin#30264, 29607 , 30047, 3006, 27905#7296

Draft
vijaydasmp wants to merge 5 commits into
dashpay:developfrom
vijaydasmp:May_2026_03
Draft

backport : Merge bitcoin#30264, 29607 , 30047, 3006, 27905#7296
vijaydasmp wants to merge 5 commits into
dashpay:developfrom
vijaydasmp:May_2026_03

Conversation

@vijaydasmp
Copy link
Copy Markdown

No description provided.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 29, 2026

✅ No Merge Conflicts Detected

This PR currently has no conflicts with other open PRs.

fanquake and others added 5 commits May 18, 2026 09:16
…nsaction`

ab98e6f test: add coverage for errors for `combinerawtransaction` RPC (brunoerg)

Pull request description:

  This PR adds test coverage for the following errors for the `combinerawtransaction` RPC:

  * Tx decode failed
  * Missing transactions
  * Input not found or already spent

  For reference: https://maflcko.github.io/b-c-cov/total.coverage/src/rpc/rawtransaction.cpp.gcov.html

ACKs for top commit:
  maflcko:
    lgtm ACK ab98e6f
  tdb3:
    ACK ab98e6f

Tree-SHA512: 8a133c25dad2e1b236e0278a88796f60f763e3fd6fbbc080f926bb23f9dcc55599aa242d6e0c4ec15a179d9ded10a1f17ee5b6063719107ea84e6099f10416b2
…ch32 encoding

07f6417 Reduce memory copying operations in bech32 encode (Lőrinc)
d5ece3c Reserve hrp memory in Decode and LocateErrors (Lőrinc)

Pull request description:

  Started optimizing the base conversions in [TryParseHex](bitcoin#29458), [Base58](bitcoin#29473) and [IsSpace](bitcoin#29602) - this is the next step.

  Part of this change was already merged in bitcoin#30047, which made decoding `~26%` faster.

  Here I've reduced the memory reallocations and copying operations in bech32 encode, making it `~15%` faster.

  >  make && ./src/bench/bench_bitcoin --filter='Bech32Encode' --min-time=1000

  Before:
  ```
  |             ns/byte |              byte/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |               19.97 |       50,074,562.72 |    0.1% |      1.06 | `Bech32Encode`
  ```

  After:
  ```
  |             ns/byte |              byte/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |               17.33 |       57,687,668.20 |    0.1% |      1.10 | `Bech32Encode`
  ```

ACKs for top commit:
  josibake:
    ACK bitcoin@07f6417
  sipa:
    utACK 07f6417
  achow101:
    ACK 07f6417

Tree-SHA512: 511885217d044ad7ef2bdf9203b8e0b94eec8b279bc193bb7e63e29ab868df6d21e9e4c7a24390358e1f9c131447ee42039df72edcf1e2b11e1856eb2b3e10dd
7f3f6c6 refactor: replace hardcoded numbers (Lőrinc)
5676aec refactor: Model the bech32 charlimit as an Enum (josibake)

Pull request description:

  Broken out from bitcoin#28122

  ---

  Bech32(m) was defined with a 90 character limit so that certain guarantees for error detection could be made for segwit addresses (see https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki#checksum-design).

  However, there is nothing about the encoding scheme itself that requires a limit of 90 and in practice bech32(m) is being used without the 90 char limit (e.g. lightning invoices, silent payments). Further, increasing the character limit doesn't do away with error detection, it simply changes the guarantee.

  The primary motivation for this change is for being able to parse BIP352 v0 silent payment addresses (see bitcoin@622c7a9), which require up to 118 characters. In addition to BIP352, modeling the character limit as an enum allows us to easily support new address types that use bech32m and specify their own character limit.

ACKs for top commit:
  paplorinc:
    re-ACK 7f3f6c6
  achow101:
    ACK 7f3f6c6
  theuni:
    utACK 7f3f6c6

Tree-SHA512: 9c793d657448c1f795093b9f7d4d6dfa431598f48d54e1c899a69fb2f43aeb68b40ca2ff08864eefeeb6627d4171877234b5df0056ff2a2b84415bc3558bd280
fd6a7d3 test: use sleepy wait-for-log in reindex readonly (Matthew Zipkin)

Pull request description:

  Also rename the busy wait-for-log method to prevent recurrence. See bitcoin#27039 (comment)

ACKs for top commit:
  maflcko:
    utACK fd6a7d3
  achow101:
    ACK fd6a7d3
  tdb3:
    ACK for fd6a7d3
  rkrux:
    ACK [fd6a7d3](bitcoin@fd6a7d3)

Tree-SHA512: 7ff0574833df1ec843159b35ee88b8bb345a513ac13ed0b72abd1bf330c454a3f9df4d927871b9e3d37bfcc07542b06ef63acef8e822cd18499adae8cbb0cda8
…ndex

e639364 validation: add missing insert to m_dirty_blockindex (Martin Zumsande)

Pull request description:

  When the status of a block index is changed, we must add it to `m_dirty_blockindex` or the change might not get persisted to disk.
  This is missing from one spot in `FindMostWorkChain()`, where `BLOCK_FAILED_CHILD` is set.
  Since we have [code](https://github.com/bitcoin/bitcoin/blob/f0758d8a6696657269d9c057e7aa079ffa9e1c16/src/node/blockstorage.cpp#L284-L287) that later sets missing `BLOCK_FAILED_CHILD` during the next startup, I don't think that this can lead to bad block indexes in practice, but I still think it's worth fixing.

ACKs for top commit:
  TheCharlatan:
    ACK e639364
  stickies-v:
    ACK e639364

Tree-SHA512: a97af9c173e31b90b677a1f95de822e08078d78013de5fa5fe4c3bec06f45d6e1823b7694cdacb887d031329e4b4afc6a2003916e0ae131279dee71f43e1f478
@vijaydasmp vijaydasmp changed the title backport : Merge bitcoin-core/gui#758, 27491 backport :Merge bitcoin#30264, 29607 , 30047, 3006, 27905 May 18, 2026
@vijaydasmp vijaydasmp changed the title backport :Merge bitcoin#30264, 29607 , 30047, 3006, 27905 backport:Merge bitcoin#30264, 29607 , 30047, 3006, 27905 May 18, 2026
@vijaydasmp vijaydasmp changed the title backport:Merge bitcoin#30264, 29607 , 30047, 3006, 27905 backport : Merge bitcoin#30264, 29607 , 30047, 3006, 27905 May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants