Testing Bitcoin Core 27.0 Release Candidates (tests)

Host: cbergqvist  -  PR authors: cbergqvist , tdb3 , davidgumberg , marcofleon

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. Verify and confirm the successful installation of v27rc1, as well as v25.1 and v26 (older versions are used in some of the tests). BDB support is required in one of the tests.

    • The testing guide relies on the tools jq 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 some of the tests, you might want to have the signet chain fully synced beforehand, so that you can just copy the signet directory into /tmp/27-rc-test/ every time you run a test in a fresh environment.

  • 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 <cbergqvist> #startmeeting
  217:00 <stickies-v> hi
  317:00 <tdb3> hi
  417:00 <dzxzg> hi
  517:00 <marcofleon> Hi
  617:00 <ion-> hi!
  717:00 <vostrnad> hi
  817:00 <glozow> hi
  917:00 <Jamal> hi
 1017:00 <cbergqvist> Hello everyone! Welcome to another Bitcoin Core PR Review Club session.
 1117:00 <mayrf> hi
 1217:00 <cbergqvist> Today we are going to be testing the upcoming 27.0 release, following this guide:
 1317:00 <abubakarsadiq> hello
 1417:00 <cbergqvist> https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Candidate-Testing-Guide
 1517:01 <marcofleon> woo!
 1617:01 <cbergqvist> For 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.
 1717:01 <Guest79> hi
 1817:01 <cbergqvist> Please open the testing guide linked above and prepare for an hour of testing, education, and attempts at breaking ₿itcoin! 💥😄
 1917:01 <edilmedeiros> hi
 2017:01 <Guest70> hey all!
 2117:02 <cbergqvist> It was suggested to go through the “Preparation” section ahead of the meeting.
 2217:02 <cbergqvist> If you haven't, this is the time to download/compile the binaries, as per https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Candidate-Testing-Guide#preparation
 2317:03 <cbergqvist> If you are set up already, please continue through the guide and report back if you run into weird results/stumbling blocks.
 2417:03 <cbergqvist> First though, could you please share which OS you're using and whether you have/are compiling from source using tags/v27.0rc1 or only using pre-compiled binaries?
 2517:03 <cbergqvist> NixOS v23.11 / Bitcoin Core v27.0rc1 from source, v25.1 and v26.0 pre-compiled.
 2617:03 <b10c> hi
 2717:04 <dzxzg> Fedora 39, I've built v27 from source, and I'm using release binaries for versions 25 and 26
 2817:04 <ion-> macos 14.3.1 (23D60) / Bitcoin Core v27.0rc1 from source, v25.1 and v26.0 pre-compiled.
 2917:04 <edilmedeiros> MacOS Sonoma 14.4 (dependencies installed with MacPorts instead of Brew) / Bitcoin Core v27.0rc1 from source, v25.1 and v26.0 pre-compiled.
 3017:04 <stickies-v> MacOS 14.3.1, gonna test precompiled bins today
 3117:04 <Jamal> macos 12.6.7 pre-compiled binaries too
 3217:04 <Guest63> PopOS 22.04 all precompiled
 3317:05 <mayrf_> nixos precompiled
 3417:05 <marcofleon> macOS 14.2 v27.0rc1 from source, 25.1 and 26.0 pre compiled
 3517:05 <abubakarsadiq> macOS 14.1.1/ built from source/ will test the v27r1 new features
 3617:05 <glozow> Ubuntu jammy, from source
 3717:06 <cbergqvist> Remember that the testing guides are meant to be a *starting point* to get you started with testing.
 3817:06 <cbergqvist> Most of the individual changes are well tested during the review phase, when the code is introduced to the codebase. What's more complicated to test is how changes behave together on different configurations and user patterns. Therefore it's encouraged to do your own testing and experiments. Testing on Mainnet is encouraged when possible.
 3917:07 <cbergqvist> Please report your test findings under this issue: https://github.com/bitcoin/bitcoin/issues/29697
 4017:07 <cbergqvist> For feedback on the content of the guide itself please use: https://github.com/bitcoin/bitcoin/issues/29685
 4117:08 <cbergqvist> (But of course you can/should take the opportunity to report stuff you encounter here in the chat too).
 4217:09 <cbergqvist> If you are encountering issues getting set up, please let us know here and we'll try to help.
 4317:12 <edilmedeiros> I just stumbled on v27 asking for credentials to use the CLI that was not happening in the morning. I'll check if I missed something.
 4417:13 <stickies-v> cbergqvist: should we ask conceptual questions about the changes tested here too, if any?
 4517:13 <tdb3> edilmedeiros, it would be good to check the DATA_DIR_x env vars
 4617:13 <dzxzg> @edilmedeiros Did you bcli stop at the end of your previous session
 4717:13 <tdb3> Was it complaining about the cookie not being available?
 4817:14 <cbergqvist> stickies-v: yeah, let's try that
 4917:14 <edilmedeiros> Yes, cookie not available
 5017:14 <edilmedeiros> For the v2 transport section
 5117:14 <edilmedeiros> datadirs were clean
 5217:14 <dzxzg> your bitcoind is probably still running and you'll have to kill it from your process manager
 5317:15 <ion-> "mempool.dat v1/v2 compatibility" re-tested ok
 5417:15 <dzxzg> SIGINT causes bitcoind to shut down gracefully afaik
 5517:16 <dzxzg> https://github.com/bitcoin/bitcoin/issues/11586#issuecomment-341737656
 5617:17 <edilmedeiros> Yes, killing it manually solved
 5717:17 <cbergqvist> If people have prepared and are waiting for a goahead to start running tests, this is it. :)
 5817:17 <cbergqvist> First test is the aforementioned mempool format change.
 5917:18 <cbergqvist> https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Candidate-Testing-Guide#mempooldat-v1v2-compatibility
 6017:18 <cbergqvist> This change makes it less likely for antivirus software to quarantine your mempool.dat file if a malicious transaction containing byte patterns classified as a virus enters your mempool.
 6117:19 <Guest86> wow cool
 6217:19 <Jamal> Finished testing mempool.dat v1/v2 compatibility
 6317:19 <Jamal> Test Ok
 6417:21 <ion-> "v2 Transport on by Default" re-tested ok
 6517:21 <mayrf_> Why would this quarantining happen? If an antivirus intentionally wants wants to mess with your node?
 6617:22 <tdb3> Antivirus software detects patterns associated with malicious code/files. It then can automatically quarantine files that match these patterns.
 6717:22 <edilmedeiros> retested mempool v1/v2 comp and v2 transport on by default
 6817:22 <dzxzg> Some types of scripts, including OP_RETURN outputs, allow including arbitrary data in transactions
 6917:22 <tdb3> This disrupts Bitcoin Core's usage of the mempool.dat
 7017:22 <dzxzg> Including data that matches signatures in antivirus DB's, creates a DOS vector
 7117:23 <mayrf_> I see, thanks for explaining
 7217:23 <stickies-v> FYI when chaining commands after starting bitcoind, you can use `-daemonwait` instead of `-daemon` so the command doesn't return until the node is ready to be used, which is useful e.g. in the mempool v1/v2 tests
 7317:23 <tdb3> Previously, Bitcoin Core would store this data directly from transactions (which as dzxzg said, can contain arbitrary data from others).
 7417:23 <stickies-v> `bitcoind-test -daemonwait` instead of `bitcoind-test -daemon`
 7517:23 <tdb3> excellent idea
 7617:24 <tdb3> I'll make that change in the repo
 7717:24 <abubakarsadiq> https://www.irccloud.com/pastebin/pI03cpR1/
 7817:24 <Guest86> is this XORing logically happening after datacarrier=0 / permitbaremultisig=0 work to remove stuff from the mempool, or after ?
 7917:24 <mayrf_> Test ok
 8017:24 <ion-> "netinfo backward compatibility with pre-v26 nodes" re-tested ok
 8117:25 <Guest86> *sorry meant to say "... , or before" *
 8217:25 <abubakarsadiq> v2 Transport is working by default.
 8317:25 <abubakarsadiq> ```./src/bitcoin-cli getnetworkinfo
 8417:25 <abubakarsadiq> {
 8517:25 <abubakarsadiq> "version": 270000,
 8617:25 <abubakarsadiq> "subversion": "/Satoshi:27.0.0/",
 8717:25 <abubakarsadiq> "protocolversion": 70016,
 8817:25 <abubakarsadiq> "localservices": "0000000000000c09",
 8917:25 <abubakarsadiq> "localservicesnames": [
 9017:25 <abubakarsadiq> "NETWORK",
 9117:25 <abubakarsadiq> "WITNESS",
 9217:25 <abubakarsadiq> "NETWORK_LIMITED",
 9317:25 <abubakarsadiq> "P2P_V2"
 9417:25 <abubakarsadiq> ],
 9517:25 <abubakarsadiq> ```
 9617:26 <dzxzg> @abubakarsadiq is that after you've connected to the seed node or after you've made the manual `addnode` connection to the v2 peer
 9717:26 <edilmedeiros> "netinfo backward compatibility with pre-v26 nodes" went ok
 9817:26 <abubakarsadiq> Normal startup, So far I am not connected to any v2 peer, after I did `getpeerinfo`.
 9917:26 <abubakarsadiq> Any v2 peer I can connect with manually :)
