1

What is the benefit of forced signaling in a soft fork activation mechanism? e.g. the MUST_SIGNAL phase in revised BIP 8.

I understand the benefits of setting lockinontimeout (LOT) to true (some of those benefits are described here) but why have a period of say two weeks when miners have to signal before the soft fork moves into the LOCKED_IN phase. Why not just define when that LOCKED_IN phase will begin (assuming miners fail to activate the soft fork before then) and ditch the MUST_SIGNAL phase?

Matt Corallo states "Forced signaling isn’t required for many flag day designs, and is the biggest single risk of any proposed feature for an uncontroversial activation."

2 Answers 2

3

It depends highly on who you ask. Indeed, I (and several others) have argued that there is no reason whatsoever for forced-signaling. Greg Maxwell wrote a long and in-depth piece about why it provides no additional assurances beyond what any soft fork provides on GitHub, which is likely of interest to anyone coming across this post. Ultimately, the point is all about "when is a soft fork active". Probably the best resource on the subject is Pieter Wuille's old post from 2015 on bitcoin-dev, but to summarize, the answer is, largely "when it is understood that the vast majority of economic nodes in the Bitcoin system are enforcing the rules via full node software which they run", in other words "when full nodes are enforcing it".

Some confusion has entered the discussion as, in many past soft forks, we've utilized miner signaling to bridge the gap between old full nodes unaware of an upgrade and new full nodes enforcing the rules. Effectively, we've said "the soft fork is active when new nodes have upgraded and miners have signaled readiness above a certain threshold" - ultimately it's about nodes having upgraded and enforcing the rules, but there's nothing to stop us saying "nodes only enforce the rules if miners upgrade". Similarly, there's nothing wrong with saying "nodes always enforce the rules, because miners aren't doing something users want".

In general, the argument in favor of forced-signaling basically goes like this: "if we start by assuming users are running software which interprets the signaling bit, then ensuring the bit is signaled on ensures that users are enforcing the rules". However, there's not a lot of reason to make that initial assumption. The reason we do use miner signaling in the first place is it reduces the risk of forks and reorgs visible to un-upgraded nodes - something that could expose some users to fund thefts due to double-spend. However, if we use forced-signaling, that advantage goes out the window, indeed, we get the exact opposite outcome - on day one of the fork, we immediately create reorgs visible to un-upgraded nodes, putting their ability to accept payment at risk.

3
1

A two week (2016 blocks) forced signaling phase has two major advantages.

Firstly, it offers a signal to the network that miners will be enforcing the soft fork rules in the next phase following the forced signaling. It is an imperfect signal as miners could follow the forced signaling and then not enforce the soft fork rules but it is better than nothing. To actually do this would suggest maliciousness or incompetence.

Secondly, it presents the possibility for mined blocks that aren't signaling being rejected in advance of when soft fork rules are supposed to be enforced. Not only does this provide an incentive for miners to signal (their mined blocks could get rejected otherwise) but it attempts to, temporarily until they agree to enforce the soft fork rules, kick them off the network so only miners that are enforcing the soft fork rules are on the network post activation. The whole point of soft fork activation is to attempt to coordinate across economic full nodes (and miners) a block height for when soft fork rules will be enforced from. We attempt to do everything possible to provide clarity to the network on what this block height is. In a scenario where miners have failed to meet the signaling threshold for a long period (e.g. a year) forced signaling is an important tool in the toolkit. If miners meet the signaling threshold in advance of the forced signaling it obviously is not needed.

Luke Dashjr stated on IRC:

The primary purpose is to definitively indicate the soft fork is active on the chain. While it still relies on enforcement, this ensures there is no dispute over what the correct rules are. As a side effect this also makes it easy for any group of dissenters to reject the new rules. The intent of a soft fork should never be to literally force new rules (upon dissenters)

(Luke is referring to dissent against the soft fork rather than dissent against the activation mechanism set in a Bitcoin protocol implementation.)

David Harding added that MUST_SIGNAL forced signaling has additional value in a scenario where there are both BIP 8(LOT=true) and BIP 8(LOT=false) nodes on the network. It ensures the soft fork activates for nodes setting LOT=false when the majority of the network is setting LOT=true.

I run a node with LOT=false; everyone else runs a node with LOT=true. At block xxxxxx, y'all start enforcing taproots rules, but I never saw any signal, so I continue treating taproot transactions as anyone-can-spend, which is bad for me personally. If there are a lot of people with LOT=false, it also makes it unclear whether taproot is really being enforced, increasing the risk that miners may try to steal funds sent to taproot outputs.

In addition David Harding argues that forced signaling is not particularly dangerous.

What makes forced signaling so dangerous? We had that with the BIP34, BIP66, and BIP65 forks. Except for a hiccup with BIP66 due to spy mining, I don't think there was any problem. BIP8 forced signaling is also only required for a brief period, so any disruption should be short

Comparing a forced signaling phase to a flag day was discussed further on this BIP PR.

2
  • 2
    It should be noted that the new rules can be just as easily rejected without forced signalling by requiring that the block at activation height is invalid according to the rejected rules. Can you elaborate what "no dispute over what the correct rules are" means? There can be dispute over what a signalling bit means just as well as there can be dispute over what a flag blockheight means.
    – nickler
    Apr 20, 2021 at 13:59
  • Thanks for the comment nickler. It is Luke's quote but my understanding of "correct rules" is whether the network is enforcing the soft fork rules or not. Indeed a forced signaling bit is not perfect in this respect but it is better than nothing. At least in my eyes following forced signaling but then not enforcing the soft fork rules afterwards demonstrates either maliciousness or incompetence. Although these are both possible you would expect in majority of cases that miners following forced signaling demonstrates that they will be enforcing the soft fork rules in an upcoming phase. Apr 21, 2021 at 14:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.