public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
@ 2021-02-19 22:12 Matt Hill
  2021-02-19 23:30 ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Hill @ 2021-02-19 22:12 UTC (permalink / raw)
  To: bitcoin-dev

[-- Attachment #1: Type: text/plain, Size: 2119 bytes --]

Good day all, this is my first post to this mailing list. Per Adam's
comment below:

> given there are clearly people of both views, or for now don't care
but might later, it would minimally be friendly and useful if
bitcoin-core has a LOT=true option - and that IMO goes some way to
avoid the assumptive control via defaults.

Both here and elsewhere, the debate taking place is around the manner of
Taproot activation, not whether or not Taproot should be activated. The
latter seems to have widespread support. Given this favorable environment,
it seems to me this is an incredible opportunity for the developer
contingency to "take the high road" while also minimizing time to Taproot
activation using political incentives. By offering power on the left hand
to miners and and power on the right to users, neither of whom is
expressing disapproval of activation, but both of whom are able to activate
without the consent of the other, both are incentivized to signal
activation as quickly as possible to emerge as the "group that did it". All
that must be done is to include a LOT=true option to Bitcoin Core that
carries a default of LOT=false. Miners can activate at any time, users can
signal their intent to activate should miners renege, and developers emerge
as politically neutral in the eyes of both.

Extrapolating a bit, I contend this expanded agency of full node
operatorship may result in more users running a full node, which is good
and healthy. From a miner's point of view, more full nodes only increases
the likelihood of future UASFs, and so they are even further incentivized
to expedite Taproot activation. Perhaps this is a stretch, perhaps not.

To summarize: (1) this positions developers as neutral facilitators who
deferred power to the other contingencies; (2) we may see a rise in the
popularity of running a full node and the number of full node operators;
(3) miners are incentivized to activate quickly to avoid being perceived as
the "bad guys" and to avoid the spread of full nodes; and (4) even if
miners do not activate, users can organize a UASF in a grass-roots way.

Matt Hill

[-- Attachment #2: Type: text/html, Size: 2896 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 22:12 [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT) Matt Hill
@ 2021-02-19 23:30 ` Matt Corallo
  2021-02-19 23:42   ` Bryan Bishop
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Corallo @ 2021-02-19 23:30 UTC (permalink / raw)
  To: Matt Hill via bitcoin-dev

(off-list)

Your email client didn't thread correctly, so I'm not sure if you saw my responses to Adam's email, but note that there 
is no such thing as "All that must be done" here - supporting multiple, different, consensus rules for a given chain is 
a nontrivial undertaking in Bitcoin Core from a software perspective. The only practical way is to, just treat it as a 
different chain, which, in practice, it could be.

One group running LOT=true and one running LOT=false results in two Bitcoins, and the software would need to be able to 
handle that (and, presumably, allow users to switch between chains).

Matt

On 2/19/21 17:12, Matt Hill via bitcoin-dev wrote:
> Good day all, this is my first post to this mailing list. Per Adam's comment below:
> 
>  > given there are clearly people of both views, or for now don't care
> but might later, it would minimally be friendly and useful if
> bitcoin-core has a LOT=true option - and that IMO goes some way to
> avoid the assumptive control via defaults.
> 
> Both here and elsewhere, the debate taking place is around the manner of Taproot activation, not whether or not Taproot 
> should be activated. The latter seems to have widespread support. Given this favorable environment, it seems to me this 
> is an incredible opportunity for the developer contingency to "take the high road" while also minimizing time to Taproot 
> activation using political incentives. By offering power on the left hand to miners and and power on the right to users, 
> neither of whom is expressing disapproval of activation, but both of whom are able to activate without the consent of 
> the other, both are incentivized to signal activation as quickly as possible to emerge as the "group that did it". All 
> that must be done is to include a LOT=true option to Bitcoin Core that carries a default of LOT=false. Miners can 
> activate at any time, users can signal their intent to activate should miners renege, and developers emerge as 
> politically neutral in the eyes of both.
> 
> Extrapolating a bit, I contend this expanded agency of full node operatorship may result in more users running a full 
> node, which is good and healthy. From a miner's point of view, more full nodes only increases the likelihood of future 
> UASFs, and so they are even further incentivized to expedite Taproot activation. Perhaps this is a stretch, perhaps not.
> 
> To summarize: (1) this positions developers as neutral facilitators who deferred power to the other contingencies; (2) 
> we may see a rise in the popularity of running a full node and the number of full node operators; (3) miners are 
> incentivized to activate quickly to avoid being perceived as the "bad guys" and to avoid the spread of full nodes; and 
> (4) even if miners do not activate, users can organize a UASF in a grass-roots way.
> 
> Matt Hill
> 
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 23:30 ` Matt Corallo
@ 2021-02-19 23:42   ` Bryan Bishop
  0 siblings, 0 replies; 42+ messages in thread
From: Bryan Bishop @ 2021-02-19 23:42 UTC (permalink / raw)
  To: Matt Corallo, Matt Hill, Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 585 bytes --]

On Fri, Feb 19, 2021 at 5:31 PM Matt Corallo via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> (off-list)
>
> Your email client didn't thread correctly, so I'm not sure if you saw my
> responses to Adam's email, but note that there


That was not off-list; by the way, as a reminder, some users are digest
subscribed (or not subscribed at all) and they can only reply by making a
new email thread unless they want to forge the email headers to match the
thread (which is a lost art that not many people are familiar with anymore).

- Bryan
https://twitter.com/kanzure

[-- Attachment #2: Type: text/html, Size: 1019 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-03-01 13:54                                               ` Erik Aronesty
@ 2021-03-02 18:32                                                 ` Ariel Lorenzo-Luaces
  0 siblings, 0 replies; 42+ messages in thread
From: Ariel Lorenzo-Luaces @ 2021-03-02 18:32 UTC (permalink / raw)
  To: Erik Aronesty; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 3560 bytes --]

I agree.

Thank you Erik for proposing it. It's a pretty good idea.

P.S. I wouldn't want a chain split of a low percentage of users though. The minority will be at the mercy of massive PoW swings and the chain will lose friends so it's not good for anyone. I recommend changing the final percentage to %50 because that's the hurdle where non-upgraded users *must* activate to avoid the risk of being reorged. The number of running users will quickly jump to 90%+ if it ever gets near 50%.

Cheers
Ariel Lorenzo-Luaces



On Mar 1, 2021, 5:54 AM, at 5:54 AM, Erik Aronesty <erik@q32•com> wrote:
>> Today users should start cooperating again to continue using the
>> optimal strategy.
>
>the "gradual" method of reducing the % of miners required for lock-in
>as time goes on seems to encode this optimal strategy.
>
>On Thu, Feb 25, 2021 at 6:43 AM Ariel Luaces via bitcoin-dev
><bitcoin-dev@lists•linuxfoundation.org> wrote:
>>
>> On Tue, Feb 23, 2021 at 12:09 PM Keagan McClelland via bitcoin-dev
>> <bitcoin-dev@lists•linuxfoundation.org> wrote:
>> >
>> > If social consensus is what drives technical consensus and not the
>other way around it seems as if there cannot exist a valid (rational?)
>reason to oppose Taproot itself, and then by extension with the
>arguments laid out above, LOT=true seems to be the logical conclusion
>of all of this, even if Core ships LOT=false at the outset.
>> >
>> > Where am I wrong here?
>> >
>> > Keagan
>> >
>> > On Mon, Feb 22, 2021 at 7:11 PM Jeremy via bitcoin-dev
><bitcoin-dev@lists•linuxfoundation.org> wrote:
>> >>
>> >> Personally, I think with either plan the ultimate risk of forking
>is low given probability to activate before timeout, so we should just
>pick something and move on, accepting that we aren't setting a
>precedent by which all future forks should abide. Given my
>understanding of the tradeoffs, I believe that the safest choice is
>LOT=true, but I wouldn't move to hold back a plan of LOT=false (but
>would probably take mitigative steps on community advocacy if it looks
>like there is non majority but non negligible LOT=true uptake).
>> >>
>> >> Cheers,
>> >>
>> >> Jeremy
>> >>
>> >>
>> >> _______________________________________________
>> >> bitcoin-dev mailing list
>> >> bitcoin-dev@lists•linuxfoundation.org
>> >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>> >
>> > _______________________________________________
>> > bitcoin-dev mailing list
>> > bitcoin-dev@lists•linuxfoundation.org
>> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>
>> To favor LOT=true because it seems like the inevitable result is like
>> playing the prisoner's dilemma and never cooperating instead of using
>> the most optimal strategy which is tit-for-tat (cooperating at first
>> and then cheating once for every time your counterparty cheats).
>>
>> During segwit users started by cooperating (BIP9, or "LOT=false"),
>> then a minority of
>> miners didn't cooperate (small veto but remember the majority of
>> miners cooperated), then users stopped cooperating in response
>(UASF),
>> then miners
>> reverted to cooperating (MASF while intolerant miners forked off).
>> Today users should start cooperating again to continue using the
>> optimal strategy.
>>
>> Cheers
>> Ariel Lorenzo-Luaces
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists•linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

[-- Attachment #2: Type: text/html, Size: 4537 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-24 22:37                                             ` Ariel Luaces
@ 2021-03-01 13:54                                               ` Erik Aronesty
  2021-03-02 18:32                                                 ` Ariel Lorenzo-Luaces
  0 siblings, 1 reply; 42+ messages in thread
From: Erik Aronesty @ 2021-03-01 13:54 UTC (permalink / raw)
  To: Ariel Luaces, Bitcoin Protocol Discussion

> Today users should start cooperating again to continue using the
> optimal strategy.

the "gradual" method of reducing the % of miners required for lock-in
as time goes on seems to encode this optimal strategy.

On Thu, Feb 25, 2021 at 6:43 AM Ariel Luaces via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> On Tue, Feb 23, 2021 at 12:09 PM Keagan McClelland via bitcoin-dev
> <bitcoin-dev@lists•linuxfoundation.org> wrote:
> >
> > If social consensus is what drives technical consensus and not the other way around it seems as if there cannot exist a valid (rational?) reason to oppose Taproot itself, and then by extension with the arguments laid out above, LOT=true seems to be the logical conclusion of all of this, even if Core ships LOT=false at the outset.
> >
> > Where am I wrong here?
> >
> > Keagan
> >
> > On Mon, Feb 22, 2021 at 7:11 PM Jeremy via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
> >>
> >> Personally, I think with either plan the ultimate risk of forking is low given probability to activate before timeout, so we should just pick something and move on, accepting that we aren't setting a precedent by which all future forks should abide. Given my understanding of the tradeoffs, I believe that the safest choice is LOT=true, but I wouldn't move to hold back a plan of LOT=false (but would probably take mitigative steps on community advocacy if it looks like there is non majority but non negligible LOT=true uptake).
> >>
> >> Cheers,
> >>
> >> Jeremy
> >>
> >>
> >> _______________________________________________
> >> bitcoin-dev mailing list
> >> bitcoin-dev@lists•linuxfoundation.org
> >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >
> > _______________________________________________
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
> To favor LOT=true because it seems like the inevitable result is like
> playing the prisoner's dilemma and never cooperating instead of using
> the most optimal strategy which is tit-for-tat (cooperating at first
> and then cheating once for every time your counterparty cheats).
>
> During segwit users started by cooperating (BIP9, or "LOT=false"),
> then a minority of
> miners didn't cooperate (small veto but remember the majority of
> miners cooperated), then users stopped cooperating in response (UASF),
> then miners
> reverted to cooperating (MASF while intolerant miners forked off).
> Today users should start cooperating again to continue using the
> optimal strategy.
>
> Cheers
> Ariel Lorenzo-Luaces
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-23 19:33                                           ` Keagan McClelland
  2021-02-23 23:14                                             ` Ben Woosley
@ 2021-02-24 22:37                                             ` Ariel Luaces
  2021-03-01 13:54                                               ` Erik Aronesty
  1 sibling, 1 reply; 42+ messages in thread
From: Ariel Luaces @ 2021-02-24 22:37 UTC (permalink / raw)
  To: Keagan McClelland, Bitcoin Protocol Discussion

On Tue, Feb 23, 2021 at 12:09 PM Keagan McClelland via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> If social consensus is what drives technical consensus and not the other way around it seems as if there cannot exist a valid (rational?) reason to oppose Taproot itself, and then by extension with the arguments laid out above, LOT=true seems to be the logical conclusion of all of this, even if Core ships LOT=false at the outset.
>
> Where am I wrong here?
>
> Keagan
>
> On Mon, Feb 22, 2021 at 7:11 PM Jeremy via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>>
>> Personally, I think with either plan the ultimate risk of forking is low given probability to activate before timeout, so we should just pick something and move on, accepting that we aren't setting a precedent by which all future forks should abide. Given my understanding of the tradeoffs, I believe that the safest choice is LOT=true, but I wouldn't move to hold back a plan of LOT=false (but would probably take mitigative steps on community advocacy if it looks like there is non majority but non negligible LOT=true uptake).
>>
>> Cheers,
>>
>> Jeremy
>>
>>
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists•linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

To favor LOT=true because it seems like the inevitable result is like
playing the prisoner's dilemma and never cooperating instead of using
the most optimal strategy which is tit-for-tat (cooperating at first
and then cheating once for every time your counterparty cheats).

During segwit users started by cooperating (BIP9, or "LOT=false"),
then a minority of
miners didn't cooperate (small veto but remember the majority of
miners cooperated), then users stopped cooperating in response (UASF),
then miners
reverted to cooperating (MASF while intolerant miners forked off).
Today users should start cooperating again to continue using the
optimal strategy.

Cheers
Ariel Lorenzo-Luaces


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-23  2:10                                         ` Jeremy
  2021-02-23 19:33                                           ` Keagan McClelland
@ 2021-02-24  7:18                                           ` Anthony Towns
  1 sibling, 0 replies; 42+ messages in thread
From: Anthony Towns @ 2021-02-24  7:18 UTC (permalink / raw)
  To: Jeremy, Bitcoin Protocol Discussion

On Mon, Feb 22, 2021 at 06:10:34PM -0800, Jeremy via bitcoin-dev wrote:
> Not responding to anyone in particular, but it strikes me that one can think
> about the case where a small minority (let's say H = 20%?) of nodes

I don't think that's a good way to try to look at things -- number of
nodes has some impacts, but they're relatively minor (pun deflected).

I think the things to look at are (from most to least important):

 (1) what the price indicates / what people buying/selling BTC want
 (2) what hashpower does
 (3) what nodes do

Here's a concrete example to help justify that ordering. Suppose
that for whatever reason nobody is particularly interested in running
lockinontimeout=true -- only 0.1% of nodes are doing it and they're not
the "economic majority" in any way. In addition, 15% of hashpower have
spent almost the entire signalling period not bothering to upgrade and
thus haven't been signalling and have been blocking activation.

Suppose further that there are futures/prediction markets setup so that
people can bet on taproot activation (eg the bitfinex chain split tokens,
or some sort of DeFi contracts), and the result is that there's some
decent profits to be made if it does activate, enough to tempt >55%
of hashpower into running with lockinontimeout=true. That way those
miners can be confident it will activate, take up contracts in the
futures/predictions markets, and be confident they'll win and get a
big payday. (Note that this means the people on the other side of those
contracts are betting that taproot *doesn't* activate)

Once a majority of hashpower is running lockinontimeout=true, it then
makes sense for the remaining hashpower to both signal for activation
and also run lockinontimeout=true -- otherwise they risk their blocks
being orphaned if too many blocks don't signal, and they build on top
of one.  Figuring out that a majority of hashpower is/will be running
lockinontimeout=true can be done either by a coinbase message or by
bip91-style signalling.

In that scenario, you end up with >90% of hashpower running with
lockinontimeout=true, even if only a token number of nodes in the wild
are doing the same.



It's possible to do estimates of what happens if a majority of miners
are using lockinontimeout=true, and the numbers end up pretty wild.

With 90% of miners signalling and running lockinontimeout=true, if the
remaining 10% don't signal, they can expect to lose around 3% of revenue
($2M) due to blocks getting orphaned. If the numbers are 85% running
lockinontimeout=true, and 15% not signalling, the non-signallers can
expect to lose about 37% of revenue ($38M) during the retarget period
prior to timeout. If 60% of miners are doing spy-mining for up to 90s,
they would expect to lose 0.9% of their spy-mining revenue ($2.5M). If
60% of hashpower is running lockinontimeout=true, while 40% don't
signal, the non-signallers will forego ~83% of revenue ($320M) due to
their blocks being orphaned, and if 60% of miners spy-mine for 90s, they
should expect to lose 5% of revenue ($10M) over the same period. Dollar
figures based on 6.25BTC/block at $50k per BTC.

https://gist.github.com/ajtowns/fbcf30ed9d0e1708fdc98a876a04ff69#file-forced_signalling_chaos_cost_sim-py

Note that if miners simply accept those losses and don't take any
action to prevent it, very long reorgs are to be expected -- in the 15%
non-signalling scenario, you'd expect to see a 5-block reorg; in the 40%
non-signalling scenario, you'd get reorgs of 60+ blocks. (Only people
not running lockinontimeout=true would see the blocks being reorged out,
of course)


So I think focussing on how many nodes have a particular lockinontimeout
setting can be pretty misleading.

> # 80% on LOT=false, 20% LOT=True
> - Case 1: Activates ahead of time anyways

That's the case where >90% of hashpower is signalling, and everything
works fine.

> - Case 2: Fails to Activate before timeout...
> 20% *may* fork off with LOT=true.

Anyone running with lockinontimeout=true will refuse to follow a chain
where lockin hasn't been reached by the timeout height; so if the most
work chain meets that condition, lockinontimeout=true nodes will refuse
to follow it; either getting stuck with no confirmations at all, or
following a lower work chain that does (or can) reach lockin by timeout
height.

> Bitcoin hashrate reduced, chance of multi
> block reorgs at time of fork relatively high, especially if network does not
> partition.

If the most-work chain fails to activate, and only a minority of
hashrate is running lockinontimeout=true, the chance of multiblock
reorgs is actually pretty low. The way it would play out in detail,
with say 20% of hashpower not signalling and 40% of hashpower running
lockinontimeout=true:

  * the chain reaches the last retarget period; lockinontimeout=false
    nodes stay in STARTED, lockinontimeout=true nodes switch to
    MUST_SIGNAL

  * for the first ~1009 blocks, everyone stays in sync, but block ~1010
    becomes the 202nd non-signalling block, meaning that the 60% of
    hashpower on lockinontimeout=false is now one block ahead of the 40%
    of hashpower on lockinontimeout=true

  * it's possible that the 40% have a lucky run and get ahead of the 60%
    chain causing a reorg. But in that case the within about 5 blocks,
    another non-signalling block will be mined and the 60% will be ahead
    again. So the 40% of lockinontimeout=true hashpower has to keep with
    with miners that have 150% of their hashrate for ~1000 blocks in
    order for everyone to end up on a locked in chain, which is
    vanishingly unlike.

Even if you set the percentage not signalling to 11% and the percent of
hashpower running lockinontimeout=true to 48%, by my count you only get
about a 27% chance of ending up reaching lockin on the most work chain.
With the 40%/20% figures above it's a flat 0.0%.

https://gist.github.com/ajtowns/fbcf30ed9d0e1708fdc98a876a04ff69#file-test_disaster-py

It's possible that the 60% will take some action to prevent their blocks
being reorged out if the 40% do get lucky. One option would be for them
to set lockinontimeout=true -- then we quickly get back to the "almost
all hashpower ends up running lockinontimeout=true" and activation is
certain. But they could just as easily decide that one getblockchaininfo
reports a softfork isn't possible, they won't reorg to a chain where it
is possible unless it's 2 or 4 or 6 or whatever blocks longer.

> # 80% on LOT=true, 20% LOT=False
> - Case 1: Activates ahead of time Anyways
> No issues.

This is same case where there's plenty of signalling and it's irrelevant
what the setting for lockinontimeout is...

> - Case 2: Fails to Activate before timeout...

I'm not sure what you mean by "before timeout" here -- if you mean
it reaches the MUST_SIGNAL phase, with 80% of hashpower running
lockinontimeout=true, then things work out okay: even assuming that all
20% that are not running lockinontimeout=true are also not signalling,
then the miners who don't signal will lose up to 56% of their revenue for
the MUST_SIGNAL period (~$80M) , and if some of the lockinontimeout=true
miners do spy-mining and build on top of non-signalling blocks, they
may lose something like 1.7% of their revenue as well. In addition we
might see reorgs of up to ~10 blocks as this resolves itself. That's a
significant loss for the miners who are out of consensus, and the
liklihood of large reorgs will make doing business with bitcoin harder,
but that at least is all able to be coped with.

But if you mean the most work chain reaches the timeout height without
achieving locked in state, because the majority of miners aren't running
lockinontimeout=true, then the 80% of nodes running lockinontimeout=true
will be stalled, and unable to process transactions, until they downgrade.

If that ever occurred, it would be an astounding disaster, and I hope
the first thing people would do is decide never to run any software by
whoever proposed, ACKed or merged the PR that resulted in 80% of nodes
running with lockinontimeout=true.

*Because* it would be such a disaster to effectively run a
denial-of-service attack on 80% of nodes, it's plausible that price
signals would indicate to miners that it will be much more profitable to
run lockinontimeout=true, preventing that from occuring. But people can
make profits out of disasters too -- it might be that people will figure
"oh, the price will crash if this happens, so it'll be a chance to get
some cheap bitcoins, and maybe put competing miners out of business so
I can buy their ASICs off them for cheap too!"

> My overall summary is thus:
> 1) People care what Core releases because we assume the majority will likely
> run it. If core were a minority project, we wouldn't really care what core
> released.

That seems very backwards to me. I'd put it as: people run core because
it makes good, conservative decisions on what features to add. If
"choose your own consensus rules" were what the market wanted, then
Bitcoin Unlimited or similar would be what everyone was running.

If core were to change that policy and push risky changes, I'd hope
that users would be able to recognise this, and would switch to an
implementation that continues to emphasise safe, conservative policies.

> 2) People are upset with LOT=true being suggested as release parameters because
> of the narrative that it puts devs in control.

If users will just run whatever core devs release, even if it involves
contentious changes to consensus rules, then the core devs are in control.

> 3) LOT=true having a sizeable minority running it presents major issues to
> majority LOT=false in terms of lost blocks during the final period and in terms
> of a longer term fork.

As above, I think this scenario is easy to avoid if it were to
eventuate.

> 4) Majority LOT=true has no long term instability on consensus (majority LOT=
> true means the final period always activates, any instability is short lived +
> irrational).

The instability occurs if the lockinontimeout=true chain stalls or is
overtaken by a more-work non-activating chain, then users running nodes
with that parameter set will stop their nodes, and reinstall/reconfigure
it to set lockinontimeout=false.

> 5) On the balance, the safer parameter to release *seems* to be LOT=true. But
> because devs are sensitive to control narrative, LOT=false is preferred by
> devs.

I think that conclusion is based on a few shakey assumptions; particularly
that people won't downgrade/reinstall back to lockinontimeout=false
and that miners will be be pretty naive about allowing their blocks to
be orphaned.

> 6) Almost paradoxically, choosing a less safe option for a narrative reason is
> more of a show of dev control than choosing a more safe option despite
> appearances.

Going all-in on a bluff can be a good bet 9 times out of 10, while still
being a net negative because of the 1 time out of 10 when you lose. In
the examples above, the "80% of nodes running the default client can no
longer follow the blockchain without manual intervention" is the "lose
it all scenario", even if "taproot" is probably one of the 9/10 cases,
not the 1/10 case.

> 7) This all comes down to if we think that a reasonable number of important
> nodes will run LOT=true.

What nodes run (as compared to hashpower, or as compared to what people
want to buy/sell) is the least important factor in working out what's
going to happen.

> As a plan of action, I think that means that either:
> A) Core should release LOT=true, as a less disruptive option given stated
> community intentions to do LOT=true
> B) Core  community should vehemently anti-advocate running LOT=true to ensure
> the % is as small as possible
> C) Do nothing
> D) Core community should release LOT=false and vehemently advocate manually
> changing to LOT=true to ensure the % is supermajority, but leaving it as a user
> choice.

I think these are all a bit terrible as plans of action -- "core should
release X, then advocate Y" is really not playing to core's strengths.
Far better for devs to focus on writing/debugging code, analysing the
way things work, making tests, and adding mitigations for risks.

Better for bloggers and podcasters and the twitterati to do the advocacy,
and core to stick to working on code and saying "no, there are significant
technical risks to doing that that we don't yet have mitigations for"
when people advocate for risky things.

My view is more along the lines of:

 - the setting for lockinontimeout will not matter until around July 2022,
   (though maybe as early as May 2022 if blocks come really fast) either
   technically or even as a game theory incentive

 - lockinontimeout=true has consensus implications, and depending on
   the response by miners can cause network interruptions like long
   chains of reorgs. At best, it hasn't had the same level of review as
   taproot, and some experienced developers aren't comfortable with it
   as it stands. Those seem like pretty good reasons not to deploy it
   immediately, IMO.

 - the lockinontimeout=true code we've got doesn't do (at least) two
   things that the bip148 client did that help avoid bad cases:
     - ensure preferential connections to other nodes setting
       lockinontimeout=true to prevent network splits if the
       non-activating chain is longer during/after the MUST_SIGNAL phase
     - cope with rewinding the chain to the best lockinontimeout=true valid
       block, in the event a node is upgraded to lockinontimeout=true
       from either lockinontimeout=false or a version of bitcoind that
       doesn't have activation parameters set at all

I think it makes more sense to:

 1) release lockinontimeout=false code with a view to reconsidering it
    at about ~6 months (so prior to the 23.0 release)

 2) do more review of lockinontimeout=true code to ensure everyone
    understands what behaviours are likely

 3) add support for the features from the bip148 client, along with
    any other mitigations we think of, assuming we can do so in a way
    that's safe and sane

 4) work with miners and mining pools to ensure that if
    lockinontimeout=true does get used they know how to minimise
    disruption and losses due to orphaning, etc.

That gives us about 6 months work on (2) and (3), and probably 9-12
months to work on (4), and it's all technical rather than advocacy and
popularity contests. Six, nine or twelve months should be plenty of time
to get pretty clear indications of what both the market in general
thinks about things, and what miners are thinking.

I think if lockinontimeout=true weren't new code, and devs, miners and
users widely understood its potential behaviours and risks, and we didn't
have safety features that were still on the todo list, then there'd be
a good argument for doing lockinontimeout=true from day 1. I could see
that being the case for the next soft-fork, assuming it gets a similar
amount of review prior to deployment as taproot has had, eg. But, to me,
taking a more cautious approach seems more sensible today.

> If I had to summarize the emotional dynamic among developers [...]

(Fortunately, you don't have to do that...)

Cheers,
aj



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-23 19:33                                           ` Keagan McClelland
@ 2021-02-23 23:14                                             ` Ben Woosley
  2021-02-24 22:37                                             ` Ariel Luaces
  1 sibling, 0 replies; 42+ messages in thread
From: Ben Woosley @ 2021-02-23 23:14 UTC (permalink / raw)
  To: Keagan McClelland, Jeremy; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 12574 bytes --]

Relative to your arguments, Keagan and Jeremy, and speaking in favor of
LOT=false, from my limited perspective:

> As Jeremy points out, the LOT=true possibility always exists here, and we
have multiple high profile people saying they will be running that
regardless of how things turn out. It seems to me that in this scenario,
LOT=false does less to prevent a chain split.
> So if the goal is to prevent a chain split, and the soft fork is benign
and essentially "annexing unoccupied territory" with respect to script
versions, and no one actually has opposed Taproot itself, then I fail to
see how LOT=false is safer in the presence of a grenade defense by the
LOT=true crowd.

I don't believe the goal is to avoid a chain split, nor to activate
Taproot. Over the long term it will not have been important when exactly
Taproot activated, or whether a minority forked off, but what culture and
norms we adopted in putting forward this change. A culture of deference to
the network makes Core worthy of remaining the reference implementation of
Bitcoin.

Given Core's special position in the client ecosystem, I see these outcomes
are asymmetric:
a) If an intolerant minority signals LOT=true in contradiction to core,
they are splitting consensus / forking off consensus, which is their right
to do in our open ecosystem.
b) If Core ships LOT=true, we are in fact imposing a change on the network.
This may be justified in the end, but it should be used with discretion.

If LOT=false fails to activate, then the failure will have revealed
information about sentiments and elements of the network, and we will have
an opportunity then to address that information before proceeding with
LOT=true.

To adopt b) as a pre-emptive defense against a) is to express will without
evidence of necessity or opportunity for justification.

Finally, as others have said, I think this option is likely to be moot -
let's not act defensively out of SEGWIT trauma, but with trust in the
network.

Best,
Ben

On Tue, Feb 23, 2021 at 12:09 PM Keagan McClelland via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> I wanted to follow up on what Jeremy and others are saying regards finding
> consensus on LOT. I've seen a few other opinions saying that finding
> consensus on the LOT value is far more important than what the LOT value
> actually is. This makes sense because if 100% of economic activity is
> running the same rule set, there is no divergence, regardless of which
> value is picked.
>
> It is my understanding that those who oppose LOT=true are mostly opposed
> on the grounds of it *appearing* "unnecessarily coercive" and that this
> lack of consensus can precipitate a chain split at the
> "brinksmanship period" as Jeremy refers to it. I don't think that we can
> say that LOT=true is coercive at all unless there is some opposition to
> Taproot itself. Opposition on the grounds that it *may* be opposed by
> others and Core does not want to assert control over the protocol is a
> conservative view but ultimately contingent upon opposition to Taproot for
> more fundamental reasons. If no one opposes it, then by definition you have
> consensus, and in that case I also don't think that the LOT=true (or false)
> in that regard sets meaningful precedent, as I would expect precedents to
> only be meaningful if they were established during a contentious scenario.
> As it stands we have precedents for both MASF's and UASF's to execute soft
> forks in Bitcoin.
>
> Of course it seems intractable to ascertain the views of ~100% of the
> Bitcoin constituency, and therefore it gives credibility to the argument
> that by coming to consensus on LOT=false among those who *are* speaking
> up is safer with the embedded assumptions that modifying consensus beyond
> what core ships is an active choice, presumably by those who know what they
> are doing. However, the simple act of Core choosing to ship an
> unconfigurable LOT=false value does not *prevent* the forking and
> creation of a UASF client. As Jeremy points out, the LOT=true possibility
> always exists here, and we have multiple high profile people saying they
> will be running that regardless of how things turn out. It seems to me that
> in this scenario, LOT=false does less to prevent a chain split.
>
> In regards to precedent, there may be good reasons to force that minority
> to fork themselves off the network, as would be the case if a hypothetical
> soft fork was a consensus action to blacklist some UTXO's or something else
> that weaponizes consensus against some subset of Bitcoin's user base, but I
> haven't heard a single person who advocates for LOT=false on the grounds
> that they *themselves* oppose the consensus change that is being proposed
> here. So if the goal is to prevent a chain split, and the soft fork is
> benign and essentially "annexing unoccupied territory" with respect to
> script versions, and no one actually has opposed Taproot itself, then I
> fail to see how LOT=false is safer in the presence of a grenade defense by
> the LOT=true crowd.
>
> I personally *prefer* LOT=true for these reasons, but I am NOT going to
> be joining the ranks of the intolerant minority if Core ultimately ships
> LOT=false. I think it is more important to stay in consensus, and as a
> result I am able to be convinced that false is the right answer. My
> question to everyone else (true AND false advocates) is this: what would
> you have to observe, in order to change your mind or is it immutably made
> up? If we have a significant portion of the community that is immutably
> made up to go false, and another portion that is going to go true, the
> asymmetry of the fork almost *requires* that those of us whose opinions
> are malleable to break for true.
>
> If social consensus is what drives technical consensus and not the other
> way around it seems as if there cannot exist a valid (rational?) reason to
> oppose Taproot itself, and then by extension with the arguments laid out
> above, LOT=true seems to be the logical conclusion of all of this, even if
> Core ships LOT=false at the outset.
>
> Where am I wrong here?
>
> Keagan
>
> On Mon, Feb 22, 2021 at 7:11 PM Jeremy via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
>
>> Not responding to anyone in particular, but it strikes me that one can
>> think about the case where a small minority (let's say H = 20%?) of nodes
>> select the opposite of what Core releases (LOT=false, LOT=true). I'm
>> ignoring the case where a critical bug is discovered in Taproot for reasons
>> I could expand on if anyone is interested (I don't think LOT=true/false has
>> much of a diff in that regard).
>>
>> You'll note an asymmetry with LOT=true / false analysis. LOT=true nodes
>> are clearly updated (or lying), LOT=false nodes may be un-upgraded (or
>> however you want to interpret it).
>>
>>
>> *# 80% on LOT=false, 20% LOT=True*
>>
>> - Case 1: Activates ahead of time anyways
>>
>> No issues.
>>
>> - Case 2: Fails to Activate before timeout...
>>
>> 20% *may* fork off with LOT=true. Bitcoin hashrate reduced, chance of
>> multi block reorgs at time of fork relatively high, especially if network
>> does not partition.
>>
>> Implication is that activation % being 90%, then X% fewer than 70% of
>> miners are signaling for Taproot at this time.  If X% is small the
>> increased orphan rate caused by the LOT=true miners will cause it to
>> activate anyways. If X% is larger, then there will be a consensus split.
>>
>>
>>
>> *# 80% on LOT=true, 20% LOT=False*
>> - Case 1: Activates ahead of time Anyways
>>
>> No issues.
>>
>> - Case 2: Fails to Activate before timeout...
>>
>> A% + B% + C% = 20%
>>
>> A% (upgraded, signal activate) remain on majority chain with LOT=false,
>> blocks mined universally valid.
>>
>> B% (upgraded, not signaling) succeeds in activating and maintaining
>> consensus, blocks are temporarily lost during the final period, but
>> consensus re-emerges.
>>
>> C% (not upgraded/not signalling) both fail to activate (not upgraded) and
>> blocks are rejected (not signaling) during mandatory signalling.
>> Essentially becomes an SPV miner, should still not select transactions
>> improperly given mempool policy, but may mine a bad tip.
>>
>> (I argue that group B is irrational entirely, as in this case the
>> majority has upgraded, inevitably winning, and is orphaning their blocks so
>> B should effectively be 0% or can be combined with group C as being somehow
>> not upgraded if they are unable to switch once it becomes clear after say
>> the first 100 blocks in the period that LOT > 50%. The only difference in
>> lumping B with C is that group C SPV mines after the fork and B should, in
>> theory, have full validation.).
>>
>>
>>
>> Apologies if my base analysis is off -- happy to take corrections.
>>
>>
>> My overall summary is thus:
>>
>> 1) People care what Core releases because we assume the majority will
>> likely run it. If core were a minority project, we wouldn't really care
>> what core released.
>> 2) People are upset with LOT=true being suggested as release parameters
>> because of the *narrative* that it puts devs in control.
>> 3) LOT=true having a sizeable minority running it presents major issues
>> to majority LOT=false in terms of lost blocks during the final period and
>> in terms of a longer term fork.
>> 4) Majority LOT=true has no long term instability on consensus (majority
>> LOT=true means the final period always activates, any instability is short
>> lived + irrational).
>> 5) On the balance, the safer parameter to release *seems* to be LOT=true.
>> But because devs are sensitive to control narrative, LOT=false is preferred
>> by devs.
>> 6) Almost paradoxically, choosing a *less safe* option for a narrative
>> reason is more of a show of dev control than choosing a more safe option
>> despite appearances.
>> 7) This all comes down to if we think that a reasonable number of
>> important nodes will run LOT=true.
>> 8) This all doesn't matter *that much* because taproot will have many
>> opportunities to activate before the brinksmanship period.
>>
>> As a plan of action, I think that means that either:
>>
>> A) Core should release LOT=true, as a less disruptive option given stated
>> community intentions to do LOT=true
>> B) Core  community should vehemently anti-advocate running LOT=true to
>> ensure the % is as small as possible
>> C) Do nothing
>> D) Core community should release LOT=false and vehemently advocate
>> manually changing to LOT=true to ensure the % is supermajority, but leaving
>> it as a user choice.
>>
>>
>> Overall, I worry that plan B has a mild Streissand effect and would
>> result in boosting LOT=true (which could be OK, so long as LOT=true +
>> LOT=false+signal yes becomes the large majority, but would be not fun for
>> anyone if LOT=true + LOT=false+signal yes are a small majority). Plan C
>> most likely ends up with some % doing LOT=true anyways. D feels a little
>> silly, but maybe a good tradeoff.
>>
>> If I had to summarize the emotional dynamic among developers around
>> LOT=true, I think devs wish it didn't exist because it is clear LOT=true
>> *creates* the issues here. LOT=false would be fine if the LOT=true strategy
>> didn't exist at all. But unfortunately the cat is out of the bag and cannot
>> be put back in. To validate the emotions, I think it is fine to be angry
>> about LOT=true and not like it, but we should either accept that it is most
>> likely to create consensus OR we should find a new game theoretic
>> activation strategy with better pro-social equilibriums.
>>
>> Personally, I think with either plan the ultimate risk of forking is low
>> given probability to activate before timeout, so we should just pick
>> something and move on, accepting that we aren't setting a precedent by
>> which all future forks should abide. Given my understanding of the
>> tradeoffs, I believe that the safest choice is LOT=true, but I wouldn't
>> move to hold back a plan of LOT=false (but would probably take mitigative
>> steps on community advocacy if it looks like there is non majority but non
>> negligible LOT=true uptake).
>>
>> Cheers,
>>
>> Jeremy
>>
>>
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists•linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

[-- Attachment #2: Type: text/html, Size: 20078 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-23  2:10                                         ` Jeremy
@ 2021-02-23 19:33                                           ` Keagan McClelland
  2021-02-23 23:14                                             ` Ben Woosley
  2021-02-24 22:37                                             ` Ariel Luaces
  2021-02-24  7:18                                           ` Anthony Towns
  1 sibling, 2 replies; 42+ messages in thread
From: Keagan McClelland @ 2021-02-23 19:33 UTC (permalink / raw)
  To: Jeremy, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 10012 bytes --]

I wanted to follow up on what Jeremy and others are saying regards finding
consensus on LOT. I've seen a few other opinions saying that finding
consensus on the LOT value is far more important than what the LOT value
actually is. This makes sense because if 100% of economic activity is
running the same rule set, there is no divergence, regardless of which
value is picked.

It is my understanding that those who oppose LOT=true are mostly opposed on
the grounds of it *appearing* "unnecessarily coercive" and that this lack
of consensus can precipitate a chain split at the "brinksmanship period" as
Jeremy refers to it. I don't think that we can say that LOT=true is
coercive at all unless there is some opposition to Taproot itself.
Opposition on the grounds that it *may* be opposed by others and Core does
not want to assert control over the protocol is a conservative view but
ultimately contingent upon opposition to Taproot for more fundamental
reasons. If no one opposes it, then by definition you have consensus, and
in that case I also don't think that the LOT=true (or false) in that regard
sets meaningful precedent, as I would expect precedents to only be
meaningful if they were established during a contentious scenario. As it
stands we have precedents for both MASF's and UASF's to execute soft forks
in Bitcoin.

Of course it seems intractable to ascertain the views of ~100% of the
Bitcoin constituency, and therefore it gives credibility to the argument
that by coming to consensus on LOT=false among those who *are* speaking up
is safer with the embedded assumptions that modifying consensus beyond what
core ships is an active choice, presumably by those who know what they are
doing. However, the simple act of Core choosing to ship an unconfigurable
LOT=false value does not *prevent* the forking and creation of a UASF
client. As Jeremy points out, the LOT=true possibility always exists here,
and we have multiple high profile people saying they will be running that
regardless of how things turn out. It seems to me that in this scenario,
LOT=false does less to prevent a chain split.

In regards to precedent, there may be good reasons to force that minority
to fork themselves off the network, as would be the case if a hypothetical
soft fork was a consensus action to blacklist some UTXO's or something else
that weaponizes consensus against some subset of Bitcoin's user base, but I
haven't heard a single person who advocates for LOT=false on the grounds
that they *themselves* oppose the consensus change that is being proposed
here. So if the goal is to prevent a chain split, and the soft fork is
benign and essentially "annexing unoccupied territory" with respect to
script versions, and no one actually has opposed Taproot itself, then I
fail to see how LOT=false is safer in the presence of a grenade defense by
the LOT=true crowd.

I personally *prefer* LOT=true for these reasons, but I am NOT going to be
joining the ranks of the intolerant minority if Core ultimately ships
LOT=false. I think it is more important to stay in consensus, and as a
result I am able to be convinced that false is the right answer. My
question to everyone else (true AND false advocates) is this: what would
you have to observe, in order to change your mind or is it immutably made
up? If we have a significant portion of the community that is immutably
made up to go false, and another portion that is going to go true, the
asymmetry of the fork almost *requires* that those of us whose opinions are
malleable to break for true.

If social consensus is what drives technical consensus and not the other
way around it seems as if there cannot exist a valid (rational?) reason to
oppose Taproot itself, and then by extension with the arguments laid out
above, LOT=true seems to be the logical conclusion of all of this, even if
Core ships LOT=false at the outset.

Where am I wrong here?

Keagan

On Mon, Feb 22, 2021 at 7:11 PM Jeremy via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> Not responding to anyone in particular, but it strikes me that one can
> think about the case where a small minority (let's say H = 20%?) of nodes
> select the opposite of what Core releases (LOT=false, LOT=true). I'm
> ignoring the case where a critical bug is discovered in Taproot for reasons
> I could expand on if anyone is interested (I don't think LOT=true/false has
> much of a diff in that regard).
>
> You'll note an asymmetry with LOT=true / false analysis. LOT=true nodes
> are clearly updated (or lying), LOT=false nodes may be un-upgraded (or
> however you want to interpret it).
>
>
> *# 80% on LOT=false, 20% LOT=True*
>
> - Case 1: Activates ahead of time anyways
>
> No issues.
>
> - Case 2: Fails to Activate before timeout...
>
> 20% *may* fork off with LOT=true. Bitcoin hashrate reduced, chance of
> multi block reorgs at time of fork relatively high, especially if network
> does not partition.
>
> Implication is that activation % being 90%, then X% fewer than 70% of
> miners are signaling for Taproot at this time.  If X% is small the
> increased orphan rate caused by the LOT=true miners will cause it to
> activate anyways. If X% is larger, then there will be a consensus split.
>
>
>
> *# 80% on LOT=true, 20% LOT=False*
> - Case 1: Activates ahead of time Anyways
>
> No issues.
>
> - Case 2: Fails to Activate before timeout...
>
> A% + B% + C% = 20%
>
> A% (upgraded, signal activate) remain on majority chain with LOT=false,
> blocks mined universally valid.
>
> B% (upgraded, not signaling) succeeds in activating and maintaining
> consensus, blocks are temporarily lost during the final period, but
> consensus re-emerges.
>
> C% (not upgraded/not signalling) both fail to activate (not upgraded) and
> blocks are rejected (not signaling) during mandatory signalling.
> Essentially becomes an SPV miner, should still not select transactions
> improperly given mempool policy, but may mine a bad tip.
>
> (I argue that group B is irrational entirely, as in this case the majority
> has upgraded, inevitably winning, and is orphaning their blocks so B should
> effectively be 0% or can be combined with group C as being somehow not
> upgraded if they are unable to switch once it becomes clear after say the
> first 100 blocks in the period that LOT > 50%. The only difference in
> lumping B with C is that group C SPV mines after the fork and B should, in
> theory, have full validation.).
>
>
>
> Apologies if my base analysis is off -- happy to take corrections.
>
>
> My overall summary is thus:
>
> 1) People care what Core releases because we assume the majority will
> likely run it. If core were a minority project, we wouldn't really care
> what core released.
> 2) People are upset with LOT=true being suggested as release parameters
> because of the *narrative* that it puts devs in control.
> 3) LOT=true having a sizeable minority running it presents major issues to
> majority LOT=false in terms of lost blocks during the final period and in
> terms of a longer term fork.
> 4) Majority LOT=true has no long term instability on consensus (majority
> LOT=true means the final period always activates, any instability is short
> lived + irrational).
> 5) On the balance, the safer parameter to release *seems* to be LOT=true.
> But because devs are sensitive to control narrative, LOT=false is preferred
> by devs.
> 6) Almost paradoxically, choosing a *less safe* option for a narrative
> reason is more of a show of dev control than choosing a more safe option
> despite appearances.
> 7) This all comes down to if we think that a reasonable number of
> important nodes will run LOT=true.
> 8) This all doesn't matter *that much* because taproot will have many
> opportunities to activate before the brinksmanship period.
>
> As a plan of action, I think that means that either:
>
> A) Core should release LOT=true, as a less disruptive option given stated
> community intentions to do LOT=true
> B) Core  community should vehemently anti-advocate running LOT=true to
> ensure the % is as small as possible
> C) Do nothing
> D) Core community should release LOT=false and vehemently advocate
> manually changing to LOT=true to ensure the % is supermajority, but leaving
> it as a user choice.
>
>
> Overall, I worry that plan B has a mild Streissand effect and would result
> in boosting LOT=true (which could be OK, so long as LOT=true +
> LOT=false+signal yes becomes the large majority, but would be not fun for
> anyone if LOT=true + LOT=false+signal yes are a small majority). Plan C
> most likely ends up with some % doing LOT=true anyways. D feels a little
> silly, but maybe a good tradeoff.
>
> If I had to summarize the emotional dynamic among developers around
> LOT=true, I think devs wish it didn't exist because it is clear LOT=true
> *creates* the issues here. LOT=false would be fine if the LOT=true strategy
> didn't exist at all. But unfortunately the cat is out of the bag and cannot
> be put back in. To validate the emotions, I think it is fine to be angry
> about LOT=true and not like it, but we should either accept that it is most
> likely to create consensus OR we should find a new game theoretic
> activation strategy with better pro-social equilibriums.
>
> Personally, I think with either plan the ultimate risk of forking is low
> given probability to activate before timeout, so we should just pick
> something and move on, accepting that we aren't setting a precedent by
> which all future forks should abide. Given my understanding of the
> tradeoffs, I believe that the safest choice is LOT=true, but I wouldn't
> move to hold back a plan of LOT=false (but would probably take mitigative
> steps on community advocacy if it looks like there is non majority but non
> negligible LOT=true uptake).
>
> Cheers,
>
> Jeremy
>
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

