Testing Bitcoin Core 31.0 Release Candidates (tests)

Host: svanstaa  -  PR author: svanstaa

Notes

  • Major versions of Bitcoin Core are released every 6-8 months. See the Life Cycle documentation for full details.

  • When all of the PRs for a release have been merged, Release Candidate 1 (rc1) is tagged. The rc is then tested. If any issues are found, fixes are merged into the branch and a new rc is tagged. This continues until no major issues are found in an rc, and that rc is then considered to be the final release version.

  • To ensure that users don’t experience issues with the new software, it’s essential that the rcs are thoroughly tested. This special review club meeting is for people who want to help with that vital review process.

  • This Bitcoin Core Release Candidate Testing Guide provides guidance for testing the release candidate.

  • The guide is just to get you started on testing, so feel free to read the Release Notes and bring ideas of other things you’d like to test!

Meeting Log

  117:00 <svanstaa> #startmeeting
  217:00 <corebot`> svanstaa: Meeting started at 2026-04-08T17:00+0000
  317:00 <corebot`> svanstaa: Current chairs: svanstaa
  417:00 <corebot`> svanstaa: Useful commands: #action #info #idea #link #topic #motion #vote #close #endmeeting
  517:00 <corebot`> svanstaa: See also: https://hcoop-meetbot.readthedocs.io/en/stable/
  617:00 <corebot`> svanstaa: Participants should now identify themselves with '#here' or with an alias like '#here FirstLast'
  717:00 <marcofleon> hi
  817:00 <svanstaa> Hi everyone, and welcome to the Bitcoin Core Review Club, today about the 31.0 Release Testing Guide!
  917:00 <svanstaa> Thanks you for joining. Even if you are here for the first time, feel free to say hi!
 1017:00 <itamar30> Hi, first time ever...
 1117:00 <janb84> hi
 1217:00 <marcofleon> woo!
 1317:00 <sdmg15> Hi, first time :)
 1417:01 <carloantinarella> Hello everyone!
 1517:01 <svanstaa> Great!
 1617:01 <svanstaa> Also, do not ask for permission to speak, just speak up :)
 1717:01 <svanstaa> Here's the link to the testing guide: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/31.0-Release-Candidate-Testing-Guide
 1817:02 <sdmg15> I've done the steps described in the testing guide, and created an asciinema recording https://asciinema.org/a/906191
 1917:03 <svanstaa> @sdmg15 that is an innovative way to go about it
 2017:04 <svanstaa> Lets go through this chapter by chapter
 2117:04 <svanstaa> First preparations: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/31.0-Release-Candidate-Testing-Guide#preparation
 2217:05 <svanstaa> Who had issus or comments on building the client, and setting up the test environment?
 2317:05 <svanstaa> *issues
 2417:06 <marcofleon> The steps were laid out clearly for me, nicely done svanstaa
 2517:07 <carloantinarella> I only tried compiling from source, no issues whatsoever
 2617:07 <svanstaa> Great! Ok, lets look at 1. Mempool
 2717:08 <svanstaa> Who did the test? Any issues or peculiar observations?
 2817:09 <sdmg15> I think the 1.3 Cluster mempool: Cluster Limits Enforcement is the one I struggled testing
 2917:09 <svanstaa> Why did we set up the child txn with a higher fee than the parent?
 3017:09 <svanstaa> @sdmg15. where did you get stuck?
 3117:10 <svanstaa> (this was the tricky one, I admit)
 3217:10 <sdmg15> The issue was just that I created a script.sh and then had to export the aliase commands :)
 3317:10 <janb84> sdmg15: didn't a simple copy and paste didn't work ?
 3417:11 <sdmg15> Haven't tried copy-pasting, since the script was long I just thought I should put it in a file
 3517:12 <svanstaa> Did it show expected behaviour then?
 3617:13 <sdmg15> Yes I saw the expected behavior, in my recording too. thanks for the instructions.
 3717:13 <carloantinarella> I also had similar issue with aliases. Aliases are lost if you execute as a separate script. I sourced it instead and it worked fine
 3817:13 <itamar30> I first tried copy and paste, but the program stopped and my terminal closed
 3917:14 <janb84> ok lessens learned for the next guide :) tnx all
 4017:14 <svanstaa> :)
 4117:14 <marcofleon> Child txn had a higher fee than the parent to ensure they were merged as a single chunk
 4217:15 <svanstaa> @marcofleon correct!
 4317:15 <marcofleon> Hoping my terminology is correct...
 4417:15 <svanstaa> @janb84 yes we will keep the test cases simpler next time
 4517:16 <svanstaa> on to the next one: 2. private broadcast
 4617:16 <svanstaa> What was this about?
 4717:17 <svanstaa> Quick summary, and observed behaviour?
 4817:18 <sdmg15> From my understanding it's help people  broadcast transaction over secured networks like Tor and I2P
 4917:19 <sdmg15> And you could enforce that to your client by enabling the option
 5017:20 <svanstaa> Correct. How did we test this? It was not the straightforward way
 5117:21 <svanstaa> That would have been to install and sent out a private transaction on testnet, but we deemed that out of scope for this tutorial
 5217:22 <svanstaa> Cheap solution: just test that the client refuses to sent out any transaction when TOR/I2P is not present while -privatebroadcast is set :)
 5317:23 <svanstaa> Next topic Updated RPCs
 5417:23 <marcofleon> Good call for the private broadcast test
 5517:23 <marcofleon> Is it even a thing to connect over tor for regtest? Not sure if i've ever tried that
 5617:24 <marcofleon> Just a local chain, so wouldn't really make sense
 5717:24 <svanstaa> @marcofleon yes, it would have needed running testnet as well
 5817:25 <svanstaa> AFAIK, that wouldnt work on regtest
 5917:25 <svanstaa> that's why we left that out
 6017:26 <svanstaa> who ran the test of the updated getblock RPC?
 6117:27 <sdmg15> I did
 6217:28 <marcofleon> I've given it a try on mainnet
 6317:29 <svanstaa> Nice. Bonus question: why was output of the coinbase_tx object added at logging verbosity level 1?
 6417:31 <janb84> Miners ?
 6517:31 <sdmg15> I don't know what BIP54 is all about, but from the PR it helps making the scan faster?
 6617:31 <marcofleon> at higher verbosities you would just see the full coinbase tx right?
 6717:31 <marcofleon> so it made sense to add at level 1 I think
 6817:32 <svanstaa> It said so in the linked PR#34512: making it easier to check for BIP54 compliance, without an overhead of logging messages
 6917:32 <corebot`> svanstaa: Error: That URL raised <HTTP Error 404: Not Found>
 7017:32 <marcofleon> ah nice
 7117:32 <marcofleon> #34512
 7217:32 <corebot`> https://github.com/bitcoin/bitcoin/issues/34512 | rpc: add coinbase_tx field to getblock by Sjors · Pull Request #34512 · bitcoin/bitcoin · GitHub
 7317:32 <svanstaa> @marcofleon yes correct, at level 2 too much output of stuff you don'T need for that use case
 7417:33 <svanstaa> @sdmg15 BIP54 is also known as The Great consensus Cleanup. It is a soft fork that solves 4 known bugs
 7517:35 <svanstaa> Looking at the coinbase transaction can identify if the block is BIP54 compliant
 7617:35 <svanstaa> Next chapter 4. txospenderindex
 7717:35 <marcofleon> Last I heard it's just Consensus Cleanup these days. But still great to me at least
 7817:36 <svanstaa> @marcofleon haha, was it renamed? Didnt notice. I thinnk Consensus cleanup works just as well :)
 7917:37 <svanstaa> Who tried activating -txospenderindex? What is it good for?
 8017:38 <carloantinarella> -txospenderindex should be good for second layer protocols. Also in this case motivation is clearly explained in the PR introducing it
 8117:38 <sdmg15> The PR is from 2022 wow
 8217:39 <svanstaa> @carloantir . yes, correct. As it should be in any good PR :)
 8317:39 <marcofleon> only took four years 😅
 8417:40 <svanstaa> move slow and don't break things :)
 8517:41 <marcofleon> The index keeps track of which txs spent which outpoints yes?
 8617:41 <svanstaa> yes, correct
 8717:42 <marcofleon> I've been syncing it for the last couple hours on my node :)
 8817:42 <marcofleon> only 300k blocks to go
 8917:42 <svanstaa> Nice, it can take a few hours
 9017:43 <svanstaa> who has it synced completely already?
 9117:43 <carloantinarella> Is it independent from -txindex?
 9217:44 <svanstaa> @carloantir yes, that is a different index. You can both on and off independently from each other
 9317:44 <svanstaa> *turn both
 9417:45 <svanstaa> (ok, this was a trick question, as syncing the txospenderindex is a prerequisite for running the tests)
 9517:45 <svanstaa> should have warned earlier that this is best run overnight :)
 9617:46 <svanstaa> ok, on to section 5: Settings
 9717:46 <svanstaa> who fiddled with the dbcache settings? What is it for anyway?
 9817:48 <carloantinarella> I think this is an update due to the fact that more than 4096 MiB of RAM is now very common
 9917:49 <janb84> carloantinarella: that has been quite a debate, if having more ram is common ;)
10017:49 <svanstaa> @carloantir Yes, correct. The 450MB size has been around for many years, hardware has advanced
10117:49 <carloantinarella> I love debates, but I lost this one '=D
10217:50 <svanstaa> Any unusual or unexpected behaviour observed here?
10317:51 <marcofleon> the new default is 1024?
10417:51 <svanstaa> yes, correct
10517:52 <svanstaa> on to https://github.com/bitcoin-core/bitcoin-devwiki/wiki/31.0-Release-Candidate-Testing-Guide#52-embedded-asmap--asmap-now-loads-bundled-data
10617:52 <marcofleon> I'm not sure what's optimal, but I'll usually set dbcache to half my ram for ibd, and then set it to 1024 (even before this update)
10717:52 <corebot`> svanstaa: Error: That URL raised <HTTP Error 404: Not Found>
10817:53 <svanstaa> @marcofleon those look like sensible values
10917:54 <svanstaa> who tried the -asmap option in 5.2? What does it change?
11017:55 <sdmg15> I struggle understanding what are asmaps useful for but yeah I did run the tests
11117:55 <svanstaa> The main reason in too make eclipse attacks more difficult
11217:57 <svanstaa> If you chose your peers wisely (from all different corner of the web), it will become impossible for an attacker to eclipse you by spinning up hundreds of malicious nodes on e.g. AWS
11317:57 <sdmg15> Oh I see interesting
11417:58 <sipa> sdmg15: it's basically a "map of the internet", with information about what organizations (ISPs, hosting providers, companies, ...) control which ranges of IP addresses. By being aware of this information, Bitcoin Core can bias its connection making in a way such that the connections are to diverse sets of organizations, making it harder for a single one or a small number from dominating all
11517:58 <sipa> information you see
11617:58 <svanstaa> It has now become a more permanent feature, with the ASMAP data collected for that release baked into the binaries
11717:59 <sdmg15> It's clear now thanks.
11817:59 <carloantinarella> Does it also speed up txs propagation over the network because of geographical diversity?
11918:00 <svanstaa> @carloantir that also seems possible, but not completely sure
12018:00 <svanstaa> maybe @fjahr can chime in later
12118:01 <sipa> carloantinarella: unlikely, i think; propagation speed is dominated by the few fastest connections you have
12218:01 <svanstaa> @sipa thanks for clarification!
12318:01 <sipa> and in general, eclipse resistance is in conflict with propagation speed - for fast propagation you ideally want few connections to the fastest nodes possible, rather than many diverse ones
12418:02 <svanstaa> That's it for today. Thaks you all for joining. Of course you can continue to discuss here, I will come back later to check for open questions
12518:02 <svanstaa> #endmeeting