Skip to content

Instantly share code, notes, and snippets.

Chronological list of notable controversial PRs [^1]

Below is a brief, developer-focused snapshot of the most debated Bitcoin Core pull requests.
It illustrates how the project's review culture has matured from "merge first, debate later" (early 2010s) to an explicit expectation that substantive consensus be demonstrated before code is merged. Today, Core contributors steer big-picture protocol questions to the BIP process, mailing lists, and public meetings, so that a GitHub PR can stay a narrowly-scoped code review rather than a referendum. The entries show---case-by-case---where that norm held, where it was stress-tested, and how decisions ultimately landed.


PR # (year) What the PR did Supporters' position Opponents' position Resolution / Repercussions
#669 (2011) Added OP_EVAL to enable generalized pay-to-script functionality. Fast path to multisig & complex scripts. Feared cons

Hosted by ryanofsky at CoreDev 2025-02-27 11:40, transcription by stickies-v

Transcript

Think of multiprocess in terms of the features it provides.

Multiprocess Features

The first main feature is modularization. Having a separate binary for gui, wallet, node, that prevent lockups between processes. This also allows to e.g. spin up multiple GUIs to a single node, or a node without wallet, ...

The second feature is the -ipcbind feature. In addition to be able to spawn process, we can listen to a socket which anyone can connect to. This allows third-parties (e.g. Stratum V2 as one current practical example) to hook into Bitcoin Core internals. ipcbind was of course required for the first feature (modularization), but it just offers more flexibility on top of that.

@ryanofsky
ryanofsky / shell.nix
Created September 30, 2024 13:16
bitcoin shell.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [
pkgs.boost
pkgs.libevent
pkgs.miniupnpc
pkgs.zeromq
pkgs.zlib
pkgs.db48
$ snapcraft cleanbuild --debug
The snap/ directory is meant specifically for snapcraft, but it contains the following non-snapcraft-related paths, which is unsupported and will cause unexpected behavior:
- LICENSE
- patches
- patches/default_data_dir.patch
- snap
- snap/gui
- snap/gui/bitcoin-qt.desktop
- snap/gui/bitcoin128.png
$ git grep -n '^ \+\(virtual \)\?[A-Za-z]\+ [a-z][a-zA-Z]\+(' 'src/**.h'
src/arith_uint256.h:84: double getdouble() const;
src/arith_uint256.h:234: return sizeof(pn);
src/bench/bench.h:105: virtual void header() = 0;
src/bench/bench.h:106: virtual void result(const State& state) = 0;
src/bench/bench.h:107: virtual void footer() = 0;
src/bench/bench.h:114: void header() override;
src/bench/bench.h:115: void result(const State& state) override;
src/bench/bench.h:116: void footer() override;
src/bench/bench.h:124: void header() override;
$ git rev-parse HEAD
2a583406c00761c0ac1d162531256b401d5b16c3
$ brew list --versions
autoconf 2.69
automake 1.16.1_1
berkeley-db@4 4.8.30
boost 1.67.0_1
gdbm 1.17
libevent 2.1.8
libpng 1.6.35
Verifying that +ryanofsky is my blockchain ID. https://onename.com/ryanofsky
### Keybase proof
I hereby claim:
* I am ryanofsky on github.
* I am ryanofsky (https://keybase.io/ryanofsky) on keybase.
* I have a public key whose fingerprint is E414 AA12 19FD 5318 D927 A586 6FD1 5F4B 1646 50CC
To claim this, I am signing this object: