Testing Bitcoin Core 24.0 Release Candidates (tests)

Host: kouloumos

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.

    • It is recommended to go through the “Preparation” steps ahead of the meeting, especially if you want to compile from source.

    • The testing guide relies on the tools jq and watch, which are not installed by default on each platform. For example on macOS, you can install these ahead of time using brew install. Alternatively, you can also modify the instructions to avoid using these tools as they are not strictly necessary and/or can be replaced by other tools.

    • For one of the tests, we try to connect over I2P. If you have not used this before, you could save some time by going through the instructions and configuring this ahead of the meeting.

  • 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 <kouloumos> #startmeeting
  217:00 <brunoerg> hi!
  317:00 <kouloumos> Hello everyone! Welcome to another special edition of the Bitcoin PR Review Club.
  417:00 <kouloumos> Today we are going to be testing Bitcoin's upcoming 24.0 release by going through some of its changes.
  517:00 <kouloumos> Feel free to say hi to let people know you are here
  617:00 <stacie> hello!
  717:00 <glozow> hi!
  817:00 <yashraj> hi
  917:01 <kouloumos> To help us along, we will be following this guide: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide
 1017:01 <theStack> hi
 1117:01 <LarryRuane> hi
 1217:01 <hernanmarino> Hi everyone
 1317:01 <pablomartin> hi all!
 1417:01 <stickies-v> hi!
 1517:01 <cypherchabon> hi everyone!
 1617:01 <kouloumos> Hello to everyone!
 1717:01 <kouloumos> For starters, is this anyone's first time?
 1817:02 <Luc58> Hell everyone, first time for me :)
 1917:02 <Juls> Hi Kouloumos! It is my first time
 2017:02 <kouloumos> welcome!
 2117:02 <kouloumos> For the newcomers (and just as a reminder), its encouraged to just blurt out questions! no need to ask for permission first or worry about if you're interrupting another question.
 2217:02 <cypherchabon> first time here
 2317:03 <NorrinRadd> Hello!
 2417:03 <alecc> Hi!
 2517:03 <NorrinRadd> Brandon
 2617:04 <NorrinRadd> yes first time
 2717:04 <kouloumos> Welcome to all the newcomers!
 2817:04 <cypherchabon> thanks!
 2917:04 <arthur> this where we learn how to do contribute into bitcoin ?
 3017:05 <kouloumos> As mentioned in the beginning, today we are going to be testing Bitcoin's upcoming 24.0
 3117:05 <nerd2ninja> I think I saw that visual scripting was added? Is this true or is that a misinterpretation of an image I saw?
 3217:05 <kouloumos> Therefore, open the testing guide and prepare for an hour of testing, knowledge and entertainment! 👨‍💻🤯🕺🏻
 3317:06 <stacie> 🤩
 3417:06 <kouloumos> nerd2ninja: I am not sure about what you are referring to, a link would be useful
 3517:06 <kouloumos> It was suggested to go through the “Preparation” section ahead of the meeting. If you haven't, this is the time to grab the release candidate pre-compiled binary for your system, as per https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide/#preparation
 3617:06 <arthur> yes... link would be usefuel
 3717:06 <LarryRuane> arthur: in case you haven't seen this yet https://unchained.com/blog/contributing-bitcoin-core-patience/
 3817:06 <kouloumos> arthur: To help us along with testing, we will be following this guide: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide
 3917:06 <kouloumos> Compiling is also an option, but it can take some time depending on the machine.
 4017:06 <kouloumos> We'll give a few minutes for people to get their release candidate, but there is no need to wait on everyone else if you'd like to start working through the sections or have questions.
 4117:07 <glozow> LarryRuane: indeed, the best way to contribute right now is to test the release candidate
 4217:07 <kouloumos> I would like to emphasize that this guide is meant to be the *starting point* to get you started with testing.
 4317:07 <kouloumos> Most of the individual changes are well tested during the review phase, when the code is introduced to the codebase. What's more complicate to test is how everything behave together on different configurations and different user patterns. Therefore it's encouraged to do your own testing and experimentations.
 4417:07 <yashraj> I already have 23.0 production installed, do I have to uninstall it?
 4517:08 <stickies-v> nerd2ninja: I think what you mean is the miniscript.fun visualisation website of miniscript scripts. Bitcoin Core doesn't allow any visual scripting directly, but it supports miniscript to some extent
 4617:08 <arthur> will there be a video or something or are we supposed to go through the link on our own
 4717:08 <kouloumos> No, PR Review Club meetings are text-based only on IRC
 4817:08 <hernanmarino> yashraj: no need to uninstall , just follow the instructions , il will work
 4917:08 <nerd2ninja> stickies-v Got it
 5017:09 <stacie> As I go through the guide, I'm logging what I've tested and what my results are. Even if things are all good, would it be valuable to share that somewhere? Is there one place where the QA is getting aggregated? If not I'll probably just upload it as a gist or something for my own future reference
 5117:09 <kouloumos> nerd2ninja: Hopefully we will manage to work our way to the fun of miniscript.fun
 5217:09 <stacie> I understand there is an open issue for bugs that are uncovered
 5317:09 <LarryRuane> I decided to test using `signet` so I could do some transactions ... I'm kind of currently testing the testing guide, I'll make some suggestions to it, I'm behind, on section 5 https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide#5-testing-with-a-signet-faucet it needs some improvements
 5417:10 <glozow> stacie: awesome :) i'm sure a link to your gist on https://github.com/bitcoin/bitcoin/issues/26175 would be appreciated
 5517:10 <kouloumos> I'll also remind you in the end, but yes stacie, it's encouraged to report your findings at the v24.0 testing issue: https://github.com/bitcoin/bitcoin/issues/26175
 5617:11 <kouloumos> Thank you LarryRuane, suggestions are appreciated
 5717:11 <stacie> ooo that issue is just what I was looking for! ty glozow and kouloumos!
 5817:11 <kouloumos> Before we start, could you please share which OS you're using and whether you'll be compiling from source or using the pre-compiled binaries?
 5917:11 <LarryRuane> just to make sure everyone saw this, there's a link near the top to an issue to give feedback on the testing guide itself https://github.com/bitcoin/bitcoin/issues/26092
 6017:11 <kouloumos> I'm on NixOS 21.11, compiled from source
 6117:11 <stickies-v> macOS 12.4, compiled from source
 6217:12 <brunoerg> I'm on MacOS 10.0
 6317:12 <stacie> Ubuntu 22.04, compiled from source
 6417:12 <alecc> macOS 12.6, pre-compiled binary
 6517:12 <LarryRuane> ubuntu 22.04.1 LTS, both building from src and downloading binary
 6617:12 <yashraj> brunoerg: good man, I'm on 12.3 installing from binary
 6717:13 <kouloumos> Does everyone have a copy of the current release candidate?
 6817:13 <kouloumos> The testing guide has five main sections highlighting some of the major changes of the upcoming 24.0 release: "Observing the new headers pre-synchronization phase during IBD", "Testing the GUI", "Testing transient addresses for I2P outbound connections", "Migrating Legacy Wallets to Descriptor Wallets", "Testing watch-only support for Miniscript descriptors".
 6917:13 <LarryRuane> i've got a myNode (RPi) which is arm, and i think i'll build from source and test download binary there too
 7017:14 <kouloumos> As you go through each section, please bring up any questions or problems that arise.
 7117:14 <kouloumos> Also just repeating something for people that joined later: its encouraged to just blurt out questions! no need to ask for permission first or worry about if you're interrupting another question.
 7217:15 <stacie> Does it matter if we test with signet or mainnet? I understand some scenarios may be easier to set up on signet. Is it generally better to test with mainnet (when reasonable)?
 7317:15 <LarryRuane> I already mentioned I ran into problems in section 5, I tried to use `getcoins.py` but the guide doesn't tell you how to generate an address.. and before that you need to create a wallet
 7417:15 <LarryRuane> stacie: I decided on signet so I could have some coins to test with
 7517:15 <LarryRuane> also of course the IBD is much faster!
 7617:16 <LarryRuane> but i think mainnet testing is good too!
 7717:16 <stacie> LarryRuane I noticed the signet section doesn't mention the command for address creation :) So I skipped it for now and was like I'll deal with that later haha Glad you saw that too
 7817:16 <LarryRuane> (i'll submit some suggestions to improve section 5, I worked through all the problems)
 7917:17 <stacie> awesome!
 8017:17 <hernanmarino> If the script doesn work, you can get signet coins on https://signet.bc-2.jp/
 8117:17 <kouloumos> Also https://signetfaucet.com/
 8217:17 <LarryRuane> kudos to @theStack for writing the `getcoins.py` tool, very nice! (the problems I ran into weren't with the tool itself, only how to invoke it)
 8317:18 <LarryRuane> (oh sorry I think @theStack only improved it, didn't write it initially)
 8417:18 <theStack> oh it was not written by me, but thanks anyways :)
 8517:18 <kouloumos> That getcoins.py was a last minute change, apologies for the issues. If anyone has issues when it's time for signet coins, please write it here
 8617:19 <Juls> getcoins.py does not work with python 3, right?
 8717:19 <kouloumos> Reminder: You don't have to be a command-line wizard. The "Testing the GUI" section is especially for people not comfortable with the command line. That said, by using the integrated RPC console (Window->Console), you can go through all of the sections of this guide. If you have any issues with that, ask questions.
 8817:19 <Juls> I got an error
 8917:19 <theStack> as for generating a new address to receive coins to, this should be as simple as running the `getnewaddress` RPC? (i.e. $ bitcoin-cli getnewaddress)
 9017:20 <glozow> stacie: would be good to test that you can sync the mainnet chain (even just headers is enough) given that we have some PoW-centric IBD changes in this release. but otherwise most functionality is equivalent
 9117:20 <kouloumos> That signet faucet section was meant to be linked from later in the guide, so if you have problems with it now (creating wallets, deriving addresses etc.) better leave it to when you reach a section that needs coins
 9217:20 <LarryRuane> to successfully run `getcoins.py` you must first do something like `cli createwallet mytestwallet` and then (as @theStack said) `getnewaddress`
 9317:20 <kouloumos> So, I think it's time to try and go though the testing sections!
 9417:20 <stickies-v> and since we want to make sure everyone is able to use the GUI, even if you're usually a cli user, it's still very helpful to test the GUI too!
 9517:20 <kouloumos> The goal with this meeting is to get more people involved with testing and help address any issues people might have while working through the guide. It's unlikely we will get through all of it in one hour. But you can always come back to this channel and ask questions while working through the guide or testing in general. You can find 24/7 logs of this channel here: https://gnusha.org/bitcoin-core-pr-reviews/
 9617:21 <NorrinRadd> kouloumos i'm on MacOS 12.6 arm64 running the arm64 binary of the rc from the rc page you linked
 9717:21 <kouloumos> Let's start with observing the new headers pre-synchronization phase during IBD: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide#observing-the-new-headers-pre-synchronization-phase-during-ibd
 9817:22 <kouloumos> This is a pretty interesting change that deals with a potential DoS attack. You can test this with or without the GUI, just make sure that you are using an empty datadir (new node).
 9917:22 <kouloumos> Note that if you run this on signet (cc stacie), the blockheaders sync usually happens very fast so you might not be able to observe anything interesting.
10017:23 <kouloumos> The guide mentions 3 ways that you can observe this new behavior (debug.log, real-time logging from the terminal, using the `getpeerinfo` RPC ). If you are using the GUI, you can also see real-time logging from the terminal using the `-printtoconsole` flag.
10117:23 <stacie> glozow that makes sense, thanks! I may even try to test full sync on mainnet then if I have time
10217:23 <LarryRuane> i also had to `sudo apt install imagemagick` then i could `contrib/signet/getcoins.py -c $BINARY_PATH/bitcoin-cli -a myaddress -- -signet -datadir=$DATA_DIR` ... that worked for me
10317:25 <kouloumos> Does anyone looking at the pre-syncing phase yet?
10417:26 <kouloumos> If anyone has stuck at initial setup, please let us know. This is the place for questions.
10517:26 <LarryRuane> yes I see the `Pre-synchronizing blockheaders` messages, followed by the `Synchronizing blockheaders` messages (on signet) all looks correct
10617:26 <kouloumos> If we are "lucky" and new blocks are found during pre-sync, you might also see the behavior that I'm describing in the "Observe Further" subsection: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide#observe-further
10717:28 <stickies-v> tested on mainnet, all seems correct to me too, both bitcoind and qt (although on gui the progress bar jumps around a bit, and I think since we know have a presync, maybe we can stop saying "Unknown" number of blocks left in headers sync phase?
10817:29 <theStack> started a mainnet IBD on OpenBSD 7.1 amd64 yesterday with rc1, also saw the "Pre-synchronizing blockheaders" and "Synchronizing blockheaders" message, everything worked fine so far (still syncing though due to rather slow hw)
10917:29 <LarryRuane> does everyone know to `tail -f $DATA_DIR/signet/debug.log` ... (remove the "signet" if you're using mainnet) ... I find that very helpful
11017:29 <LarryRuane> (do that in a separate shell window)
11117:30 <theStack> my impression was that the headers-only phase took significantly longer (like 5-10x) than it used to be... is that expected (didn't look into any detail of the changes yet), or did i maybe just have a slow connection or alike
11217:30 <kouloumos> stickies-v: I wanted to better understand where that "Unknown" comes from, but never looked into the code yet.
11317:30 <LarryRuane> it's interesting that if the headers sync gets interrupted (peer disconnected) it starts over from scratch (IIUC)
11417:30 <LarryRuane> (but it's okay since that phase is very fast)
11517:30 <stacie> I tested the new headers pre sync phase using mainnet just before this meeting (that was as far as I got into the guide). The logs for pre sync and sync look good, and the watch command for the getpeerinfo call shows what I expect it to for the peer involved in the pre-sync/sync. Left a comment on the testing feedback issue for a tiny nit in the instructions
11617:31 <_aj_> LarryRuane: do you know you can do `less .bitcoin/signet/debug.log` and press G (to go to the end) and then F (to follow additions, equivalent of tail -f), but then you can press ^C and scroll around
11717:31 <kouloumos> theStack: If new blocks are announced to you while you are in the headers sync phase, your node downloads headers from more peers at the same time. Therefore taking more time.
11817:31 <glozow> LarryRuane: yes it starts from scratch if you had no other peers you were presyncing with
11917:31 <LarryRuane> _aj_: that's a great suggestion
12017:31 <hernanmarino> stickies-v : good point
12117:32 <theStack> kouloumos: okay
12217:32 <kouloumos> Also, regarding theStack's observation, can anyone explain what would happen in previous Bitcoin Core versions if a new block was announced to our node during the headers synchronization phase?
12317:34 <glozow> theStack: it should take 2x longer but not 5-10x longer 🤔
12417:34 <kouloumos> Right now, with v24.0, we are initiating sync with the first peer that will announce the new block to us. So if 3 blocks are found during our blockheaders sync phase, that will result to simultaneously do header-sync with 4 peers instead of 1, thus the process will take further
12517:35 <kouloumos> Let's briefly move to the "Testing the GUI" section! (but always feel free to continue on previous points)
12617:35 <kouloumos> "Testing your localized GUI" is more of an accessibility test, no critical bugs can arise from it. Still, it's a great way to explore your localized GUI while helping for a better user experience.
12717:36 <LarryRuane> kouloumos: all the peers that announced the block to us (which is probably all of them) would start sending us headers (i mean, we would ask them for headers)
12817:37 <kouloumos> Correct! What LarryRuane described is the previous behavior. This was changed with PR#25720, if anyone wants to further look into this change, it was covered in a previous Review Club meeting: https://bitcoincore.reviews/25720
12917:37 <glozow> LarryRuane: https://bitcoincore.reviews/25720
13017:37 <glozow> kouloumos +1
13117:38 <kouloumos> So! For the GUI testing session, focus on testing the restore wallet option and the unification of settings between bitcoind and the GUI.
13217:38 <kouloumos> Any ideas on other ways we could test the persistent settings between the GUI and bitcoind?
13317:40 <kouloumos> How are the rest of the people in the meeting doing? cypherchabon, Juls, yashraj, pablomartin, Luc58, NorrinRadd?
13417:40 <theStack> glozow: have to add that i ran the test on a newly instated remote server (new location, new hw), so with nothing compare my observation was probably not very meaningful. will try on the same machine without the ibd-patch and then compare again
13517:41 <kouloumos> Hopefully people did not run away yet🏃‍♂️
13617:42 <kouloumos> GUI is boring for some, lets move to another important p2p change.
13717:42 <kouloumos> Anybody that has done/currently doing the I2P setup in order to test the transient addresses for I2P outbound connections?
13817:42 <LarryRuane> kouloumos: running bitcoin-qt
13917:43 <stickies-v> LarryRuane: good observation re headers sync starting over. I did some more testing and it seems when a new peer is selected, it always starts pre-sync starting from the last non-pre-sync header received from the previous peer.
14017:43 <yashraj> I decided to IBD from UI since I don't know cli. But my Core started up in testnet where I was already pretty much synced, so changed over to signet. I saw the presyncing headers thing. Now I'm synced.
14117:44 <yashraj> Can/should I move to cli? I don't know what I'm really doing lol
14217:44 <kouloumos> No, If you are not comfortable with the command line, please continue with the GUI
14317:45 <kouloumos> That goes for everyone, I am just trying to move through sections to add a bit of extra context but always feel free to continue and report on previous points.
14417:46 <Juls> Hernan is helping us with the unification of bitcoind and GUI config
14517:46 <hernanmarino> koulomos: i2p is setup and running correctly, I'm waiting for the rest to test it together
14617:47 <alecc> hey, should the gui/bitcoin generally compiled with gui work on M1 macs? my computer would just kill the pre-build binaries immediately once they started, and i just tried compiling from source and ran into some errors referring to unknown symbols for arm64 (prev when compiling without gui its worked) figured i'd ask
14717:47 <stacie> still working through understanding the headers sync changes. I understand that if a block is received during headers sync, one of the peers that announced the block is added for headers sync. Does that mean (1.) my node will do a full headers sync with that new peer, meaning I'll be doing syncing headers twice, or (2) going forward, I'll now be using two peers for headers sync?
14817:49 <kouloumos> alecc: unfortunately I can't answer that. Maybe someone else with M1 mac can help on that (stickies-v ?) . If not this sound like something that you can report at the v24 testing issue
14917:49 <pablomartin> koulomos: done with the i2p test, all good
15017:49 <glozow> alecc: the answer to "should the gui compiled on M1 work" is yes
15117:49 <LarryRuane> apparently you can't submit `bitcoin-cli` commands to a running `bitcoin-qt` ... is there a way to enable that?
15217:50 <kouloumos> LarryRuane: You can use bitcoin-cli to talk to bitcoin-qt by starting bitcoin-qt with the -server option.
15317:50 <yashraj> alecc: I'm using an M1 Mac and successfully installed from the binary.
15417:50 <cypherchabon> I am using M1 and I had no problems
15517:51 <cypherchabon> see https://github.com/bitcoin/bitcoin/blob/24.x/doc/build-osx.md
15617:51 <alecc> oh hm alright I'll go back over the guides maybe i'm just missing some step
15717:51 <glozow> stacie: yes you'll sync from multiple peers until you hit a chain with enough work
15817:51 <lightlike> stacie: it's 1): You do two parallel header syncs that don't really influence each other once started.
15917:52 <yashraj> alecc: If you Mac refuses to let you run it, you have to provide permission from System Preference > Security & Privacy.
16017:52 <LarryRuane> kouloumos: thanks, also i found under Settings -> Options -> Main, there's an Enable RPC server checkbox .. that works too
16117:52 <kouloumos> stacie: if the second peer is faster, you might first finish the sync with that one.
16217:52 <kouloumos> LarryRuane: great! another tip to add to the guide
16317:53 <kouloumos> We can start the migration section, although I am not sure that we will finish it in time. But we can try! Feel free to hang around longer if you've not finished with the guide. The Miniscript section is also fun
16417:53 <stacie> ahhhh, that explains the balance between robustness, and bandwidth that I'm reading about in the testing guide. ty :) glozow lightlike kouloumos
16517:54 <kouloumos> Legacy wallets will soon be unsupported and a migration mechanism is now in place.
16617:54 <kouloumos> If you are not familiar with descriptors, the testing guide section gives a bit of an inside as well as what to expect after the migration: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide#migrating-legacy-wallets-to-descriptor-wallets
16717:55 <kouloumos> The guide gets into details in order to cover all the categories of scripts (non-HD, watch-ony, solvable) that a legacy wallet can have.
16817:55 <kouloumos> You can test the migratewallet RPC either by creating a new legacy wallet and then migrating it or by using an existing legacy wallet.
16917:56 <kouloumos> Using existing wallets is a great way to strengthen this migration mechanism by helping testing again different wallet configurations. Although the migration process creates a backup before migrating, feel free to use the backupwallet RPC beforehand.
17017:57 <glozow> interesting. if i migratewallet, and then migratewallet again, the error is "This wallet already uses SQLite" instead of something like "this is already a descriptor wallet"
17117:58 <LarryRuane> glozow: good catch!
17217:59 <LarryRuane> i see a PR in your future
17317:59 <b_101> glozow:+1
17417:59 <LarryRuane> apparently `bitcoin-qt` won't create a legacy wallet for you
17518:00 <kouloumos> isn't here an option in the beginning?
17618:00 <kouloumos> and, we are out of time!
17718:00 <kouloumos> #stopmeeting
17818:00 <kouloumos> Thank you everyone for joining this meeting and taking time to help with testing Bitcoin Core! Feel free to hang around longer if you've not finished with the guide!
17918:00 <kouloumos> Also don't be shy about leaving a comment even if everything worked as expected! Look at the last section for how to report your findings: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Candidate-Testing-Guide#testing-watch-only-support-for-miniscript-descriptors
18018:00 <LarryRuane> kouloumos: thanks, great meeting!
18118:00 <glozow> LarryRuane: you mean it won't by default, or it won't at all?
18218:01 <stacie> Thank you for hosting kouloumos, time flew by!
18318:01 <stickies-v> thank you very much for making the testing guide kouloumos, this was really helpful! wish we had more than the hour indeed haha
18418:01 <LarryRuane> won't at all, at least i don't see an option for creating one (but i'm not a gui expert!)
18518:01 <kouloumos> LarryRuane: I see a "Descriptor Wallet" tick-box which is selected by default
18618:02 <alecc> thanks kouloumos!
18718:02 <LarryRuane> kouloumos: oh yes i had missed that ... but it's grayed out, i can't unselect it
18818:02 <glozow> thank you kouloumos! for hosting and for the excellent guide
18918:02 <b_101> thanks kouloumos!
19018:02 <kouloumos> I will be around for another hour or more if people want to continue with the guide. And I'll also be around in this channel until the final release if people going through the guide have questions.
19118:03 <LarryRuane> oh i bet i know what the problem is ... i didn't build with the BDB database