[-- Attachment #2: Type: text/html, Size: 17051 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22 16:48                                       ` Jorge Timón
@ 2021-02-23  2:10                                         ` Jeremy
  2021-02-23 19:33                                           ` Keagan McClelland
  2021-02-24  7:18                                           ` Anthony Towns
  0 siblings, 2 replies; 42+ messages in thread
From: Jeremy @ 2021-02-23  2:10 UTC (permalink / raw)
  To: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 5577 bytes --]

Not responding to anyone in particular, but it strikes me that one can
think about the case where a small minority (let's say H = 20%?) of nodes
select the opposite of what Core releases (LOT=false, LOT=true). I'm
ignoring the case where a critical bug is discovered in Taproot for reasons
I could expand on if anyone is interested (I don't think LOT=true/false has
much of a diff in that regard).

You'll note an asymmetry with LOT=true / false analysis. LOT=true nodes are
clearly updated (or lying), LOT=false nodes may be un-upgraded (or however
you want to interpret it).


*# 80% on LOT=false, 20% LOT=True*

- Case 1: Activates ahead of time anyways

No issues.

- Case 2: Fails to Activate before timeout...

20% *may* fork off with LOT=true. Bitcoin hashrate reduced, chance of multi
block reorgs at time of fork relatively high, especially if network does
not partition.

Implication is that activation % being 90%, then X% fewer than 70% of
miners are signaling for Taproot at this time.  If X% is small the
increased orphan rate caused by the LOT=true miners will cause it to
activate anyways. If X% is larger, then there will be a consensus split.



*# 80% on LOT=true, 20% LOT=False*
- Case 1: Activates ahead of time Anyways

No issues.

- Case 2: Fails to Activate before timeout...

A% + B% + C% = 20%

A% (upgraded, signal activate) remain on majority chain with LOT=false,
blocks mined universally valid.

B% (upgraded, not signaling) succeeds in activating and maintaining
consensus, blocks are temporarily lost during the final period, but
consensus re-emerges.

C% (not upgraded/not signalling) both fail to activate (not upgraded) and
blocks are rejected (not signaling) during mandatory signalling.
Essentially becomes an SPV miner, should still not select transactions
improperly given mempool policy, but may mine a bad tip.

(I argue that group B is irrational entirely, as in this case the majority
has upgraded, inevitably winning, and is orphaning their blocks so B should
effectively be 0% or can be combined with group C as being somehow not
upgraded if they are unable to switch once it becomes clear after say the
first 100 blocks in the period that LOT > 50%. The only difference in
lumping B with C is that group C SPV mines after the fork and B should, in
theory, have full validation.).



Apologies if my base analysis is off -- happy to take corrections.


My overall summary is thus:

1) People care what Core releases because we assume the majority will
likely run it. If core were a minority project, we wouldn't really care
what core released.
2) People are upset with LOT=true being suggested as release parameters
because of the *narrative* that it puts devs in control.
3) LOT=true having a sizeable minority running it presents major issues to
majority LOT=false in terms of lost blocks during the final period and in
terms of a longer term fork.
4) Majority LOT=true has no long term instability on consensus (majority
LOT=true means the final period always activates, any instability is short
lived + irrational).
5) On the balance, the safer parameter to release *seems* to be LOT=true.
But because devs are sensitive to control narrative, LOT=false is preferred
by devs.
6) Almost paradoxically, choosing a *less safe* option for a narrative
reason is more of a show of dev control than choosing a more safe option
despite appearances.
7) This all comes down to if we think that a reasonable number of important
nodes will run LOT=true.
8) This all doesn't matter *that much* because taproot will have many
opportunities to activate before the brinksmanship period.

As a plan of action, I think that means that either:

A) Core should release LOT=true, as a less disruptive option given stated
community intentions to do LOT=true
B) Core  community should vehemently anti-advocate running LOT=true to
ensure the % is as small as possible
C) Do nothing
D) Core community should release LOT=false and vehemently advocate manually
changing to LOT=true to ensure the % is supermajority, but leaving it as a
user choice.


Overall, I worry that plan B has a mild Streissand effect and would result
in boosting LOT=true (which could be OK, so long as LOT=true +
LOT=false+signal yes becomes the large majority, but would be not fun for
anyone if LOT=true + LOT=false+signal yes are a small majority). Plan C
most likely ends up with some % doing LOT=true anyways. D feels a little
silly, but maybe a good tradeoff.

If I had to summarize the emotional dynamic among developers around
LOT=true, I think devs wish it didn't exist because it is clear LOT=true
*creates* the issues here. LOT=false would be fine if the LOT=true strategy
didn't exist at all. But unfortunately the cat is out of the bag and cannot
be put back in. To validate the emotions, I think it is fine to be angry
about LOT=true and not like it, but we should either accept that it is most
likely to create consensus OR we should find a new game theoretic
activation strategy with better pro-social equilibriums.

Personally, I think with either plan the ultimate risk of forking is low
given probability to activate before timeout, so we should just pick
something and move on, accepting that we aren't setting a precedent by
which all future forks should abide. Given my understanding of the
tradeoffs, I believe that the safest choice is LOT=true, but I wouldn't
move to hold back a plan of LOT=false (but would probably take mitigative
steps on community advocacy if it looks like there is non majority but non
negligible LOT=true uptake).

Cheers,

Jeremy

[-- Attachment #2: Type: text/html, Size: 13525 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22 16:31                                     ` Jorge Timón
@ 2021-02-22 16:48                                       ` Jorge Timón
  2021-02-23  2:10                                         ` Jeremy
  0 siblings, 1 reply; 42+ messages in thread
From: Jorge Timón @ 2021-02-22 16:48 UTC (permalink / raw)
  To: Bitcoin Protocol Discussion

Just to clarify, I'm not saying bitcoin core should maintain the
"oppose proposal" part of the software. presumably people opposing the
change don't want much of the recent software changes anyway.
But perhaps it wouldn't be so bad, to oppose other proposals, perhaps.
I don't expect anyone to want this, but if people want it I offer
myself to code it,
I mean, just imagine that a day after publishing a bitcoin core
release with activation software for taproot some one, let's say in
New York reach an Agreement to "just use the same activation
mechanism, but for our 32 mb hardfork, it's about time, now computers
are 64 bits anyway". How convenient would it be to just cancel that
with 2 lines in bitcoin core?
Not that I think it will be necessary, but perhaps we want it just in case.

On Mon, Feb 22, 2021 at 5:31 PM Jorge Timón <jtimon@jtimon•cc> wrote:
>
> Sorry, I haven't read everything. I just want to say what I think is
> the best option and why.
> Let's say something like 2 years in which miners can signal activation
> after which, the MUST signal it for their blocks to be valid (I think
> this is LOT=true, but I don't remember what LOT stands for).
> Some may argue than it's easier to move from LOT=false to LOT=true
> than viceversa (I think I'm getting this right), but either way
> different clients could interpret things more differently more easily
> and, you know, that's really bad.
> If anyone is against the consensus change itself, what they should do
> is run a client in which the must is turned into a MUST NOT. Whenever
> miners signal activation, blocks aren't valid so that it doesn't
> happen.
> That way both sides can be cleanly separated and both communities
> (assuming there's a community of users opposing the change) can stick
> together with their own in the same chain. That is, having only 2
> chains in total if there are users opposing the change or only one if
> not, but never 2 chains for people who want the change or 2 chains for
> pople who don't want it.
>
> Just my two sats, please nobody ask me "why would anyone oppose
> taproot?" or anything similar. Because I'm trying to generalize here,
> if we're talking about activation, I think the specifics of the change
> are kind of irrelevant.
>
> Separately: thanks to everyone who worked on taproot.
>
>
> On Mon, Feb 22, 2021 at 3:00 PM Matt Corallo via bitcoin-dev
> <bitcoin-dev@lists•linuxfoundation.org> wrote:
> >
> >
> >
> > On Feb 22, 2021, at 05:16, Anthony Towns <aj@erisian•com.au> wrote:
> >
> > If a lockinontimeout=true node is requesting compact blocks from a
> > lockinontimeout=false node during a chainsplit in the MUST_SIGNAL phase,
> > I think that could result in a ban.
> >
> > More importantly, nodes on both sides of the fork need to find each other.
> >
> >
> > (If there was going to be an ongoing fork there'd be bigger things to
> > worry about...)
> >
> >
> > I think it should be clear that a UASF-style command line option to allow consensus rule changes in the node in the short term, immediately before a fork carries some risk of a fork, even if I agree it may not persist over months. We can’t simply ignore that.
> >
> > I think the important specific case of this is something like "if a chain
> > where taproot is impossible to activate is temporarily the most work,
> > miners with lockinontimeout=true need to be well connected so they don't
> > end up competing with each other while they're catching back up".
> >
> >
> > Between this and your above point, I think we probably agree - there is material  technical complexity hiding behind a “change the consensus rules“ option. Given it’s not a critical feature by any means, putting resources into fixing these issues probably isn’t worth it.
> >
> > Matt
> > _______________________________________________
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22 14:00                                   ` Matt Corallo
  2021-02-22 16:27                                     ` Anthony Towns
@ 2021-02-22 16:31                                     ` Jorge Timón
  2021-02-22 16:48                                       ` Jorge Timón
  1 sibling, 1 reply; 42+ messages in thread
From: Jorge Timón @ 2021-02-22 16:31 UTC (permalink / raw)
  To: Matt Corallo, Bitcoin Protocol Discussion; +Cc: Michael Folkson

Sorry, I haven't read everything. I just want to say what I think is
the best option and why.
Let's say something like 2 years in which miners can signal activation
after which, the MUST signal it for their blocks to be valid (I think
this is LOT=true, but I don't remember what LOT stands for).
Some may argue than it's easier to move from LOT=false to LOT=true
than viceversa (I think I'm getting this right), but either way
different clients could interpret things more differently more easily
and, you know, that's really bad.
If anyone is against the consensus change itself, what they should do
is run a client in which the must is turned into a MUST NOT. Whenever
miners signal activation, blocks aren't valid so that it doesn't
happen.
That way both sides can be cleanly separated and both communities
(assuming there's a community of users opposing the change) can stick
together with their own in the same chain. That is, having only 2
chains in total if there are users opposing the change or only one if
not, but never 2 chains for people who want the change or 2 chains for
pople who don't want it.

Just my two sats, please nobody ask me "why would anyone oppose
taproot?" or anything similar. Because I'm trying to generalize here,
if we're talking about activation, I think the specifics of the change
are kind of irrelevant.

Separately: thanks to everyone who worked on taproot.


On Mon, Feb 22, 2021 at 3:00 PM Matt Corallo via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
>
>
> On Feb 22, 2021, at 05:16, Anthony Towns <aj@erisian•com.au> wrote:
>
> If a lockinontimeout=true node is requesting compact blocks from a
> lockinontimeout=false node during a chainsplit in the MUST_SIGNAL phase,
> I think that could result in a ban.
>
> More importantly, nodes on both sides of the fork need to find each other.
>
>
> (If there was going to be an ongoing fork there'd be bigger things to
> worry about...)
>
>
> I think it should be clear that a UASF-style command line option to allow consensus rule changes in the node in the short term, immediately before a fork carries some risk of a fork, even if I agree it may not persist over months. We can’t simply ignore that.
>
> I think the important specific case of this is something like "if a chain
> where taproot is impossible to activate is temporarily the most work,
> miners with lockinontimeout=true need to be well connected so they don't
> end up competing with each other while they're catching back up".
>
>
> Between this and your above point, I think we probably agree - there is material  technical complexity hiding behind a “change the consensus rules“ option. Given it’s not a critical feature by any means, putting resources into fixing these issues probably isn’t worth it.
>
> Matt
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22 14:00                                   ` Matt Corallo
@ 2021-02-22 16:27                                     ` Anthony Towns
  2021-02-22 16:31                                     ` Jorge Timón
  1 sibling, 0 replies; 42+ messages in thread
From: Anthony Towns @ 2021-02-22 16:27 UTC (permalink / raw)
  To: Matt Corallo; +Cc: Michael Folkson, Bitcoin Protocol Discussion

On Mon, Feb 22, 2021 at 09:00:29AM -0500, Matt Corallo wrote:
> I think it should be clear that a UASF-style command line option to allow
> consensus rule changes in the node in the short term, immediately before a fork
> carries some risk of a fork, even if I agree it may not persist over months. We
> can’t simply ignore that.

I don't think a "-set-bip8-lockinontimeout=taproot" option on its own
would be very safe -- if we were sure it was safe, because we were sure
that everyone would eventually set lockinontimeout=true, then we would
set lockinontimeout=true from day one and not need an option. I haven't
seen/had any good ideas on how to make the option safe, or at least make
it obvious that you shouldn't be setting it if you don't really
understand what you're getting yourself into. [0]

And that's even if you assume that the code was perfectly capable of
handling forks in some theoretically optimal way.

So at least for the time being, I don't think a config param / command
line option is a good idea for bip8. IMHO, YMMV, IANABDFL etc.

>     I think the important specific case of this is something like "if a chain
>     where taproot is impossible to activate is temporarily the most work,
>     miners with lockinontimeout=true need to be well connected so they don't
>     end up competing with each other while they're catching back up".
> Between this and your above point, I think we probably agree - there is
> material  technical complexity hiding behind a “change the consensus rules“
> option. Given it’s not a critical feature by any means, putting resources into
> fixing these issues probably isn’t worth it.

For reference, the "preferentially peer with other UASF nodes" PR for
the BIP148 client was

  https://github.com/UASF/bitcoin/pull/24

List discussion was at

  https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-June/014618.html

I think I'll add playing around with that and reorgs on a signet to my
todo list to see how it goes in cases other than ones that are (hopefully)
vanishingly unlikely to ever happen in practice.

Cheers,
aj

[0] In some sense, this is exactly the opposite sentiment compared to
    earonesty's comment:

    https://github.com/bitcoin/bitcoin/pull/10900#issuecomment-317333312

    I mean, I guess could solve the unsafe-now-but-maybe-safe-later
    problem generally with a signature:

      -authorise-dangerous-options-key=XXXX
      -lockinontimeout=taproot:YYYY

    where YYYY is a signature of "dangerous:lockinontimeout=taproot" or
    similar by the key XXXX, and XXXX defaults to some (multisig?) key
    controlled by some bitcoin people, who'll only sign that when
    there's clear evidence that it will be reasonably safe, and maybe to
    "cert-transparency" or something as well. So that allows having an
    option become available by publishing a signature, without having
    to recompile the code. And it could still be overriden by people who
    know what they're doing if the default key owners are being weird. And
    maybe the "dangerous" part is enough to prevent people from randomly
    cut-and-pasting it from a website into their bitcoin.conf.

    I dunno. No bad ideas when brainstorming...


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22 10:16                                 ` Anthony Towns
@ 2021-02-22 14:00                                   ` Matt Corallo
  2021-02-22 16:27                                     ` Anthony Towns
  2021-02-22 16:31                                     ` Jorge Timón
  0 siblings, 2 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-22 14:00 UTC (permalink / raw)
  To: Anthony Towns; +Cc: Michael Folkson, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 1298 bytes --]



> On Feb 22, 2021, at 05:16, Anthony Towns <aj@erisian•com.au> wrote:
> 
> If a lockinontimeout=true node is requesting compact blocks from a
> lockinontimeout=false node during a chainsplit in the MUST_SIGNAL phase,
> I think that could result in a ban.
> 
>> More importantly, nodes on both sides of the fork need to find each other. 
> 
> (If there was going to be an ongoing fork there'd be bigger things to
> worry about...)

I think it should be clear that a UASF-style command line option to allow consensus rule changes in the node in the short term, immediately before a fork carries some risk of a fork, even if I agree it may not persist over months. We can’t simply ignore that.

> I think the important specific case of this is something like "if a chain
> where taproot is impossible to activate is temporarily the most work,
> miners with lockinontimeout=true need to be well connected so they don't
> end up competing with each other while they're catching back up".

Between this and your above point, I think we probably agree - there is material  technical complexity hiding behind a “change the consensus rules“ option. Given it’s not a critical feature by any means, putting resources into fixing these issues probably isn’t worth it.

Matt

[-- Attachment #2: Type: text/html, Size: 1968 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22  6:44                               ` Matt Corallo
@ 2021-02-22 10:16                                 ` Anthony Towns
  2021-02-22 14:00                                   ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Anthony Towns @ 2021-02-22 10:16 UTC (permalink / raw)
  To: Matt Corallo; +Cc: Michael Folkson, Bitcoin Protocol Discussion

On Mon, Feb 22, 2021 at 01:44:55AM -0500, Matt Corallo wrote:
> A node feeding you invalid headers (used to be) cause for a ban [...]

Headers that are invalid due to MUST_SIGNAL rules are marked as
BLOCK_RECENT_CONSENSUS_CHANGE so don't directly result in a ban. If you're
doing headers-first relay, I think that will also prevent hitting the
BLOCK_MISSING_PREV case, which would result in a ban.

If a lockinontimeout=true node is requesting compact blocks from a
lockinontimeout=false node during a chainsplit in the MUST_SIGNAL phase,
I think that could result in a ban.

> More importantly, nodes on both sides of the fork need to find each other. 

(If there was going to be an ongoing fork there'd be bigger things to
worry about...)

I think the important specific case of this is something like "if a chain
where taproot is impossible to activate is temporarily the most work,
miners with lockinontimeout=true need to be well connected so they don't
end up competing with each other while they're catching back up".

Actually, that same requirement might be more practically for a signet
feature we were thinking about -- namely having "optional reorgs", ie
every now and then we'd mine 1-6 blocks and then reorg them out; but
also flag the soon-to-be-stale blocks in some way so that if you didn't
want to have to deal with reorgs you could easily ignore them. Having
it be possible for the "I want to see reorgs!" nodes to be able to find
each other seems like it might be a similar problem (avoiding having the
"don't-want-reorgs" nodes ban the "want-reorgs" nodes too perhaps).

Cheers,
aj



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-22  5:16                             ` Anthony Towns
@ 2021-02-22  6:44                               ` Matt Corallo
  2021-02-22 10:16                                 ` Anthony Towns
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Corallo @ 2021-02-22  6:44 UTC (permalink / raw)
  To: Anthony Towns; +Cc: Michael Folkson, Bitcoin Protocol Discussion

Hmm, indeed, I may have missed that you can skip the headers issues by not persisting them, though there are other follow-on effects that are concerning and I think still make my point valid.

A node feeding you invalid headers (used to be) cause for a ban - is that information still persisted? More importantly, nodes on both sides of the fork need to find each other. There’s not a great way to do that without forking the address database, DNS seeds and defining a new protocol magic.

Matt

> On Feb 22, 2021, at 00:16, Anthony Towns <aj@erisian•com.au> wrote:
> 
> On Fri, Feb 19, 2021 at 12:48:00PM -0500, Matt Corallo via bitcoin-dev wrote:
>> It was pointed out to me that this discussion is largely moot as the
>> software complexity for Bitcoin Core to ship an option like this is likely
>> not practical/what people would wish to see.
>> Bitcoin Core does not have infrastructure to handle switching consensus
>> rules with the same datadir - after running with uasf=true for some time,
>> valid blocks will be marked as invalid, 
> 
> I don't think this is true? With the current proposed bip8 code,
> lockinontimeout=true will cause headers to be marked as invalid, and
> won't process the block further. If a node running lockinontimeout=true
> accepts the header, then it will apply the same consensus rules as a
> lockinontimeout=false node.
> 
> I don't think an invalid header will be added to the block index at all,
> so a node restart should always cleanly allow it to be reconsidered.
> 
> The test case in
> 
> https://github.com/bitcoin/bitcoin/pull/19573/commits/bd8517135fc839c3332fea4d9c8373b94c8c9de8
> 
> tests that a node that had rejected a chain due to lockinontimeout=true
> will reorg to that chain after being restarted as a byproduct of the way
> it tests different cases (the nodes set a new startheight, but retain
> their lockinontimeout settings).
> 
> 
> (I think with the current bip8 code, if you switch from
> lockinontimeout=false to lockinontimeout=true and the tip of the current
> most work chain is after the timeoutheight and did not lockin, then you
> will continue following that chain until a taproot-invalid transaction
> is inclued, rather than immediately reorging to a shorter chain that
> complies with the lockinontimeout=true rules)
> 
> Cheers,
> aj
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 17:48                           ` Matt Corallo
  2021-02-20  2:55                             ` ZmnSCPxj
@ 2021-02-22  5:16                             ` Anthony Towns
  2021-02-22  6:44                               ` Matt Corallo
  1 sibling, 1 reply; 42+ messages in thread
From: Anthony Towns @ 2021-02-22  5:16 UTC (permalink / raw)
  To: Matt Corallo, Bitcoin Protocol Discussion; +Cc: Michael Folkson

On Fri, Feb 19, 2021 at 12:48:00PM -0500, Matt Corallo via bitcoin-dev wrote:
> It was pointed out to me that this discussion is largely moot as the
> software complexity for Bitcoin Core to ship an option like this is likely
> not practical/what people would wish to see.
> Bitcoin Core does not have infrastructure to handle switching consensus
> rules with the same datadir - after running with uasf=true for some time,
> valid blocks will be marked as invalid, 

I don't think this is true? With the current proposed bip8 code,
lockinontimeout=true will cause headers to be marked as invalid, and
won't process the block further. If a node running lockinontimeout=true
accepts the header, then it will apply the same consensus rules as a
lockinontimeout=false node.

I don't think an invalid header will be added to the block index at all,
so a node restart should always cleanly allow it to be reconsidered.

The test case in

https://github.com/bitcoin/bitcoin/pull/19573/commits/bd8517135fc839c3332fea4d9c8373b94c8c9de8

tests that a node that had rejected a chain due to lockinontimeout=true
will reorg to that chain after being restarted as a byproduct of the way
it tests different cases (the nodes set a new startheight, but retain
their lockinontimeout settings).


(I think with the current bip8 code, if you switch from
lockinontimeout=false to lockinontimeout=true and the tip of the current
most work chain is after the timeoutheight and did not lockin, then you
will continue following that chain until a taproot-invalid transaction
is inclued, rather than immediately reorging to a shorter chain that
complies with the lockinontimeout=true rules)

Cheers,
aj



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-17 12:51 Michael Folkson
  2021-02-18  5:43 ` Ariel Lorenzo-Luaces
@ 2021-02-21 16:21 ` Erik Aronesty
  1 sibling, 0 replies; 42+ messages in thread
From: Erik Aronesty @ 2021-02-21 16:21 UTC (permalink / raw)
  To: Michael Folkson, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 5523 bytes --]

I think the most important thing is that the configuration setting is
advertised if somebody were to query the node for its capabilities.

Is this the case?

That way the default value isn't really the important thing.

There are longstanding and well-known nodes, for example.  Community
support and visibility for a UASF is the most important aspect.

I looked over the threads and I don't think I saw the broadcast nature of
this setting clearly discussed.





On Wed, Feb 17, 2021, 10:10 AM Michael Folkson via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> Yesterday (February 16th) we held a second meeting on Taproot
> activation on IRC which again was open to all. Despite what appeared
> to be majority support for LOT=false over LOT=true in the first
> meeting I (and others) thought the arguments had not been explored in
> depth and that we should have a follow up meeting almost entirely
> focused on whether LOT (lockinontimeout) should be set to true or
> false.
>
> The meeting was announced here:
>
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>
> In that mailing list post I outlined the arguments for LOT=true (T1 to
> T6) and arguments for LOT=false (F1 to F6) in their strongest form I
> could. David Harding responded with an additional argument for
> LOT=false (F7) here:
>
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>
> These meetings are very challenging given they are open to all, you
> don’t know who will attend and you don’t know most people’s views in
> advance. I tried to give time for both the LOT=true arguments and the
> LOT=false arguments to be discussed as I knew there was support for
> both. We only tried evaluating which had more support and which had
> more strong opposition towards the end of the meeting.
>
> The conversation log is here:
> http://gnusha.org/taproot-activation/2021-02-16.log
>
> (If you are so inclined you can watch a video of the meeting here.
> Thanks to the YouTube account “Bitcoin” for setting up the livestream:
> https://www.youtube.com/watch?v=vpl5q1ovMLM)
>
> A summary of the meeting was provided by Luke Dashjr on Mastodon here:
> https://bitcoinhackers.org/@lukedashjr/105742918779234566
>
> Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
> did manage to come to consensus on everything but LockinOnTimeout.
>
> Activation height range: 693504-745920
>
> MASF threshold: 1815/2016 blocks (90%)
>
> Keep in mind only ~100 people showed for the meetings, hardly
> representative of the entire community.
>
> So, these details remain JUST a proposal for now.
>
> It seems inevitable that there won't be consensus on LOT.
>
> Everyone will have to choose for himself. :/
>
> Personally I agree with most of this. I agree that there wasn’t
> overwhelming consensus for either LOT=true or LOT=false. However, from
> my perspective there was clearly more strong opposition (what would
> usually be deemed a NACK in Bitcoin Core review terminology) from
> Bitcoin Core contributors, Lightning developers and other community
> members against LOT=true than there was for LOT=false. Andrew Chow
> tried to summarize views from the meeting in this analysis:
> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>
> I am also aware of other current and previous Bitcoin Core
> contributors and Lightning developers who didn’t attend the meeting in
> person who are opposed to LOT=true. I don’t want to put them in the
> spotlight for no reason but if you go through the conversation logs of
> not only the meeting but the weeks of discussion prior to this meeting
> you will see their views evaluated on the ##taproot-activation
> channel. In addition, on taprootactivation.com some mining pools
> expressed a preference for lot=false though I don’t know how strong
> that preference was.
>
> I am only one voice but it is my current assessment that if we are to
> attempt to finalize Taproot activation parameters and propose them to
> the community at this time our only option is to propose LOT=false.
> Any further delay appears to me counterproductive in our collective
> aim to get the Taproot soft fork activated as early as possible.
>
> Obviously others are free to disagree with that assessment and
> continue discussions but personally I will be attempting to avoid
> those discussions unless prominent new information comes to light or
> various specific individuals change their minds.
>
> Next week we are planning a code review of the Bitcoin Core PR #19573
> which was initially delayed because of this LOT discussion. As I’ve
> said previously that will be loosely following the format of the
> Bitcoin Core PR review club and will be lower level and more
> technical. That is planned for Tuesday February 23rd at 19:00 UTC on
> the IRC channel ##taproot-activation.
>
> Thanks to the meeting participants (and those who joined the
> discussion on the channel prior and post the meeting) for engaging
> productively and in good faith.
>
> --
> Michael Folkson
> Email: michaelfolkson@gmail•com
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

[-- Attachment #2: Type: text/html, Size: 7427 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-20 17:20                               ` Ariel Lorenzo-Luaces
@ 2021-02-21 14:30                                 ` Matt Corallo
  0 siblings, 0 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-21 14:30 UTC (permalink / raw)
  To: Ariel Lorenzo-Luaces, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 6116 bytes --]

I don’t think “some vocal users are going to threaten to fork themselves off” is good justification for technical decisions. It’s important to communicate and for everyone to agree/understand that a failed BIP 8/9 activation, in the scenario people are worried about, is not the end of the story for Taproot activation. If it is clear that Taproot has broad consensus but some miners failed to upgrade in time (as it presumably would be), a flag day activation seems merited and I’m not sure anyone has argued against this. That said, forced-signaling via a UASF/BIP8(true)-style fork carries material additional risk that a classic flag-day activation does not, so let’s not optimize for something like that.

Matt

> On Feb 21, 2021, at 08:26, Ariel Lorenzo-Luaces via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
> 
> 
> What would be the tradeoffs of a BIP8(false, ∞) option? That would remove some of the concerns of having to coordinate a UASF with an approaching deadline.
> 
> Cheers
> Ariel Lorenzo-Luaces
>> On Feb 19, 2021, at 6:55 PM, ZmnSCPxj via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>> Good morning list,
>> 
>>>  It was pointed out to me that this discussion is largely moot as the software complexity for Bitcoin Core to ship an
>>>  option like this is likely not practical/what people would wish to see.
>>> 
>>>  Bitcoin Core does not have infrastructure to handle switching consensus rules with the same datadir - after running with
>>>  uasf=true for some time, valid blocks will be marked as invalid, and additional development would need to occur to
>>>  enable switching back to uasf=false. This is complex, critical code to get right, and the review and testing cycles
>>>  needed seem to be not worth it.
>> 
>> Without implying anything else, this can be worked around by a user maintaining two `datadir`s and running two clients.
>> This would have an "external" client running an LOT=X (where X is whatever the user prefers) and an "internal" client that is at most 0.21.0, which will not impose any LOT rules.
>> The internal client then uses `connect=` directive to connect locally to the external client and connects only to that client, using it as a firewall.
>> The external client can be run pruned in order to reduce diskspace resource usage (the internal client can remain unpruned if that is needed by the user, e.g. for LN implementation sthat need to look up arbitrary short-channel-ids).
>> Bandwidth usage should be same since the internal client only connects to the external client and the OS should optimize that case.
>> CPU usage is doubled, though.
>> 
>> (the general idea came from gmax, just to be clear, though the below use is from me)
>> 
>> Then the user can select LOT=C or LOT=!C (where C is whatever Bitcoin Core ultimately ships with) on the external client based on the user preferences.
>> 
>> If Taproot is not MASF-activated and LOT=!U is what dominates later (where U is whatever the user decided on), the user can decide to just destroy the external node and connect the internal node directly to the network (optionally upgrading the internal node to LOT=!U) as a way to "change their mind in view of the economy".
>> The internal node will then follow the dominant chain.
>> 
>> 
>> Regards,
>> ZmnSCPxj
>> 
>>> 
>>>  Instead, the only practical way to ship such an option would be to treat it as a separate chain (the same way regtest,
>>>  testnet, and signet are treated), including its own separate datadir and the like.
>>> 
>>>  Matt
>>> 
>>>>  On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:
>>>> 
>>>>  (Also in response to ZMN...)
>>>>  Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.
>>>>  There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).
>>>>  Matt
>>>> 
>>>>>>  On Feb 19, 2021, at 07:08, Adam Back adam@cypherspace•org wrote:
>>>>>> 
>>>>>>  would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
>>>>> 
>>>>>  given there are clearly people of both views, or for now don't care
>>>>>  but might later, it would minimally be friendly and useful if
>>>>>  bitcoin-core has a LOT=true option - and that IMO goes some way to
>>>>>  avoid the assumptive control via defaults.
>>>> 
>>>>>  Otherwise it could be read as saying "developers on average
>>>>>  disapprove, but if you, the market disagree, go figure it out for
>>>>>  yourself" which is not a good message for being defensive and avoiding
>>>>>  mis-interpretation of code repositories or shipped defaults as
>>>>>  "control".
>>>> 
>>>>  bitcoin-dev mailing list
>>>>  bitcoin-dev@lists•linuxfoundation.org
>>>>  https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>> 
>> 
>> 
>> bitcoin-dev mailing list
>> bitcoin-dev@lists•linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

[-- Attachment #2: Type: text/html, Size: 7613 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
@ 2021-02-21 10:10 Prayank
  0 siblings, 0 replies; 42+ messages in thread
From: Prayank @ 2021-02-21 10:10 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1929 bytes --]

Hello Everyone,

The below comment by Matt about different implementations and their opinion on `lockinontimeout` is from 18 Feb 2021 communication: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018433.html

> If the eventual outcome is that different implementations (that have material *transaction processing* userbases, and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here and not activate Taproot. Seriously. Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.

I don't agree to the part that 'we should stop and not activate taproot'. Instead it will be helpful if we can educate most of the people about trade-offs involved in both options with some tables, charts etc.

I think its time to use Bitcoin Knots for more projects and also maintain multiple forks of Bitcoin Core. This is not just limited to `LOT=True or False` but few other things and in general its good for decentralization of Bitcoin. Bitcoin Core is used by most of the nodes according to this pie chart: https://luke.dashjr.org/programs/bitcoin/files/charts/software.html however having multiple forks of Bitcoin Core with real usage, more maintainers in different parts of the world (some even anon), few different features, more reviewers, better communication channels etc. will help everyone involved in Bitcoin.

I am working on a project right now which involves multisig, discreet log contracts, liquid etc. Using bitcoin-s for it because I need DLC but still depending on Bitcoin Core in it. Would try Bitcoin Knots and other implementations soon and also have been looking for developers good with C++ and Python, living in India who are interested to maintain a fork of Bitcoin Core with few changes. I had shared about in replies to Amir Taaki's tweet few days back.

--
Prayank


[-- Attachment #2: Type: text/html, Size: 5156 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-20  2:55                             ` ZmnSCPxj
@ 2021-02-20 17:20                               ` Ariel Lorenzo-Luaces
  2021-02-21 14:30                                 ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Ariel Lorenzo-Luaces @ 2021-02-20 17:20 UTC (permalink / raw)
  To: ZmnSCPxj, Bitcoin Protocol Discussion, ZmnSCPxj

[-- Attachment #1: Type: text/plain, Size: 5112 bytes --]

What would be the tradeoffs of a BIP8(false, ∞) option? That would remove some of the concerns of having to coordinate a UASF with an approaching deadline.

Cheers
Ariel Lorenzo-Luaces
⁣​

On Feb 19, 2021, 6:55 PM, at 6:55 PM, ZmnSCPxj via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>Good morning list,
>
>> It was pointed out to me that this discussion is largely moot as the
>software complexity for Bitcoin Core to ship an
>> option like this is likely not practical/what people would wish to
>see.
>>
>> Bitcoin Core does not have infrastructure to handle switching
>consensus rules with the same datadir - after running with
>> uasf=true for some time, valid blocks will be marked as invalid, and
>additional development would need to occur to
>> enable switching back to uasf=false. This is complex, critical code
>to get right, and the review and testing cycles
>> needed seem to be not worth it.
>
>Without implying anything else, this can be worked around by a user
>maintaining two `datadir`s and running two clients.
>This would have an "external" client running an LOT=X (where X is
>whatever the user prefers) and an "internal" client that is at most
>0.21.0, which will not impose any LOT rules.
>The internal client then uses `connect=` directive to connect locally
>to the external client and connects only to that client, using it as a
>firewall.
>The external client can be run pruned in order to reduce diskspace
>resource usage (the internal client can remain unpruned if that is
>needed by the user, e.g. for LN implementation sthat need to look up
>arbitrary short-channel-ids).
>Bandwidth usage should be same since the internal client only connects
>to the external client and the OS should optimize that case.
>CPU usage is doubled, though.
>
>(the general idea came from gmax, just to be clear, though the below
>use is from me)
>
>Then the user can select LOT=C or LOT=!C (where C is whatever Bitcoin
>Core ultimately ships with) on the external client based on the user
>preferences.
>
>If Taproot is not MASF-activated and LOT=!U is what dominates later
>(where U is whatever the user decided on), the user can decide to just
>destroy the external node and connect the internal node directly to the
>network (optionally upgrading the internal node to LOT=!U) as a way to
>"change their mind in view of the economy".
>The internal node will then follow the dominant chain.
>
>
>Regards,
>ZmnSCPxj
>
>>
>> Instead, the only practical way to ship such an option would be to
>treat it as a separate chain (the same way regtest,
>> testnet, and signet are treated), including its own separate datadir
>and the like.
>>
>> Matt
>>
>> On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:
>>
>> > (Also in response to ZMN...)
>> > Bitcoin Core has a long-standing policy of not shipping options
>which shoot yourself in the foot. I’d be very disappointed if that
>changed now. People are of course more than welcome to run such
>software themselves, but I anticipate the loud minority on Twitter and
>here aren’t processing enough transactions or throwing enough financial
>weight behind their decision for them to do anything but just switch
>back if they find themselves on a chain with no blocks.
>> > There’s nothing we can (or should) do to prevent people from
>threatening to (and possibly) forking themselves off of bitcoin, but
>that doesn’t mean we should encourage it either. The work Bitcoin Core
>maintainers and developers do is to recommend courses of action which
>they believe have reasonable levels of consensus and are technically
>sound. Luckily, there’s strong historical precedent for people deciding
>to run other software around forks, so misinterpretation is not very
>common (just like there’s strong historical precedent for miners not
>unilaterally deciding forks in the case of Segwit).
>> > Matt
>> >
>> > > On Feb 19, 2021, at 07:08, Adam Back adam@cypherspace•org wrote:
>> > >
>> > > > would dev consensus around releasing LOT=false be considered as
>"developers forcing their views on users"?
>> > >
>> > > given there are clearly people of both views, or for now don't
>care
>> > > but might later, it would minimally be friendly and useful if
>> > > bitcoin-core has a LOT=true option - and that IMO goes some way
>to
>> > > avoid the assumptive control via defaults.
>> >
>> > > Otherwise it could be read as saying "developers on average
>> > > disapprove, but if you, the market disagree, go figure it out for
>> > > yourself" which is not a good message for being defensive and
>avoiding
>> > > mis-interpretation of code repositories or shipped defaults as
>> > > "control".
>> >
>> > bitcoin-dev mailing list
>> > bitcoin-dev@lists•linuxfoundation.org
>> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>
>_______________________________________________
>bitcoin-dev mailing list
>bitcoin-dev@lists•linuxfoundation.org
>https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

[-- Attachment #2: Type: text/html, Size: 6259 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 17:48                           ` Matt Corallo
@ 2021-02-20  2:55                             ` ZmnSCPxj
  2021-02-20 17:20                               ` Ariel Lorenzo-Luaces
  2021-02-22  5:16                             ` Anthony Towns
  1 sibling, 1 reply; 42+ messages in thread
From: ZmnSCPxj @ 2021-02-20  2:55 UTC (permalink / raw)
  To: Matt Corallo; +Cc: Michael Folkson, Bitcoin Protocol Discussion

Good morning list,

> It was pointed out to me that this discussion is largely moot as the software complexity for Bitcoin Core to ship an
> option like this is likely not practical/what people would wish to see.
>
> Bitcoin Core does not have infrastructure to handle switching consensus rules with the same datadir - after running with
> uasf=true for some time, valid blocks will be marked as invalid, and additional development would need to occur to
> enable switching back to uasf=false. This is complex, critical code to get right, and the review and testing cycles
> needed seem to be not worth it.

Without implying anything else, this can be worked around by a user maintaining two `datadir`s and running two clients.
This would have an "external" client running an LOT=X (where X is whatever the user prefers) and an "internal" client that is at most 0.21.0, which will not impose any LOT rules.
The internal client then uses `connect=` directive to connect locally to the external client and connects only to that client, using it as a firewall.
The external client can be run pruned in order to reduce diskspace resource usage (the internal client can remain unpruned if that is needed by the user, e.g. for LN implementation sthat need to look up arbitrary short-channel-ids).
Bandwidth usage should be same since the internal client only connects to the external client and the OS should optimize that case.
CPU usage is doubled, though.

(the general idea came from gmax, just to be clear, though the below use is from me)

Then the user can select LOT=C or LOT=!C (where C is whatever Bitcoin Core ultimately ships with) on the external client based on the user preferences.

If Taproot is not MASF-activated and LOT=!U is what dominates later (where U is whatever the user decided on), the user can decide to just destroy the external node and connect the internal node directly to the network (optionally upgrading the internal node to LOT=!U) as a way to "change their mind in view of the economy".
The internal node will then follow the dominant chain.


Regards,
ZmnSCPxj

>
> Instead, the only practical way to ship such an option would be to treat it as a separate chain (the same way regtest,
> testnet, and signet are treated), including its own separate datadir and the like.
>
> Matt
>
> On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:
>
> > (Also in response to ZMN...)
> > Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.
> > There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).
> > Matt
> >
> > > On Feb 19, 2021, at 07:08, Adam Back adam@cypherspace•org wrote:
> > >
> > > > would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
> > >
> > > given there are clearly people of both views, or for now don't care
> > > but might later, it would minimally be friendly and useful if
> > > bitcoin-core has a LOT=true option - and that IMO goes some way to
> > > avoid the assumptive control via defaults.
> >
> > > Otherwise it could be read as saying "developers on average
> > > disapprove, but if you, the market disagree, go figure it out for
> > > yourself" which is not a good message for being defensive and avoiding
> > > mis-interpretation of code repositories or shipped defaults as
> > > "control".
> >
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev




^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 14:13                         ` Matt Corallo
@ 2021-02-19 17:48                           ` Matt Corallo
  2021-02-20  2:55                             ` ZmnSCPxj
  2021-02-22  5:16                             ` Anthony Towns
  0 siblings, 2 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-19 17:48 UTC (permalink / raw)
  To: Bitcoin Protocol Discussion, Adam Back, ZmnSCPxj; +Cc: Michael Folkson

It was pointed out to me that this discussion is largely moot as the software complexity for Bitcoin Core to ship an 
option like this is likely not practical/what people would wish to see.

Bitcoin Core does not have infrastructure to handle switching consensus rules with the same datadir - after running with 
uasf=true for some time, valid blocks will be marked as invalid, and additional development would need to occur to 
enable switching back to uasf=false. This is complex, critical code to get right, and the review and testing cycles 
needed seem to be not worth it.

Instead, the only practical way to ship such an option would be to treat it as a separate chain (the same way regtest, 
testnet, and signet are treated), including its own separate datadir and the like.

Matt

On 2/19/21 09:13, Matt Corallo via bitcoin-dev wrote:
> (Also in response to ZMN...)
> 
> Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.
> 
> There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).
> 
> Matt
> 
>> On Feb 19, 2021, at 07:08, Adam Back <adam@cypherspace•org> wrote:
>>> would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
>>
>> given there are clearly people of both views, or for now don't care
>> but might later, it would minimally be friendly and useful if
>> bitcoin-core has a LOT=true option - and that IMO goes some way to
>> avoid the assumptive control via defaults.
> 
>> Otherwise it could be read as saying "developers on average
>> disapprove, but if you, the market disagree, go figure it out for
>> yourself" which is not a good message for being defensive and avoiding
>> mis-interpretation of code repositories or shipped defaults as
>> "control".
> 
> 
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 12:05                       ` Adam Back
@ 2021-02-19 14:13                         ` Matt Corallo
  2021-02-19 17:48                           ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Corallo @ 2021-02-19 14:13 UTC (permalink / raw)
  To: Adam Back; +Cc: Michael Folkson, Bitcoin Protocol Discussion

(Also in response to ZMN...)

Bitcoin Core has a long-standing policy of not shipping options which shoot yourself in the foot. I’d be very disappointed if that changed now. People are of course more than welcome to run such software themselves, but I anticipate the loud minority on Twitter and here aren’t processing enough transactions or throwing enough financial weight behind their decision for them to do anything but just switch back if they find themselves on a chain with no blocks.

There’s nothing we can (or should) do to prevent people from threatening to (and possibly) forking themselves off of bitcoin, but that doesn’t mean we should encourage it either. The work Bitcoin Core maintainers and developers do is to recommend courses of action which they believe have reasonable levels of consensus and are technically sound. Luckily, there’s strong historical precedent for people deciding to run other software around forks, so misinterpretation is not very common (just like there’s strong historical precedent for miners not unilaterally deciding forks in the case of Segwit).

Matt

> On Feb 19, 2021, at 07:08, Adam Back <adam@cypherspace•org> wrote:
>> would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
> 
> given there are clearly people of both views, or for now don't care
> but might later, it would minimally be friendly and useful if
> bitcoin-core has a LOT=true option - and that IMO goes some way to
> avoid the assumptive control via defaults.

> Otherwise it could be read as saying "developers on average
> disapprove, but if you, the market disagree, go figure it out for
> yourself" which is not a good message for being defensive and avoiding
> mis-interpretation of code repositories or shipped defaults as
> "control".




^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-19 11:30                     ` ZmnSCPxj
@ 2021-02-19 12:05                       ` Adam Back
  2021-02-19 14:13                         ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Adam Back @ 2021-02-19 12:05 UTC (permalink / raw)
  To: ZmnSCPxj, Bitcoin Protocol Discussion; +Cc: Michael Folkson

Personally I don't really have much of a view and think either
LOT=true or false is better in the context, they both seem safe given
the current context, where basically everyone is saying "are we there
yet", including pools (88.7% going out of their way to say YES
https://taprootactivation.com).  Not that pools are deciding of
anything, being service providers to miners, who can and will switch
pool fast, and miners in-turn being service providers to the market
and as the various forks showed will follow the market.

I think it's a very good idea for safety, if there is a tested and
reviewed code with an option to force LOT=true, even if the
bitcoin-core implementation ends up defaulting to LOT=false.

Part of the danger is rushed versions of things like BIP 91 to avoid a
chain split where miners left brinkmanship just a bit too late, to
avert BIP 148 forking, and BIP 91 was used to expedite activation to
avoid that. The rushed proposal, code, review, ship cycle on that was
dangerously fast - less time and eyes for review was the danger.

> would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?

given there are clearly people of both views, or for now don't care
but might later, it would minimally be friendly and useful if
bitcoin-core has a LOT=true option - and that IMO goes some way to
avoid the assumptive control via defaults.

Otherwise it could be read as saying "developers on average
disapprove, but if you, the market disagree, go figure it out for
yourself" which is not a good message for being defensive and avoiding
mis-interpretation of code repositories or shipped defaults as
"control".

Adam

On Fri, 19 Feb 2021 at 11:30, ZmnSCPxj via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> Good morning list,
>
> > This is absolutely the case, however note that the activation method itself is consensus code which executes as a part
> > of a fork, and one which deserves as much scrutiny as anything else. While taproot is a model of how a soft-fork should
> > be designed, this doesn't imply anything about the consensus code which represents the activation thereof.
> >
> > Hence all the debate around activation - ultimately its also defining a fork, and given the politics around it, one
> > which almost certainly carries significantly more risk than Taproot.
> >
> > Note that I don't believe anyone is advocating for "try to activate, and if it fails, move on". Various people have
> > various views on how conservative and timelines for what to do at that point, but I believe most in this discussion are
> > OK with flag-day-based activation (given some level of care) if it becomes clear Taproot is supported by a vast majority
> > of Bitcoin users and is only not activating due to lagging miner upgrades.
>
>
> Okay, I am backing off this proposal to force the LOT=false/true decision on users, it was not particularly serious anyway (and was more a reaction to the request of Samson Mow to just release both versions, which to my mind is no different from such a thing).
>
>
> Nonetheless, as a thought experiment: the main issue is that some number of people run LOT=true when miners do not activate Taproot early for some reason and we decide to leave LOT=false for this particular bit until it times out.
> The issue is that those people will get forked off the network at the end of this particular deployment attempt.
>
> I suspect those people will still exist whether or not Bitcoin Core supports any kind of LOT=true mode.
> ("Never again" for some people)
>
> How do we convince them to go run LOT=false instead of getting themselves forked off?
> Or do we simply let them?
>
> (and how is that different from asking each user to decide on LOT=false/true right now?)
> ("reasonable default"?)
> (fundamentally speaking you still have to educate the users on the ramifications of accepting the default and changing it.)
>
>
> Another thought experiment: From the point of view of a user who strongly supports LOT=true, would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
> Why or why not?
>
>
> Regards,
> ZmnSCPxj
>
> > Matt
> >
> > On 2/18/21 10:04, Keagan McClelland wrote:
> >
> > > Hi all,
> > > I think it's important for us to consider what is actually being considered for activation here.
> > > The designation of "soft fork" is accurate but I don't think it adequately conveys how non-intrusive a change like this
> > > is. All that taproot does (unless I'm completely missing something) is imbue a previously undefined script version with
> > > actual semantics. In order for a chain reorg to take place it would mean that someone would have to have a use case for
> > > that script version today. This is something I think that we can easily check by digging through the UTXO set or
> > > history. If anyone is using that script version, we absolutely should not be using it, but that doesn't mean that we
> > > can't switch to a script version that no one is actually using.
> > > If no one is even attempting to use the script version, then the change has no effect on whether a chain split occurs
> > > because there is simply no block that contains a transaction that only some of the network will accept.
> > > Furthermore, I don't know how Bitcoin can stand the test of time if we allow developers who rely on "undefined behavior"
> > > (which the taproot script version presently is) to exert tremendous influence over what code does or does not get run.
> > > This isn't a soft fork that makes some particular UTXO's unspendable. It isn't one that bans miners from collecting
> > > fees. It is a change that means that certain "always accept" transactions actually have real conditions you have to
> > > meet. I can't imagine a less intrusive change.
> > > On the other hand, choosing to let L=F be a somewhat final call sets a very real precedent that 10% of what I estimate
> > > to be 1% of bitcoin users can effectively block any change from here on forward. At that point we are saying that miners
> > > are in control of network consensus in ways they have not been up until now. I don't think this is a more desirable
> > > outcome to let ~0.1% of the network get to block /non-intrusive/ changes that the rest of the network wants.
> > > I can certainly live with an L=F attempt as a way to punt on the discussion, maybe the activation happens and this will
> > > all be fine. But if it doesn't, I hardly think that users of Bitcoin are just going to be like "well, guess that's it
> > > for Taproot". I have no idea what ensues at that point, but probably another community led UASF movement.
> > > I wasn't super well educated on this stuff back in '17 when Segwit went down, as I was new at that time, so if I'm
> > > missing something please say so. But from my point of view, we can't treat all soft forks as equal.
> > > Keagan
> > > On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> > > mailto:bitcoin-dev@lists•linuxfoundation.org> wrote:
> > >
> > >     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
> > >     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as
> > >     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to
> > >     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
> > >     exchange losing millions would be worse than having Taproot is good.
> > >
> > >     Matt
> > >
> > >     On 2/18/21 09:26, Michael Folkson wrote:
> > >      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
> > >     forks,
> > >      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
> > >      >
> > >      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
> > >     such as
> > >      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
> > >     splits
> > >      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever
> > >      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
> > >      >
> > >      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
> > >     though I'm
> > >      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
> > >     (though
> > >      > admittedly you have a much better understanding than me of what happened in 2017).
> > >      >
> > >      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot
> > >      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
> > >      > wouldn't kill Bitcoin long term.
> > >      >
> > >      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
> > >     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
> > >      >
> > >      >     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
> > >      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
> > >     and not
> > >      >     activate Taproot. Seriously.
> > >      >
> > >      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
> > >      >
> > >      >     Matt
> > >      >
> > >      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> > >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> > >      >>
> > >      >>     
> > >      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
> > >      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
> > >     users
> > >      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
> > >      >>
> > >      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
> > >      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
> > >      >>
> > >      >>
> > >      >>
> > >      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
> > >     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
> > >      >>
> > >      >>         Good morning all,
> > >      >>
> > >      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
> > >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
> > >      >>         >
> > >      >>         > Who's we here?
> > >      >>         >
> > >      >>         > Release both and let the network decide.
> > >      >>
> > >      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
> > >      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
> > >      >>
> > >      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
> > >     users,
> > >      >>         is for users to make that choice themselves.
> > >      >>
> > >      >>         Regards,
> > >      >>         ZmnSCPxj
> > >      >>
> > >      >>         >
> > >      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> > >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> > >      >>         >
> > >      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
> > >     in the
> > >      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
> > >      >>         to conversation on the IRC channel or on social media etc.
> > >      >>         > >
> > >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> > >     into
> > >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> > >      >>         must or must not run.
> > >      >>         > >
> > >      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
> > >     software
> > >      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
> > >     them.
> > >      >>         > >
> > >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> > >     only a
> > >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> > >     reason of
> > >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> > >     moment of
> > >      >>         MUST_SIGNAL, unable to mine new blocks?
> > >      >>         > >
> > >      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
> > >      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
> > >     activate
> > >      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
> > >     false in a
> > >      >>         software release there is the possibility (T2 in
> > >      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> > >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
> > >      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
> > >      >>         appears to be no more safe than LOT=true.
> > >      >>         > >
> > >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> > >     miners
> > >      >>         by default.
> > >      >>         > >
> > >      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
> > >      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
> > >     think it
> > >      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
> > >      >>         uncoordinated community UASF efforts on top of LOT=false.
> > >      >>         > >
> > >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> > >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> > >      >>         > >
> > >      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
> > >      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
> > >      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
> > >      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
> > >      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
> > >      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
> > >      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
> > >      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
> > >     <http://taprootactivation.com>> (and this effort has informed the discussion) without
> > >      >>         taking pledges of support as cast iron guarantees.
> > >      >>         > >
> > >      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
> > >      >>         email :)
> > >      >>         > >
> > >      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
> > >     <mailto:arielluaces@gmail•com>
> > >      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
> > >      >>         > >
> > >      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
> > >      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
> > >     inevitable, like
> > >      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
> > >      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
> > >      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
> > >     support,
> > >      >>         or any support right up against a miner activation threshold.
> > >      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
> > >      >>         in people's minds.
> > >      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
> > >      >>         above %51).
> > >      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
> > >     since a
> > >      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
> > >      >>         coordination and safety are sometimes sprinkled into the argument.
> > >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> > >     into
> > >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> > >      >>         must or must not run.
> > >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> > >     only a
> > >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> > >     reason of
> > >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> > >     moment of
> > >      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
> > >     into a
> > >      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
> > >      >>         option has ran its course.
> > >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> > >     miners
> > >      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
> > >      >>         > > > How is that strictly safer or more coordinated?
> > >      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
> > >      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
> > >     with
> > >      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
> > >     calling
> > >      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
> > >      >>         feature is worth a network split down the middle.
> > >      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
> > >      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
> > >     Taproot.
> > >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> > >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> > >      >>         > > > Cheers
> > >      >>         > > > Ariel Lorenzo-Luaces
> > >      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
> > >     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> > >      >>         > > >
> > >      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
> > >      >>         > > > > activation on IRC which again was open to all. Despite what appeared
> > >      >>         > > > > to be majority support for LOT=false over LOT=true in the first
> > >      >>         > > > > meeting I (and others) thought the arguments had not been explored in
> > >      >>         > > > > depth and that we should have a follow up meeting almost entirely
> > >      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
> > >      >>         > > > > false.
> > >      >>         > > > >
> > >      >>         > > > > The meeting was announced here:
> > >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> > >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
> > >      >>         > > > >
> > >      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
> > >      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
> > >      >>         > > > > could. David Harding responded with an additional argument for
> > >      >>         > > > > LOT=false (F7) here:
> > >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
> > >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> > >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
> > >      >>         > > > >
> > >      >>         > > > > These meetings are very challenging given they are open to all, you
> > >      >>         > > > > don’t know who will attend and you don’t know most people’s views in
> > >      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
> > >      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
> > >      >>         > > > > both. We only tried evaluating which had more support and which had
> > >      >>         > > > > more strong opposition towards the end of the meeting.
> > >      >>         > > > >
> > >      >>         > > > > The conversation log is here:
> > >      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
> > >     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
> > >     <http://gnusha.org/taproot-activation/2021-02-16.log>>
> > >      >>         > > > >
> > >      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
> > >      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
> > >      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
> > >     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
> > >      >>         > > > >
> > >      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
> > >      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
> > >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
> > >      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
> > >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
> > >      >>         > > > >
> > >      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
> > >      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
> > >      >>         > > > >
> > >      >>         > > > > Activation height range: 693504-745920
> > >      >>         > > > >
> > >      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
> > >      >>         > > > >
> > >      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
> > >      >>         > > > > representative of the entire community.
> > >      >>         > > > >
> > >      >>         > > > > So, these details remain JUST a proposal for now.
> > >      >>         > > > >
> > >      >>         > > > > It seems inevitable that there won't be consensus on LOT.
> > >      >>         > > > >
> > >      >>         > > > > Everyone will have to choose for himself. :/
> > >      >>         > > > >
> > >      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
> > >      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
> > >      >>         > > > > my perspective there was clearly more strong opposition (what would
> > >      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
> > >      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
> > >      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
> > >      >>         > > > > tried to summarize views from the meeting in this analysis:
> > >      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> > >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
> > >      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> > >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
> > >      >>         > > > >
> > >      >>         > > > > I am also aware of other current and previous Bitcoin Core
> > >      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
> > >      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
> > >      >>         > > > > spotlight for no reason but if you go through the conversation logs of
> > >      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
> > >      >>         > > > > you will see their views evaluated on the ##taproot-activation
> > >      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
> > >     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
> > >      >>         > > > > expressed a preference for lot=false though I don’t know how strong
> > >      >>         > > > > that preference was.
> > >      >>         > > > >
> > >      >>         > > > > I am only one voice but it is my current assessment that if we are to
> > >      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
> > >      >>         > > > > the community at this time our only option is to propose LOT=false.
> > >      >>         > > > > Any further delay appears to me counterproductive in our collective
> > >      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
> > >      >>         > > > >
> > >      >>         > > > > Obviously others are free to disagree with that assessment and
> > >      >>         > > > > continue discussions but personally I will be attempting to avoid
> > >      >>         > > > > those discussions unless prominent new information comes to light or
> > >      >>         > > > > various specific individuals change their minds.
> > >      >>         > > > >
> > >      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
> > >      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
> > >      >>         > > > > said previously that will be loosely following the format of the
> > >      >>         > > > > Bitcoin Core PR review club and will be lower level and more
> > >      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
> > >      >>         > > > > the IRC channel ##taproot-activation.
> > >      >>         > > > >
> > >      >>         > > > > Thanks to the meeting participants (and those who joined the
> > >      >>         > > > > discussion on the channel prior and post the meeting) for engaging
> > >      >>         > > > > productively and in good faith.
> > >      >>         > >
> > >      >>         > > --
> > >      >>         > > Michael Folkson
> > >      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> > >     <mailto:michaelfolkson@gmail•com>>
> > >      >>         > > Keybase: michaelfolkson
> > >      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> > >      >>         > > _______________________________________________
> > >      >>         > > bitcoin-dev mailing list
> > >      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> > >      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> > >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> > >      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> > >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> > >      >>
> > >      >>
> > >      >>
> > >      >>
> > >      >>     --
> > >      >>     Michael Folkson
> > >      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> > >     <mailto:michaelfolkson@gmail•com>>
> > >      >>     Keybase: michaelfolkson
> > >      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> > >      >>     _______________________________________________
> > >      >>     bitcoin-dev mailing list
> > >      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> > >      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> > >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> > >      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> > >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> > >      >
> > >      >
> > >      >
> > >      > --
> > >      > Michael Folkson
> > >      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> > >     <mailto:michaelfolkson@gmail•com>>
> > >      > Keybase: michaelfolkson
> > >      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> > >     _______________________________________________
> > >     bitcoin-dev mailing list
> > >     bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> > >     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> > >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> > >
> >
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 15:18                   ` Matt Corallo
  2021-02-19  2:20                     ` Ariel Luaces
@ 2021-02-19 11:30                     ` ZmnSCPxj
  2021-02-19 12:05                       ` Adam Back
  1 sibling, 1 reply; 42+ messages in thread
From: ZmnSCPxj @ 2021-02-19 11:30 UTC (permalink / raw)
  To: Matt Corallo, Bitcoin Protocol Discussion; +Cc: Michael Folkson

Good morning list,

> This is absolutely the case, however note that the activation method itself is consensus code which executes as a part
> of a fork, and one which deserves as much scrutiny as anything else. While taproot is a model of how a soft-fork should
> be designed, this doesn't imply anything about the consensus code which represents the activation thereof.
>
> Hence all the debate around activation - ultimately its also defining a fork, and given the politics around it, one
> which almost certainly carries significantly more risk than Taproot.
>
> Note that I don't believe anyone is advocating for "try to activate, and if it fails, move on". Various people have
> various views on how conservative and timelines for what to do at that point, but I believe most in this discussion are
> OK with flag-day-based activation (given some level of care) if it becomes clear Taproot is supported by a vast majority
> of Bitcoin users and is only not activating due to lagging miner upgrades.


Okay, I am backing off this proposal to force the LOT=false/true decision on users, it was not particularly serious anyway (and was more a reaction to the request of Samson Mow to just release both versions, which to my mind is no different from such a thing).


Nonetheless, as a thought experiment: the main issue is that some number of people run LOT=true when miners do not activate Taproot early for some reason and we decide to leave LOT=false for this particular bit until it times out.
The issue is that those people will get forked off the network at the end of this particular deployment attempt.

I suspect those people will still exist whether or not Bitcoin Core supports any kind of LOT=true mode.
("Never again" for some people)

How do we convince them to go run LOT=false instead of getting themselves forked off?
Or do we simply let them?

(and how is that different from asking each user to decide on LOT=false/true right now?)
("reasonable default"?)
(fundamentally speaking you still have to educate the users on the ramifications of accepting the default and changing it.)


Another thought experiment: From the point of view of a user who strongly supports LOT=true, would dev consensus around releasing LOT=false be considered as "developers forcing their views on users"?
Why or why not?


Regards,
ZmnSCPxj

> Matt
>
> On 2/18/21 10:04, Keagan McClelland wrote:
>
> > Hi all,
> > I think it's important for us to consider what is actually being considered for activation here.
> > The designation of "soft fork" is accurate but I don't think it adequately conveys how non-intrusive a change like this
> > is. All that taproot does (unless I'm completely missing something) is imbue a previously undefined script version with
> > actual semantics. In order for a chain reorg to take place it would mean that someone would have to have a use case for
> > that script version today. This is something I think that we can easily check by digging through the UTXO set or
> > history. If anyone is using that script version, we absolutely should not be using it, but that doesn't mean that we
> > can't switch to a script version that no one is actually using.
> > If no one is even attempting to use the script version, then the change has no effect on whether a chain split occurs
> > because there is simply no block that contains a transaction that only some of the network will accept.
> > Furthermore, I don't know how Bitcoin can stand the test of time if we allow developers who rely on "undefined behavior"
> > (which the taproot script version presently is) to exert tremendous influence over what code does or does not get run.
> > This isn't a soft fork that makes some particular UTXO's unspendable. It isn't one that bans miners from collecting
> > fees. It is a change that means that certain "always accept" transactions actually have real conditions you have to
> > meet. I can't imagine a less intrusive change.
> > On the other hand, choosing to let L=F be a somewhat final call sets a very real precedent that 10% of what I estimate
> > to be 1% of bitcoin users can effectively block any change from here on forward. At that point we are saying that miners
> > are in control of network consensus in ways they have not been up until now. I don't think this is a more desirable
> > outcome to let ~0.1% of the network get to block /non-intrusive/ changes that the rest of the network wants.
> > I can certainly live with an L=F attempt as a way to punt on the discussion, maybe the activation happens and this will
> > all be fine. But if it doesn't, I hardly think that users of Bitcoin are just going to be like "well, guess that's it
> > for Taproot". I have no idea what ensues at that point, but probably another community led UASF movement.
> > I wasn't super well educated on this stuff back in '17 when Segwit went down, as I was new at that time, so if I'm
> > missing something please say so. But from my point of view, we can't treat all soft forks as equal.
> > Keagan
> > On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> > mailto:bitcoin-dev@lists•linuxfoundation.org> wrote:
> >
> >     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
> >     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as
> >     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to
> >     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
> >     exchange losing millions would be worse than having Taproot is good.
> >
> >     Matt
> >
> >     On 2/18/21 09:26, Michael Folkson wrote:
> >      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
> >     forks,
> >      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
> >      >
> >      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
> >     such as
> >      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
> >     splits
> >      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever
> >      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
> >      >
> >      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
> >     though I'm
> >      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
> >     (though
> >      > admittedly you have a much better understanding than me of what happened in 2017).
> >      >
> >      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot
> >      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
> >      > wouldn't kill Bitcoin long term.
> >      >
> >      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
> >     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
> >      >
> >      >     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
> >      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
> >     and not
> >      >     activate Taproot. Seriously.
> >      >
> >      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
> >      >
> >      >     Matt
> >      >
> >      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>
> >      >>     
> >      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
> >      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
> >     users
> >      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
> >      >>
> >      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
> >      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
> >      >>
> >      >>
> >      >>
> >      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
> >     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
> >      >>
> >      >>         Good morning all,
> >      >>
> >      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
> >      >>         >
> >      >>         > Who's we here?
> >      >>         >
> >      >>         > Release both and let the network decide.
> >      >>
> >      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
> >      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
> >      >>
> >      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
> >     users,
> >      >>         is for users to make that choice themselves.
> >      >>
> >      >>         Regards,
> >      >>         ZmnSCPxj
> >      >>
> >      >>         >
> >      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>         >
> >      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
> >     in the
> >      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
> >      >>         to conversation on the IRC channel or on social media etc.
> >      >>         > >
> >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> >     into
> >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> >      >>         must or must not run.
> >      >>         > >
> >      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
> >     software
> >      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
> >     them.
> >      >>         > >
> >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> >     only a
> >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> >     reason of
> >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> >     moment of
> >      >>         MUST_SIGNAL, unable to mine new blocks?
> >      >>         > >
> >      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
> >      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
> >     activate
> >      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
> >     false in a
> >      >>         software release there is the possibility (T2 in
> >      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
> >      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
> >      >>         appears to be no more safe than LOT=true.
> >      >>         > >
> >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> >     miners
> >      >>         by default.
> >      >>         > >
> >      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
> >      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
> >     think it
> >      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
> >      >>         uncoordinated community UASF efforts on top of LOT=false.
> >      >>         > >
> >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> >      >>         > >
> >      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
> >      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
> >      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
> >      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
> >      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
> >      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
> >      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
> >      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
> >     <http://taprootactivation.com>> (and this effort has informed the discussion) without
> >      >>         taking pledges of support as cast iron guarantees.
> >      >>         > >
> >      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
> >      >>         email :)
> >      >>         > >
> >      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
> >     <mailto:arielluaces@gmail•com>
> >      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
> >      >>         > >
> >      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
> >      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
> >     inevitable, like
> >      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
> >      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
> >      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
> >     support,
> >      >>         or any support right up against a miner activation threshold.
> >      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
> >      >>         in people's minds.
> >      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
> >      >>         above %51).
> >      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
> >     since a
> >      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
> >      >>         coordination and safety are sometimes sprinkled into the argument.
> >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> >     into
> >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> >      >>         must or must not run.
> >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> >     only a
> >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> >     reason of
> >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> >     moment of
> >      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
> >     into a
> >      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
> >      >>         option has ran its course.
> >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> >     miners
> >      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
> >      >>         > > > How is that strictly safer or more coordinated?
> >      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
> >      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
> >     with
> >      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
> >     calling
> >      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
> >      >>         feature is worth a network split down the middle.
> >      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
> >      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
> >     Taproot.
> >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> >      >>         > > > Cheers
> >      >>         > > > Ariel Lorenzo-Luaces
> >      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
> >     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>         > > >
> >      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
> >      >>         > > > > activation on IRC which again was open to all. Despite what appeared
> >      >>         > > > > to be majority support for LOT=false over LOT=true in the first
> >      >>         > > > > meeting I (and others) thought the arguments had not been explored in
> >      >>         > > > > depth and that we should have a follow up meeting almost entirely
> >      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
> >      >>         > > > > false.
> >      >>         > > > >
> >      >>         > > > > The meeting was announced here:
> >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
> >      >>         > > > >
> >      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
> >      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
> >      >>         > > > > could. David Harding responded with an additional argument for
> >      >>         > > > > LOT=false (F7) here:
> >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
> >      >>         > > > >
> >      >>         > > > > These meetings are very challenging given they are open to all, you
> >      >>         > > > > don’t know who will attend and you don’t know most people’s views in
> >      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
> >      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
> >      >>         > > > > both. We only tried evaluating which had more support and which had
> >      >>         > > > > more strong opposition towards the end of the meeting.
> >      >>         > > > >
> >      >>         > > > > The conversation log is here:
> >      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
> >     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
> >     <http://gnusha.org/taproot-activation/2021-02-16.log>>
> >      >>         > > > >
> >      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
> >      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
> >      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
> >     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
> >      >>         > > > >
> >      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
> >      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
> >      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
> >      >>         > > > >
> >      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
> >      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
> >      >>         > > > >
> >      >>         > > > > Activation height range: 693504-745920
> >      >>         > > > >
> >      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
> >      >>         > > > >
> >      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
> >      >>         > > > > representative of the entire community.
> >      >>         > > > >
> >      >>         > > > > So, these details remain JUST a proposal for now.
> >      >>         > > > >
> >      >>         > > > > It seems inevitable that there won't be consensus on LOT.
> >      >>         > > > >
> >      >>         > > > > Everyone will have to choose for himself. :/
> >      >>         > > > >
> >      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
> >      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
> >      >>         > > > > my perspective there was clearly more strong opposition (what would
> >      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
> >      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
> >      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
> >      >>         > > > > tried to summarize views from the meeting in this analysis:
> >      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
> >      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
> >      >>         > > > >
> >      >>         > > > > I am also aware of other current and previous Bitcoin Core
> >      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
> >      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
> >      >>         > > > > spotlight for no reason but if you go through the conversation logs of
> >      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
> >      >>         > > > > you will see their views evaluated on the ##taproot-activation
> >      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
> >     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
> >      >>         > > > > expressed a preference for lot=false though I don’t know how strong
> >      >>         > > > > that preference was.
> >      >>         > > > >
> >      >>         > > > > I am only one voice but it is my current assessment that if we are to
> >      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
> >      >>         > > > > the community at this time our only option is to propose LOT=false.
> >      >>         > > > > Any further delay appears to me counterproductive in our collective
> >      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
> >      >>         > > > >
> >      >>         > > > > Obviously others are free to disagree with that assessment and
> >      >>         > > > > continue discussions but personally I will be attempting to avoid
> >      >>         > > > > those discussions unless prominent new information comes to light or
> >      >>         > > > > various specific individuals change their minds.
> >      >>         > > > >
> >      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
> >      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
> >      >>         > > > > said previously that will be loosely following the format of the
> >      >>         > > > > Bitcoin Core PR review club and will be lower level and more
> >      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
> >      >>         > > > > the IRC channel ##taproot-activation.
> >      >>         > > > >
> >      >>         > > > > Thanks to the meeting participants (and those who joined the
> >      >>         > > > > discussion on the channel prior and post the meeting) for engaging
> >      >>         > > > > productively and in good faith.
> >      >>         > >
> >      >>         > > --
> >      >>         > > Michael Folkson
> >      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      >>         > > Keybase: michaelfolkson
> >      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >      >>         > > _______________________________________________
> >      >>         > > bitcoin-dev mailing list
> >      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> >      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> >      >>
> >      >>
> >      >>
> >      >>
> >      >>     --
> >      >>     Michael Folkson
> >      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      >>     Keybase: michaelfolkson
> >      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >      >>     _______________________________________________
> >      >>     bitcoin-dev mailing list
> >      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> >      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> >      >
> >      >
> >      >
> >      > --
> >      > Michael Folkson
> >      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      > Keybase: michaelfolkson
> >      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >     _______________________________________________
> >     bitcoin-dev mailing list
> >     bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >
>
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev





^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 15:18                   ` Matt Corallo
@ 2021-02-19  2:20                     ` Ariel Luaces
  2021-02-19 11:30                     ` ZmnSCPxj
  1 sibling, 0 replies; 42+ messages in thread
From: Ariel Luaces @ 2021-02-19  2:20 UTC (permalink / raw)
  To: Matt Corallo, Bitcoin Protocol Discussion

Hi Michael
I think you're right, sorry for getting a little apocalyptic at the
end there lol.

> On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>
> Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding to conversation on the IRC channel or on social media etc.
> > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
> I personally have never made this assumption. Of course users aren't forced to run any particular software version, quite the opposite. Defaults set in software versions matter though as many users won't change them.

I'm mostly referring to the two IRC discussions. I normally try to
avoid singling people out that's why I didn't refer to anyone in
perticular.
Here I'll list a couple of quotes from these ephemeral people, while
reading them keep in mind what would happen if a majority users and
miners decide to just avoid the latest version.
- 11:06: "LOT=true does not split the chain. It strictly reduces the
liklihood of that."
- 11:06: "LOT=false has chainsplit risks, not LOT=true"
- 08:59 "I guess it would be helpful to hear miners' answers to that question."
Response: 09:01 "not sure why; miners don't decide anything in this
regard it's more of `Taproot is activating. Please accelerate it if
you can`"
Reading the logs again I see some voices that do consider the right
that users and miners have to run whatever version they want
Response: 09:03 "I ask because you said something that's equivalent to
`miners don't get to decide which version of core their run`."
- T1, T2, T3, and T6 have language that assumes mass support for a
UASF and then proceed to make conclusions on what is safer and easier
to coordinate
A voice in the discussion expressed the same point I'm making:
10:53 "I disagree with T1: i don't think there is any logical
consequence in hardcoding LOT=true ensuring Taproot activation and
even less ensuring no political shenanigans. We obviously need
economic majority to run it and that would open way more political
arguments that they bluntly take part in an UASF without any bad
behaviour from miners."
- 11:14 "we know people will run LOT=true regardless of the default,
so it will be safer if LOT=true is made the default"
- 11:18 "With LOT=true, attempted UASFs are not necessary"
- 11:18 "why give them the ability to act maliciously in the first place?"
Response:11:18"LOT=false does not; people choosing to run software
that will enforce taproot under some reasonable circumstances provides
the information.  LOT=false just reduces the risk of unexpected
results from resulting in danger."
Response: 11:18 "LOT=false strictly increases the risks though.."
Response: 11:18 "please stop saying that, there are tradeoffs both ways."
- 11:11 "LOT=false gives miners the ability to decide [in response to
someone saying that LOT=false gives everyone else in the community the
ability to decide]"
This quote is a bit more nuanced because the implication is that
LOT=true doesn't give the ability to decide. But in reality they have
the ability to decide to not upgrade. Users  can also not upgrade to
be in solidarity with miners to protect them from unfair distrust and
aggression.
All the arguments above for LOT=true are rooted in the assumption that
everyone must upgrade to the latest version because of course they
will...? But that's not a given.

There are examples of people being aware that miners and users can run
any version they want. I misjudged the number of people who know that
LOT=true doesn't guarantee anything.
- 11:17 "The LOT=True crowd seems to have an underlying assumption
that a UASF will occur instead of something more orderly like Modern
Softfork Activation suggested, why? I don't think chances of that
happening are very high unless things play out similarly to Segwit but
it doesn't look like that."
- 11:17 "UASFs can be made much more difficult with a counter-UASF....
UASFs like this one and segwit relied on intolerant-minority effects"
(I'm assuming counter-UASF means not upgrading as opposed to upgrading
to a new client that rejects the activation flag)

> There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually think it offers them clarity on what will happen over a year time period and removes the need for coordinated or uncoordinated community UASF efforts on top of LOT=false.
If you look at https://taprootactivation.com/ no miners seem to be
expressing any support at all for lot=true. To pre-empt the counter
argument, I know that miners don't decide, I'm just using that poll as
a proxy to estimate whether they would be antagonized by the promotion
of LOT=true.
I'm not a miner and I think the "fork will happen regardless of the
consequences" attitude is antagonistic towards everyone in general,
not just miners.
The LOT=true activation mechanism may be tolerated today because
Taproot has wide support. But in order to prevent future antagonistic
behavior around future network changes (possibly more controversial
ones) we should continue the norm of including miners in the
activation process, as the friends they are.
This idea that LOT=true provides clarity is another is another example
of an argument rooted in the assumption that users will upgrade
because of course they will. No activation mechanism provides ANY
guarantees and neither does LOT=true so it's infair to frame it as if
it does.
This is your argument Michael, please don't take anything I say
personally I'm just arguing the points.

> It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a software release there is the possibility (T2 in https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html) of individuals or a proportion of the community changing LOT to true. In that sense setting LOT=false in a software release appears to be no more safe than LOT=true.
If a LOT=true client is released I think the likely outcome is that
people won't upgrade at all and I would say that miners failing to
activate  will become more likely than you think, strictly due to a
loud group promoting LOT=true.
It's true that some will stubbornly run LOT=true regardless. But if
they have not been provoked to do so then I would hope the community
promotes unity and shuns needlessly conflictive attitudes to avoid
the, admittedly inevitable, network split from gathering momentum (a
counter-UASF).
I hope individuals opt for unity and become intolerant (counter-UASF)
of intolerance (unprovoked-UASF).

> TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my email :)
Yes I do agree with the recommendation of LOT=false. Thank you for
organizing the discussion.

On Thu, Feb 18, 2021 at 3:12 AM Samson Mow <samson.mow@gmail•com> wrote:
>
> "An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>
> Who's we here?
By "we" I meant everyone involved in the discussion of the activation
mechanism. The discussion is slowly growing and eventually has to
reach social media.
>
> Release both and let the network decide.
If two clients are released with matching activation parameters except
for opposing LOT then LOT=true kind of spoils the LOT=false choice
(only if LOT=true manages to gather support) because running LOT=false
is being complicit/tolerant of the aggressive attitude of LOT=true.
In the case of both being released I would opt for running neither and
I hope most users and miners do too. Again, with the caveat that only
if there is visible significant support for LOT=true. And yes, the
"significant" is a subjective word and, based on risk appetite, is
different for everyone. That's part of the issue.
A funny metaphor is that if someone is visibly pissing in a pool I'm
not going to swim on the other side of the pool, I just won't swim at
all and go do whatever I was doing before.

Cheers
Ariel Lorenzo-Luaces

On Thu, Feb 18, 2021 at 7:18 AM Matt Corallo via bitcoin-dev
<bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> This is absolutely the case, however note that the activation method itself is consensus code which executes as a part
> of a fork, and one which deserves as much scrutiny as anything else. While taproot is a model of how a soft-fork should
> be designed, this doesn't imply anything about the consensus code which represents the activation thereof.
>
> Hence all the debate around activation - ultimately its also defining a fork, and given the politics around it, one
> which almost certainly carries significantly more risk than Taproot.
>
> Note that I don't believe anyone is advocating for "try to activate, and if it fails, move on". Various people have
> various views on how conservative and timelines for what to do at that point, but I believe most in this discussion are
> OK with flag-day-based activation (given some level of care) if it becomes clear Taproot is supported by a vast majority
> of Bitcoin users and is only not activating due to lagging miner upgrades.
>
> Matt
>
> On 2/18/21 10:04, Keagan McClelland wrote:
> > Hi all,
> >
> > I think it's important for us to consider what is actually being considered for activation here.
> >
> > The designation of "soft fork" is accurate but I don't think it adequately conveys how non-intrusive a change like this
> > is. All that taproot does (unless I'm completely missing something) is imbue a previously undefined script version with
> > actual semantics. In order for a chain reorg to take place it would mean that someone would have to have a use case for
> > that script version today. This is something I think that we can easily check by digging through the UTXO set or
> > history. If anyone is using that script version, we absolutely should not be using it, but that doesn't mean that we
> > can't switch to a script version that no one is actually using.
> >
> > If no one is even attempting to use the script version, then the change has no effect on whether a chain split occurs
> > because there is simply no block that contains a transaction that only some of the network will accept.
> >
> > Furthermore, I don't know how Bitcoin can stand the test of time if we allow developers who rely on "undefined behavior"
> > (which the taproot script version presently is) to exert tremendous influence over what code does or does not get run.
> > This isn't a soft fork that makes some particular UTXO's unspendable. It isn't one that bans miners from collecting
> > fees. It is a change that means that certain "always accept" transactions actually have real conditions you have to
> > meet. I can't imagine a less intrusive change.
> >
> > On the other hand, choosing to let L=F be a somewhat final call sets a very real precedent that 10% of what I estimate
> > to be 1% of bitcoin users can effectively block any change from here on forward. At that point we are saying that miners
> > are in control of network consensus in ways they have not been up until now. I don't think this is a more desirable
> > outcome to let ~0.1% of the network get to block /non-intrusive/ changes that the rest of the network wants.
> >
> > I can certainly live with an L=F attempt as a way to punt on the discussion, maybe the activation happens and this will
> > all be fine. But if it doesn't, I hardly think that users of Bitcoin are just going to be like "well, guess that's it
> > for Taproot". I have no idea what ensues at that point, but probably another community led UASF movement.
> >
> > I wasn't super well educated on this stuff back in '17 when Segwit went down, as I was new at that time, so if I'm
> > missing something please say so. But from my point of view, we can't treat all soft forks as equal.
> >
> > Keagan
> >
> > On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> > <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >
> >     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
> >     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as
> >     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to
> >     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
> >     exchange losing millions would be worse than having Taproot is good.
> >
> >     Matt
> >
> >     On 2/18/21 09:26, Michael Folkson wrote:
> >      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
> >     forks,
> >      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
> >      >
> >      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
> >     such as
> >      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
> >     splits
> >      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever
> >      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
> >      >
> >      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
> >     though I'm
> >      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
> >     (though
> >      > admittedly you have a much better understanding than me of what happened in 2017).
> >      >
> >      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot
> >      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
> >      > wouldn't kill Bitcoin long term.
> >      >
> >      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
> >     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
> >      >
> >      >     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
> >      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
> >     and not
> >      >     activate Taproot. Seriously.
> >      >
> >      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
> >      >
> >      >     Matt
> >      >
> >      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>
> >      >>     
> >      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
> >      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
> >     users
> >      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
> >      >>
> >      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
> >      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
> >      >>
> >      >>
> >      >>
> >      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
> >     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
> >      >>
> >      >>         Good morning all,
> >      >>
> >      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
> >      >>         >
> >      >>         > Who's we here?
> >      >>         >
> >      >>         > Release both and let the network decide.
> >      >>
> >      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
> >      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
> >      >>
> >      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
> >     users,
> >      >>         is for users to make that choice themselves.
> >      >>
> >      >>         Regards,
> >      >>         ZmnSCPxj
> >      >>
> >      >>         >
> >      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>         >
> >      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
> >     in the
> >      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
> >      >>         to conversation on the IRC channel or on social media etc.
> >      >>         > >
> >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> >     into
> >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> >      >>         must or must not run.
> >      >>         > >
> >      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
> >     software
> >      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
> >     them.
> >      >>         > >
> >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> >     only a
> >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> >     reason of
> >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> >     moment of
> >      >>         MUST_SIGNAL, unable to mine new blocks?
> >      >>         > >
> >      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
> >      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
> >     activate
> >      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
> >     false in a
> >      >>         software release there is the possibility (T2 in
> >      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
> >      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
> >      >>         appears to be no more safe than LOT=true.
> >      >>         > >
> >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> >     miners
> >      >>         by default.
> >      >>         > >
> >      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
> >      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
> >     think it
> >      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
> >      >>         uncoordinated community UASF efforts on top of LOT=false.
> >      >>         > >
> >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> >      >>         > >
> >      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
> >      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
> >      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
> >      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
> >      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
> >      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
> >      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
> >      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
> >     <http://taprootactivation.com>> (and this effort has informed the discussion) without
> >      >>         taking pledges of support as cast iron guarantees.
> >      >>         > >
> >      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
> >      >>         email :)
> >      >>         > >
> >      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
> >     <mailto:arielluaces@gmail•com>
> >      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
> >      >>         > >
> >      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
> >      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
> >     inevitable, like
> >      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
> >      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
> >      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
> >     support,
> >      >>         or any support right up against a miner activation threshold.
> >      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
> >      >>         in people's minds.
> >      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
> >      >>         above %51).
> >      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
> >     since a
> >      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
> >      >>         coordination and safety are sometimes sprinkled into the argument.
> >      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
> >     into
> >      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
> >      >>         must or must not run.
> >      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
> >     only a
> >      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
> >     reason of
> >      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
> >     moment of
> >      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
> >     into a
> >      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
> >      >>         option has ran its course.
> >      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
> >     miners
> >      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
> >      >>         > > > How is that strictly safer or more coordinated?
> >      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
> >      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
> >     with
> >      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
> >     calling
> >      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
> >      >>         feature is worth a network split down the middle.
> >      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
> >      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
> >     Taproot.
> >      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
> >      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> >      >>         > > > Cheers
> >      >>         > > > Ariel Lorenzo-Luaces
> >      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
> >     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
> >      >>         > > >
> >      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
> >      >>         > > > > activation on IRC which again was open to all. Despite what appeared
> >      >>         > > > > to be majority support for LOT=false over LOT=true in the first
> >      >>         > > > > meeting I (and others) thought the arguments had not been explored in
> >      >>         > > > > depth and that we should have a follow up meeting almost entirely
> >      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
> >      >>         > > > > false.
> >      >>         > > > >
> >      >>         > > > > The meeting was announced here:
> >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
> >      >>         > > > >
> >      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
> >      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
> >      >>         > > > > could. David Harding responded with an additional argument for
> >      >>         > > > > LOT=false (F7) here:
> >      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
> >      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
> >      >>         > > > >
> >      >>         > > > > These meetings are very challenging given they are open to all, you
> >      >>         > > > > don’t know who will attend and you don’t know most people’s views in
> >      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
> >      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
> >      >>         > > > > both. We only tried evaluating which had more support and which had
> >      >>         > > > > more strong opposition towards the end of the meeting.
> >      >>         > > > >
> >      >>         > > > > The conversation log is here:
> >      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
> >     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
> >     <http://gnusha.org/taproot-activation/2021-02-16.log>>
> >      >>         > > > >
> >      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
> >      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
> >      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
> >     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
> >      >>         > > > >
> >      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
> >      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
> >      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
> >      >>         > > > >
> >      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
> >      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
> >      >>         > > > >
> >      >>         > > > > Activation height range: 693504-745920
> >      >>         > > > >
> >      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
> >      >>         > > > >
> >      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
> >      >>         > > > > representative of the entire community.
> >      >>         > > > >
> >      >>         > > > > So, these details remain JUST a proposal for now.
> >      >>         > > > >
> >      >>         > > > > It seems inevitable that there won't be consensus on LOT.
> >      >>         > > > >
> >      >>         > > > > Everyone will have to choose for himself. :/
> >      >>         > > > >
> >      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
> >      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
> >      >>         > > > > my perspective there was clearly more strong opposition (what would
> >      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
> >      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
> >      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
> >      >>         > > > > tried to summarize views from the meeting in this analysis:
> >      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
> >      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
> >      >>         > > > >
> >      >>         > > > > I am also aware of other current and previous Bitcoin Core
> >      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
> >      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
> >      >>         > > > > spotlight for no reason but if you go through the conversation logs of
> >      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
> >      >>         > > > > you will see their views evaluated on the ##taproot-activation
> >      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
> >     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
> >      >>         > > > > expressed a preference for lot=false though I don’t know how strong
> >      >>         > > > > that preference was.
> >      >>         > > > >
> >      >>         > > > > I am only one voice but it is my current assessment that if we are to
> >      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
> >      >>         > > > > the community at this time our only option is to propose LOT=false.
> >      >>         > > > > Any further delay appears to me counterproductive in our collective
> >      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
> >      >>         > > > >
> >      >>         > > > > Obviously others are free to disagree with that assessment and
> >      >>         > > > > continue discussions but personally I will be attempting to avoid
> >      >>         > > > > those discussions unless prominent new information comes to light or
> >      >>         > > > > various specific individuals change their minds.
> >      >>         > > > >
> >      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
> >      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
> >      >>         > > > > said previously that will be loosely following the format of the
> >      >>         > > > > Bitcoin Core PR review club and will be lower level and more
> >      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
> >      >>         > > > > the IRC channel ##taproot-activation.
> >      >>         > > > >
> >      >>         > > > > Thanks to the meeting participants (and those who joined the
> >      >>         > > > > discussion on the channel prior and post the meeting) for engaging
> >      >>         > > > > productively and in good faith.
> >      >>         > >
> >      >>         > > --
> >      >>         > > Michael Folkson
> >      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      >>         > > Keybase: michaelfolkson
> >      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >      >>         > > _______________________________________________
> >      >>         > > bitcoin-dev mailing list
> >      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> >      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> >      >>
> >      >>
> >      >>
> >      >>
> >      >>     --
> >      >>     Michael Folkson
> >      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      >>     Keybase: michaelfolkson
> >      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >      >>     _______________________________________________
> >      >>     bitcoin-dev mailing list
> >      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
> >      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
> >      >
> >      >
> >      >
> >      > --
> >      > Michael Folkson
> >      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
> >     <mailto:michaelfolkson@gmail•com>>
> >      > Keybase: michaelfolkson
> >      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >     _______________________________________________
> >     bitcoin-dev mailing list
> >     bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
> >     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 15:04                 ` Keagan McClelland
@ 2021-02-18 15:18                   ` Matt Corallo
  2021-02-19  2:20                     ` Ariel Luaces
  2021-02-19 11:30                     ` ZmnSCPxj
  0 siblings, 2 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 15:18 UTC (permalink / raw)
  To: Keagan McClelland, Bitcoin Protocol Discussion; +Cc: Michael Folkson

This is absolutely the case, however note that the activation method itself is consensus code which executes as a part 
of a fork, and one which deserves as much scrutiny as anything else. While taproot is a model of how a soft-fork should 
be designed, this doesn't imply anything about the consensus code which represents the activation thereof.

Hence all the debate around activation - ultimately its also defining a fork, and given the politics around it, one 
which almost certainly carries significantly more risk than Taproot.

Note that I don't believe anyone is advocating for "try to activate, and if it fails, move on". Various people have 
various views on how conservative and timelines for what to do at that point, but I believe most in this discussion are 
OK with flag-day-based activation (given some level of care) if it becomes clear Taproot is supported by a vast majority 
of Bitcoin users and is only not activating due to lagging miner upgrades.

Matt

On 2/18/21 10:04, Keagan McClelland wrote:
> Hi all,
> 
> I think it's important for us to consider what is actually being considered for activation here.
> 
> The designation of "soft fork" is accurate but I don't think it adequately conveys how non-intrusive a change like this 
> is. All that taproot does (unless I'm completely missing something) is imbue a previously undefined script version with 
> actual semantics. In order for a chain reorg to take place it would mean that someone would have to have a use case for 
> that script version today. This is something I think that we can easily check by digging through the UTXO set or 
> history. If anyone is using that script version, we absolutely should not be using it, but that doesn't mean that we 
> can't switch to a script version that no one is actually using.
> 
> If no one is even attempting to use the script version, then the change has no effect on whether a chain split occurs 
> because there is simply no block that contains a transaction that only some of the network will accept.
> 
> Furthermore, I don't know how Bitcoin can stand the test of time if we allow developers who rely on "undefined behavior" 
> (which the taproot script version presently is) to exert tremendous influence over what code does or does not get run. 
> This isn't a soft fork that makes some particular UTXO's unspendable. It isn't one that bans miners from collecting 
> fees. It is a change that means that certain "always accept" transactions actually have real conditions you have to 
> meet. I can't imagine a less intrusive change.
> 
> On the other hand, choosing to let L=F be a somewhat final call sets a very real precedent that 10% of what I estimate 
> to be 1% of bitcoin users can effectively block any change from here on forward. At that point we are saying that miners 
> are in control of network consensus in ways they have not been up until now. I don't think this is a more desirable 
> outcome to let ~0.1% of the network get to block /non-intrusive/ changes that the rest of the network wants.
> 
> I can certainly live with an L=F attempt as a way to punt on the discussion, maybe the activation happens and this will 
> all be fine. But if it doesn't, I hardly think that users of Bitcoin are just going to be like "well, guess that's it 
> for Taproot". I have no idea what ensues at that point, but probably another community led UASF movement.
> 
> I wasn't super well educated on this stuff back in '17 when Segwit went down, as I was new at that time, so if I'm 
> missing something please say so. But from my point of view, we can't treat all soft forks as equal.
> 
> Keagan
> 
> On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org 
> <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> 
>     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
>     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as
>     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to
>     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
>     exchange losing millions would be worse than having Taproot is good.
> 
>     Matt
> 
>     On 2/18/21 09:26, Michael Folkson wrote:
>      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
>     forks,
>      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
>      >
>      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
>     such as
>      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
>     splits
>      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever
>      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
>      >
>      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
>     though I'm
>      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
>     (though
>      > admittedly you have a much better understanding than me of what happened in 2017).
>      >
>      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot
>      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
>      > wouldn't kill Bitcoin long term.
>      >
>      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
>     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
>      >
>      >     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
>      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
>     and not
>      >     activate Taproot. Seriously.
>      >
>      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
>      >
>      >     Matt
>      >
>      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>
>      >>     
>      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
>      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
>     users
>      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
>      >>
>      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
>      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
>      >>
>      >>
>      >>
>      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
>     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
>      >>
>      >>         Good morning all,
>      >>
>      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>      >>         >
>      >>         > Who's we here?
>      >>         >
>      >>         > Release both and let the network decide.
>      >>
>      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
>      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
>      >>
>      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
>     users,
>      >>         is for users to make that choice themselves.
>      >>
>      >>         Regards,
>      >>         ZmnSCPxj
>      >>
>      >>         >
>      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>         >
>      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
>     in the
>      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
>      >>         to conversation on the IRC channel or on social media etc.
>      >>         > >
>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>     into
>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>      >>         must or must not run.
>      >>         > >
>      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
>     software
>      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
>     them.
>      >>         > >
>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>     only a
>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>     reason of
>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>     moment of
>      >>         MUST_SIGNAL, unable to mine new blocks?
>      >>         > >
>      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
>      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
>     activate
>      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
>     false in a
>      >>         software release there is the possibility (T2 in
>      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
>      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
>      >>         appears to be no more safe than LOT=true.
>      >>         > >
>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>     miners
>      >>         by default.
>      >>         > >
>      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
>      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
>     think it
>      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
>      >>         uncoordinated community UASF efforts on top of LOT=false.
>      >>         > >
>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>      >>         > >
>      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
>      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
>      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
>      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
>      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
>      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
>      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
>      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
>     <http://taprootactivation.com>> (and this effort has informed the discussion) without
>      >>         taking pledges of support as cast iron guarantees.
>      >>         > >
>      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
>      >>         email :)
>      >>         > >
>      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
>     <mailto:arielluaces@gmail•com>
>      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
>      >>         > >
>      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
>     inevitable, like
>      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
>      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
>     support,
>      >>         or any support right up against a miner activation threshold.
>      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
>      >>         in people's minds.
>      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
>      >>         above %51).
>      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
>     since a
>      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
>      >>         coordination and safety are sometimes sprinkled into the argument.
>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>     into
>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>      >>         must or must not run.
>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>     only a
>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>     reason of
>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>     moment of
>      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
>     into a
>      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
>      >>         option has ran its course.
>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>     miners
>      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>      >>         > > > How is that strictly safer or more coordinated?
>      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
>      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
>     with
>      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
>     calling
>      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
>      >>         feature is worth a network split down the middle.
>      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
>      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
>     Taproot.
>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>      >>         > > > Cheers
>      >>         > > > Ariel Lorenzo-Luaces
>      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
>     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>         > > >
>      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
>      >>         > > > > activation on IRC which again was open to all. Despite what appeared
>      >>         > > > > to be majority support for LOT=false over LOT=true in the first
>      >>         > > > > meeting I (and others) thought the arguments had not been explored in
>      >>         > > > > depth and that we should have a follow up meeting almost entirely
>      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
>      >>         > > > > false.
>      >>         > > > >
>      >>         > > > > The meeting was announced here:
>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
>      >>         > > > >
>      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
>      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>      >>         > > > > could. David Harding responded with an additional argument for
>      >>         > > > > LOT=false (F7) here:
>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
>      >>         > > > >
>      >>         > > > > These meetings are very challenging given they are open to all, you
>      >>         > > > > don’t know who will attend and you don’t know most people’s views in
>      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
>      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
>      >>         > > > > both. We only tried evaluating which had more support and which had
>      >>         > > > > more strong opposition towards the end of the meeting.
>      >>         > > > >
>      >>         > > > > The conversation log is here:
>      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
>     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
>     <http://gnusha.org/taproot-activation/2021-02-16.log>>
>      >>         > > > >
>      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
>      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
>     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
>      >>         > > > >
>      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
>      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
>      >>         > > > >
>      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
>      >>         > > > >
>      >>         > > > > Activation height range: 693504-745920
>      >>         > > > >
>      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
>      >>         > > > >
>      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
>      >>         > > > > representative of the entire community.
>      >>         > > > >
>      >>         > > > > So, these details remain JUST a proposal for now.
>      >>         > > > >
>      >>         > > > > It seems inevitable that there won't be consensus on LOT.
>      >>         > > > >
>      >>         > > > > Everyone will have to choose for himself. :/
>      >>         > > > >
>      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
>      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
>      >>         > > > > my perspective there was clearly more strong opposition (what would
>      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
>      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>      >>         > > > > tried to summarize views from the meeting in this analysis:
>      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
>      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
>      >>         > > > >
>      >>         > > > > I am also aware of other current and previous Bitcoin Core
>      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
>      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
>      >>         > > > > spotlight for no reason but if you go through the conversation logs of
>      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
>      >>         > > > > you will see their views evaluated on the ##taproot-activation
>      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
>     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
>      >>         > > > > expressed a preference for lot=false though I don’t know how strong
>      >>         > > > > that preference was.
>      >>         > > > >
>      >>         > > > > I am only one voice but it is my current assessment that if we are to
>      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
>      >>         > > > > the community at this time our only option is to propose LOT=false.
>      >>         > > > > Any further delay appears to me counterproductive in our collective
>      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
>      >>         > > > >
>      >>         > > > > Obviously others are free to disagree with that assessment and
>      >>         > > > > continue discussions but personally I will be attempting to avoid
>      >>         > > > > those discussions unless prominent new information comes to light or
>      >>         > > > > various specific individuals change their minds.
>      >>         > > > >
>      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
>      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
>      >>         > > > > said previously that will be loosely following the format of the
>      >>         > > > > Bitcoin Core PR review club and will be lower level and more
>      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>      >>         > > > > the IRC channel ##taproot-activation.
>      >>         > > > >
>      >>         > > > > Thanks to the meeting participants (and those who joined the
>      >>         > > > > discussion on the channel prior and post the meeting) for engaging
>      >>         > > > > productively and in good faith.
>      >>         > >
>      >>         > > --
>      >>         > > Michael Folkson
>      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      >>         > > Keybase: michaelfolkson
>      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>      >>         > > _______________________________________________
>      >>         > > bitcoin-dev mailing list
>      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>      >>
>      >>
>      >>
>      >>
>      >>     --
>      >>     Michael Folkson
>      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      >>     Keybase: michaelfolkson
>      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>      >>     _______________________________________________
>      >>     bitcoin-dev mailing list
>      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>      >
>      >
>      >
>      > --
>      > Michael Folkson
>      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      > Keybase: michaelfolkson
>      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>     _______________________________________________
>     bitcoin-dev mailing list
>     bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> 


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:42               ` Matt Corallo
  2021-02-18 14:51                 ` Michael Folkson
@ 2021-02-18 15:04                 ` Keagan McClelland
  2021-02-18 15:18                   ` Matt Corallo
  1 sibling, 1 reply; 42+ messages in thread
From: Keagan McClelland @ 2021-02-18 15:04 UTC (permalink / raw)
  To: Matt Corallo, Bitcoin Protocol Discussion; +Cc: Michael Folkson

[-- Attachment #1: Type: text/plain, Size: 24387 bytes --]

Hi all,

I think it's important for us to consider what is actually being considered
for activation here.

The designation of "soft fork" is accurate but I don't think it adequately
conveys how non-intrusive a change like this is. All that taproot does
(unless I'm completely missing something) is imbue a previously undefined
script version with actual semantics. In order for a chain reorg to take
place it would mean that someone would have to have a use case for that
script version today. This is something I think that we can easily check by
digging through the UTXO set or history. If anyone is using that script
version, we absolutely should not be using it, but that doesn't mean that
we can't switch to a script version that no one is actually using.

If no one is even attempting to use the script version, then the change has
no effect on whether a chain split occurs because there is simply no block
that contains a transaction that only some of the network will accept.

Furthermore, I don't know how Bitcoin can stand the test of time if we
allow developers who rely on "undefined behavior" (which the taproot script
version presently is) to exert tremendous influence over what code does or
does not get run. This isn't a soft fork that makes some particular UTXO's
unspendable. It isn't one that bans miners from collecting fees. It is a
change that means that certain "always accept" transactions actually have
real conditions you have to meet. I can't imagine a less intrusive change.

On the other hand, choosing to let L=F be a somewhat final call sets a very
real precedent that 10% of what I estimate to be 1% of bitcoin users can
effectively block any change from here on forward. At that point we are
saying that miners are in control of network consensus in ways they have
not been up until now. I don't think this is a more desirable outcome to
let ~0.1% of the network get to block *non-intrusive* changes that the rest
of the network wants.

I can certainly live with an L=F attempt as a way to punt on the
discussion, maybe the activation happens and this will all be fine. But if
it doesn't, I hardly think that users of Bitcoin are just going to be like
"well, guess that's it for Taproot". I have no idea what ensues at that
point, but probably another community led UASF movement.

I wasn't super well educated on this stuff back in '17 when Segwit went
down, as I was new at that time, so if I'm missing something please say so.
But from my point of view, we can't treat all soft forks as equal.

Keagan

On Thu, Feb 18, 2021 at 7:43 AM Matt Corallo via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> We've had several softforks in Bitcoin which, through the course of their
> activation, had a several-block reorg. That
> should be indication enough that we need to very carefully consider
> activation to ensure we reduce the risk of that as
> much as absolutely possible. Again, while I think Taproot is a huge
> improvement and am looking forward to being able to
> use it, getting unlucky and hitting a 4-block reorg that happens to
> include a double-spend and some PR around an
> exchange losing millions would be worse than having Taproot is good.
>
> Matt
>
> On 2/18/21 09:26, Michael Folkson wrote:
> > Thanks for your response Matt. It is a fair challenge. There is always
> going to be an element of risk with soft forks,
> > all we can do is attempt to minimize that risk. I would argue that risk
> has been minimized for Taproot.
> >
> > You know (better than I do in fact) that Bitcoin (and layers built on
> top of it) greatly benefit from upgrades such as
> > Taproot. To say we shouldn't do Taproot or any future soft forks because
> there is a small but real risk of chain splits
> > I think is shortsighted. Indeed I think even if we collectively decided
> not to do any future soft fork upgrades ever
> > again on this mailing list that wouldn't stop soft fork attempts from
> other people in future.
> >
> > I don't think there is anything else we can do to minimize that risk for
> the Taproot soft fork at this point though I'm
> > open to ideas. To reiterate that risk will never be zero. I don't think
> I see Bitcoin as fragile as you seem to (though
> > admittedly you have a much better understanding than me of what happened
> in 2017).
> >
> > The likely scenario for the Taproot soft fork is LOT turns out to be
> entirely irrelevant and miners activate Taproot
> > before it becomes relevant. And even the unlikely worst case scenario
> would only cause short term disruption and
> > wouldn't kill Bitcoin long term.
> >
> > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com
> <mailto:lf-lists@mattcorallo•com>> wrote:
> >
> >     If the eventual outcome is that different implementations (that have
> material *transaction processing* userbases,
> >     and I’m not sure to what extent that’s true with Knots) ship
> different consensus rules, we should stop here and not
> >     activate Taproot. Seriously.
> >
> >     Bitcoin is a consensus system. The absolute worst outcome at all
> possible is to have it fall out of consensus.
> >
> >     Matt
> >
> >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org
> >>     <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>
> >>     
> >>     Right, that is one option. Personally I would prefer a Bitcoin Core
> release sets LOT=false (based on what I have
> >>     heard from Bitcoin Core contributors) and a community effort
> releases a version with LOT=true. I don't think users
> >>     should be forced to choose something they may have no context on
> before they are allowed to use Bitcoin Core.
> >>
> >>     My current understanding is that roasbeef is planning to set
> LOT=false on btcd (an alternative protocol
> >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided
> on Bitcoin Knots.
> >>
> >>
> >>
> >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com
> <mailto:ZmnSCPxj@protonmail•com>> wrote:
> >>
> >>         Good morning all,
> >>
> >>         > "An activation mechanism is a consensus change like any other
> change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline."
> >>         >
> >>         > Who's we here?
> >>         >
> >>         > Release both and let the network decide.
> >>
> >>         A thing that could be done, without mandating either LOT=true
> or LOT=false, would be to have a release that
> >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to
> start if the parameter is not set.
> >>
> >>         This assures everyone that neither choice is being forced on
> users, and instead what is being forced on users,
> >>         is for users to make that choice themselves.
> >>
> >>         Regards,
> >>         ZmnSCPxj
> >>
> >>         >
> >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via
> bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>         >
> >>         > > Thanks for your response Ariel. It would be useful if you
> responded to specific points I have made in the
> >>         mailing list post or at least quote these ephemeral "people"
> you speak of. I don't know if you're responding
> >>         to conversation on the IRC channel or on social media etc.
> >>         > >
> >>         > > > The argument comes from a naive assumption that users
> MUST upgrade to the choice that is submitted into
> >>         code. But in fact this isn't true and some voices in this
> discussion need to be more humble about what users
> >>         must or must not run.
> >>         > >
> >>         > > I personally have never made this assumption. Of course
> users aren't forced to run any particular software
> >>         version, quite the opposite. Defaults set in software versions
> matter though as many users won't change them.
> >>         > >
> >>         > > > Does no one realize that it is a very possible outcome
> that if LOT=true is released there may be only a
> >>         handful of people that begin running it while everyone else
> delays their upgrade (with the very good reason of
> >>         not getting involved in politics) and a year later those
> handful of people just become stuck at the moment of
> >>         MUST_SIGNAL, unable to mine new blocks?
> >>         > >
> >>         > > It is a possible outcome but the likely outcome is that
> miners activate Taproot before LOT is even
> >>         relevant. I think it is prudent to prepare for the unlikely but
> possible outcome that miners fail to activate
> >>         and hence have this discussion now rather than be unprepared
> for that eventuality. If LOT is set to false in a
> >>         software release there is the possibility (T2 in
> >>
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>)
> of individuals or a
> >>         proportion of the community changing LOT to true. In that sense
> setting LOT=false in a software release
> >>         appears to be no more safe than LOT=true.
> >>         > >
> >>         > > > The result: a wasted year of waiting and a minority of
> people who didn't want to be lenient with miners
> >>         by default.
> >>         > >
> >>         > > There is the (unlikely but possible) possibility of a
> wasted year if LOT is set to false and miners fail
> >>         to activate. I'm not convinced by this perception that LOT=true
> is antagonistic to miners. I actually think it
> >>         offers them clarity on what will happen over a year time period
> and removes the need for coordinated or
> >>         uncoordinated community UASF efforts on top of LOT=false.
> >>         > >
> >>         > > > An activation mechanism is a consensus change like any
> other change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline.
> >>         > >
> >>         > > I don't know what you are recommending here to avoid "this
> darkest timeline". Open discussions have
> >>         occurred and are continuing and in my mailing list post that
> you responded to **I recommended we propose
> >>         LOT=false be set in protocol implementations such as Bitcoin
> Core**. I do think this apocalyptic language
> >>         isn't particularly helpful. In an open consensus system
> discussion is healthy, we should prepare for bad or
> >>         worst case scenarios in advance and doing so is not
> antagonistic or destructive. Mining pools have pledged
> >>         support for Taproot but we don't build secure systems based on
> pledges of support, we build them to minimize
> >>         trust in any human actors. We can be grateful that people like
> Alejandro have worked hard on
> >>         taprootactivation.com <http://taprootactivation.com> (and this
> effort has informed the discussion) without
> >>         taking pledges of support as cast iron guarantees.
> >>         > >
> >>         > > TL;DR It sounds like you agree with my recommendation to
> set LOT=false in protocol implementations in my
> >>         email :)
> >>         > >
> >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <
> arielluaces@gmail•com
> >>         <mailto:arielluaces@gmail•com>> wrote:
> >>         > >
> >>         > > > Something what strikes me about the conversation is the
> emotion surrounding the letters UASF.
> >>         > > > It appears as if people discuss UASF as if it's a massive
> tidal wave of support that is inevitable, like
> >>         we saw during segwit activation. But the actual definition is
> "any activation that is not a MASF".
> >>         > > > A UASF can consist of a single node, ten nodes, a
> thousand, half of all nodes, all business' nodes, or
> >>         even all the non mining nodes. On another dimension it can have
> zero mining support, 51% support, 49% support,
> >>         or any support right up against a miner activation threshold.
> >>         > > > Hell a UASF doesn't even need code or even a single node
> running as long as it exists as a possibility
> >>         in people's minds.
> >>         > > > The only thing a UASF doesn't have is miner support above
> an agreed activation threshold (some number
> >>         above %51).
> >>         > > > I say this because it strikes me when people say that
> they are for LOT=true with the logic that since a
> >>         UASF is guaranteed to happen then it's better to just make it
> default from the beginning. Words like
> >>         coordination and safety are sometimes sprinkled into the
> argument.
> >>         > > > The argument comes from a naive assumption that users
> MUST upgrade to the choice that is submitted into
> >>         code. But in fact this isn't true and some voices in this
> discussion need to be more humble about what users
> >>         must or must not run.
> >>         > > > Does no one realize that it is a very possible outcome
> that if LOT=true is released there may be only a
> >>         handful of people that begin running it while everyone else
> delays their upgrade (with the very good reason of
> >>         not getting involved in politics) and a year later those
> handful of people just become stuck at the moment of
> >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a
> minority of miners, activating, and forking off into a
> >>         minority fork. Then a lot=false could be started that ends up
> activating the feature now that the stubborn
> >>         option has ran its course.
> >>         > > > The result: a wasted year of waiting and a minority of
> people who didn't want to be lenient with miners
> >>         by default. The chains could be called BitcoinLenient and
> BitcoinStubborn.
> >>         > > > How is that strictly safer or more coordinated?
> >>         > > > I may be in the minority, or maybe a silent majority, or
> maybe a majority that just hasn't considered
> >>         this as a choice but honestly if there is contention about
> whether we're going to be stubborn or lenient with
> >>         miners for Taproot and in the future then I prefer to just not
> activate anything at all. I'm fine for calling
> >>         bitcoin ossified, accepting that segwit is Bitcoin's last
> network upgrade. Taproot is amazing but no new
> >>         feature is worth a network split down the middle.
> >>         > > > Maybe in 10 or 20 years, when other blockchains implement
> features like Taproot and many more, we will
> >>         become envious enough to put aside our differences on how to
> behave towards miners and finally activate Taproot.
> >>         > > > An activation mechanism is a consensus change like any
> other change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline.
> >>         > > > Cheers
> >>         > > > Ariel Lorenzo-Luaces
> >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via
> bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>         > > >
> >>         > > > > Yesterday (February 16th) we held a second meeting on
> Taproot
> >>         > > > > activation on IRC which again was open to all. Despite
> what appeared
> >>         > > > > to be majority support for LOT=false over LOT=true in
> the first
> >>         > > > > meeting I (and others) thought the arguments had not
> been explored in
> >>         > > > > depth and that we should have a follow up meeting
> almost entirely
> >>         > > > > focused on whether LOT (lockinontimeout) should be set
> to true or
> >>         > > > > false.
> >>         > > > >
> >>         > > > > The meeting was announced here:
> >>         > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >
> >>         > > > >
> >>         > > > > In that mailing list post I outlined the arguments for
> LOT=true (T1 to
> >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their
> strongest form I
> >>         > > > > could. David Harding responded with an additional
> argument for
> >>         > > > > LOT=false (F7) here:
> >>         > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >
> >>         > > > >
> >>         > > > > These meetings are very challenging given they are open
> to all, you
> >>         > > > > don’t know who will attend and you don’t know most
> people’s views in
> >>         > > > > advance. I tried to give time for both the LOT=true
> arguments and the
> >>         > > > > LOT=false arguments to be discussed as I knew there was
> support for
> >>         > > > > both. We only tried evaluating which had more support
> and which had
> >>         > > > > more strong opposition towards the end of the meeting.
> >>         > > > >
> >>         > > > > The conversation log is here:
> >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log <
> http://gnusha.org/taproot-activation/2021-02-16.log>
> >>         > > > >
> >>         > > > > (If you are so inclined you can watch a video of the
> meeting here.
> >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up
> the livestream:
> >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <
> https://www.youtube.com/watch?v=vpl5q1ovMLM>)
> >>         > > > >
> >>         > > > > A summary of the meeting was provided by Luke Dashjr on
> Mastodon here:
> >>         > > > >
> https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
> >>         > > > >
> >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely
> unproductive, but we
> >>         > > > > did manage to come to consensus on everything but
> LockinOnTimeout.
> >>         > > > >
> >>         > > > > Activation height range: 693504-745920
> >>         > > > >
> >>         > > > > MASF threshold: 1815/2016 blocks (90%)
> >>         > > > >
> >>         > > > > Keep in mind only ~100 people showed for the meetings,
> hardly
> >>         > > > > representative of the entire community.
> >>         > > > >
> >>         > > > > So, these details remain JUST a proposal for now.
> >>         > > > >
> >>         > > > > It seems inevitable that there won't be consensus on
> LOT.
> >>         > > > >
> >>         > > > > Everyone will have to choose for himself. :/
> >>         > > > >
> >>         > > > > Personally I agree with most of this. I agree that
> there wasn’t
> >>         > > > > overwhelming consensus for either LOT=true or
> LOT=false. However, from
> >>         > > > > my perspective there was clearly more strong opposition
> (what would
> >>         > > > > usually be deemed a NACK in Bitcoin Core review
> terminology) from
> >>         > > > > Bitcoin Core contributors, Lightning developers and
> other community
> >>         > > > > members against LOT=true than there was for LOT=false.
> Andrew Chow
> >>         > > > > tried to summarize views from the meeting in this
> analysis:
> >>         > > > >
> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >>         <
> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
> >>         > > > >
> >>         > > > > I am also aware of other current and previous Bitcoin
> Core
> >>         > > > > contributors and Lightning developers who didn’t attend
> the meeting in
> >>         > > > > person who are opposed to LOT=true. I don’t want to put
> them in the
> >>         > > > > spotlight for no reason but if you go through the
> conversation logs of
> >>         > > > > not only the meeting but the weeks of discussion prior
> to this meeting
> >>         > > > > you will see their views evaluated on the
> ##taproot-activation
> >>         > > > > channel. In addition, on taprootactivation.com <
> http://taprootactivation.com> some mining pools
> >>         > > > > expressed a preference for lot=false though I don’t
> know how strong
> >>         > > > > that preference was.
> >>         > > > >
> >>         > > > > I am only one voice but it is my current assessment
> that if we are to
> >>         > > > > attempt to finalize Taproot activation parameters and
> propose them to
> >>         > > > > the community at this time our only option is to
> propose LOT=false.
> >>         > > > > Any further delay appears to me counterproductive in
> our collective
> >>         > > > > aim to get the Taproot soft fork activated as early as
> possible.
> >>         > > > >
> >>         > > > > Obviously others are free to disagree with that
> assessment and
> >>         > > > > continue discussions but personally I will be
> attempting to avoid
> >>         > > > > those discussions unless prominent new information
> comes to light or
> >>         > > > > various specific individuals change their minds.
> >>         > > > >
> >>         > > > > Next week we are planning a code review of the Bitcoin
> Core PR #19573
> >>         > > > > which was initially delayed because of this LOT
> discussion. As I’ve
> >>         > > > > said previously that will be loosely following the
> format of the
> >>         > > > > Bitcoin Core PR review club and will be lower level and
> more
> >>         > > > > technical. That is planned for Tuesday February 23rd at
> 19:00 UTC on
> >>         > > > > the IRC channel ##taproot-activation.
> >>         > > > >
> >>         > > > > Thanks to the meeting participants (and those who
> joined the
> >>         > > > > discussion on the channel prior and post the meeting)
> for engaging
> >>         > > > > productively and in good faith.
> >>         > >
> >>         > > --
> >>         > > Michael Folkson
> >>         > > Email: michaelfolkson@gmail•com <mailto:
> michaelfolkson@gmail•com>
> >>         > > Keybase: michaelfolkson
> >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >>         > > _______________________________________________
> >>         > > bitcoin-dev mailing list
> >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:
> bitcoin-dev@lists•linuxfoundation.org>
> >>         > >
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >
> >>
> >>
> >>
> >>
> >>     --
> >>     Michael Folkson
> >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> >>     Keybase: michaelfolkson
> >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >>     _______________________________________________
> >>     bitcoin-dev mailing list
> >>     bitcoin-dev@lists•linuxfoundation.org <mailto:
> bitcoin-dev@lists•linuxfoundation.org>
> >>     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >
> >
> >
> > --
> > Michael Folkson
> > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> > Keybase: michaelfolkson
> > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

[-- Attachment #2: Type: text/html, Size: 33600 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:53                   ` Matt Corallo
@ 2021-02-18 15:01                     ` Matt Corallo
  0 siblings, 0 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 15:01 UTC (permalink / raw)
  To: Bitcoin Protocol Discussion, Michael Folkson

To ensure we're on the same page, here - I'm not advocating we give up on Taproot. Indeed, without having dug deep into 
the issue, my overall impression is that Knots has a tiny transaction-processing userbase and it likely isn't worth 
giving deep thought to whether it forks itself off from the network or not. My point is that, if it were the case that 
various implementations of Bitcoin's consensus that have material userbases were to release either a configurable 
consensus mechanism (without incredible care being given to it, not just a "we can't decide, whatever" argument) or a 
different consensus, we'd be much, much better off not having Taproot at all.

Matt

On 2/18/21 09:53, Matt Corallo via bitcoin-dev wrote:
> You say "short term PR", I say "risking millions of user dollars".
> 
> On 2/18/21 09:51, Michael Folkson wrote:
>>  > getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an exchange 
>> losing millions would be worse than having Taproot is good.
>>
>> We are at the point where an upgrade that confers significant long term benefits for the whole ecosystem is not as 
>> important as bad short term PR? That is a depressing outlook if that is what you believe.
>>
>> Even in that worst case scenario exchanges should not lose money if they are competent and are able to manage that risk.
>>
>> On Thu, Feb 18, 2021 at 2:42 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>> wrote:
>>
>>     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
>>     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of 
>> that as
>>     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being 
>> able to
>>     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
>>     exchange losing millions would be worse than having Taproot is good.
>>
>>     Matt
>>
>>     On 2/18/21 09:26, Michael Folkson wrote:
>>      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
>>     forks,
>>      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
>>      >
>>      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
>>     such as
>>      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
>>     splits
>>      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades 
>> ever
>>      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
>>      >
>>      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
>>     though I'm
>>      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
>>     (though
>>      > admittedly you have a much better understanding than me of what happened in 2017).
>>      >
>>      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate 
>> Taproot
>>      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
>>      > wouldn't kill Bitcoin long term.
>>      >
>>      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
>>     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
>>      >
>>      >     If the eventual outcome is that different implementations (that have material *transaction processing* 
>> userbases,
>>      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
>>     and not
>>      >     activate Taproot. Seriously.
>>      >
>>      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
>>      >
>>      >     Matt
>>      >
>>      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>>      >>
>>      >>     
>>      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what 
>> I have
>>      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
>>     users
>>      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
>>      >>
>>      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
>>      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
>>      >>
>>      >>
>>      >>
>>      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
>>     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
>>      >>
>>      >>         Good morning all,
>>      >>
>>      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
>>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest 
>> timeline."
>>      >>         >
>>      >>         > Who's we here?
>>      >>         >
>>      >>         > Release both and let the network decide.
>>      >>
>>      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release 
>> that
>>      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
>>      >>
>>      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
>>     users,
>>      >>         is for users to make that choice themselves.
>>      >>
>>      >>         Regards,
>>      >>         ZmnSCPxj
>>      >>
>>      >>         >
>>      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>>      >>         >
>>      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
>>     in the
>>      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're 
>> responding
>>      >>         to conversation on the IRC channel or on social media etc.
>>      >>         > >
>>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>>     into
>>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what 
>> users
>>      >>         must or must not run.
>>      >>         > >
>>      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
>>     software
>>      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
>>     them.
>>      >>         > >
>>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>>     only a
>>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>>     reason of
>>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>>     moment of
>>      >>         MUST_SIGNAL, unable to mine new blocks?
>>      >>         > >
>>      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
>>      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
>>     activate
>>      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
>>     false in a
>>      >>         software release there is the possibility (T2 in
>>      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
>>      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
>>      >>         appears to be no more safe than LOT=true.
>>      >>         > >
>>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>>     miners
>>      >>         by default.
>>      >>         > >
>>      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and 
>> miners fail
>>      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
>>     think it
>>      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
>>      >>         uncoordinated community UASF efforts on top of LOT=false.
>>      >>         > >
>>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any 
>> other
>>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>      >>         > >
>>      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
>>      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
>>      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
>>      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for 
>> bad or
>>      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have 
>> pledged
>>      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to 
>> minimize
>>      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
>>      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
>>     <http://taprootactivation.com>> (and this effort has informed the discussion) without
>>      >>         taking pledges of support as cast iron guarantees.
>>      >>         > >
>>      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations 
>> in my
>>      >>         email :)
>>      >>         > >
>>      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
>>     <mailto:arielluaces@gmail•com>
>>      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
>>      >>         > >
>>      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>>      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
>>     inevitable, like
>>      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>>      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' 
>> nodes, or
>>      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
>>     support,
>>      >>         or any support right up against a miner activation threshold.
>>      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a 
>> possibility
>>      >>         in people's minds.
>>      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some 
>> number
>>      >>         above %51).
>>      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
>>     since a
>>      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
>>      >>         coordination and safety are sometimes sprinkled into the argument.
>>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>>     into
>>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what 
>> users
>>      >>         must or must not run.
>>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>>     only a
>>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>>     reason of
>>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>>     moment of
>>      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
>>     into a
>>      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the 
>> stubborn
>>      >>         option has ran its course.
>>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>>     miners
>>      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>>      >>         > > > How is that strictly safer or more coordinated?
>>      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't 
>> considered
>>      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
>>     with
>>      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
>>     calling
>>      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
>>      >>         feature is worth a network split down the middle.
>>      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, 
>> we will
>>      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
>>     Taproot.
>>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any 
>> other
>>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>      >>         > > > Cheers
>>      >>         > > > Ariel Lorenzo-Luaces
>>      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
>>     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>>      >>         > > >
>>      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
>>      >>         > > > > activation on IRC which again was open to all. Despite what appeared
>>      >>         > > > > to be majority support for LOT=false over LOT=true in the first
>>      >>         > > > > meeting I (and others) thought the arguments had not been explored in
>>      >>         > > > > depth and that we should have a follow up meeting almost entirely
>>      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
>>      >>         > > > > false.
>>      >>         > > > >
>>      >>         > > > > The meeting was announced here:
>>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
>>      >>         > > > >
>>      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
>>      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>>      >>         > > > > could. David Harding responded with an additional argument for
>>      >>         > > > > LOT=false (F7) here:
>>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
>>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
>>      >>         > > > >
>>      >>         > > > > These meetings are very challenging given they are open to all, you
>>      >>         > > > > don’t know who will attend and you don’t know most people’s views in
>>      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
>>      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
>>      >>         > > > > both. We only tried evaluating which had more support and which had
>>      >>         > > > > more strong opposition towards the end of the meeting.
>>      >>         > > > >
>>      >>         > > > > The conversation log is here:
>>      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
>>     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
>>     <http://gnusha.org/taproot-activation/2021-02-16.log>>
>>      >>         > > > >
>>      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
>>      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>>      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
>>     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
>>      >>         > > > >
>>      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>>      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
>>      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
>>      >>         > > > >
>>      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>>      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
>>      >>         > > > >
>>      >>         > > > > Activation height range: 693504-745920
>>      >>         > > > >
>>      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
>>      >>         > > > >
>>      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
>>      >>         > > > > representative of the entire community.
>>      >>         > > > >
>>      >>         > > > > So, these details remain JUST a proposal for now.
>>      >>         > > > >
>>      >>         > > > > It seems inevitable that there won't be consensus on LOT.
>>      >>         > > > >
>>      >>         > > > > Everyone will have to choose for himself. :/
>>      >>         > > > >
>>      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
>>      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
>>      >>         > > > > my perspective there was clearly more strong opposition (what would
>>      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>>      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
>>      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>>      >>         > > > > tried to summarize views from the meeting in this analysis:
>>      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
>>      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
>>      >>         > > > >
>>      >>         > > > > I am also aware of other current and previous Bitcoin Core
>>      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
>>      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
>>      >>         > > > > spotlight for no reason but if you go through the conversation logs of
>>      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
>>      >>         > > > > you will see their views evaluated on the ##taproot-activation
>>      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
>>     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
>>      >>         > > > > expressed a preference for lot=false though I don’t know how strong
>>      >>         > > > > that preference was.
>>      >>         > > > >
>>      >>         > > > > I am only one voice but it is my current assessment that if we are to
>>      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
>>      >>         > > > > the community at this time our only option is to propose LOT=false.
>>      >>         > > > > Any further delay appears to me counterproductive in our collective
>>      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
>>      >>         > > > >
>>      >>         > > > > Obviously others are free to disagree with that assessment and
>>      >>         > > > > continue discussions but personally I will be attempting to avoid
>>      >>         > > > > those discussions unless prominent new information comes to light or
>>      >>         > > > > various specific individuals change their minds.
>>      >>         > > > >
>>      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
>>      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
>>      >>         > > > > said previously that will be loosely following the format of the
>>      >>         > > > > Bitcoin Core PR review club and will be lower level and more
>>      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>>      >>         > > > > the IRC channel ##taproot-activation.
>>      >>         > > > >
>>      >>         > > > > Thanks to the meeting participants (and those who joined the
>>      >>         > > > > discussion on the channel prior and post the meeting) for engaging
>>      >>         > > > > productively and in good faith.
>>      >>         > >
>>      >>         > > --
>>      >>         > > Michael Folkson
>>      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>>     <mailto:michaelfolkson@gmail•com>>
>>      >>         > > Keybase: michaelfolkson
>>      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>      >>         > > _______________________________________________
>>      >>         > > bitcoin-dev mailing list
>>      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>>      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>>      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>>      >>
>>      >>
>>      >>
>>      >>
>>      >>     --
>>      >>     Michael Folkson
>>      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>>     <mailto:michaelfolkson@gmail•com>>
>>      >>     Keybase: michaelfolkson
>>      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>      >>     _______________________________________________
>>      >>     bitcoin-dev mailing list
>>      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>>      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>>      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>>      >
>>      >
>>      >
>>      > --
>>      > Michael Folkson
>>      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>>     <mailto:michaelfolkson@gmail•com>>
>>      > Keybase: michaelfolkson
>>      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>
>>
>>
>> -- 
>> Michael Folkson
>> Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
>> Keybase: michaelfolkson
>> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:51                 ` Michael Folkson
@ 2021-02-18 14:53                   ` Matt Corallo
  2021-02-18 15:01                     ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 14:53 UTC (permalink / raw)
  To: Michael Folkson; +Cc: Bitcoin Protocol Discussion

You say "short term PR", I say "risking millions of user dollars".

On 2/18/21 09:51, Michael Folkson wrote:
>  > getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an exchange 
> losing millions would be worse than having Taproot is good.
> 
> We are at the point where an upgrade that confers significant long term benefits for the whole ecosystem is not as 
> important as bad short term PR? That is a depressing outlook if that is what you believe.
> 
> Even in that worst case scenario exchanges should not lose money if they are competent and are able to manage that risk.
> 
> On Thu, Feb 18, 2021 at 2:42 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>> wrote:
> 
>     We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That
>     should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as
>     much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to
>     use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an
>     exchange losing millions would be worse than having Taproot is good.
> 
>     Matt
> 
>     On 2/18/21 09:26, Michael Folkson wrote:
>      > Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft
>     forks,
>      > all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
>      >
>      > You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades
>     such as
>      > Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain
>     splits
>      > I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever
>      > again on this mailing list that wouldn't stop soft fork attempts from other people in future.
>      >
>      > I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point
>     though I'm
>      > open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to
>     (though
>      > admittedly you have a much better understanding than me of what happened in 2017).
>      >
>      > The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot
>      > before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and
>      > wouldn't kill Bitcoin long term.
>      >
>      > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>
>     <mailto:lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>>> wrote:
>      >
>      >     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
>      >     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here
>     and not
>      >     activate Taproot. Seriously.
>      >
>      >     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
>      >
>      >     Matt
>      >
>      >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>
>      >>     
>      >>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
>      >>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think
>     users
>      >>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
>      >>
>      >>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
>      >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
>      >>
>      >>
>      >>
>      >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>
>     <mailto:ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>>> wrote:
>      >>
>      >>         Good morning all,
>      >>
>      >>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>      >>         >
>      >>         > Who's we here?
>      >>         >
>      >>         > Release both and let the network decide.
>      >>
>      >>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
>      >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
>      >>
>      >>         This assures everyone that neither choice is being forced on users, and instead what is being forced on
>     users,
>      >>         is for users to make that choice themselves.
>      >>
>      >>         Regards,
>      >>         ZmnSCPxj
>      >>
>      >>         >
>      >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>     <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>         >
>      >>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made
>     in the
>      >>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
>      >>         to conversation on the IRC channel or on social media etc.
>      >>         > >
>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>     into
>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>      >>         must or must not run.
>      >>         > >
>      >>         > > I personally have never made this assumption. Of course users aren't forced to run any particular
>     software
>      >>         version, quite the opposite. Defaults set in software versions matter though as many users won't change
>     them.
>      >>         > >
>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>     only a
>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>     reason of
>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>     moment of
>      >>         MUST_SIGNAL, unable to mine new blocks?
>      >>         > >
>      >>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
>      >>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to
>     activate
>      >>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to
>     false in a
>      >>         software release there is the possibility (T2 in
>      >> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>) of individuals or a
>      >>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
>      >>         appears to be no more safe than LOT=true.
>      >>         > >
>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>     miners
>      >>         by default.
>      >>         > >
>      >>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
>      >>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually
>     think it
>      >>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
>      >>         uncoordinated community UASF efforts on top of LOT=false.
>      >>         > >
>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>      >>         > >
>      >>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
>      >>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
>      >>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
>      >>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
>      >>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
>      >>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
>      >>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
>      >> taprootactivation.com <http://taprootactivation.com> <http://taprootactivation.com
>     <http://taprootactivation.com>> (and this effort has informed the discussion) without
>      >>         taking pledges of support as cast iron guarantees.
>      >>         > >
>      >>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
>      >>         email :)
>      >>         > >
>      >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
>     <mailto:arielluaces@gmail•com>
>      >>         <mailto:arielluaces@gmail•com <mailto:arielluaces@gmail•com>>> wrote:
>      >>         > >
>      >>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>      >>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is
>     inevitable, like
>      >>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>      >>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
>      >>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49%
>     support,
>      >>         or any support right up against a miner activation threshold.
>      >>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
>      >>         in people's minds.
>      >>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
>      >>         above %51).
>      >>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that
>     since a
>      >>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
>      >>         coordination and safety are sometimes sprinkled into the argument.
>      >>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted
>     into
>      >>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>      >>         must or must not run.
>      >>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be
>     only a
>      >>         handful of people that begin running it while everyone else delays their upgrade (with the very good
>     reason of
>      >>         not getting involved in politics) and a year later those handful of people just become stuck at the
>     moment of
>      >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off
>     into a
>      >>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
>      >>         option has ran its course.
>      >>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with
>     miners
>      >>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>      >>         > > > How is that strictly safer or more coordinated?
>      >>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
>      >>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient
>     with
>      >>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for
>     calling
>      >>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
>      >>         feature is worth a network split down the middle.
>      >>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
>      >>         become envious enough to put aside our differences on how to behave towards miners and finally activate
>     Taproot.
>      >>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>      >>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>      >>         > > > Cheers
>      >>         > > > Ariel Lorenzo-Luaces
>      >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev
>     <bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>      >>         <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>> wrote:
>      >>         > > >
>      >>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
>      >>         > > > > activation on IRC which again was open to all. Despite what appeared
>      >>         > > > > to be majority support for LOT=false over LOT=true in the first
>      >>         > > > > meeting I (and others) thought the arguments had not been explored in
>      >>         > > > > depth and that we should have a follow up meeting almost entirely
>      >>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
>      >>         > > > > false.
>      >>         > > > >
>      >>         > > > > The meeting was announced here:
>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>>
>      >>         > > > >
>      >>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
>      >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>      >>         > > > > could. David Harding responded with an additional argument for
>      >>         > > > > LOT=false (F7) here:
>      >>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
>      >>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>     <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>>
>      >>         > > > >
>      >>         > > > > These meetings are very challenging given they are open to all, you
>      >>         > > > > don’t know who will attend and you don’t know most people’s views in
>      >>         > > > > advance. I tried to give time for both the LOT=true arguments and the
>      >>         > > > > LOT=false arguments to be discussed as I knew there was support for
>      >>         > > > > both. We only tried evaluating which had more support and which had
>      >>         > > > > more strong opposition towards the end of the meeting.
>      >>         > > > >
>      >>         > > > > The conversation log is here:
>      >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log
>     <http://gnusha.org/taproot-activation/2021-02-16.log> <http://gnusha.org/taproot-activation/2021-02-16.log
>     <http://gnusha.org/taproot-activation/2021-02-16.log>>
>      >>         > > > >
>      >>         > > > > (If you are so inclined you can watch a video of the meeting here.
>      >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>      >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>
>     <https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>>)
>      >>         > > > >
>      >>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>      >>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
>      >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566
>     <https://bitcoinhackers.org/@lukedashjr/105742918779234566>>
>      >>         > > > >
>      >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>      >>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
>      >>         > > > >
>      >>         > > > > Activation height range: 693504-745920
>      >>         > > > >
>      >>         > > > > MASF threshold: 1815/2016 blocks (90%)
>      >>         > > > >
>      >>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
>      >>         > > > > representative of the entire community.
>      >>         > > > >
>      >>         > > > > So, these details remain JUST a proposal for now.
>      >>         > > > >
>      >>         > > > > It seems inevitable that there won't be consensus on LOT.
>      >>         > > > >
>      >>         > > > > Everyone will have to choose for himself. :/
>      >>         > > > >
>      >>         > > > > Personally I agree with most of this. I agree that there wasn’t
>      >>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
>      >>         > > > > my perspective there was clearly more strong opposition (what would
>      >>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>      >>         > > > > Bitcoin Core contributors, Lightning developers and other community
>      >>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>      >>         > > > > tried to summarize views from the meeting in this analysis:
>      >>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
>      >>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>     <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>>
>      >>         > > > >
>      >>         > > > > I am also aware of other current and previous Bitcoin Core
>      >>         > > > > contributors and Lightning developers who didn’t attend the meeting in
>      >>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
>      >>         > > > > spotlight for no reason but if you go through the conversation logs of
>      >>         > > > > not only the meeting but the weeks of discussion prior to this meeting
>      >>         > > > > you will see their views evaluated on the ##taproot-activation
>      >>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com>
>     <http://taprootactivation.com <http://taprootactivation.com>> some mining pools
>      >>         > > > > expressed a preference for lot=false though I don’t know how strong
>      >>         > > > > that preference was.
>      >>         > > > >
>      >>         > > > > I am only one voice but it is my current assessment that if we are to
>      >>         > > > > attempt to finalize Taproot activation parameters and propose them to
>      >>         > > > > the community at this time our only option is to propose LOT=false.
>      >>         > > > > Any further delay appears to me counterproductive in our collective
>      >>         > > > > aim to get the Taproot soft fork activated as early as possible.
>      >>         > > > >
>      >>         > > > > Obviously others are free to disagree with that assessment and
>      >>         > > > > continue discussions but personally I will be attempting to avoid
>      >>         > > > > those discussions unless prominent new information comes to light or
>      >>         > > > > various specific individuals change their minds.
>      >>         > > > >
>      >>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
>      >>         > > > > which was initially delayed because of this LOT discussion. As I’ve
>      >>         > > > > said previously that will be loosely following the format of the
>      >>         > > > > Bitcoin Core PR review club and will be lower level and more
>      >>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>      >>         > > > > the IRC channel ##taproot-activation.
>      >>         > > > >
>      >>         > > > > Thanks to the meeting participants (and those who joined the
>      >>         > > > > discussion on the channel prior and post the meeting) for engaging
>      >>         > > > > productively and in good faith.
>      >>         > >
>      >>         > > --
>      >>         > > Michael Folkson
>      >>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      >>         > > Keybase: michaelfolkson
>      >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>      >>         > > _______________________________________________
>      >>         > > bitcoin-dev mailing list
>      >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>      >>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>      >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>      >>
>      >>
>      >>
>      >>
>      >>     --
>      >>     Michael Folkson
>      >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      >>     Keybase: michaelfolkson
>      >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>      >>     _______________________________________________
>      >>     bitcoin-dev mailing list
>      >> bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>     <mailto:bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>>
>      >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>      >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>>
>      >
>      >
>      >
>      > --
>      > Michael Folkson
>      > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com> <mailto:michaelfolkson@gmail•com
>     <mailto:michaelfolkson@gmail•com>>
>      > Keybase: michaelfolkson
>      > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> 
> 
> 
> -- 
> Michael Folkson
> Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:42               ` Matt Corallo
@ 2021-02-18 14:51                 ` Michael Folkson
  2021-02-18 14:53                   ` Matt Corallo
  2021-02-18 15:04                 ` Keagan McClelland
  1 sibling, 1 reply; 42+ messages in thread
From: Michael Folkson @ 2021-02-18 14:51 UTC (permalink / raw)
  To: Matt Corallo; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 22240 bytes --]

> getting unlucky and hitting a 4-block reorg that happens to include a
double-spend and some PR around an exchange losing millions would be worse
than having Taproot is good.

We are at the point where an upgrade that confers significant long term
benefits for the whole ecosystem is not as important as bad short term PR?
That is a depressing outlook if that is what you believe.

Even in that worst case scenario exchanges should not lose money if they
are competent and are able to manage that risk.

On Thu, Feb 18, 2021 at 2:42 PM Matt Corallo <lf-lists@mattcorallo•com>
wrote:

> We've had several softforks in Bitcoin which, through the course of their
> activation, had a several-block reorg. That
> should be indication enough that we need to very carefully consider
> activation to ensure we reduce the risk of that as
> much as absolutely possible. Again, while I think Taproot is a huge
> improvement and am looking forward to being able to
> use it, getting unlucky and hitting a 4-block reorg that happens to
> include a double-spend and some PR around an
> exchange losing millions would be worse than having Taproot is good.
>
> Matt
>
> On 2/18/21 09:26, Michael Folkson wrote:
> > Thanks for your response Matt. It is a fair challenge. There is always
> going to be an element of risk with soft forks,
> > all we can do is attempt to minimize that risk. I would argue that risk
> has been minimized for Taproot.
> >
> > You know (better than I do in fact) that Bitcoin (and layers built on
> top of it) greatly benefit from upgrades such as
> > Taproot. To say we shouldn't do Taproot or any future soft forks because
> there is a small but real risk of chain splits
> > I think is shortsighted. Indeed I think even if we collectively decided
> not to do any future soft fork upgrades ever
> > again on this mailing list that wouldn't stop soft fork attempts from
> other people in future.
> >
> > I don't think there is anything else we can do to minimize that risk for
> the Taproot soft fork at this point though I'm
> > open to ideas. To reiterate that risk will never be zero. I don't think
> I see Bitcoin as fragile as you seem to (though
> > admittedly you have a much better understanding than me of what happened
> in 2017).
> >
> > The likely scenario for the Taproot soft fork is LOT turns out to be
> entirely irrelevant and miners activate Taproot
> > before it becomes relevant. And even the unlikely worst case scenario
> would only cause short term disruption and
> > wouldn't kill Bitcoin long term.
> >
> > On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com
> <mailto:lf-lists@mattcorallo•com>> wrote:
> >
> >     If the eventual outcome is that different implementations (that have
> material *transaction processing* userbases,
> >     and I’m not sure to what extent that’s true with Knots) ship
> different consensus rules, we should stop here and not
> >     activate Taproot. Seriously.
> >
> >     Bitcoin is a consensus system. The absolute worst outcome at all
> possible is to have it fall out of consensus.
> >
> >     Matt
> >
> >>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org
> >>     <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>
> >>     
> >>     Right, that is one option. Personally I would prefer a Bitcoin Core
> release sets LOT=false (based on what I have
> >>     heard from Bitcoin Core contributors) and a community effort
> releases a version with LOT=true. I don't think users
> >>     should be forced to choose something they may have no context on
> before they are allowed to use Bitcoin Core.
> >>
> >>     My current understanding is that roasbeef is planning to set
> LOT=false on btcd (an alternative protocol
> >>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided
> on Bitcoin Knots.
> >>
> >>
> >>
> >>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com
> <mailto:ZmnSCPxj@protonmail•com>> wrote:
> >>
> >>         Good morning all,
> >>
> >>         > "An activation mechanism is a consensus change like any other
> change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline."
> >>         >
> >>         > Who's we here?
> >>         >
> >>         > Release both and let the network decide.
> >>
> >>         A thing that could be done, without mandating either LOT=true
> or LOT=false, would be to have a release that
> >>         requires a `taprootlot=1` or `taprootlot=0` and refuses to
> start if the parameter is not set.
> >>
> >>         This assures everyone that neither choice is being forced on
> users, and instead what is being forced on users,
> >>         is for users to make that choice themselves.
> >>
> >>         Regards,
> >>         ZmnSCPxj
> >>
> >>         >
> >>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via
> bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>         >
> >>         > > Thanks for your response Ariel. It would be useful if you
> responded to specific points I have made in the
> >>         mailing list post or at least quote these ephemeral "people"
> you speak of. I don't know if you're responding
> >>         to conversation on the IRC channel or on social media etc.
> >>         > >
> >>         > > > The argument comes from a naive assumption that users
> MUST upgrade to the choice that is submitted into
> >>         code. But in fact this isn't true and some voices in this
> discussion need to be more humble about what users
> >>         must or must not run.
> >>         > >
> >>         > > I personally have never made this assumption. Of course
> users aren't forced to run any particular software
> >>         version, quite the opposite. Defaults set in software versions
> matter though as many users won't change them.
> >>         > >
> >>         > > > Does no one realize that it is a very possible outcome
> that if LOT=true is released there may be only a
> >>         handful of people that begin running it while everyone else
> delays their upgrade (with the very good reason of
> >>         not getting involved in politics) and a year later those
> handful of people just become stuck at the moment of
> >>         MUST_SIGNAL, unable to mine new blocks?
> >>         > >
> >>         > > It is a possible outcome but the likely outcome is that
> miners activate Taproot before LOT is even
> >>         relevant. I think it is prudent to prepare for the unlikely but
> possible outcome that miners fail to activate
> >>         and hence have this discussion now rather than be unprepared
> for that eventuality. If LOT is set to false in a
> >>         software release there is the possibility (T2 in
> >>
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>)
> of individuals or a
> >>         proportion of the community changing LOT to true. In that sense
> setting LOT=false in a software release
> >>         appears to be no more safe than LOT=true.
> >>         > >
> >>         > > > The result: a wasted year of waiting and a minority of
> people who didn't want to be lenient with miners
> >>         by default.
> >>         > >
> >>         > > There is the (unlikely but possible) possibility of a
> wasted year if LOT is set to false and miners fail
> >>         to activate. I'm not convinced by this perception that LOT=true
> is antagonistic to miners. I actually think it
> >>         offers them clarity on what will happen over a year time period
> and removes the need for coordinated or
> >>         uncoordinated community UASF efforts on top of LOT=false.
> >>         > >
> >>         > > > An activation mechanism is a consensus change like any
> other change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline.
> >>         > >
> >>         > > I don't know what you are recommending here to avoid "this
> darkest timeline". Open discussions have
> >>         occurred and are continuing and in my mailing list post that
> you responded to **I recommended we propose
> >>         LOT=false be set in protocol implementations such as Bitcoin
> Core**. I do think this apocalyptic language
> >>         isn't particularly helpful. In an open consensus system
> discussion is healthy, we should prepare for bad or
> >>         worst case scenarios in advance and doing so is not
> antagonistic or destructive. Mining pools have pledged
> >>         support for Taproot but we don't build secure systems based on
> pledges of support, we build them to minimize
> >>         trust in any human actors. We can be grateful that people like
> Alejandro have worked hard on
> >>         taprootactivation.com <http://taprootactivation.com> (and this
> effort has informed the discussion) without
> >>         taking pledges of support as cast iron guarantees.
> >>         > >
> >>         > > TL;DR It sounds like you agree with my recommendation to
> set LOT=false in protocol implementations in my
> >>         email :)
> >>         > >
> >>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <
> arielluaces@gmail•com
> >>         <mailto:arielluaces@gmail•com>> wrote:
> >>         > >
> >>         > > > Something what strikes me about the conversation is the
> emotion surrounding the letters UASF.
> >>         > > > It appears as if people discuss UASF as if it's a massive
> tidal wave of support that is inevitable, like
> >>         we saw during segwit activation. But the actual definition is
> "any activation that is not a MASF".
> >>         > > > A UASF can consist of a single node, ten nodes, a
> thousand, half of all nodes, all business' nodes, or
> >>         even all the non mining nodes. On another dimension it can have
> zero mining support, 51% support, 49% support,
> >>         or any support right up against a miner activation threshold.
> >>         > > > Hell a UASF doesn't even need code or even a single node
> running as long as it exists as a possibility
> >>         in people's minds.
> >>         > > > The only thing a UASF doesn't have is miner support above
> an agreed activation threshold (some number
> >>         above %51).
> >>         > > > I say this because it strikes me when people say that
> they are for LOT=true with the logic that since a
> >>         UASF is guaranteed to happen then it's better to just make it
> default from the beginning. Words like
> >>         coordination and safety are sometimes sprinkled into the
> argument.
> >>         > > > The argument comes from a naive assumption that users
> MUST upgrade to the choice that is submitted into
> >>         code. But in fact this isn't true and some voices in this
> discussion need to be more humble about what users
> >>         must or must not run.
> >>         > > > Does no one realize that it is a very possible outcome
> that if LOT=true is released there may be only a
> >>         handful of people that begin running it while everyone else
> delays their upgrade (with the very good reason of
> >>         not getting involved in politics) and a year later those
> handful of people just become stuck at the moment of
> >>         MUST_SIGNAL, unable to mine new blocks? Or attracting a
> minority of miners, activating, and forking off into a
> >>         minority fork. Then a lot=false could be started that ends up
> activating the feature now that the stubborn
> >>         option has ran its course.
> >>         > > > The result: a wasted year of waiting and a minority of
> people who didn't want to be lenient with miners
> >>         by default. The chains could be called BitcoinLenient and
> BitcoinStubborn.
> >>         > > > How is that strictly safer or more coordinated?
> >>         > > > I may be in the minority, or maybe a silent majority, or
> maybe a majority that just hasn't considered
> >>         this as a choice but honestly if there is contention about
> whether we're going to be stubborn or lenient with
> >>         miners for Taproot and in the future then I prefer to just not
> activate anything at all. I'm fine for calling
> >>         bitcoin ossified, accepting that segwit is Bitcoin's last
> network upgrade. Taproot is amazing but no new
> >>         feature is worth a network split down the middle.
> >>         > > > Maybe in 10 or 20 years, when other blockchains implement
> features like Taproot and many more, we will
> >>         become envious enough to put aside our differences on how to
> behave towards miners and finally activate Taproot.
> >>         > > > An activation mechanism is a consensus change like any
> other change, can be contentious like any other
> >>         change, and we must resolve it like any other change. Otherwise
> we risk arriving at the darkest timeline.
> >>         > > > Cheers
> >>         > > > Ariel Lorenzo-Luaces
> >>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via
> bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
> >>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
> >>         > > >
> >>         > > > > Yesterday (February 16th) we held a second meeting on
> Taproot
> >>         > > > > activation on IRC which again was open to all. Despite
> what appeared
> >>         > > > > to be majority support for LOT=false over LOT=true in
> the first
> >>         > > > > meeting I (and others) thought the arguments had not
> been explored in
> >>         > > > > depth and that we should have a follow up meeting
> almost entirely
> >>         > > > > focused on whether LOT (lockinontimeout) should be set
> to true or
> >>         > > > > false.
> >>         > > > >
> >>         > > > > The meeting was announced here:
> >>         > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> >
> >>         > > > >
> >>         > > > > In that mailing list post I outlined the arguments for
> LOT=true (T1 to
> >>         > > > > T6) and arguments for LOT=false (F1 to F6) in their
> strongest form I
> >>         > > > > could. David Harding responded with an additional
> argument for
> >>         > > > > LOT=false (F7) here:
> >>         > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >>         <
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> >
> >>         > > > >
> >>         > > > > These meetings are very challenging given they are open
> to all, you
> >>         > > > > don’t know who will attend and you don’t know most
> people’s views in
> >>         > > > > advance. I tried to give time for both the LOT=true
> arguments and the
> >>         > > > > LOT=false arguments to be discussed as I knew there was
> support for
> >>         > > > > both. We only tried evaluating which had more support
> and which had
> >>         > > > > more strong opposition towards the end of the meeting.
> >>         > > > >
> >>         > > > > The conversation log is here:
> >>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log <
> http://gnusha.org/taproot-activation/2021-02-16.log>
> >>         > > > >
> >>         > > > > (If you are so inclined you can watch a video of the
> meeting here.
> >>         > > > > Thanks to the YouTube account “Bitcoin” for setting up
> the livestream:
> >>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <
> https://www.youtube.com/watch?v=vpl5q1ovMLM>)
> >>         > > > >
> >>         > > > > A summary of the meeting was provided by Luke Dashjr on
> Mastodon here:
> >>         > > > >
> https://bitcoinhackers.org/@lukedashjr/105742918779234566
> >>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
> >>         > > > >
> >>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely
> unproductive, but we
> >>         > > > > did manage to come to consensus on everything but
> LockinOnTimeout.
> >>         > > > >
> >>         > > > > Activation height range: 693504-745920
> >>         > > > >
> >>         > > > > MASF threshold: 1815/2016 blocks (90%)
> >>         > > > >
> >>         > > > > Keep in mind only ~100 people showed for the meetings,
> hardly
> >>         > > > > representative of the entire community.
> >>         > > > >
> >>         > > > > So, these details remain JUST a proposal for now.
> >>         > > > >
> >>         > > > > It seems inevitable that there won't be consensus on
> LOT.
> >>         > > > >
> >>         > > > > Everyone will have to choose for himself. :/
> >>         > > > >
> >>         > > > > Personally I agree with most of this. I agree that
> there wasn’t
> >>         > > > > overwhelming consensus for either LOT=true or
> LOT=false. However, from
> >>         > > > > my perspective there was clearly more strong opposition
> (what would
> >>         > > > > usually be deemed a NACK in Bitcoin Core review
> terminology) from
> >>         > > > > Bitcoin Core contributors, Lightning developers and
> other community
> >>         > > > > members against LOT=true than there was for LOT=false.
> Andrew Chow
> >>         > > > > tried to summarize views from the meeting in this
> analysis:
> >>         > > > >
> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> >>         <
> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
> >>         > > > >
> >>         > > > > I am also aware of other current and previous Bitcoin
> Core
> >>         > > > > contributors and Lightning developers who didn’t attend
> the meeting in
> >>         > > > > person who are opposed to LOT=true. I don’t want to put
> them in the
> >>         > > > > spotlight for no reason but if you go through the
> conversation logs of
> >>         > > > > not only the meeting but the weeks of discussion prior
> to this meeting
> >>         > > > > you will see their views evaluated on the
> ##taproot-activation
> >>         > > > > channel. In addition, on taprootactivation.com <
> http://taprootactivation.com> some mining pools
> >>         > > > > expressed a preference for lot=false though I don’t
> know how strong
> >>         > > > > that preference was.
> >>         > > > >
> >>         > > > > I am only one voice but it is my current assessment
> that if we are to
> >>         > > > > attempt to finalize Taproot activation parameters and
> propose them to
> >>         > > > > the community at this time our only option is to
> propose LOT=false.
> >>         > > > > Any further delay appears to me counterproductive in
> our collective
> >>         > > > > aim to get the Taproot soft fork activated as early as
> possible.
> >>         > > > >
> >>         > > > > Obviously others are free to disagree with that
> assessment and
> >>         > > > > continue discussions but personally I will be
> attempting to avoid
> >>         > > > > those discussions unless prominent new information
> comes to light or
> >>         > > > > various specific individuals change their minds.
> >>         > > > >
> >>         > > > > Next week we are planning a code review of the Bitcoin
> Core PR #19573
> >>         > > > > which was initially delayed because of this LOT
> discussion. As I’ve
> >>         > > > > said previously that will be loosely following the
> format of the
> >>         > > > > Bitcoin Core PR review club and will be lower level and
> more
> >>         > > > > technical. That is planned for Tuesday February 23rd at
> 19:00 UTC on
> >>         > > > > the IRC channel ##taproot-activation.
> >>         > > > >
> >>         > > > > Thanks to the meeting participants (and those who
> joined the
> >>         > > > > discussion on the channel prior and post the meeting)
> for engaging
> >>         > > > > productively and in good faith.
> >>         > >
> >>         > > --
> >>         > > Michael Folkson
> >>         > > Email: michaelfolkson@gmail•com <mailto:
> michaelfolkson@gmail•com>
> >>         > > Keybase: michaelfolkson
> >>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >>         > > _______________________________________________
> >>         > > bitcoin-dev mailing list
> >>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:
> bitcoin-dev@lists•linuxfoundation.org>
> >>         > >
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >
> >>
> >>
> >>
> >>
> >>     --
> >>     Michael Folkson
> >>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> >>     Keybase: michaelfolkson
> >>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> >>     _______________________________________________
> >>     bitcoin-dev mailing list
> >>     bitcoin-dev@lists•linuxfoundation.org <mailto:
> bitcoin-dev@lists•linuxfoundation.org>
> >>     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> >>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> >
> >
> >
> > --
> > Michael Folkson
> > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> > Keybase: michaelfolkson
> > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>


-- 
Michael Folkson
Email: michaelfolkson@gmail•com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3

[-- Attachment #2: Type: text/html, Size: 31620 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:26             ` Michael Folkson
@ 2021-02-18 14:42               ` Matt Corallo
  2021-02-18 14:51                 ` Michael Folkson
  2021-02-18 15:04                 ` Keagan McClelland
  0 siblings, 2 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 14:42 UTC (permalink / raw)
  To: Michael Folkson; +Cc: Bitcoin Protocol Discussion

We've had several softforks in Bitcoin which, through the course of their activation, had a several-block reorg. That 
should be indication enough that we need to very carefully consider activation to ensure we reduce the risk of that as 
much as absolutely possible. Again, while I think Taproot is a huge improvement and am looking forward to being able to 
use it, getting unlucky and hitting a 4-block reorg that happens to include a double-spend and some PR around an 
exchange losing millions would be worse than having Taproot is good.

Matt

On 2/18/21 09:26, Michael Folkson wrote:
> Thanks for your response Matt. It is a fair challenge. There is always going to be an element of risk with soft forks, 
> all we can do is attempt to minimize that risk. I would argue that risk has been minimized for Taproot.
> 
> You know (better than I do in fact) that Bitcoin (and layers built on top of it) greatly benefit from upgrades such as 
> Taproot. To say we shouldn't do Taproot or any future soft forks because there is a small but real risk of chain splits 
> I think is shortsighted. Indeed I think even if we collectively decided not to do any future soft fork upgrades ever 
> again on this mailing list that wouldn't stop soft fork attempts from other people in future.
> 
> I don't think there is anything else we can do to minimize that risk for the Taproot soft fork at this point though I'm 
> open to ideas. To reiterate that risk will never be zero. I don't think I see Bitcoin as fragile as you seem to (though 
> admittedly you have a much better understanding than me of what happened in 2017).
> 
> The likely scenario for the Taproot soft fork is LOT turns out to be entirely irrelevant and miners activate Taproot 
> before it becomes relevant. And even the unlikely worst case scenario would only cause short term disruption and 
> wouldn't kill Bitcoin long term.
> 
> On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com <mailto:lf-lists@mattcorallo•com>> wrote:
> 
>     If the eventual outcome is that different implementations (that have material *transaction processing* userbases,
>     and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here and not
>     activate Taproot. Seriously.
> 
>     Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.
> 
>     Matt
> 
>>     On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>>     <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
>>
>>     
>>     Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have
>>     heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think users
>>     should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core.
>>
>>     My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol
>>     implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
>>
>>
>>
>>     On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com <mailto:ZmnSCPxj@protonmail•com>> wrote:
>>
>>         Good morning all,
>>
>>         > "An activation mechanism is a consensus change like any other change, can be contentious like any other
>>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>>         >
>>         > Who's we here?
>>         >
>>         > Release both and let the network decide.
>>
>>         A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that
>>         requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
>>
>>         This assures everyone that neither choice is being forced on users, and instead what is being forced on users,
>>         is for users to make that choice themselves.
>>
>>         Regards,
>>         ZmnSCPxj
>>
>>         >
>>         > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
>>         >
>>         > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the
>>         mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding
>>         to conversation on the IRC channel or on social media etc.
>>         > >
>>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into
>>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>>         must or must not run.
>>         > >
>>         > > I personally have never made this assumption. Of course users aren't forced to run any particular software
>>         version, quite the opposite. Defaults set in software versions matter though as many users won't change them.
>>         > >
>>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a
>>         handful of people that begin running it while everyone else delays their upgrade (with the very good reason of
>>         not getting involved in politics) and a year later those handful of people just become stuck at the moment of
>>         MUST_SIGNAL, unable to mine new blocks?
>>         > >
>>         > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even
>>         relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate
>>         and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a
>>         software release there is the possibility (T2 in
>>         https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>) of individuals or a
>>         proportion of the community changing LOT to true. In that sense setting LOT=false in a software release
>>         appears to be no more safe than LOT=true.
>>         > >
>>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners
>>         by default.
>>         > >
>>         > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail
>>         to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually think it
>>         offers them clarity on what will happen over a year time period and removes the need for coordinated or
>>         uncoordinated community UASF efforts on top of LOT=false.
>>         > >
>>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>         > >
>>         > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have
>>         occurred and are continuing and in my mailing list post that you responded to **I recommended we propose
>>         LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language
>>         isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or
>>         worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged
>>         support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize
>>         trust in any human actors. We can be grateful that people like Alejandro have worked hard on
>>         taprootactivation.com <http://taprootactivation.com> (and this effort has informed the discussion) without
>>         taking pledges of support as cast iron guarantees.
>>         > >
>>         > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my
>>         email :)
>>         > >
>>         > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com
>>         <mailto:arielluaces@gmail•com>> wrote:
>>         > >
>>         > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>>         > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is inevitable, like
>>         we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>>         > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or
>>         even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support,
>>         or any support right up against a miner activation threshold.
>>         > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility
>>         in people's minds.
>>         > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number
>>         above %51).
>>         > > > I say this because it strikes me when people say that they are for LOT=true with the logic that since a
>>         UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like
>>         coordination and safety are sometimes sprinkled into the argument.
>>         > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into
>>         code. But in fact this isn't true and some voices in this discussion need to be more humble about what users
>>         must or must not run.
>>         > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a
>>         handful of people that begin running it while everyone else delays their upgrade (with the very good reason of
>>         not getting involved in politics) and a year later those handful of people just become stuck at the moment of
>>         MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a
>>         minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn
>>         option has ran its course.
>>         > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners
>>         by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>>         > > > How is that strictly safer or more coordinated?
>>         > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered
>>         this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient with
>>         miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for calling
>>         bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
>>         feature is worth a network split down the middle.
>>         > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will
>>         become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.
>>         > > > An activation mechanism is a consensus change like any other change, can be contentious like any other
>>         change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>         > > > Cheers
>>         > > > Ariel Lorenzo-Luaces
>>         > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org
>>         <mailto:bitcoin-dev@lists•linuxfoundation.org>> wrote:
>>         > > >
>>         > > > > Yesterday (February 16th) we held a second meeting on Taproot
>>         > > > > activation on IRC which again was open to all. Despite what appeared
>>         > > > > to be majority support for LOT=false over LOT=true in the first
>>         > > > > meeting I (and others) thought the arguments had not been explored in
>>         > > > > depth and that we should have a follow up meeting almost entirely
>>         > > > > focused on whether LOT (lockinontimeout) should be set to true or
>>         > > > > false.
>>         > > > >
>>         > > > > The meeting was announced here:
>>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html>
>>         > > > >
>>         > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
>>         > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>>         > > > > could. David Harding responded with an additional argument for
>>         > > > > LOT=false (F7) here:
>>         > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>         <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html>
>>         > > > >
>>         > > > > These meetings are very challenging given they are open to all, you
>>         > > > > don’t know who will attend and you don’t know most people’s views in
>>         > > > > advance. I tried to give time for both the LOT=true arguments and the
>>         > > > > LOT=false arguments to be discussed as I knew there was support for
>>         > > > > both. We only tried evaluating which had more support and which had
>>         > > > > more strong opposition towards the end of the meeting.
>>         > > > >
>>         > > > > The conversation log is here:
>>         > > > > http://gnusha.org/taproot-activation/2021-02-16.log <http://gnusha.org/taproot-activation/2021-02-16.log>
>>         > > > >
>>         > > > > (If you are so inclined you can watch a video of the meeting here.
>>         > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>>         > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM <https://www.youtube.com/watch?v=vpl5q1ovMLM>)
>>         > > > >
>>         > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>>         > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>         <https://bitcoinhackers.org/@lukedashjr/105742918779234566>
>>         > > > >
>>         > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>>         > > > > did manage to come to consensus on everything but LockinOnTimeout.
>>         > > > >
>>         > > > > Activation height range: 693504-745920
>>         > > > >
>>         > > > > MASF threshold: 1815/2016 blocks (90%)
>>         > > > >
>>         > > > > Keep in mind only ~100 people showed for the meetings, hardly
>>         > > > > representative of the entire community.
>>         > > > >
>>         > > > > So, these details remain JUST a proposal for now.
>>         > > > >
>>         > > > > It seems inevitable that there won't be consensus on LOT.
>>         > > > >
>>         > > > > Everyone will have to choose for himself. :/
>>         > > > >
>>         > > > > Personally I agree with most of this. I agree that there wasn’t
>>         > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
>>         > > > > my perspective there was clearly more strong opposition (what would
>>         > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>>         > > > > Bitcoin Core contributors, Lightning developers and other community
>>         > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>>         > > > > tried to summarize views from the meeting in this analysis:
>>         > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>         <https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c>
>>         > > > >
>>         > > > > I am also aware of other current and previous Bitcoin Core
>>         > > > > contributors and Lightning developers who didn’t attend the meeting in
>>         > > > > person who are opposed to LOT=true. I don’t want to put them in the
>>         > > > > spotlight for no reason but if you go through the conversation logs of
>>         > > > > not only the meeting but the weeks of discussion prior to this meeting
>>         > > > > you will see their views evaluated on the ##taproot-activation
>>         > > > > channel. In addition, on taprootactivation.com <http://taprootactivation.com> some mining pools
>>         > > > > expressed a preference for lot=false though I don’t know how strong
>>         > > > > that preference was.
>>         > > > >
>>         > > > > I am only one voice but it is my current assessment that if we are to
>>         > > > > attempt to finalize Taproot activation parameters and propose them to
>>         > > > > the community at this time our only option is to propose LOT=false.
>>         > > > > Any further delay appears to me counterproductive in our collective
>>         > > > > aim to get the Taproot soft fork activated as early as possible.
>>         > > > >
>>         > > > > Obviously others are free to disagree with that assessment and
>>         > > > > continue discussions but personally I will be attempting to avoid
>>         > > > > those discussions unless prominent new information comes to light or
>>         > > > > various specific individuals change their minds.
>>         > > > >
>>         > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
>>         > > > > which was initially delayed because of this LOT discussion. As I’ve
>>         > > > > said previously that will be loosely following the format of the
>>         > > > > Bitcoin Core PR review club and will be lower level and more
>>         > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>>         > > > > the IRC channel ##taproot-activation.
>>         > > > >
>>         > > > > Thanks to the meeting participants (and those who joined the
>>         > > > > discussion on the channel prior and post the meeting) for engaging
>>         > > > > productively and in good faith.
>>         > >
>>         > > --
>>         > > Michael Folkson
>>         > > Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
>>         > > Keybase: michaelfolkson
>>         > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>         > > _______________________________________________
>>         > > bitcoin-dev mailing list
>>         > > bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>         > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>         <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>>
>>
>>
>>
>>     -- 
>>     Michael Folkson
>>     Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
>>     Keybase: michaelfolkson
>>     PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>     _______________________________________________
>>     bitcoin-dev mailing list
>>     bitcoin-dev@lists•linuxfoundation.org <mailto:bitcoin-dev@lists•linuxfoundation.org>
>>     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>     <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
> 
> 
> 
> -- 
> Michael Folkson
> Email: michaelfolkson@gmail•com <mailto:michaelfolkson@gmail•com>
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 14:01           ` Matt Corallo
@ 2021-02-18 14:26             ` Michael Folkson
  2021-02-18 14:42               ` Matt Corallo
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Folkson @ 2021-02-18 14:26 UTC (permalink / raw)
  To: Matt Corallo; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 17102 bytes --]

Thanks for your response Matt. It is a fair challenge. There is always
going to be an element of risk with soft forks, all we can do is attempt to
minimize that risk. I would argue that risk has been minimized for Taproot.

You know (better than I do in fact) that Bitcoin (and layers built on top
of it) greatly benefit from upgrades such as Taproot. To say we shouldn't
do Taproot or any future soft forks because there is a small but real risk
of chain splits I think is shortsighted. Indeed I think even if we
collectively decided not to do any future soft fork upgrades ever again on
this mailing list that wouldn't stop soft fork attempts from other people
in future.

I don't think there is anything else we can do to minimize that risk for
the Taproot soft fork at this point though I'm open to ideas. To reiterate
that risk will never be zero. I don't think I see Bitcoin as fragile as you
seem to (though admittedly you have a much better understanding than me of
what happened in 2017).

The likely scenario for the Taproot soft fork is LOT turns out to be
entirely irrelevant and miners activate Taproot before it becomes relevant.
And even the unlikely worst case scenario would only cause short term
disruption and wouldn't kill Bitcoin long term.

On Thu, Feb 18, 2021 at 2:01 PM Matt Corallo <lf-lists@mattcorallo•com>
wrote:

> If the eventual outcome is that different implementations (that have
> material *transaction processing* userbases, and I’m not sure to what
> extent that’s true with Knots) ship different consensus rules, we should
> stop here and not activate Taproot. Seriously.
>
> Bitcoin is a consensus system. The absolute worst outcome at all possible
> is to have it fall out of consensus.
>
> Matt
>
> On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> 
> Right, that is one option. Personally I would prefer a Bitcoin Core
> release sets LOT=false (based on what I have heard from Bitcoin Core
> contributors) and a community effort releases a version with LOT=true. I
> don't think users should be forced to choose something they may have no
> context on before they are allowed to use Bitcoin Core.
>
> My current understanding is that roasbeef is planning to set LOT=false on
> btcd (an alternative protocol implementation to Bitcoin Core) and Luke
> Dashjr hasn't yet decided on Bitcoin Knots.
>
>
>
> On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com> wrote:
>
>> Good morning all,
>>
>> > "An activation mechanism is a consensus change like any other change,
>> can be contentious like any other change, and we must resolve it like any
>> other change. Otherwise we risk arriving at the darkest timeline."
>> >
>> > Who's we here?
>> >
>> > Release both and let the network decide.
>>
>> A thing that could be done, without mandating either LOT=true or
>> LOT=false, would be to have a release that requires a `taprootlot=1` or
>> `taprootlot=0` and refuses to start if the parameter is not set.
>>
>> This assures everyone that neither choice is being forced on users, and
>> instead what is being forced on users, is for users to make that choice
>> themselves.
>>
>> Regards,
>> ZmnSCPxj
>>
>> >
>> > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <
>> bitcoin-dev@lists•linuxfoundation.org> wrote:
>> >
>> > > Thanks for your response Ariel. It would be useful if you responded
>> to specific points I have made in the mailing list post or at least quote
>> these ephemeral "people" you speak of. I don't know if you're responding to
>> conversation on the IRC channel or on social media etc.
>> > >
>> > > > The argument comes from a naive assumption that users MUST upgrade
>> to the choice that is submitted into code. But in fact this isn't true and
>> some voices in this discussion need to be more humble about what users must
>> or must not run.
>> > >
>> > > I personally have never made this assumption. Of course users aren't
>> forced to run any particular software version, quite the opposite. Defaults
>> set in software versions matter though as many users won't change them.
>> > >
>> > > > Does no one realize that it is a very possible outcome that if
>> LOT=true is released there may be only a handful of people that begin
>> running it while everyone else delays their upgrade (with the very good
>> reason of not getting involved in politics) and a year later those handful
>> of people just become stuck at the moment of MUST_SIGNAL, unable to mine
>> new blocks?
>> > >
>> > > It is a possible outcome but the likely outcome is that miners
>> activate Taproot before LOT is even relevant. I think it is prudent to
>> prepare for the unlikely but possible outcome that miners fail to activate
>> and hence have this discussion now rather than be unprepared for that
>> eventuality. If LOT is set to false in a software release there is the
>> possibility (T2 in
>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html)
>> of individuals or a proportion of the community changing LOT to true. In
>> that sense setting LOT=false in a software release appears to be no more
>> safe than LOT=true.
>> > >
>> > > > The result: a wasted year of waiting and a minority of people who
>> didn't want to be lenient with miners by default.
>> > >
>> > > There is the (unlikely but possible) possibility of a wasted year if
>> LOT is set to false and miners fail to activate. I'm not convinced by this
>> perception that LOT=true is antagonistic to miners. I actually think it
>> offers them clarity on what will happen over a year time period and removes
>> the need for coordinated or uncoordinated community UASF efforts on top of
>> LOT=false.
>> > >
>> > > > An activation mechanism is a consensus change like any other
>> change, can be contentious like any other change, and we must resolve it
>> like any other change. Otherwise we risk arriving at the darkest timeline.
>> > >
>> > > I don't know what you are recommending here to avoid "this darkest
>> timeline". Open discussions have occurred and are continuing and in my
>> mailing list post that you responded to **I recommended we propose
>> LOT=false be set in protocol implementations such as Bitcoin Core**. I do
>> think this apocalyptic language isn't particularly helpful. In an open
>> consensus system discussion is healthy, we should prepare for bad or worst
>> case scenarios in advance and doing so is not antagonistic or destructive.
>> Mining pools have pledged support for Taproot but we don't build secure
>> systems based on pledges of support, we build them to minimize trust in any
>> human actors. We can be grateful that people like Alejandro have worked
>> hard on taprootactivation.com (and this effort has informed the
>> discussion) without taking pledges of support as cast iron guarantees.
>> > >
>> > > TL;DR It sounds like you agree with my recommendation to set
>> LOT=false in protocol implementations in my email :)
>> > >
>> > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <
>> arielluaces@gmail•com> wrote:
>> > >
>> > > > Something what strikes me about the conversation is the emotion
>> surrounding the letters UASF.
>> > > > It appears as if people discuss UASF as if it's a massive tidal
>> wave of support that is inevitable, like we saw during segwit activation.
>> But the actual definition is "any activation that is not a MASF".
>> > > > A UASF can consist of a single node, ten nodes, a thousand, half of
>> all nodes, all business' nodes, or even all the non mining nodes. On
>> another dimension it can have zero mining support, 51% support, 49%
>> support, or any support right up against a miner activation threshold.
>> > > > Hell a UASF doesn't even need code or even a single node running as
>> long as it exists as a possibility in people's minds.
>> > > > The only thing a UASF doesn't have is miner support above an agreed
>> activation threshold (some number above %51).
>> > > > I say this because it strikes me when people say that they are for
>> LOT=true with the logic that since a UASF is guaranteed to happen then it's
>> better to just make it default from the beginning. Words like coordination
>> and safety are sometimes sprinkled into the argument.
>> > > > The argument comes from a naive assumption that users MUST upgrade
>> to the choice that is submitted into code. But in fact this isn't true and
>> some voices in this discussion need to be more humble about what users must
>> or must not run.
>> > > > Does no one realize that it is a very possible outcome that if
>> LOT=true is released there may be only a handful of people that begin
>> running it while everyone else delays their upgrade (with the very good
>> reason of not getting involved in politics) and a year later those handful
>> of people just become stuck at the moment of MUST_SIGNAL, unable to mine
>> new blocks? Or attracting a minority of miners, activating, and forking off
>> into a minority fork. Then a lot=false could be started that ends up
>> activating the feature now that the stubborn option has ran its course.
>> > > > The result: a wasted year of waiting and a minority of people who
>> didn't want to be lenient with miners by default. The chains could be
>> called BitcoinLenient and BitcoinStubborn.
>> > > > How is that strictly safer or more coordinated?
>> > > > I may be in the minority, or maybe a silent majority, or maybe a
>> majority that just hasn't considered this as a choice but honestly if there
>> is contention about whether we're going to be stubborn or lenient with
>> miners for Taproot and in the future then I prefer to just not activate
>> anything at all. I'm fine for calling bitcoin ossified, accepting that
>> segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
>> feature is worth a network split down the middle.
>> > > > Maybe in 10 or 20 years, when other blockchains implement features
>> like Taproot and many more, we will become envious enough to put aside our
>> differences on how to behave towards miners and finally activate Taproot.
>> > > > An activation mechanism is a consensus change like any other
>> change, can be contentious like any other change, and we must resolve it
>> like any other change. Otherwise we risk arriving at the darkest timeline.
>> > > > Cheers
>> > > > Ariel Lorenzo-Luaces
>> > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <
>> bitcoin-dev@lists•linuxfoundation.org> wrote:
>> > > >
>> > > > > Yesterday (February 16th) we held a second meeting on Taproot
>> > > > > activation on IRC which again was open to all. Despite what
>> appeared
>> > > > > to be majority support for LOT=false over LOT=true in the first
>> > > > > meeting I (and others) thought the arguments had not been
>> explored in
>> > > > > depth and that we should have a follow up meeting almost entirely
>> > > > > focused on whether LOT (lockinontimeout) should be set to true or
>> > > > > false.
>> > > > >
>> > > > > The meeting was announced here:
>> > > > >
>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>> > > > >
>> > > > > In that mailing list post I outlined the arguments for LOT=true
>> (T1 to
>> > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest
>> form I
>> > > > > could. David Harding responded with an additional argument for
>> > > > > LOT=false (F7) here:
>> > > > >
>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>> > > > >
>> > > > > These meetings are very challenging given they are open to all,
>> you
>> > > > > don’t know who will attend and you don’t know most people’s views
>> in
>> > > > > advance. I tried to give time for both the LOT=true arguments and
>> the
>> > > > > LOT=false arguments to be discussed as I knew there was support
>> for
>> > > > > both. We only tried evaluating which had more support and which
>> had
>> > > > > more strong opposition towards the end of the meeting.
>> > > > >
>> > > > > The conversation log is here:
>> > > > > http://gnusha.org/taproot-activation/2021-02-16.log
>> > > > >
>> > > > > (If you are so inclined you can watch a video of the meeting here.
>> > > > > Thanks to the YouTube account “Bitcoin” for setting up the
>> livestream:
>> > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM)
>> > > > >
>> > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon
>> here:
>> > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>> > > > >
>> > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive,
>> but we
>> > > > > did manage to come to consensus on everything but LockinOnTimeout.
>> > > > >
>> > > > > Activation height range: 693504-745920
>> > > > >
>> > > > > MASF threshold: 1815/2016 blocks (90%)
>> > > > >
>> > > > > Keep in mind only ~100 people showed for the meetings, hardly
>> > > > > representative of the entire community.
>> > > > >
>> > > > > So, these details remain JUST a proposal for now.
>> > > > >
>> > > > > It seems inevitable that there won't be consensus on LOT.
>> > > > >
>> > > > > Everyone will have to choose for himself. :/
>> > > > >
>> > > > > Personally I agree with most of this. I agree that there wasn’t
>> > > > > overwhelming consensus for either LOT=true or LOT=false. However,
>> from
>> > > > > my perspective there was clearly more strong opposition (what
>> would
>> > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>> > > > > Bitcoin Core contributors, Lightning developers and other
>> community
>> > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>> > > > > tried to summarize views from the meeting in this analysis:
>> > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>> > > > >
>> > > > > I am also aware of other current and previous Bitcoin Core
>> > > > > contributors and Lightning developers who didn’t attend the
>> meeting in
>> > > > > person who are opposed to LOT=true. I don’t want to put them in
>> the
>> > > > > spotlight for no reason but if you go through the conversation
>> logs of
>> > > > > not only the meeting but the weeks of discussion prior to this
>> meeting
>> > > > > you will see their views evaluated on the ##taproot-activation
>> > > > > channel. In addition, on taprootactivation.com some mining pools
>> > > > > expressed a preference for lot=false though I don’t know how
>> strong
>> > > > > that preference was.
>> > > > >
>> > > > > I am only one voice but it is my current assessment that if we
>> are to
>> > > > > attempt to finalize Taproot activation parameters and propose
>> them to
>> > > > > the community at this time our only option is to propose
>> LOT=false.
>> > > > > Any further delay appears to me counterproductive in our
>> collective
>> > > > > aim to get the Taproot soft fork activated as early as possible.
>> > > > >
>> > > > > Obviously others are free to disagree with that assessment and
>> > > > > continue discussions but personally I will be attempting to avoid
>> > > > > those discussions unless prominent new information comes to light
>> or
>> > > > > various specific individuals change their minds.
>> > > > >
>> > > > > Next week we are planning a code review of the Bitcoin Core PR
>> #19573
>> > > > > which was initially delayed because of this LOT discussion. As
>> I’ve
>> > > > > said previously that will be loosely following the format of the
>> > > > > Bitcoin Core PR review club and will be lower level and more
>> > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC
>> on
>> > > > > the IRC channel ##taproot-activation.
>> > > > >
>> > > > > Thanks to the meeting participants (and those who joined the
>> > > > > discussion on the channel prior and post the meeting) for engaging
>> > > > > productively and in good faith.
>> > >
>> > > --
>> > > Michael Folkson
>> > > Email: michaelfolkson@gmail•com
>> > > Keybase: michaelfolkson
>> > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>> > > _______________________________________________
>> > > bitcoin-dev mailing list
>> > > bitcoin-dev@lists•linuxfoundation.org
>> > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>
>>
>>
>
> --
> Michael Folkson
> Email: michaelfolkson@gmail•com
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>

-- 
Michael Folkson
Email: michaelfolkson@gmail•com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3

[-- Attachment #2: Type: text/html, Size: 22184 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 12:20         ` Michael Folkson
@ 2021-02-18 14:01           ` Matt Corallo
  2021-02-18 14:26             ` Michael Folkson
  0 siblings, 1 reply; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 14:01 UTC (permalink / raw)
  To: Michael Folkson, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 15100 bytes --]

If the eventual outcome is that different implementations (that have material *transaction processing* userbases, and I’m not sure to what extent that’s true with Knots) ship different consensus rules, we should stop here and not activate Taproot. Seriously.

Bitcoin is a consensus system. The absolute worst outcome at all possible is to have it fall out of consensus.

Matt

> On Feb 18, 2021, at 08:11, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
> 
> 
> Right, that is one option. Personally I would prefer a Bitcoin Core release sets LOT=false (based on what I have heard from Bitcoin Core contributors) and a community effort releases a version with LOT=true. I don't think users should be forced to choose something they may have no context on before they are allowed to use Bitcoin Core. 
> 
> My current understanding is that roasbeef is planning to set LOT=false on btcd (an alternative protocol implementation to Bitcoin Core) and Luke Dashjr hasn't yet decided on Bitcoin Knots.
> 
> 
> 
>> On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com> wrote:
>> Good morning all,
>> 
>> > "An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>> >
>> > Who's we here?
>> >
>> > Release both and let the network decide.
>> 
>> A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
>> 
>> This assures everyone that neither choice is being forced on users, and instead what is being forced on users, is for users to make that choice themselves.
>> 
>> Regards,
>> ZmnSCPxj
>> 
>> >
>> > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>> >
>> > > Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding to conversation on the IRC channel or on social media etc.
>> > >
>> > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
>> > >
>> > > I personally have never made this assumption. Of course users aren't forced to run any particular software version, quite the opposite. Defaults set in software versions matter though as many users won't change them.
>> > >
>> > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?
>> > >
>> > > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a software release there is the possibility (T2 in https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html) of individuals or a proportion of the community changing LOT to true. In that sense setting LOT=false in a software release appears to be no more safe than LOT=true.
>> > >
>> > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default.
>> > >
>> > > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually think it offers them clarity on what will happen over a year time period and removes the need for coordinated or uncoordinated community UASF efforts on top of LOT=false.
>> > >
>> > > > An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>> > >
>> > > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have occurred and are continuing and in my mailing list post that you responded to **I recommended we propose LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize trust in any human actors. We can be grateful that people like Alejandro have worked hard on taprootactivation.com (and this effort has informed the discussion) without taking pledges of support as cast iron guarantees.
>> > >
>> > > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my email :)
>> > >
>> > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com> wrote:
>> > >
>> > > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>> > > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is inevitable, like we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>> > > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support, or any support right up against a miner activation threshold.
>> > > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility in people's minds.
>> > > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number above %51).
>> > > > I say this because it strikes me when people say that they are for LOT=true with the logic that since a UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like coordination and safety are sometimes sprinkled into the argument.
>> > > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
>> > > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn option has ran its course.
>> > > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>> > > > How is that strictly safer or more coordinated?
>> > > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient with miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for calling bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new feature is worth a network split down the middle.
>> > > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.
>> > > > An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>> > > > Cheers
>> > > > Ariel Lorenzo-Luaces
>> > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>> > > >
>> > > > > Yesterday (February 16th) we held a second meeting on Taproot
>> > > > > activation on IRC which again was open to all. Despite what appeared
>> > > > > to be majority support for LOT=false over LOT=true in the first
>> > > > > meeting I (and others) thought the arguments had not been explored in
>> > > > > depth and that we should have a follow up meeting almost entirely
>> > > > > focused on whether LOT (lockinontimeout) should be set to true or
>> > > > > false.
>> > > > >
>> > > > > The meeting was announced here:
>> > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>> > > > >
>> > > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
>> > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>> > > > > could. David Harding responded with an additional argument for
>> > > > > LOT=false (F7) here:
>> > > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>> > > > >
>> > > > > These meetings are very challenging given they are open to all, you
>> > > > > don’t know who will attend and you don’t know most people’s views in
>> > > > > advance. I tried to give time for both the LOT=true arguments and the
>> > > > > LOT=false arguments to be discussed as I knew there was support for
>> > > > > both. We only tried evaluating which had more support and which had
>> > > > > more strong opposition towards the end of the meeting.
>> > > > >
>> > > > > The conversation log is here:
>> > > > > http://gnusha.org/taproot-activation/2021-02-16.log
>> > > > >
>> > > > > (If you are so inclined you can watch a video of the meeting here.
>> > > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>> > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM)
>> > > > >
>> > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>> > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
>> > > > >
>> > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>> > > > > did manage to come to consensus on everything but LockinOnTimeout.
>> > > > >
>> > > > > Activation height range: 693504-745920
>> > > > >
>> > > > > MASF threshold: 1815/2016 blocks (90%)
>> > > > >
>> > > > > Keep in mind only ~100 people showed for the meetings, hardly
>> > > > > representative of the entire community.
>> > > > >
>> > > > > So, these details remain JUST a proposal for now.
>> > > > >
>> > > > > It seems inevitable that there won't be consensus on LOT.
>> > > > >
>> > > > > Everyone will have to choose for himself. :/
>> > > > >
>> > > > > Personally I agree with most of this. I agree that there wasn’t
>> > > > > overwhelming consensus for either LOT=true or LOT=false. However, from
>> > > > > my perspective there was clearly more strong opposition (what would
>> > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
>> > > > > Bitcoin Core contributors, Lightning developers and other community
>> > > > > members against LOT=true than there was for LOT=false. Andrew Chow
>> > > > > tried to summarize views from the meeting in this analysis:
>> > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>> > > > >
>> > > > > I am also aware of other current and previous Bitcoin Core
>> > > > > contributors and Lightning developers who didn’t attend the meeting in
>> > > > > person who are opposed to LOT=true. I don’t want to put them in the
>> > > > > spotlight for no reason but if you go through the conversation logs of
>> > > > > not only the meeting but the weeks of discussion prior to this meeting
>> > > > > you will see their views evaluated on the ##taproot-activation
>> > > > > channel. In addition, on taprootactivation.com some mining pools
>> > > > > expressed a preference for lot=false though I don’t know how strong
>> > > > > that preference was.
>> > > > >
>> > > > > I am only one voice but it is my current assessment that if we are to
>> > > > > attempt to finalize Taproot activation parameters and propose them to
>> > > > > the community at this time our only option is to propose LOT=false.
>> > > > > Any further delay appears to me counterproductive in our collective
>> > > > > aim to get the Taproot soft fork activated as early as possible.
>> > > > >
>> > > > > Obviously others are free to disagree with that assessment and
>> > > > > continue discussions but personally I will be attempting to avoid
>> > > > > those discussions unless prominent new information comes to light or
>> > > > > various specific individuals change their minds.
>> > > > >
>> > > > > Next week we are planning a code review of the Bitcoin Core PR #19573
>> > > > > which was initially delayed because of this LOT discussion. As I’ve
>> > > > > said previously that will be loosely following the format of the
>> > > > > Bitcoin Core PR review club and will be lower level and more
>> > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>> > > > > the IRC channel ##taproot-activation.
>> > > > >
>> > > > > Thanks to the meeting participants (and those who joined the
>> > > > > discussion on the channel prior and post the meeting) for engaging
>> > > > > productively and in good faith.
>> > >
>> > > --
>> > > Michael Folkson
>> > > Email: michaelfolkson@gmail•com
>> > > Keybase: michaelfolkson
>> > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>> > > _______________________________________________
>> > > bitcoin-dev mailing list
>> > > bitcoin-dev@lists•linuxfoundation.org
>> > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>> 
>> 
> 
> 
> -- 
> Michael Folkson
> Email: michaelfolkson@gmail•com
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

[-- Attachment #2: Type: text/html, Size: 19459 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 11:52       ` ZmnSCPxj
  2021-02-18 12:20         ` Michael Folkson
@ 2021-02-18 13:59         ` Matt Corallo
  1 sibling, 0 replies; 42+ messages in thread
From: Matt Corallo @ 2021-02-18 13:59 UTC (permalink / raw)
  To: ZmnSCPxj, Bitcoin Protocol Discussion; +Cc: Michael Folkson

Bitcoin is a consensus system. Please let’s not jump to (or even consider) options that discourage consensus. We all laughed at (and later academics researched showed severe deficiencies in) Bitcoin XT’s “emergent consensus” nonsense, why should we start doing things along that line in Bitcoin?

(Resent from the correct email)

Matt

> On Feb 18, 2021, at 06:52, ZmnSCPxj via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
> 
> Good morning all,
> 
>> "An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>> 
>> Who's we here?
>> 
>> Release both and let the network decide.
> 
> A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.
> 
> This assures everyone that neither choice is being forced on users, and instead what is being forced on users, is for users to make that choice themselves.
> 
> Regards,
> ZmnSCPxj
> 
>> 
>>> On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>>> 
>>> Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding to conversation on the IRC channel or on social media etc.
>>> 
>>>> The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
>>> 
>>> I personally have never made this assumption. Of course users aren't forced to run any particular software version, quite the opposite. Defaults set in software versions matter though as many users won't change them.
>>> 
>>>> Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?
>>> 
>>> It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a software release there is the possibility (T2 in https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html) of individuals or a proportion of the community changing LOT to true. In that sense setting LOT=false in a software release appears to be no more safe than LOT=true.
>>> 
>>>> The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default.
>>> 
>>> There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually think it offers them clarity on what will happen over a year time period and removes the need for coordinated or uncoordinated community UASF efforts on top of LOT=false.
>>> 
>>>> An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>> 
>>> I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have occurred and are continuing and in my mailing list post that you responded to **I recommended we propose LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize trust in any human actors. We can be grateful that people like Alejandro have worked hard on taprootactivation.com (and this effort has informed the discussion) without taking pledges of support as cast iron guarantees.
>>> 
>>> TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my email :)
>>> 
>>>> On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com> wrote:
>>> 
>>>> Something what strikes me about the conversation is the emotion surrounding the letters UASF.
>>>> It appears as if people discuss UASF as if it's a massive tidal wave of support that is inevitable, like we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
>>>> A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support, or any support right up against a miner activation threshold.
>>>> Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility in people's minds.
>>>> The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number above %51).
>>>> I say this because it strikes me when people say that they are for LOT=true with the logic that since a UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like coordination and safety are sometimes sprinkled into the argument.
>>>> The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
>>>> Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn option has ran its course.
>>>> The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default. The chains could be called BitcoinLenient and BitcoinStubborn.
>>>> How is that strictly safer or more coordinated?
>>>> I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient with miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for calling bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new feature is worth a network split down the middle.
>>>> Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.
>>>> An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
>>>> Cheers
>>>> Ariel Lorenzo-Luaces
>>>> On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>>>> 
>>>>> Yesterday (February 16th) we held a second meeting on Taproot
>>>>> activation on IRC which again was open to all. Despite what appeared
>>>>> to be majority support for LOT=false over LOT=true in the first
>>>>> meeting I (and others) thought the arguments had not been explored in
>>>>> depth and that we should have a follow up meeting almost entirely
>>>>> focused on whether LOT (lockinontimeout) should be set to true or
>>>>> false.
>>>>> 
>>>>> The meeting was announced here:
>>>>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>>>> 
>>>>> In that mailing list post I outlined the arguments for LOT=true (T1 to
>>>>> T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>>>>> could. David Harding responded with an additional argument for
>>>>> LOT=false (F7) here:
>>>>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>>>> 
>>>>> These meetings are very challenging given they are open to all, you
>>>>> don’t know who will attend and you don’t know most people’s views in
>>>>> advance. I tried to give time for both the LOT=true arguments and the
>>>>> LOT=false arguments to be discussed as I knew there was support for
>>>>> both. We only tried evaluating which had more support and which had
>>>>> more strong opposition towards the end of the meeting.
>>>>> 
>>>>> The conversation log is here:
>>>>> http://gnusha.org/taproot-activation/2021-02-16.log
>>>>> 
>>>>> (If you are so inclined you can watch a video of the meeting here.
>>>>> Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>>>>> https://www.youtube.com/watch?v=vpl5q1ovMLM)
>>>>> 
>>>>> A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>>>>> https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>>>> 
>>>>> Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>>>>> did manage to come to consensus on everything but LockinOnTimeout.
>>>>> 
>>>>> Activation height range: 693504-745920
>>>>> 
>>>>> MASF threshold: 1815/2016 blocks (90%)
>>>>> 
>>>>> Keep in mind only ~100 people showed for the meetings, hardly
>>>>> representative of the entire community.
>>>>> 
>>>>> So, these details remain JUST a proposal for now.
>>>>> 
>>>>> It seems inevitable that there won't be consensus on LOT.
>>>>> 
>>>>> Everyone will have to choose for himself. :/
>>>>> 
>>>>> Personally I agree with most of this. I agree that there wasn’t
>>>>> overwhelming consensus for either LOT=true or LOT=false. However, from
>>>>> my perspective there was clearly more strong opposition (what would
>>>>> usually be deemed a NACK in Bitcoin Core review terminology) from
>>>>> Bitcoin Core contributors, Lightning developers and other community
>>>>> members against LOT=true than there was for LOT=false. Andrew Chow
>>>>> tried to summarize views from the meeting in this analysis:
>>>>> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>>>> 
>>>>> I am also aware of other current and previous Bitcoin Core
>>>>> contributors and Lightning developers who didn’t attend the meeting in
>>>>> person who are opposed to LOT=true. I don’t want to put them in the
>>>>> spotlight for no reason but if you go through the conversation logs of
>>>>> not only the meeting but the weeks of discussion prior to this meeting
>>>>> you will see their views evaluated on the ##taproot-activation
>>>>> channel. In addition, on taprootactivation.com some mining pools
>>>>> expressed a preference for lot=false though I don’t know how strong
>>>>> that preference was.
>>>>> 
>>>>> I am only one voice but it is my current assessment that if we are to
>>>>> attempt to finalize Taproot activation parameters and propose them to
>>>>> the community at this time our only option is to propose LOT=false.
>>>>> Any further delay appears to me counterproductive in our collective
>>>>> aim to get the Taproot soft fork activated as early as possible.
>>>>> 
>>>>> Obviously others are free to disagree with that assessment and
>>>>> continue discussions but personally I will be attempting to avoid
>>>>> those discussions unless prominent new information comes to light or
>>>>> various specific individuals change their minds.
>>>>> 
>>>>> Next week we are planning a code review of the Bitcoin Core PR #19573
>>>>> which was initially delayed because of this LOT discussion. As I’ve
>>>>> said previously that will be loosely following the format of the
>>>>> Bitcoin Core PR review club and will be lower level and more
>>>>> technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>>>>> the IRC channel ##taproot-activation.
>>>>> 
>>>>> Thanks to the meeting participants (and those who joined the
>>>>> discussion on the channel prior and post the meeting) for engaging
>>>>> productively and in good faith.
>>> 
>>> --
>>> Michael Folkson
>>> Email: michaelfolkson@gmail•com
>>> Keybase: michaelfolkson
>>> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>> _______________________________________________
>>> bitcoin-dev mailing list
>>> bitcoin-dev@lists•linuxfoundation.org
>>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> 
> 
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 11:52       ` ZmnSCPxj
@ 2021-02-18 12:20         ` Michael Folkson
  2021-02-18 14:01           ` Matt Corallo
  2021-02-18 13:59         ` Matt Corallo
  1 sibling, 1 reply; 42+ messages in thread
From: Michael Folkson @ 2021-02-18 12:20 UTC (permalink / raw)
  To: ZmnSCPxj; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 14534 bytes --]

Right, that is one option. Personally I would prefer a Bitcoin Core release
sets LOT=false (based on what I have heard from Bitcoin Core contributors)
and a community effort releases a version with LOT=true. I don't think
users should be forced to choose something they may have no context on
before they are allowed to use Bitcoin Core.

My current understanding is that roasbeef is planning to set LOT=false on
btcd (an alternative protocol implementation to Bitcoin Core) and Luke
Dashjr hasn't yet decided on Bitcoin Knots.



On Thu, Feb 18, 2021 at 11:52 AM ZmnSCPxj <ZmnSCPxj@protonmail•com> wrote:

> Good morning all,
>
> > "An activation mechanism is a consensus change like any other change,
> can be contentious like any other change, and we must resolve it like any
> other change. Otherwise we risk arriving at the darkest timeline."
> >
> > Who's we here?
> >
> > Release both and let the network decide.
>
> A thing that could be done, without mandating either LOT=true or
> LOT=false, would be to have a release that requires a `taprootlot=1` or
> `taprootlot=0` and refuses to start if the parameter is not set.
>
> This assures everyone that neither choice is being forced on users, and
> instead what is being forced on users, is for users to make that choice
> themselves.
>
> Regards,
> ZmnSCPxj
>
> >
> > On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
> >
> > > Thanks for your response Ariel. It would be useful if you responded to
> specific points I have made in the mailing list post or at least quote
> these ephemeral "people" you speak of. I don't know if you're responding to
> conversation on the IRC channel or on social media etc.
> > >
> > > > The argument comes from a naive assumption that users MUST upgrade
> to the choice that is submitted into code. But in fact this isn't true and
> some voices in this discussion need to be more humble about what users must
> or must not run.
> > >
> > > I personally have never made this assumption. Of course users aren't
> forced to run any particular software version, quite the opposite. Defaults
> set in software versions matter though as many users won't change them.
> > >
> > > > Does no one realize that it is a very possible outcome that if
> LOT=true is released there may be only a handful of people that begin
> running it while everyone else delays their upgrade (with the very good
> reason of not getting involved in politics) and a year later those handful
> of people just become stuck at the moment of MUST_SIGNAL, unable to mine
> new blocks?
> > >
> > > It is a possible outcome but the likely outcome is that miners
> activate Taproot before LOT is even relevant. I think it is prudent to
> prepare for the unlikely but possible outcome that miners fail to activate
> and hence have this discussion now rather than be unprepared for that
> eventuality. If LOT is set to false in a software release there is the
> possibility (T2 in
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html)
> of individuals or a proportion of the community changing LOT to true. In
> that sense setting LOT=false in a software release appears to be no more
> safe than LOT=true.
> > >
> > > > The result: a wasted year of waiting and a minority of people who
> didn't want to be lenient with miners by default.
> > >
> > > There is the (unlikely but possible) possibility of a wasted year if
> LOT is set to false and miners fail to activate. I'm not convinced by this
> perception that LOT=true is antagonistic to miners. I actually think it
> offers them clarity on what will happen over a year time period and removes
> the need for coordinated or uncoordinated community UASF efforts on top of
> LOT=false.
> > >
> > > > An activation mechanism is a consensus change like any other change,
> can be contentious like any other change, and we must resolve it like any
> other change. Otherwise we risk arriving at the darkest timeline.
> > >
> > > I don't know what you are recommending here to avoid "this darkest
> timeline". Open discussions have occurred and are continuing and in my
> mailing list post that you responded to **I recommended we propose
> LOT=false be set in protocol implementations such as Bitcoin Core**. I do
> think this apocalyptic language isn't particularly helpful. In an open
> consensus system discussion is healthy, we should prepare for bad or worst
> case scenarios in advance and doing so is not antagonistic or destructive.
> Mining pools have pledged support for Taproot but we don't build secure
> systems based on pledges of support, we build them to minimize trust in any
> human actors. We can be grateful that people like Alejandro have worked
> hard on taprootactivation.com (and this effort has informed the
> discussion) without taking pledges of support as cast iron guarantees.
> > >
> > > TL;DR It sounds like you agree with my recommendation to set LOT=false
> in protocol implementations in my email :)
> > >
> > > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <
> arielluaces@gmail•com> wrote:
> > >
> > > > Something what strikes me about the conversation is the emotion
> surrounding the letters UASF.
> > > > It appears as if people discuss UASF as if it's a massive tidal wave
> of support that is inevitable, like we saw during segwit activation. But
> the actual definition is "any activation that is not a MASF".
> > > > A UASF can consist of a single node, ten nodes, a thousand, half of
> all nodes, all business' nodes, or even all the non mining nodes. On
> another dimension it can have zero mining support, 51% support, 49%
> support, or any support right up against a miner activation threshold.
> > > > Hell a UASF doesn't even need code or even a single node running as
> long as it exists as a possibility in people's minds.
> > > > The only thing a UASF doesn't have is miner support above an agreed
> activation threshold (some number above %51).
> > > > I say this because it strikes me when people say that they are for
> LOT=true with the logic that since a UASF is guaranteed to happen then it's
> better to just make it default from the beginning. Words like coordination
> and safety are sometimes sprinkled into the argument.
> > > > The argument comes from a naive assumption that users MUST upgrade
> to the choice that is submitted into code. But in fact this isn't true and
> some voices in this discussion need to be more humble about what users must
> or must not run.
> > > > Does no one realize that it is a very possible outcome that if
> LOT=true is released there may be only a handful of people that begin
> running it while everyone else delays their upgrade (with the very good
> reason of not getting involved in politics) and a year later those handful
> of people just become stuck at the moment of MUST_SIGNAL, unable to mine
> new blocks? Or attracting a minority of miners, activating, and forking off
> into a minority fork. Then a lot=false could be started that ends up
> activating the feature now that the stubborn option has ran its course.
> > > > The result: a wasted year of waiting and a minority of people who
> didn't want to be lenient with miners by default. The chains could be
> called BitcoinLenient and BitcoinStubborn.
> > > > How is that strictly safer or more coordinated?
> > > > I may be in the minority, or maybe a silent majority, or maybe a
> majority that just hasn't considered this as a choice but honestly if there
> is contention about whether we're going to be stubborn or lenient with
> miners for Taproot and in the future then I prefer to just not activate
> anything at all. I'm fine for calling bitcoin ossified, accepting that
> segwit is Bitcoin's last network upgrade. Taproot is amazing but no new
> feature is worth a network split down the middle.
> > > > Maybe in 10 or 20 years, when other blockchains implement features
> like Taproot and many more, we will become envious enough to put aside our
> differences on how to behave towards miners and finally activate Taproot.
> > > > An activation mechanism is a consensus change like any other change,
> can be contentious like any other change, and we must resolve it like any
> other change. Otherwise we risk arriving at the darkest timeline.
> > > > Cheers
> > > > Ariel Lorenzo-Luaces
> > > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
> > > >
> > > > > Yesterday (February 16th) we held a second meeting on Taproot
> > > > > activation on IRC which again was open to all. Despite what
> appeared
> > > > > to be majority support for LOT=false over LOT=true in the first
> > > > > meeting I (and others) thought the arguments had not been explored
> in
> > > > > depth and that we should have a follow up meeting almost entirely
> > > > > focused on whether LOT (lockinontimeout) should be set to true or
> > > > > false.
> > > > >
> > > > > The meeting was announced here:
> > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > > > >
> > > > > In that mailing list post I outlined the arguments for LOT=true
> (T1 to
> > > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form
> I
> > > > > could. David Harding responded with an additional argument for
> > > > > LOT=false (F7) here:
> > > > >
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> > > > >
> > > > > These meetings are very challenging given they are open to all, you
> > > > > don’t know who will attend and you don’t know most people’s views
> in
> > > > > advance. I tried to give time for both the LOT=true arguments and
> the
> > > > > LOT=false arguments to be discussed as I knew there was support for
> > > > > both. We only tried evaluating which had more support and which had
> > > > > more strong opposition towards the end of the meeting.
> > > > >
> > > > > The conversation log is here:
> > > > > http://gnusha.org/taproot-activation/2021-02-16.log
> > > > >
> > > > > (If you are so inclined you can watch a video of the meeting here.
> > > > > Thanks to the YouTube account “Bitcoin” for setting up the
> livestream:
> > > > > https://www.youtube.com/watch?v=vpl5q1ovMLM)
> > > > >
> > > > > A summary of the meeting was provided by Luke Dashjr on Mastodon
> here:
> > > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
> > > > >
> > > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive,
> but we
> > > > > did manage to come to consensus on everything but LockinOnTimeout.
> > > > >
> > > > > Activation height range: 693504-745920
> > > > >
> > > > > MASF threshold: 1815/2016 blocks (90%)
> > > > >
> > > > > Keep in mind only ~100 people showed for the meetings, hardly
> > > > > representative of the entire community.
> > > > >
> > > > > So, these details remain JUST a proposal for now.
> > > > >
> > > > > It seems inevitable that there won't be consensus on LOT.
> > > > >
> > > > > Everyone will have to choose for himself. :/
> > > > >
> > > > > Personally I agree with most of this. I agree that there wasn’t
> > > > > overwhelming consensus for either LOT=true or LOT=false. However,
> from
> > > > > my perspective there was clearly more strong opposition (what would
> > > > > usually be deemed a NACK in Bitcoin Core review terminology) from
> > > > > Bitcoin Core contributors, Lightning developers and other community
> > > > > members against LOT=true than there was for LOT=false. Andrew Chow
> > > > > tried to summarize views from the meeting in this analysis:
> > > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> > > > >
> > > > > I am also aware of other current and previous Bitcoin Core
> > > > > contributors and Lightning developers who didn’t attend the
> meeting in
> > > > > person who are opposed to LOT=true. I don’t want to put them in the
> > > > > spotlight for no reason but if you go through the conversation
> logs of
> > > > > not only the meeting but the weeks of discussion prior to this
> meeting
> > > > > you will see their views evaluated on the ##taproot-activation
> > > > > channel. In addition, on taprootactivation.com some mining pools
> > > > > expressed a preference for lot=false though I don’t know how strong
> > > > > that preference was.
> > > > >
> > > > > I am only one voice but it is my current assessment that if we are
> to
> > > > > attempt to finalize Taproot activation parameters and propose them
> to
> > > > > the community at this time our only option is to propose LOT=false.
> > > > > Any further delay appears to me counterproductive in our collective
> > > > > aim to get the Taproot soft fork activated as early as possible.
> > > > >
> > > > > Obviously others are free to disagree with that assessment and
> > > > > continue discussions but personally I will be attempting to avoid
> > > > > those discussions unless prominent new information comes to light
> or
> > > > > various specific individuals change their minds.
> > > > >
> > > > > Next week we are planning a code review of the Bitcoin Core PR
> #19573
> > > > > which was initially delayed because of this LOT discussion. As I’ve
> > > > > said previously that will be loosely following the format of the
> > > > > Bitcoin Core PR review club and will be lower level and more
> > > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC
> on
> > > > > the IRC channel ##taproot-activation.
> > > > >
> > > > > Thanks to the meeting participants (and those who joined the
> > > > > discussion on the channel prior and post the meeting) for engaging
> > > > > productively and in good faith.
> > >
> > > --
> > > Michael Folkson
> > > Email: michaelfolkson@gmail•com
> > > Keybase: michaelfolkson
> > > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> > > _______________________________________________
> > > bitcoin-dev mailing list
> > > bitcoin-dev@lists•linuxfoundation.org
> > > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>
>

-- 
Michael Folkson
Email: michaelfolkson@gmail•com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3

[-- Attachment #2: Type: text/html, Size: 18501 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 11:11     ` Samson Mow
@ 2021-02-18 11:52       ` ZmnSCPxj
  2021-02-18 12:20         ` Michael Folkson
  2021-02-18 13:59         ` Matt Corallo
  0 siblings, 2 replies; 42+ messages in thread
From: ZmnSCPxj @ 2021-02-18 11:52 UTC (permalink / raw)
  To: Samson Mow, Bitcoin Protocol Discussion; +Cc: Michael Folkson

Good morning all,

> "An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline."
>
> Who's we here?
>
> Release both and let the network decide.

A thing that could be done, without mandating either LOT=true or LOT=false, would be to have a release that requires a `taprootlot=1` or `taprootlot=0` and refuses to start if the parameter is not set.

This assures everyone that neither choice is being forced on users, and instead what is being forced on users, is for users to make that choice themselves.

Regards,
ZmnSCPxj

>
> On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>
> > Thanks for your response Ariel. It would be useful if you responded to specific points I have made in the mailing list post or at least quote these ephemeral "people" you speak of. I don't know if you're responding to conversation on the IRC channel or on social media etc.
> >
> > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
> >
> > I personally have never made this assumption. Of course users aren't forced to run any particular software version, quite the opposite. Defaults set in software versions matter though as many users won't change them.
> >
> > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?
> >
> > It is a possible outcome but the likely outcome is that miners activate Taproot before LOT is even relevant. I think it is prudent to prepare for the unlikely but possible outcome that miners fail to activate and hence have this discussion now rather than be unprepared for that eventuality. If LOT is set to false in a software release there is the possibility (T2 in https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html) of individuals or a proportion of the community changing LOT to true. In that sense setting LOT=false in a software release appears to be no more safe than LOT=true.
> >
> > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default.
> >
> > There is the (unlikely but possible) possibility of a wasted year if LOT is set to false and miners fail to activate. I'm not convinced by this perception that LOT=true is antagonistic to miners. I actually think it offers them clarity on what will happen over a year time period and removes the need for coordinated or uncoordinated community UASF efforts on top of LOT=false.
> >
> > > An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> >
> > I don't know what you are recommending here to avoid "this darkest timeline". Open discussions have occurred and are continuing and in my mailing list post that you responded to **I recommended we propose LOT=false be set in protocol implementations such as Bitcoin Core**. I do think this apocalyptic language isn't particularly helpful. In an open consensus system discussion is healthy, we should prepare for bad or worst case scenarios in advance and doing so is not antagonistic or destructive. Mining pools have pledged support for Taproot but we don't build secure systems based on pledges of support, we build them to minimize trust in any human actors. We can be grateful that people like Alejandro have worked hard on taprootactivation.com (and this effort has informed the discussion) without taking pledges of support as cast iron guarantees.
> >
> > TL;DR It sounds like you agree with my recommendation to set LOT=false in protocol implementations in my email :)
> >
> > On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com> wrote:
> >
> > > Something what strikes me about the conversation is the emotion surrounding the letters UASF.
> > > It appears as if people discuss UASF as if it's a massive tidal wave of support that is inevitable, like we saw during segwit activation. But the actual definition is "any activation that is not a MASF".
> > > A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support, or any support right up against a miner activation threshold.
> > > Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility in people's minds.
> > > The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number above %51).
> > > I say this because it strikes me when people say that they are for LOT=true with the logic that since a UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like coordination and safety are sometimes sprinkled into the argument.
> > > The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.
> > > Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn option has ran its course.
> > > The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default. The chains could be called BitcoinLenient and BitcoinStubborn.
> > > How is that strictly safer or more coordinated?
> > > I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient with miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for calling bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new feature is worth a network split down the middle.
> > > Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.
> > > An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.
> > > Cheers
> > > Ariel Lorenzo-Luaces
> > > On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
> > >
> > > > Yesterday (February 16th) we held a second meeting on Taproot
> > > > activation on IRC which again was open to all. Despite what appeared
> > > > to be majority support for LOT=false over LOT=true in the first
> > > > meeting I (and others) thought the arguments had not been explored in
> > > > depth and that we should have a follow up meeting almost entirely
> > > > focused on whether LOT (lockinontimeout) should be set to true or
> > > > false.
> > > >
> > > > The meeting was announced here:
> > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
> > > >
> > > > In that mailing list post I outlined the arguments for LOT=true (T1 to
> > > > T6) and arguments for LOT=false (F1 to F6) in their strongest form I
> > > > could. David Harding responded with an additional argument for
> > > > LOT=false (F7) here:
> > > > https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
> > > >
> > > > These meetings are very challenging given they are open to all, you
> > > > don’t know who will attend and you don’t know most people’s views in
> > > > advance. I tried to give time for both the LOT=true arguments and the
> > > > LOT=false arguments to be discussed as I knew there was support for
> > > > both. We only tried evaluating which had more support and which had
> > > > more strong opposition towards the end of the meeting.
> > > >
> > > > The conversation log is here:
> > > > http://gnusha.org/taproot-activation/2021-02-16.log
> > > >
> > > > (If you are so inclined you can watch a video of the meeting here.
> > > > Thanks to the YouTube account “Bitcoin” for setting up the livestream:
> > > > https://www.youtube.com/watch?v=vpl5q1ovMLM)
> > > >
> > > > A summary of the meeting was provided by Luke Dashjr on Mastodon here:
> > > > https://bitcoinhackers.org/@lukedashjr/105742918779234566
> > > >
> > > > Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
> > > > did manage to come to consensus on everything but LockinOnTimeout.
> > > >
> > > > Activation height range: 693504-745920
> > > >
> > > > MASF threshold: 1815/2016 blocks (90%)
> > > >
> > > > Keep in mind only ~100 people showed for the meetings, hardly
> > > > representative of the entire community.
> > > >
> > > > So, these details remain JUST a proposal for now.
> > > >
> > > > It seems inevitable that there won't be consensus on LOT.
> > > >
> > > > Everyone will have to choose for himself. :/
> > > >
> > > > Personally I agree with most of this. I agree that there wasn’t
> > > > overwhelming consensus for either LOT=true or LOT=false. However, from
> > > > my perspective there was clearly more strong opposition (what would
> > > > usually be deemed a NACK in Bitcoin Core review terminology) from
> > > > Bitcoin Core contributors, Lightning developers and other community
> > > > members against LOT=true than there was for LOT=false. Andrew Chow
> > > > tried to summarize views from the meeting in this analysis:
> > > > https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
> > > >
> > > > I am also aware of other current and previous Bitcoin Core
> > > > contributors and Lightning developers who didn’t attend the meeting in
> > > > person who are opposed to LOT=true. I don’t want to put them in the
> > > > spotlight for no reason but if you go through the conversation logs of
> > > > not only the meeting but the weeks of discussion prior to this meeting
> > > > you will see their views evaluated on the ##taproot-activation
> > > > channel. In addition, on taprootactivation.com some mining pools
> > > > expressed a preference for lot=false though I don’t know how strong
> > > > that preference was.
> > > >
> > > > I am only one voice but it is my current assessment that if we are to
> > > > attempt to finalize Taproot activation parameters and propose them to
> > > > the community at this time our only option is to propose LOT=false.
> > > > Any further delay appears to me counterproductive in our collective
> > > > aim to get the Taproot soft fork activated as early as possible.
> > > >
> > > > Obviously others are free to disagree with that assessment and
> > > > continue discussions but personally I will be attempting to avoid
> > > > those discussions unless prominent new information comes to light or
> > > > various specific individuals change their minds.
> > > >
> > > > Next week we are planning a code review of the Bitcoin Core PR #19573
> > > > which was initially delayed because of this LOT discussion. As I’ve
> > > > said previously that will be loosely following the format of the
> > > > Bitcoin Core PR review club and will be lower level and more
> > > > technical. That is planned for Tuesday February 23rd at 19:00 UTC on
> > > > the IRC channel ##taproot-activation.
> > > >
> > > > Thanks to the meeting participants (and those who joined the
> > > > discussion on the channel prior and post the meeting) for engaging
> > > > productively and in good faith.
> >
> > --
> > Michael Folkson
> > Email: michaelfolkson@gmail•com
> > Keybase: michaelfolkson
> > PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> > _______________________________________________
> > bitcoin-dev mailing list
> > bitcoin-dev@lists•linuxfoundation.org
> > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev




^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18 11:01   ` Michael Folkson
@ 2021-02-18 11:11     ` Samson Mow
  2021-02-18 11:52       ` ZmnSCPxj
  0 siblings, 1 reply; 42+ messages in thread
From: Samson Mow @ 2021-02-18 11:11 UTC (permalink / raw)
  To: Michael Folkson, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 12581 bytes --]

 "An activation mechanism is a consensus change like any other change, can
be contentious like any other change, and we must resolve it like any other
change. Otherwise we risk arriving at the darkest timeline."

Who's we here?

Release both and let the network decide.


On Thu, Feb 18, 2021 at 3:08 AM Michael Folkson via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> Thanks for your response Ariel. It would be useful if you responded to
> specific points I have made in the mailing list post or at least quote
> these ephemeral "people" you speak of. I don't know if you're responding to
> conversation on the IRC channel or on social media etc.
>
> > The argument comes from a naive assumption that users MUST upgrade to
> the choice that is submitted into code. But in fact this isn't true and
> some voices in this discussion need to be more humble about what users must
> or must not run.
>
> I personally have never made this assumption. Of course users aren't
> forced to run any particular software version, quite the opposite. Defaults
> set in software versions matter though as many users won't change them.
>
> > Does no one realize that it is a very possible outcome that if LOT=true
> is released there may be only a handful of people that begin running it
> while everyone else delays their upgrade (with the very good reason of not
> getting involved in politics) and a year later those handful of people just
> become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?
>
> It is a possible outcome but the likely outcome is that miners activate
> Taproot before LOT is even relevant. I think it is prudent to prepare for
> the unlikely but possible outcome that miners fail to activate and hence
> have this discussion now rather than be unprepared for that eventuality. If
> LOT is set to false in a software release there is the possibility (T2 in
> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html)
> of individuals or a proportion of the community changing LOT to true. In
> that sense setting LOT=false in a software release appears to be no more
> safe than LOT=true.
>
> > The result: a wasted year of waiting and a minority of people who didn't
> want to be lenient with miners by default.
>
> There is the (unlikely but possible) possibility of a wasted year if LOT
> is set to false and miners fail to activate. I'm not convinced by this
> perception that LOT=true is antagonistic to miners. I actually think it
> offers them clarity on what will happen over a year time period and removes
> the need for coordinated or uncoordinated community UASF efforts on top of
> LOT=false.
>
> > An activation mechanism is a consensus change like any other change, can
> be contentious like any other change, and we must resolve it like any other
> change. Otherwise we risk arriving at the darkest timeline.
>
> I don't know what you are recommending here to avoid "this darkest
> timeline". Open discussions have occurred and are continuing and in my
> mailing list post that you responded to **I recommended we propose
> LOT=false be set in protocol implementations such as Bitcoin Core**. I do
> think this apocalyptic language isn't particularly helpful. In an open
> consensus system discussion is healthy, we should prepare for bad or worst
> case scenarios in advance and doing so is not antagonistic or destructive.
> Mining pools have pledged support for Taproot but we don't build secure
> systems based on pledges of support, we build them to minimize trust in any
> human actors. We can be grateful that people like Alejandro have worked
> hard on taprootactivation.com (and this effort has informed the
> discussion) without taking pledges of support as cast iron guarantees.
>
> TL;DR It sounds like you agree with my recommendation to set LOT=false in
> protocol implementations in my email :)
>
>
>
>
> On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <
> arielluaces@gmail•com> wrote:
>
>> Something what strikes me about the conversation is the emotion
>> surrounding the letters UASF.
>>
>> It appears as if people discuss UASF as if it's a massive tidal wave of
>> support that is inevitable, like we saw during segwit activation. But the
>> actual definition is "any activation that is not a MASF".
>>
>> A UASF can consist of a single node, ten nodes, a thousand, half of all
>> nodes, all business' nodes, or even all the non mining nodes. On another
>> dimension it can have zero mining support, 51% support, 49% support, or any
>> support right up against a miner activation threshold.
>>
>> Hell a UASF doesn't even need code or even a single node running as long
>> as it exists as a possibility in people's minds.
>>
>> The only thing a UASF doesn't have is miner support above an agreed
>> activation threshold (some number above %51).
>>
>> I say this because it strikes me when people say that they are for
>> LOT=true with the logic that since a UASF is guaranteed to happen then it's
>> better to just make it default from the beginning. Words like coordination
>> and safety are sometimes sprinkled into the argument.
>>
>> The argument comes from a naive assumption that users MUST upgrade to the
>> choice that is submitted into code. But in fact this isn't true and some
>> voices in this discussion need to be more humble about what users must or
>> must not run.
>>
>> Does no one realize that it is a very possible outcome that if LOT=true
>> is released there may be only a handful of people that begin running it
>> while everyone else delays their upgrade (with the very good reason of not
>> getting involved in politics) and a year later those handful of people just
>> become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or
>> attracting a minority of miners, activating, and forking off into a
>> minority fork. Then a lot=false could be started that ends up activating
>> the feature now that the stubborn option has ran its course.
>> The result: a wasted year of waiting and a minority of people who didn't
>> want to be lenient with miners by default. The chains could be called
>> BitcoinLenient and BitcoinStubborn.
>> How is that strictly safer or more coordinated?
>>
>> I may be in the minority, or maybe a silent majority, or maybe a majority
>> that just hasn't considered this as a choice but honestly if there is
>> contention about whether we're going to be stubborn or lenient with miners
>> for Taproot and in the future then I prefer to just not activate anything
>> at all. I'm fine for calling bitcoin ossified, accepting that segwit is
>> Bitcoin's last network upgrade. Taproot is amazing but no new feature is
>> worth a network split down the middle.
>>
>> Maybe in 10 or 20 years, when other blockchains implement features like
>> Taproot and many more, we will become envious enough to put aside our
>> differences on how to behave towards miners and finally activate Taproot.
>>
>> An activation mechanism is a consensus change like any other change, can
>> be contentious like any other change, and we must resolve it like any other
>> change. Otherwise we risk arriving at the darkest timeline.
>>
>> Cheers
>> Ariel Lorenzo-Luaces
>> On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <
>> bitcoin-dev@lists•linuxfoundation.org> wrote:
>>>
>>> Yesterday (February 16th) we held a second meeting on Taproot
>>> activation on IRC which again was open to all. Despite what appeared
>>> to be majority support for LOT=false over LOT=true in the first
>>> meeting I (and others) thought the arguments had not been explored in
>>> depth and that we should have a follow up meeting almost entirely
>>> focused on whether LOT (lockinontimeout) should be set to true or
>>> false.
>>>
>>> The meeting was announced here:
>>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>>
>>> In that mailing list post I outlined the arguments for LOT=true (T1 to
>>> T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>>> could. David Harding responded with an additional argument for
>>> LOT=false (F7) here:
>>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>>
>>> These meetings are very challenging given they are open to all, you
>>> don’t know who will attend and you don’t know most people’s views in
>>> advance. I tried to give time for both the LOT=true arguments and the
>>> LOT=false arguments to be discussed as I knew there was support for
>>> both. We only tried evaluating which had more support and which had
>>> more strong opposition towards the end of the meeting.
>>>
>>> The conversation log is here:
>>> http://gnusha.org/taproot-activation/2021-02-16.log
>>>
>>> (If you are so inclined you can watch a video of the meeting here.
>>> Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>>> https://www.youtube.com/watch?v=vpl5q1ovMLM)
>>>
>>> A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>>> https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>>
>>> Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>>> did manage to come to consensus on everything but LockinOnTimeout.
>>>
>>> Activation height range: 693504-745920
>>>
>>> MASF threshold: 1815/2016 blocks (90%)
>>>
>>> Keep in mind only ~100 people showed for the meetings, hardly
>>> representative of the entire community.
>>>
>>> So, these details remain JUST a proposal for now.
>>>
>>> It seems inevitable that there won't be consensus on LOT.
>>>
>>> Everyone will have to choose for himself. :/
>>>
>>> Personally I agree with most of this. I agree that there wasn’t
>>> overwhelming consensus for either LOT=true or LOT=false. However, from
>>> my perspective there was clearly more strong opposition (what would
>>> usually be deemed a NACK in Bitcoin Core review terminology) from
>>> Bitcoin Core contributors, Lightning developers and other community
>>> members against LOT=true than there was for LOT=false. Andrew Chow
>>> tried to summarize views from the meeting in this analysis:
>>> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>>
>>> I am also aware of other current and previous Bitcoin Core
>>> contributors and Lightning developers who didn’t attend the meeting in
>>> person who are opposed to LOT=true. I don’t want to put them in the
>>> spotlight for no reason but if you go through the conversation logs of
>>> not only the meeting but the weeks of discussion prior to this meeting
>>> you will see their views evaluated on the ##taproot-activation
>>> channel. In addition, on taprootactivation.com some mining pools
>>> expressed a preference for lot=false though I don’t know how strong
>>> that preference was.
>>>
>>> I am only one voice but it is my current assessment that if we are to
>>> attempt to finalize Taproot activation parameters and propose them to
>>> the community at this time our only option is to propose LOT=false.
>>> Any further delay appears to me counterproductive in our collective
>>> aim to get the Taproot soft fork activated as early as possible.
>>>
>>> Obviously others are free to disagree with that assessment and
>>> continue discussions but personally I will be attempting to avoid
>>> those discussions unless prominent new information comes to light or
>>> various specific individuals change their minds.
>>>
>>> Next week we are planning a code review of the Bitcoin Core PR #19573
>>> which was initially delayed because of this LOT discussion. As I’ve
>>> said previously that will be loosely following the format of the
>>> Bitcoin Core PR review club and will be lower level and more
>>> technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>>> the IRC channel ##taproot-activation.
>>>
>>> Thanks to the meeting participants (and those who joined the
>>> discussion on the channel prior and post the meeting) for engaging
>>> productively and in good faith.
>>>
>>>
>
> --
> Michael Folkson
> Email: michaelfolkson@gmail•com
> Keybase: michaelfolkson
> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

[-- Attachment #2: Type: text/html, Size: 15284 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-18  5:43 ` Ariel Lorenzo-Luaces
@ 2021-02-18 11:01   ` Michael Folkson
  2021-02-18 11:11     ` Samson Mow
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Folkson @ 2021-02-18 11:01 UTC (permalink / raw)
  To: Ariel Lorenzo-Luaces; +Cc: Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 11712 bytes --]

Thanks for your response Ariel. It would be useful if you responded to
specific points I have made in the mailing list post or at least quote
these ephemeral "people" you speak of. I don't know if you're responding to
conversation on the IRC channel or on social media etc.

> The argument comes from a naive assumption that users MUST upgrade to the
choice that is submitted into code. But in fact this isn't true and some
voices in this discussion need to be more humble about what users must or
must not run.

I personally have never made this assumption. Of course users aren't forced
to run any particular software version, quite the opposite. Defaults set in
software versions matter though as many users won't change them.

> Does no one realize that it is a very possible outcome that if LOT=true
is released there may be only a handful of people that begin running it
while everyone else delays their upgrade (with the very good reason of not
getting involved in politics) and a year later those handful of people just
become stuck at the moment of MUST_SIGNAL, unable to mine new blocks?

It is a possible outcome but the likely outcome is that miners activate
Taproot before LOT is even relevant. I think it is prudent to prepare for
the unlikely but possible outcome that miners fail to activate and hence
have this discussion now rather than be unprepared for that eventuality. If
LOT is set to false in a software release there is the possibility (T2 in
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html)
of individuals or a proportion of the community changing LOT to true. In
that sense setting LOT=false in a software release appears to be no more
safe than LOT=true.

> The result: a wasted year of waiting and a minority of people who didn't
want to be lenient with miners by default.

There is the (unlikely but possible) possibility of a wasted year if LOT is
set to false and miners fail to activate. I'm not convinced by this
perception that LOT=true is antagonistic to miners. I actually think it
offers them clarity on what will happen over a year time period and removes
the need for coordinated or uncoordinated community UASF efforts on top of
LOT=false.

> An activation mechanism is a consensus change like any other change, can
be contentious like any other change, and we must resolve it like any other
change. Otherwise we risk arriving at the darkest timeline.

I don't know what you are recommending here to avoid "this darkest
timeline". Open discussions have occurred and are continuing and in my
mailing list post that you responded to **I recommended we propose
LOT=false be set in protocol implementations such as Bitcoin Core**. I do
think this apocalyptic language isn't particularly helpful. In an open
consensus system discussion is healthy, we should prepare for bad or worst
case scenarios in advance and doing so is not antagonistic or destructive.
Mining pools have pledged support for Taproot but we don't build secure
systems based on pledges of support, we build them to minimize trust in any
human actors. We can be grateful that people like Alejandro have worked
hard on taprootactivation.com (and this effort has informed the discussion)
without taking pledges of support as cast iron guarantees.

TL;DR It sounds like you agree with my recommendation to set LOT=false in
protocol implementations in my email :)




On Thu, Feb 18, 2021 at 5:43 AM Ariel Lorenzo-Luaces <arielluaces@gmail•com>
wrote:

> Something what strikes me about the conversation is the emotion
> surrounding the letters UASF.
>
> It appears as if people discuss UASF as if it's a massive tidal wave of
> support that is inevitable, like we saw during segwit activation. But the
> actual definition is "any activation that is not a MASF".
>
> A UASF can consist of a single node, ten nodes, a thousand, half of all
> nodes, all business' nodes, or even all the non mining nodes. On another
> dimension it can have zero mining support, 51% support, 49% support, or any
> support right up against a miner activation threshold.
>
> Hell a UASF doesn't even need code or even a single node running as long
> as it exists as a possibility in people's minds.
>
> The only thing a UASF doesn't have is miner support above an agreed
> activation threshold (some number above %51).
>
> I say this because it strikes me when people say that they are for
> LOT=true with the logic that since a UASF is guaranteed to happen then it's
> better to just make it default from the beginning. Words like coordination
> and safety are sometimes sprinkled into the argument.
>
> The argument comes from a naive assumption that users MUST upgrade to the
> choice that is submitted into code. But in fact this isn't true and some
> voices in this discussion need to be more humble about what users must or
> must not run.
>
> Does no one realize that it is a very possible outcome that if LOT=true is
> released there may be only a handful of people that begin running it while
> everyone else delays their upgrade (with the very good reason of not
> getting involved in politics) and a year later those handful of people just
> become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or
> attracting a minority of miners, activating, and forking off into a
> minority fork. Then a lot=false could be started that ends up activating
> the feature now that the stubborn option has ran its course.
> The result: a wasted year of waiting and a minority of people who didn't
> want to be lenient with miners by default. The chains could be called
> BitcoinLenient and BitcoinStubborn.
> How is that strictly safer or more coordinated?
>
> I may be in the minority, or maybe a silent majority, or maybe a majority
> that just hasn't considered this as a choice but honestly if there is
> contention about whether we're going to be stubborn or lenient with miners
> for Taproot and in the future then I prefer to just not activate anything
> at all. I'm fine for calling bitcoin ossified, accepting that segwit is
> Bitcoin's last network upgrade. Taproot is amazing but no new feature is
> worth a network split down the middle.
>
> Maybe in 10 or 20 years, when other blockchains implement features like
> Taproot and many more, we will become envious enough to put aside our
> differences on how to behave towards miners and finally activate Taproot.
>
> An activation mechanism is a consensus change like any other change, can
> be contentious like any other change, and we must resolve it like any other
> change. Otherwise we risk arriving at the darkest timeline.
>
> Cheers
> Ariel Lorenzo-Luaces
> On Feb 17, 2021, at 7:05 AM, Michael Folkson via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
>>
>> Yesterday (February 16th) we held a second meeting on Taproot
>> activation on IRC which again was open to all. Despite what appeared
>> to be majority support for LOT=false over LOT=true in the first
>> meeting I (and others) thought the arguments had not been explored in
>> depth and that we should have a follow up meeting almost entirely
>> focused on whether LOT (lockinontimeout) should be set to true or
>> false.
>>
>> The meeting was announced here:
>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>>
>> In that mailing list post I outlined the arguments for LOT=true (T1 to
>> T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>> could. David Harding responded with an additional argument for
>> LOT=false (F7) here:
>> https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>>
>> These meetings are very challenging given they are open to all, you
>> don’t know who will attend and you don’t know most people’s views in
>> advance. I tried to give time for both the LOT=true arguments and the
>> LOT=false arguments to be discussed as I knew there was support for
>> both. We only tried evaluating which had more support and which had
>> more strong opposition towards the end of the meeting.
>>
>> The conversation log is here:
>> http://gnusha.org/taproot-activation/2021-02-16.log
>>
>> (If you are so inclined you can watch a video of the meeting here.
>> Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>> https://www.youtube.com/watch?v=vpl5q1ovMLM)
>>
>> A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>> https://bitcoinhackers.org/@lukedashjr/105742918779234566
>>
>> Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>> did manage to come to consensus on everything but LockinOnTimeout.
>>
>> Activation height range: 693504-745920
>>
>> MASF threshold: 1815/2016 blocks (90%)
>>
>> Keep in mind only ~100 people showed for the meetings, hardly
>> representative of the entire community.
>>
>> So, these details remain JUST a proposal for now.
>>
>> It seems inevitable that there won't be consensus on LOT.
>>
>> Everyone will have to choose for himself. :/
>>
>> Personally I agree with most of this. I agree that there wasn’t
>> overwhelming consensus for either LOT=true or LOT=false. However, from
>> my perspective there was clearly more strong opposition (what would
>> usually be deemed a NACK in Bitcoin Core review terminology) from
>> Bitcoin Core contributors, Lightning developers and other community
>> members against LOT=true than there was for LOT=false. Andrew Chow
>> tried to summarize views from the meeting in this analysis:
>> https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>>
>> I am also aware of other current and previous Bitcoin Core
>> contributors and Lightning developers who didn’t attend the meeting in
>> person who are opposed to LOT=true. I don’t want to put them in the
>> spotlight for no reason but if you go through the conversation logs of
>> not only the meeting but the weeks of discussion prior to this meeting
>> you will see their views evaluated on the ##taproot-activation
>> channel. In addition, on taprootactivation.com some mining pools
>> expressed a preference for lot=false though I don’t know how strong
>> that preference was.
>>
>> I am only one voice but it is my current assessment that if we are to
>> attempt to finalize Taproot activation parameters and propose them to
>> the community at this time our only option is to propose LOT=false.
>> Any further delay appears to me counterproductive in our collective
>> aim to get the Taproot soft fork activated as early as possible.
>>
>> Obviously others are free to disagree with that assessment and
>> continue discussions but personally I will be attempting to avoid
>> those discussions unless prominent new information comes to light or
>> various specific individuals change their minds.
>>
>> Next week we are planning a code review of the Bitcoin Core PR #19573
>> which was initially delayed because of this LOT discussion. As I’ve
>> said previously that will be loosely following the format of the
>> Bitcoin Core PR review club and will be lower level and more
>> technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>> the IRC channel ##taproot-activation.
>>
>> Thanks to the meeting participants (and those who joined the
>> discussion on the channel prior and post the meeting) for engaging
>> productively and in good faith.
>>
>>

-- 
Michael Folkson
Email: michaelfolkson@gmail•com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3

[-- Attachment #2: Type: text/html, Size: 14120 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
  2021-02-17 12:51 Michael Folkson
@ 2021-02-18  5:43 ` Ariel Lorenzo-Luaces
  2021-02-18 11:01   ` Michael Folkson
  2021-02-21 16:21 ` Erik Aronesty
  1 sibling, 1 reply; 42+ messages in thread
From: Ariel Lorenzo-Luaces @ 2021-02-18  5:43 UTC (permalink / raw)
  To: Michael Folkson, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 8040 bytes --]

Something what strikes me about the conversation is the emotion surrounding the letters UASF.

It appears as if people discuss UASF as if it's a massive tidal wave of support that is inevitable, like we saw during segwit activation. But the actual definition is "any activation that is not a MASF".

A UASF can consist of a single node, ten nodes, a thousand, half of all nodes, all business' nodes, or even all the non mining nodes. On another dimension it can have zero mining support, 51% support, 49% support, or any support right up against a miner activation threshold.

Hell a UASF doesn't even need code or even a single node running as long as it exists as a possibility in people's minds.

The only thing a UASF doesn't have is miner support above an agreed activation threshold (some number above %51).

I say this because it strikes me when people say that they are for LOT=true with the logic that since a UASF is guaranteed to happen then it's better to just make it default from the beginning. Words like coordination and safety are sometimes sprinkled into the argument.

The argument comes from a naive assumption that users MUST upgrade to the choice that is submitted into code. But in fact this isn't true and some voices in this discussion need to be more humble about what users must or must not run.

Does no one realize that it is a very possible outcome that if LOT=true is released there may be only a handful of people that begin running it while everyone else delays their upgrade (with the very good reason of not getting involved in politics) and a year later those handful of people just become stuck at the moment of MUST_SIGNAL, unable to mine new blocks? Or attracting a minority of miners, activating, and forking off into a minority fork. Then a lot=false could be started that ends up activating the feature now that the stubborn option has ran its course.
The result: a wasted year of waiting and a minority of people who didn't want to be lenient with miners by default. The chains could be called BitcoinLenient and BitcoinStubborn.
How is that strictly safer or more coordinated?

I may be in the minority, or maybe a silent majority, or maybe a majority that just hasn't considered this as a choice but honestly if there is contention about whether we're going to be stubborn or lenient with miners for Taproot and in the future then I prefer to just not activate anything at all. I'm fine for calling bitcoin ossified, accepting that segwit is Bitcoin's last network upgrade. Taproot is amazing but no new feature is worth a network split down the middle.

Maybe in 10 or 20 years, when other blockchains implement features like Taproot and many more, we will become envious enough to put aside our differences on how to behave towards miners and finally activate Taproot.

An activation mechanism is a consensus change like any other change, can be contentious like any other change, and we must resolve it like any other change. Otherwise we risk arriving at the darkest timeline.

Cheers
Ariel Lorenzo-Luaces


On Feb 17, 2021, 7:05 AM, at 7:05 AM, Michael Folkson via bitcoin-dev <bitcoin-dev@lists•linuxfoundation.org> wrote:
>Yesterday (February 16th) we held a second meeting on Taproot
>activation on IRC which again was open to all. Despite what appeared
>to be majority support for LOT=false over LOT=true in the first
>meeting I (and others) thought the arguments had not been explored in
>depth and that we should have a follow up meeting almost entirely
>focused on whether LOT (lockinontimeout) should be set to true or
>false.
>
>The meeting was announced here:
>https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html
>
>In that mailing list post I outlined the arguments for LOT=true (T1 to
>T6) and arguments for LOT=false (F1 to F6) in their strongest form I
>could. David Harding responded with an additional argument for
>LOT=false (F7) here:
>https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html
>
>These meetings are very challenging given they are open to all, you
>don’t know who will attend and you don’t know most people’s views in
>advance. I tried to give time for both the LOT=true arguments and the
>LOT=false arguments to be discussed as I knew there was support for
>both. We only tried evaluating which had more support and which had
>more strong opposition towards the end of the meeting.
>
>The conversation log is here:
>http://gnusha.org/taproot-activation/2021-02-16.log
>
>(If you are so inclined you can watch a video of the meeting here.
>Thanks to the YouTube account “Bitcoin” for setting up the livestream:
>https://www.youtube.com/watch?v=vpl5q1ovMLM)
>
>A summary of the meeting was provided by Luke Dashjr on Mastodon here:
>https://bitcoinhackers.org/@lukedashjr/105742918779234566
>
>Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
>did manage to come to consensus on everything but LockinOnTimeout.
>
>Activation height range: 693504-745920
>
>MASF threshold: 1815/2016 blocks (90%)
>
>Keep in mind only ~100 people showed for the meetings, hardly
>representative of the entire community.
>
>So, these details remain JUST a proposal for now.
>
>It seems inevitable that there won't be consensus on LOT.
>
>Everyone will have to choose for himself. :/
>
>Personally I agree with most of this. I agree that there wasn’t
>overwhelming consensus for either LOT=true or LOT=false. However, from
>my perspective there was clearly more strong opposition (what would
>usually be deemed a NACK in Bitcoin Core review terminology) from
>Bitcoin Core contributors, Lightning developers and other community
>members against LOT=true than there was for LOT=false. Andrew Chow
>tried to summarize views from the meeting in this analysis:
>https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c
>
>I am also aware of other current and previous Bitcoin Core
>contributors and Lightning developers who didn’t attend the meeting in
>person who are opposed to LOT=true. I don’t want to put them in the
>spotlight for no reason but if you go through the conversation logs of
>not only the meeting but the weeks of discussion prior to this meeting
>you will see their views evaluated on the ##taproot-activation
>channel. In addition, on taprootactivation.com some mining pools
>expressed a preference for lot=false though I don’t know how strong
>that preference was.
>
>I am only one voice but it is my current assessment that if we are to
>attempt to finalize Taproot activation parameters and propose them to
>the community at this time our only option is to propose LOT=false.
>Any further delay appears to me counterproductive in our collective
>aim to get the Taproot soft fork activated as early as possible.
>
>Obviously others are free to disagree with that assessment and
>continue discussions but personally I will be attempting to avoid
>those discussions unless prominent new information comes to light or
>various specific individuals change their minds.
>
>Next week we are planning a code review of the Bitcoin Core PR #19573
>which was initially delayed because of this LOT discussion. As I’ve
>said previously that will be loosely following the format of the
>Bitcoin Core PR review club and will be lower level and more
>technical. That is planned for Tuesday February 23rd at 19:00 UTC on
>the IRC channel ##taproot-activation.
>
>Thanks to the meeting participants (and those who joined the
>discussion on the channel prior and post the meeting) for engaging
>productively and in good faith.
>
>--
>Michael Folkson
>Email: michaelfolkson@gmail•com
>Keybase: michaelfolkson
>PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>_______________________________________________
>bitcoin-dev mailing list
>bitcoin-dev@lists•linuxfoundation.org
>https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

[-- Attachment #2: Type: text/html, Size: 9033 bytes --]

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT)
@ 2021-02-17 12:51 Michael Folkson
  2021-02-18  5:43 ` Ariel Lorenzo-Luaces
  2021-02-21 16:21 ` Erik Aronesty
  0 siblings, 2 replies; 42+ messages in thread
From: Michael Folkson @ 2021-02-17 12:51 UTC (permalink / raw)
  To: bitcoin-dev

Yesterday (February 16th) we held a second meeting on Taproot
activation on IRC which again was open to all. Despite what appeared
to be majority support for LOT=false over LOT=true in the first
meeting I (and others) thought the arguments had not been explored in
depth and that we should have a follow up meeting almost entirely
focused on whether LOT (lockinontimeout) should be set to true or
false.

The meeting was announced here:
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018380.html

In that mailing list post I outlined the arguments for LOT=true (T1 to
T6) and arguments for LOT=false (F1 to F6) in their strongest form I
could. David Harding responded with an additional argument for
LOT=false (F7) here:
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018415.html

These meetings are very challenging given they are open to all, you
don’t know who will attend and you don’t know most people’s views in
advance. I tried to give time for both the LOT=true arguments and the
LOT=false arguments to be discussed as I knew there was support for
both. We only tried evaluating which had more support and which had
more strong opposition towards the end of the meeting.

The conversation log is here:
http://gnusha.org/taproot-activation/2021-02-16.log

(If you are so inclined you can watch a video of the meeting here.
Thanks to the YouTube account “Bitcoin” for setting up the livestream:
https://www.youtube.com/watch?v=vpl5q1ovMLM)

A summary of the meeting was provided by Luke Dashjr on Mastodon here:
https://bitcoinhackers.org/@lukedashjr/105742918779234566

Today's #Bitcoin #Taproot meeting was IMO largely unproductive, but we
did manage to come to consensus on everything but LockinOnTimeout.

Activation height range: 693504-745920

MASF threshold: 1815/2016 blocks (90%)

Keep in mind only ~100 people showed for the meetings, hardly
representative of the entire community.

So, these details remain JUST a proposal for now.

It seems inevitable that there won't be consensus on LOT.

Everyone will have to choose for himself. :/

Personally I agree with most of this. I agree that there wasn’t
overwhelming consensus for either LOT=true or LOT=false. However, from
my perspective there was clearly more strong opposition (what would
usually be deemed a NACK in Bitcoin Core review terminology) from
Bitcoin Core contributors, Lightning developers and other community
members against LOT=true than there was for LOT=false. Andrew Chow
tried to summarize views from the meeting in this analysis:
https://gist.github.com/achow101/3e179501290abb7049de198d46894c7c

I am also aware of other current and previous Bitcoin Core
contributors and Lightning developers who didn’t attend the meeting in
person who are opposed to LOT=true. I don’t want to put them in the
spotlight for no reason but if you go through the conversation logs of
not only the meeting but the weeks of discussion prior to this meeting
you will see their views evaluated on the ##taproot-activation
channel. In addition, on taprootactivation.com some mining pools
expressed a preference for lot=false though I don’t know how strong
that preference was.

I am only one voice but it is my current assessment that if we are to
attempt to finalize Taproot activation parameters and propose them to
the community at this time our only option is to propose LOT=false.
Any further delay appears to me counterproductive in our collective
aim to get the Taproot soft fork activated as early as possible.

Obviously others are free to disagree with that assessment and
continue discussions but personally I will be attempting to avoid
those discussions unless prominent new information comes to light or
various specific individuals change their minds.

Next week we are planning a code review of the Bitcoin Core PR #19573
which was initially delayed because of this LOT discussion. As I’ve
said previously that will be loosely following the format of the
Bitcoin Core PR review club and will be lower level and more
technical. That is planned for Tuesday February 23rd at 19:00 UTC on
the IRC channel ##taproot-activation.

Thanks to the meeting participants (and those who joined the
discussion on the channel prior and post the meeting) for engaging
productively and in good faith.

-- 
Michael Folkson
Email: michaelfolkson@gmail•com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3


^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2021-03-02 18:32 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-19 22:12 [bitcoin-dev] Yesterday's Taproot activation meeting on lockinontimeout (LOT) Matt Hill
2021-02-19 23:30 ` Matt Corallo
2021-02-19 23:42   ` Bryan Bishop
  -- strict thread matches above, loose matches on Subject: below --
2021-02-21 10:10 Prayank
2021-02-17 12:51 Michael Folkson
2021-02-18  5:43 ` Ariel Lorenzo-Luaces
2021-02-18 11:01   ` Michael Folkson
2021-02-18 11:11     ` Samson Mow
2021-02-18 11:52       ` ZmnSCPxj
2021-02-18 12:20         ` Michael Folkson
2021-02-18 14:01           ` Matt Corallo
2021-02-18 14:26             ` Michael Folkson
2021-02-18 14:42               ` Matt Corallo
2021-02-18 14:51                 ` Michael Folkson
2021-02-18 14:53                   ` Matt Corallo
2021-02-18 15:01                     ` Matt Corallo
2021-02-18 15:04                 ` Keagan McClelland
2021-02-18 15:18                   ` Matt Corallo
2021-02-19  2:20                     ` Ariel Luaces
2021-02-19 11:30                     ` ZmnSCPxj
2021-02-19 12:05                       ` Adam Back
2021-02-19 14:13                         ` Matt Corallo
2021-02-19 17:48                           ` Matt Corallo
2021-02-20  2:55                             ` ZmnSCPxj
2021-02-20 17:20                               ` Ariel Lorenzo-Luaces
2021-02-21 14:30                                 ` Matt Corallo
2021-02-22  5:16                             ` Anthony Towns
2021-02-22  6:44                               ` Matt Corallo
2021-02-22 10:16                                 ` Anthony Towns
2021-02-22 14:00                                   ` Matt Corallo
2021-02-22 16:27                                     ` Anthony Towns
2021-02-22 16:31                                     ` Jorge Timón
2021-02-22 16:48                                       ` Jorge Timón
2021-02-23  2:10                                         ` Jeremy
2021-02-23 19:33                                           ` Keagan McClelland
2021-02-23 23:14                                             ` Ben Woosley
2021-02-24 22:37                                             ` Ariel Luaces
2021-03-01 13:54                                               ` Erik Aronesty
2021-03-02 18:32                                                 ` Ariel Lorenzo-Luaces
2021-02-24  7:18                                           ` Anthony Towns
2021-02-18 13:59         ` Matt Corallo
2021-02-21 16:21 ` Erik Aronesty

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox