ResistancePlatform / resistance-core

Resistance Core
Other
10 stars 4 forks source link

Should binaries be build during package build? Network split due to different underlying libraries? #71

Closed adrelanos closed 4 years ago

adrelanos commented 5 years ago

After bitcoin existing for more than 10 years, being popular and being in Debian unstable (sid) it still never made its way into Debian testing.

Reason being explained that a difference in underlying libraries (even just security fixes) may result in a network split.

Binaries compiled during packaging on different versions of Debian and/or Ubuntu might have different libraries that might cause that.

References: https://packages.debian.org/search?keywords=bitcoin-qt https://packages.debian.org/sid/bitcoin-qt

Discussion by Debian developers: upstream does not support stable releases (block migration to testing)

(Note: above website saying Tags: fixed-upstream is probably a mistake as discussion at bottom says.)

Note: There is a similar discussion about the miner here: https://github.com/ResistancePlatform/resistance-miner/issues/10

solardiz commented 4 years ago

As I understand, the concern is that with a popular binary build a (mis)compile of it or differently behaving libraries can cause a significant portion of nodes to accept a block that differently compiled nodes would not. If both sets of nodes are large, then we may have a network split that wouldn't resolve itself on its own.

OTOH, the same is possible even with source code only releases if there's a very popular OS and version to build and run a node on, which is likely the case.

Speaking of library versions, for Resistance the issue is partially mitigated by download-during-build of very specific versions of some libraries, thereby reducing the number of library versions coming from the system. We inherited this from Zcash.

A higher risk relating to library versions is thus not with binary builds, but with differences between library versions as Zcash releases (and then us) upgrade them from time to time, rightly not treating such upgrades as expected hard-forks, which they are not meant to be. A certain difference in semantics (likely a bug) that isn't detected in time (before new code is released for use on mainnet) could potentially cause a network split.

For Resistance, the current reality is that we already produce and release binary builds of the GUI wallet, which currently includes a full node. This shouldn't change regardless of how we rate the concerns mentioned above, so the point of further discussion is moot.