5

Previous Bitcoin Core PR review club sessions A good starting point is the various Bitcoin Core PR review club sessions that have been held thus far on specific commits of the Taproot PR. The latest one was on "Implement Taproot validation" (hosted by John Newbery) and there are various notes and a transcript of the meeting there. There are also ...


4

From https://github.com/bitcoin/bitcoin/blob/v0.18.1/CONTRIBUTING.md#peer-review: Anyone may participate in peer review which is expressed by comments in the pull request. Typically reviewers will review the code for obvious errors, as well as test out the patch set and opine on the technical merits of the patch. Project maintainers take into account the ...


4

From the Bitcoin Core developer notes, when the bash script is included in the commit message the "Travis CI job checks that the result of the script is identical to the commit." It also makes it more efficient to review for reviewers if they can review and run a bash script rather than needing to do additional checks that the PR covers all the ...


3

In the paper The Art, Science and Engineering of Fuzzing the authors define fuzzing as “a process of repeatedly running a program with generated inputs that may be syntactically or semantically malformed”. Fuzz testing is not a new concept. It was introduced in the early 1990s but at the present time its potential for finding bugs has not been fully explored ...


3

It depends on the situation. When the change is a few lines of code it is sufficient to show the author the patch and they will amend the pull request. You can do this using a ``` diff in the comments or link to your branch in the comments. If it is a bigger change, to avoid the clutter of the GitHub UI you can surround it by <details><summary>...


2

If you watched Fabian's presentation (or read the transcript) you'll have seen that he said you can use Valgrind for memory leak checks and that it can be used similarly to lldb. valgrind --leak-check=yes src/bitcoind -regtest There is a section in Fabian's doc on debugging Bitcoin with instructions on how to install Valgrind on MacOS and run it. Install ...


2

The Bitcoin Core PR review club site links to this beginner's guide to IRC. There are more impressive IRC setups such as Pieter Wuille's setup. My setup is: juicessh on my phone, ssh into my VPS (non-tor), where I run irssi in screen, which connects via tor to freenode and other networks But you said you wanted to minimize setup time. In that case I would ...


2

On Ubuntu, I like weechat. On OSX I've used Colloquy before but have recently upgraded to Textual which is not free -- unless you build it from source :-). There is even a web interface for freenode, but I'm not sure if it requires authentication to join the channel.


2

It is difficult to answer this question as I don't know what your current skillset is. You will need some basic command line and Git experience and you will need a GitHub account. I will assume these as prerequisites for the sake of brevity. (There is a great free introduction from Tracy Osborn to command line here. There is a free Codeacademy course on Git ...


2

The Bitcoin Core contributing guidelines recommend that post Concept ACK, Approach ACK: A review begins with ACK BRANCH_COMMIT, where BRANCH_COMMIT is the top of the PR branch, followed by a description of how the reviewer did the review. As you suggest "I ran the tests on typical hardware" generally isn't particularly useful as Bitcoin Core has ...


2

Each pull request usually isn't that big, so it's not hard to look through every line of code. Each pull goes through meticulous testing, in case of any malicious code or an unintended flaw. Why do you think it takes usually more than one month after the pull is made to get added, even though there is alot of discussion in the comments?


2

An uninitialized read is when a variable is created without an initial value and then the value of this variable is read. This should be avoided as the resulting behavior is unpredictable and could be different each time the program is run. According to cppreference.com: Normally uninitialized variables are a bad idea, and the only place where they are ...


2

The most common mistakes I have seen first time contributors make (and this includes me) is: Not opening the PR from a topic branch of the forked Bitcoin Core repo and instead opening it from the master branch of the forked Bitcoin Core repo Not adding the correct label at the start of the title of the PR e.g. doc: Address typo in file X Not squashing ...


2

These bip340_test_vectors are used in two places: the unit tests (src/test/key_tests.cpp) and the functional tests (test/functional/test_framework/key.py). The Python code for testing the bip340_test_vectors is here. There are 15 test cases in all but only 4 distinct secret keys, 7 distinct public keys (3 of them don't have secret keys) and 15 distinct ...


1

There is currently some (limited) guidance in CONTRIBUTING.md. The title of the pull request should be prefixed by the component or area that the pull request affects e.g. consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG The body of the pull request should contain sufficient description of what the patch does, and even more importantly, why, ...


1

The primary use of DrahtBot is to add automated comments to a PR that list other PRs that conflict with the PR you are viewing. It was written and is managed by Marco Falke but it is not currently open source (it is "ugly" code and wasn't written with the intention to make it open source). Marco stated on IRC: DrahtBot is basically a while true; ./...


1

You could always run make clean between builds but a lot of the time it won't be necessary and it is slower. Pieter Wuille usually doesn't run make clean and only runs it when the build fails. If it still fails after that he runs git clean -dfx. Warning: This deletes everything and resets your work directory to a fresh checkout. You'll need to autogen.sh ...


1

The tool ccache helps store intermediate compilation results, so if you changes branches often, and rebuild, it can significantly speed up doing so. To use it, you install ccache for your platform. That's it. The Bitcoin Core configure script will detect its presence, and use it automatically.


Only top voted, non community-wiki answers of a minimum length are eligible