pull down to refresh

Is this the answer I've been looking for?

source

122 sats \ 7 replies \ @oomahq 3h

Yes. The pre BIP-110 chain can always be wiped out again and again even if it gets ahead momentarily, while the BIP-110 chain cannot be wiped out when it falls behind.

To neuter this effect a counter-softfork would need to be deployed. Thence the lowest friction to a miner is to go with a soft fork.

reply
121 sats \ 1 reply \ @Scoresby OP 1h

Same energy:

It seems to me that this is all predicated on having a majority of hashrate. My frustration has been with an argument that goes: "We don't need a majority of hashrate because we will eventually get a majority of hashrate."

reply
102 sats \ 0 replies \ @Murch 1h
"We don't need a majority of hashrate because we will eventually get a majority of hashrate."

That’s it: you have distilled the essence of the RDTS fallacy perfectly.

reply
0 sats \ 4 replies \ @Murch 2h

That’s unnecessary if support for RDTS remains as marginal as expected. Miners could also use invalidateblock on the first block of the RDTS chain to ignore the RDTS chain permanently; no fork necessary.

reply
21 sats \ 3 replies \ @oomahq 54m

Well, what you just described is a fork. The counter-softfork I alluded to, actually.

reply
0 sats \ 2 replies \ @Murch 51m

Fair enough! I thought you meant to express that it required a coordinated software update with a consensus rule change.

reply
2 sats \ 1 reply \ @oomahq 49m

Running invalidateblock in the manner you described is a consensus rule change (soft fork, introduction of a new rule) that targets RDTS, so.. Yes, that's what I meant.

reply
0 sats \ 0 replies \ @Murch 45m

Yeah, that’s why I said “fair enough”.

reply

This is why using Voskuil's code, where you can set your own checkpoints, promises Super Fun Times ahead.

reply
100 sats \ 4 replies \ @Murch 2h

Bitcoin Core has invalidateblock which you could use to render your node unable to consider the RDTS chain.

reply

As I understand it, it works differently. But to be honest I only remember sipa's narration so i have to re-review code to actually be sure.

I'll do that tomorrow.

reply
100 sats \ 2 replies \ @Murch 1h

A checkpoint is a commitment to a specific block, invalidateblock rules out a specific block. Is it that what you mean?

However, if RDTS doubles down on their minority chaintip, invalidating the first block of that branch in the chain makes your node consider all descending blocks invalid, too.

reply
0 sats \ 1 reply \ @optimism 1h
However, if RDTS doubles down on their minority chaintip

I think the if is hardcoded to a block height / flag day, so this is not a question of if or even when anymore. It's a question of "what now"?

invalidating the first block of that branch

The one that applies to forking rules, yes.


I just re-read #5316 - must have been 11 years since I read that ugh - and now I think I'm confused about the mechanism. I remember that at one point the consensus was that invalidateblock would tag a block to lose to a competing block of lower weight, but now I am uncertain of where I read that.

reply
0 sats \ 0 replies \ @Murch 1h

No, invalidateblock causes your node to treat the passed block as invalid. Naturally, any blocks succeeding it are therefore also treated as invalid. And IIRC, we ban peers that send us invalid blocks, so you also get rid of your RDTS peers all in one go.

reply