HomePhabricator

Drop miniupnp dependency

Description

Drop miniupnp dependency

Summary:
Miniupnpc is a C library (somewhat) maintained by a single person which had several vulnerabilities in the past, some of which directly affected our software.

The main purpose of this functionality is to have more (non-data-center) reachable nodes on the network. For a non-technical user running Bitcoin ABC at home, the software would automatically open a port on their router to receive incoming connections. This way, users not able to manually open a port on their router would still provide the network with more resources and enhance its diversity.

However, due to past vulnerabilities (and a worry about unknown future ones) in miniupnpc this feature was disabled by default in core#6795. Having it disabled by default kills (most of?) the purpose of having this functionality in the first place: someone technical enough to understand the -upnp startup option or the "enable UPnP" setting is most likely able to open a port on his box in the first place.

In addition, laanwj implemented PCP with a NAT-PMP fallback. If we ever want to re-enable automatic NAT traversal by default in Bitcoin ABC, this is the best option. The NAT-PMP fallback makes it so compatibility shouldn't be (much of) an issue.

This is a backport of core#31130
Depends on D19778
Ref T3982

Test Plan:
ninja all check-all
guix builds

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Maniphest Tasks: T3982

Differential Revision: https://reviews.bitcoinabc.org/D19762

Details

Provenance
PiRKAuthored on Mar 31 2026, 14:29
PiRKPushed on Apr 3 2026, 07:53
Reviewer
Restricted Project
Differential Revision
D19762: Drop miniupnp dependency
Parents
rABC4fc6e28201ca: Bump version to 0.33.1
Branches
Unknown
Tags
Unknown
Tasks
Restricted Maniphest Task

Event Timeline