10017:27 <stickies-v> Guest86: this is about dumping your mempool to disk, so it would only affect stuff that's in your mempool, and not the stuff you're filtering out through policy, because it doesn't get into your mempool
10117:27 <cbergqvist> Guest86: if you reject OP_RETURN data it will probably not get into your mempool.dat to be XORed, no. But there may be other ways of inscribing data..
10217:27 <dzxzg> The v2 seednode won't necessarily gossip v2 peers to you, but you can inspect debug.log to see that the `addrfetch` connection was made over v2
10317:27 <Naiyoma> "mempool.dat v1/v2 compatibility" Test Ok
10417:27 <stickies-v> mempool.dat v1/v2 test successful 👍
10517:29 <glozow> abubakarsadiq: I'll dm you an address
10617:29 <dzxzg> mempool.dat v1/v2 test worked
10717:29 <abubakarsadiq> Thanks, so far from debug.log
10817:29 <abubakarsadiq> ```
10917:29 <abubakarsadiq> [net] start sending v2 handshake to peer=11
11017:29 <abubakarsadiq> [net] socket closed for peer=11
11117:29 <abubakarsadiq> [net] disconnecting peer=11
11217:29 <abubakarsadiq> [net] retrying with v1 transport protocol for peer=11
11317:29 <abubakarsadiq> ```
11417:32 <cbergqvist> The second test which some are already running is "v2 Transport on by Default" - https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Candidate-Testing-Guide#v2-transport-on-by-default
11517:32 <cbergqvist> This enables encrypted communication by default, even on IPv4/IPv6.
11617:33 <cbergqvist> Problem is just finding nodes supporting it. :)
11717:33 <dzxzg> @abubakarsadiq, do you have anything like:
11817:33 <dzxzg> 2024-03-16T17:15:05Z New addr-fetch v2 peer connected: version: 70016, blocks=187042, peer=0
11917:33 <dzxzg> in your debug.log? AFAIK it is expected that we attempt a v2 connection to peers first before reattempting as v1
12017:34 <glozow> oh, are you on signet?
12117:35 <dzxzg> Yes
12217:35 <abubakarsadiq> No am on mainnet
12317:35 <dzxzg> Oh
12417:35 <stickies-v> cbergqvist: hopefully, after releasing v27 automatically peering with v2 nodes should be more frequent 🤞
12517:36 <abubakarsadiq> dzxzg: nothing like that
12617:36 <cbergqvist> v26 nodes do support v2, but it's not enabled by default as I understand it. Will they reject v2 attempt by default, or is it just that they will try v1 first when initiating?
12717:38 <Jamal> "v2 Transport on by Default" test successful
12817:38 <mayrf_> "v2 Transport on by Default" test ok
12917:39 <ion-> "v3 Transaction Policy" re-tested ok
13017:39 <lightlike> cbergqvist: v26 nodes only support v2 connections if they are started with the -v2transport option. If that option isn't used, they will reject v2 connections.
13117:40 <dzxzg> @abubakarsadiq I have not verified if achow's mainnet node is v2, but the signet node is
13217:41 <cbergqvist> lightlike: thanks, will be hard to find random peers on mainnet with it enabled then.
13317:42 <cbergqvist> Next test: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Candidate-Testing-Guide#netinfo-backward-compatibility-with-pre-v26-nodes
13417:43 <cbergqvist> Slightly more minor change, client/server version compatibility fix.
13517:44 <mayrf_> "netinfo backward compatibility with pre-v26 nodes" test successful
13617:45 <achow101> dzxzg: all of my nodes have v2 enabled
13717:47 <edilmedeiros> "v3 Transaction Policy" ok
13817:47 <ion-> "CoinGrinder coin selection algorithm" re-tested ok
13917:48 <Naiyoma> "v2 Transport on by Default" Test Ok
14017:49 <dzxzg> abubakarsadiq: did you run your mainnet node with `dnsseed=0` and `fixedseeds=0`
14117:51 <dzxzg> for the v2 test (if you're still on that test, if not no worries )
14217:51 <cbergqvist> just tested with what dzxzg suggested + rm ~/.bitcoin/peers.dat + anchors.dat, started bitcoind, then used bitcoin-cli addnode bitcoin.achow101.com add
14317:51 <abubakarsadiq> no I did normal ./configure and ./src/bitcoind to see if I will get a V2 peer in the wild.
14417:52 <abubakarsadiq> But I connected successfully to a V2 peer from glozow
14517:53 <dzxzg> oh I see, my mistake
14617:53 <Jamal> "v3 Transaction Policy" test Ok
14717:54 <edilmedeiros> coingrinder test ok. Quite impressive to see such a big transaction, it was never a use case for me.
14817:56 <mayrf_> "v3 Transaction Policy" test successful
14917:57 <ion-> "migratewallet RPC is no longer experimental" re-tested ok
15017:57 <ion-> Completed all tests - ok
15117:58 <marcofleon> edilmedeiros Agreed, it was cool for me to see too. Having something like coingrinder in core just makes sense with fees getting higher
15217:59 <cbergqvist> Thanks everyone for joining and testing! Please continue to see if you can break the release. :)
15317:59 <edilmedeiros> " migratewallet RPC is no longer experimental" ok
15417:59 <edilmedeiros> Completed all tests
15517:59 <tdb3> Thanks everyone
15617:59 <edilmedeiros> Thanks everyone
15718:00 <ion-> That was fun again!
15818:00 <edilmedeiros> I'll put some more time trying to break things.
15918:00 <Naiyoma> "v3 Transaction Policy" Test Ok
16018:00 <cbergqvist> (Meeting format inspired by kouloumos (https://bitcoincore.reviews/v24-rc-testing))
16118:00 <cbergqvist> #endmeeting