summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Hilliard <james.hilliard1@gmail.com>2017-06-07 19:44:38 -0500
committerbitcoindev <bitcoindev@gnusha.org>2017-06-08 00:44:42 +0000
commit263770d50f5b901bd0c29381073aab1c8f686ccb (patch)
tree6c5a8e4c2a21224da7a445551dfdbc6cc06e75f1
parentba7fbe7e51c08eb301b76db30e056eca154ca714 (diff)
downloadpi-bitcoindev-263770d50f5b901bd0c29381073aab1c8f686ccb.tar.gz
pi-bitcoindev-263770d50f5b901bd0c29381073aab1c8f686ccb.zip
Re: [bitcoin-dev] User Activated Soft Fork Split Protection
-rw-r--r--6d/d9b8f03b5d5d8cd503a4cdb53cb6c9ade157bf831
1 files changed, 831 insertions, 0 deletions
diff --git a/6d/d9b8f03b5d5d8cd503a4cdb53cb6c9ade157bf b/6d/d9b8f03b5d5d8cd503a4cdb53cb6c9ade157bf
new file mode 100644
index 000000000..9c0f2129a
--- /dev/null
+++ b/6d/d9b8f03b5d5d8cd503a4cdb53cb6c9ade157bf
@@ -0,0 +1,831 @@
+Return-Path: <james.hilliard1@gmail.com>
+Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
+ [172.17.192.35])
+ by mail.linuxfoundation.org (Postfix) with ESMTPS id E1C108D9
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Thu, 8 Jun 2017 00:44:42 +0000 (UTC)
+X-Greylist: whitelisted by SQLgrey-1.7.6
+Received: from mail-ot0-f182.google.com (mail-ot0-f182.google.com
+ [74.125.82.182])
+ by smtp1.linuxfoundation.org (Postfix) with ESMTPS id D5D56EB
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Thu, 8 Jun 2017 00:44:40 +0000 (UTC)
+Received: by mail-ot0-f182.google.com with SMTP id k4so15701388otd.0
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Wed, 07 Jun 2017 17:44:40 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
+ h=mime-version:in-reply-to:references:from:date:message-id:subject:to
+ :cc; bh=w13VdNbCxRRG3IkrgT0VUllAlQ10+fxux7Po7acv1Aw=;
+ b=Uh0LNvfhiBbUIaGcCEk6LTZmR0eZQeT7CubrY++rIJUHQjevNluAYrP1Yu/OgVSeyW
+ AupopFORvlX62a58IfZH5dCFPnusDRV+0ypPkkRgV6+S4yK8Tvxe4MTFJ+k3b+ylwVUC
+ 1LYOWAoXd8xfa+ok0+NAXskuiceBfe70Lmh+Ot2aPt1JeF1M7EPBpdBTDHRpZXdz8+Hx
+ ONUx+nHrUb+qvT9ScmNuH/QEsGmSk8iMU3+bR8QWDZOQ5CHlNt+IEOMUJFkjwAWWXEeW
+ fe5C5fhc+nFuLzW152vRg865AgOC8pw5xvy/H/iZuzXYMCCAJid/cdjtSlIhSd11Y6UE
+ ryCw==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=1e100.net; s=20161025;
+ h=x-gm-message-state:mime-version:in-reply-to:references:from:date
+ :message-id:subject:to:cc;
+ bh=w13VdNbCxRRG3IkrgT0VUllAlQ10+fxux7Po7acv1Aw=;
+ b=Env/ClAOwBscg+MKFAIAVD1mqHDxEiqStkDDLgM6N+KUC/nZA22Z0CFaGQMuze2Yl4
+ bF5BygJ+3Oaf5VbILzsO+WdyZ+QhXQ2SSgURoEyJ5Yt1fSvEbKdgVQRwXgbcFP3b4lJx
+ +b9vX5w/klsUdLaCKFswBvGKpttoOfKJFUEXbEBUF3NtFth5dvLxeMwasdB6jQJILCdr
+ jd//9U6kmJXaiS3z8h69xTYN2ugewDMLIRzuHq20dgR9nzYpmCaWPvErTyavaxXKNbCR
+ /PccrfV3WURUM4okWd98UkdW21McUa+NVUm6X7uBg36aKus6+tNUZPitUs/7jWeEw1/1
+ 296Q==
+X-Gm-Message-State: AKS2vOw+hZirOOStD98Vt9koOhahMrajdrnbabGZVFii/Q9EShUvpsx6
+ kjQg6SgHi0a5nAlBLfIgtlaSj/0lAw==
+X-Received: by 10.157.7.115 with SMTP id 106mr12021398ote.167.1496882679398;
+ Wed, 07 Jun 2017 17:44:39 -0700 (PDT)
+MIME-Version: 1.0
+Received: by 10.182.224.230 with HTTP; Wed, 7 Jun 2017 17:44:38 -0700 (PDT)
+In-Reply-To: <CAD1TkXuBc8nQr7ZSog4aYbppqR9Bg4cX=gFdSZCvBXfZmmhQww@mail.gmail.com>
+References: <CADvTj4qpH-t5Gx6qyn3yToyUE_GFaBE989=AWNHLKMpMNW3R+w@mail.gmail.com>
+ <CAD1TkXviJouao7YoHjiDN3mTUWFEbMY9mtCqkQ8zp8JthyhT7Q@mail.gmail.com>
+ <CADvTj4rz4exYMvBEmYi=bTZDgDm0drLjpRZmZUo17inzCzCRVg@mail.gmail.com>
+ <CAD1TkXskei1gk_kungSvdWGmbdJMA8AG+-zK+Osz6u5vSCN8BQ@mail.gmail.com>
+ <CADvTj4poO1L+Wg5J+M71sJMz-Xcg_st3MkAcQK=bfHhTJ3i8ow@mail.gmail.com>
+ <CAD1TkXumetRnPO6LxhJeVoci=0=YHD7hEB0K0YH+2McRBJ-QHw@mail.gmail.com>
+ <CADvTj4pFna4tX37XmgrP7ueZB+Yv4T9NWmp99CwKSx5mzdiJJQ@mail.gmail.com>
+ <CAD1TkXtmj3H3k+k7X2DgA0cNxXBNSSrzf_o33qFO8cA9eSUTnw@mail.gmail.com>
+ <CADvTj4o5tTD2XN080dmHq1DuNwSZtmAytv3=7F5zGeBdhiPMrA@mail.gmail.com>
+ <CAD1TkXuBc8nQr7ZSog4aYbppqR9Bg4cX=gFdSZCvBXfZmmhQww@mail.gmail.com>
+From: James Hilliard <james.hilliard1@gmail.com>
+Date: Wed, 7 Jun 2017 19:44:38 -0500
+Message-ID: <CADvTj4r6aHYd53Zi-kE+MQZoDv-ONdFf6CDmNA8YXgqVdwmR=g@mail.gmail.com>
+To: Jared Lee Richardson <jaredr26@gmail.com>
+Content-Type: text/plain; charset="UTF-8"
+X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
+ DKIM_VALID,DKIM_VALID_AU,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,
+ LOTS_OF_MONEY,RCVD_IN_DNSWL_NONE autolearn=no version=3.3.1
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
+ smtp1.linux-foundation.org
+Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
+Subject: Re: [bitcoin-dev] User Activated Soft Fork Split Protection
+X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
+List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
+List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
+List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
+List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
+List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
+X-List-Received-Date: Thu, 08 Jun 2017 00:44:43 -0000
+
+On Wed, Jun 7, 2017 at 7:20 PM, Jared Lee Richardson <jaredr26@gmail.com> wrote:
+>> Not really, there are a few relatively simple techniques such as RBF
+>> which can be leveraged to get confirmations on on-side before double
+>> spending on another. Once a transaction is confirmed on the non-BIP148
+>> chain then the high fee transactions can be made on only the BIP148
+>> side of the split using RBF.
+>
+> Ah, so the BIP148 client handles this on behalf of its less technical users
+> on their behalf then, yes?
+It's not automatic but exchanges will likely handle it on behalf of
+the less technical users. BIP148 is not intended to cause a permanent
+chain split however which is why this was not built in.
+>
+>> Exchanges will likely do this splitting
+>> automatically for uses as well.
+>
+> Sure, Exchanges are going to dedicate hundreds of developer hours and
+> thousands of support hours to support something that they've repeatedly told
+> everyone must have replay protection to be supported. They're going to do
+> this because 8% of nodes and <0.5% of miners say they'll be rewarded richly.
+> Somehow I find that hard to believe.
+They are very likely to, most have contingency plans for this sort of
+thing ready to go due to their experience with the ETH/ETC fork.
+>
+> Besides, if the BIP148 client does it for them, they wouldn't have to
+> dedicate those hundreds of developer hours. Right?
+>
+> I can't imagine how this logic is getting you from where the real data is to
+> the assumption that an economic majority will push BIP148 into being such a
+> more valuable chain that switching chains will be attractive to enough
+> miners. There's got to be some real data that convinces you of this
+> somewhere?
+If you're looking for hard numbers at this point you aren't likely to
+find them because not everything is easy to measure directly.
+>
+>> Both are issues, but wipeout risk is different, the ETH/ETC split for
+>> example didn't have any wipeout risk for either side the same is not
+>> true for BIP148(and it is the non-BIP148 side that carries the risk of
+>> chain wipeout).
+>
+> Wipeout risk is a serious issue when 45% of the miners support one chain and
+> 55% support the other chain. Segwit doesn't even have 35% of the miners;
+> There's no data or statements anywhere that indicate that UASF is going to
+> reach the point where wipeout risk is even comparable to abandonment risk.
+It's mostly economic support that will dictate this, not hashpower
+support since the hashpower follows the economy.
+>
+>> Yes, miners aren't likely to waste operational mining costs, that's
+>> ultimately why miners would follow the BIP148 side of the chain
+>> assuming it has sufficient economic support or if it's more profitable
+>> to mine.
+>
+> To convince miners you would have to have some data SOMEWHERE supporting the
+> economic majority argument. Is there any such data?
+We'll know more as we get closer to BIP148 activation by looking at the markets.
+>
+>> segwit2x has more issues since the HF part requires users to reach
+>> consensus
+>
+> It doesn't have those issues during the segwit activation, ergo there is no
+> reason for segwit-activation problems to take priority over the very real
+> hardfork activation problems.
+And yet segwit2x is insisting on activation bundling which needlessly
+complicates and delays SegWit activation.
+>
+>> That's a political reason not a technical reason.
+>
+> In a consensus system they are frequently the same, unfortunately.
+> Technical awesomeness without people agreeing = zero consensus. So the
+> choice is either to "technically" break the consensus without a
+> super-majority and see what happens, or to go with the choice that has real
+> data showing the most consensus and hope the tiny minority chain actually
+> dies off.
+Sure, technical changes can be made for political reasons, we should
+at least be clear in regards to why particular decisions are being
+made. I'm supportive of a hard fork for technical reasons but not
+political ones as are many others.
+>
+> Jared
+>
+> On Wed, Jun 7, 2017 at 5:01 PM, James Hilliard <james.hilliard1@gmail.com>
+> wrote:
+>>
+>> On Wed, Jun 7, 2017 at 6:43 PM, Jared Lee Richardson <jaredr26@gmail.com>
+>> wrote:
+>> >> BIP148 however is a consensus change that can
+>> >> be rectified if it gets more work, this would act as an additional
+>> >> incentive for mine the BIP148 side since there would be no wipeout
+>> >> risk there.
+>> >
+>> > This statement is misleading. Wipeout risks don't apply to any
+>> > consensus
+>> > changes; It is a consensus change, it can only be abandoned. The BIP148
+>> > chain carries just as many risks of being abandoned or even more with
+>> > segwit2x on the table. No miner would consider "wipeout risk" an
+>> > advantage
+>> > when the real threat is chain abandonment.
+>> Both are issues, but wipeout risk is different, the ETH/ETC split for
+>> example didn't have any wipeout risk for either side the same is not
+>> true for BIP148(and it is the non-BIP148 side that carries the risk of
+>> chain wipeout).
+>> >
+>> >> Higher transaction fees on a minority chain can compensate miners for
+>> >> a lower price which would likely be enough to get the BIP148 chain to
+>> >> a difficulty reduction.
+>> >
+>> > Higher transaction fees suffers the same problem as exchange support
+>> > does.
+>> > Without replay protection, it is very difficult for any average user to
+>> > force transactions onto one chain or the other. Thus, without replay
+>> > protection, the UASF chain is unlikely to develop any viable fee market;
+>> > Its
+>> > few miners 99% of the time will simply choose from the highest fees that
+>> > were already available to the other chain, which is basically no
+>> > advantage
+>> > at all.
+>> Not really, there are a few relatively simple techniques such as RBF
+>> which can be leveraged to get confirmations on on-side before double
+>> spending on another. Once a transaction is confirmed on the non-BIP148
+>> chain then the high fee transactions can be made on only the BIP148
+>> side of the split using RBF. Exchanges will likely do this splitting
+>> automatically for uses as well.
+>> >
+>> >> ETC replay protection was done after the fork on an as
+>> >> needed basis(there are multiple reliable techniques that can be used
+>> >> to split UTXO's), the same can happen with BIP148 and it is easier to
+>> >> do with Bitcoin than with the ETH/ETC split IMO.
+>> >
+>> > ETC replay protection was added because they were already a hardfork and
+>> > without it they would not have had a viable chain. BIP148 is not
+>> > supposed
+>> > to be a hardfork, and if it added replay protection to remain viable it
+>> > would lose the frequently touted "wipeout advantage" as well as the
+>> > ability
+>> > to call itself a softfork. And are you seriously suggesting that what
+>> > happened with ETC and ETH is a desirable and good situation for Bitcoin,
+>> > and
+>> > that UASF is ETC?
+>> There wasn't proper replay protection at split time for ETH/ETC since
+>> normal transactions would get executed on both sides originally,
+>> however replay protection was added by wallets(mainly using splitting
+>> contracts). I don't think a split is desirable however, which is why
+>> I've proposed this BIP.
+>> >
+>> >> A big reason BIP148 still has support is because up until SegWit
+>> >> actually activates there's no guarantee segwit2mb will actually have
+>> >> the necessary support to activate SegWit.
+>> >
+>> > For a miners blowing through six million dollars a day in mining
+>> > operational
+>> > costs, that's a pretty crappy reason. Serious miners can't afford to
+>> > prop
+>> > up a non-viable chain based on philosophy or maybes. BIP148 is based
+>> > entirely upon people who aren't putting anything on the line trying to
+>> > convince others to take the huge risks for them. With deceptively
+>> > fallacious logic, in my opinion.
+>> Yes, miners aren't likely to waste operational mining costs, that's
+>> ultimately why miners would follow the BIP148 side of the chain
+>> assuming it has sufficient economic support or if it's more profitable
+>> to mine.
+>> >
+>> > Even segwit2x is based on the assumption that all miners can reach
+>> > consensus. Break that assumption and segwit2x will have the same
+>> > problems
+>> > as UASF.
+>> segwit2x has more issues since the HF part requires users to reach
+>> consensus
+>> >
+>> >> This is largely an issue due to segwit2x's bundling, if the SW and HF
+>> >> part of segwit2x were unbundled then there would be no reason to delay
+>> >> BIP91 activation
+>> >
+>> > They are bundled. Segwit alone doesn't have the desired overwhelming
+>> > consensus, unless core wishes to fork 71% to 29%, and maybe not even
+>> > that
+>> > high. That's the technical reason, and they can't be unbundled without
+>> > breaking that consensus.
+>> That's a political reason not a technical reason.
+>> >
+>> > Jared
+>> >
+>> >
+>> > On Wed, Jun 7, 2017 at 4:11 PM, James Hilliard
+>> > <james.hilliard1@gmail.com>
+>> > wrote:
+>> >>
+>> >> On Wed, Jun 7, 2017 at 5:53 PM, Jared Lee Richardson
+>> >> <jaredr26@gmail.com>
+>> >> wrote:
+>> >> >> There are 2 primary factors involved here, economic support and
+>> >> > hashpower either of which is enough to make a permanent chain split
+>> >> > unlikely, miners will mine whichever chain is most profitable(see
+>> >> > ETH/ETC hashpower profitability equilibrium for an example of how
+>> >> > this
+>> >> > works in practice)
+>> >> >
+>> >> > That's not a comparable example. ETC did not face potentially years
+>> >> > of
+>> >> > slow
+>> >> > blocktimes before it normalized, whereas BIP148 is on track to do
+>> >> > exactly
+>> >> > that. Moreover, ETC represented a fundamental break from the
+>> >> > majority
+>> >> > consensus that could not be rectified, whereas BIP148 represents only
+>> >> > a
+>> >> > minority attempt to accelerate something that an overwhelming
+>> >> > majority
+>> >> > of
+>> >> > miners have already agreed to activate under segwit2x. Lastly ETC
+>> >> > was
+>> >> > required to add replay protection, just like any minority fork
+>> >> > proposed
+>> >> > by
+>> >> > any crypto-currency has been, something that BIP148 both lacks and
+>> >> > refuses
+>> >> > to add or even acknowledge the necessity of. Without replay
+>> >> > protection,
+>> >> > ETC
+>> >> > could not have become profitable enough to be a viable minority
+>> >> > chain.
+>> >> > If
+>> >> > BIP148's chain is not the majority chain and it does not have replay
+>> >> > protection, it will face the same problems, but that required replay
+>> >> > protection will turn it into a hardfork. This will be a very bad
+>> >> > position
+>> >> > for UASF supporters to find themselves in - Either hardfork and hope
+>> >> > the
+>> >> > price is higher and the majority converts, or die as the minority
+>> >> > chain
+>> >> > with
+>> >> > no reliable methods of economic conversion.
+>> >> Higher transaction fees on a minority chain can compensate miners for
+>> >> a lower price which would likely be enough to get the BIP148 chain to
+>> >> a difficulty reduction. BIP148 however is a consensus change that can
+>> >> be rectified if it gets more work, this would act as an additional
+>> >> incentive for mine the BIP148 side since there would be no wipeout
+>> >> risk there. ETC replay protection was done after the fork on an as
+>> >> needed basis(there are multiple reliable techniques that can be used
+>> >> to split UTXO's), the same can happen with BIP148 and it is easier to
+>> >> do with Bitcoin than with the ETH/ETC split IMO.
+>> >> >
+>> >> > I believe, but don't have data to back this, that most of the BIP148
+>> >> > insistence comes not from a legitimate attempt to gain consensus (or
+>> >> > else
+>> >> > they would either outright oppose segwit2mb for its hardfork, or they
+>> >> > would
+>> >> > outright support it), but rather from an attempt for BIP148
+>> >> > supporters
+>> >> > to
+>> >> > save face for BIP148 being a failure. If I'm correct, that's a
+>> >> > terrible
+>> >> > and
+>> >> > highly non-technical reason for segwit2mb to bend over backwards
+>> >> > attempting
+>> >> > to support BIP148's attempt to save face.
+>> >> A big reason BIP148 still has support is because up until SegWit
+>> >> actually activates there's no guarantee segwit2mb will actually have
+>> >> the necessary support to activate SegWit.
+>> >> >
+>> >> >> The main issue is just one of activation timelines, BIP91 as
+>> >> > is takes too long to activate unless started ahead of the existing
+>> >> > segwit2x schedule and it's unlikely that BIP148 will get pushed back
+>> >> > any further.
+>> >> >
+>> >> > Even if I'm not correct on the above, I and others find it hard to
+>> >> > accept
+>> >> > that this timeline conflict is segwit2x's fault. Segwit2x has both
+>> >> > some
+>> >> > flexibility and broad support that crosses contentious pro-segwit and
+>> >> > pro-blocksize-increase divisions that have existed for two years.
+>> >> > BIP148 is
+>> >> > attempting to hold segwit2x's timelines and code hostage by claiming
+>> >> > inflexibility and claiming broad support, and not only are neither of
+>> >> > those
+>> >> > assertions are backed by real data, BIP148 (by being so inflexible)
+>> >> > is
+>> >> > pushing a position that deepens the divides between those groups.
+>> >> > For
+>> >> > there
+>> >> > to be technical reasons for compatibility (so long as there are
+>> >> > tradeoffs,
+>> >> > which there are), there needs to be hard data showing that BIP148 is
+>> >> > a
+>> >> > viable minority fork that won't simply die off on its own.
+>> >> This is largely an issue due to segwit2x's bundling, if the SW and HF
+>> >> part of segwit2x were unbundled then there would be no reason to delay
+>> >> BIP91 activation, this is especially a problem since it takes a good
+>> >> deal of time to properly code and test a HF. Unfortunately segwit2x
+>> >> has been quite inflexible in regards to the bundling aspect even
+>> >> though there are clearly no technical reasons for it to be there.
+>> >> >
+>> >> > Jared
+>> >> >
+>> >> >
+>> >> > On Wed, Jun 7, 2017 at 3:23 PM, James Hilliard
+>> >> > <james.hilliard1@gmail.com>
+>> >> > wrote:
+>> >> >>
+>> >> >> On Wed, Jun 7, 2017 at 4:50 PM, Jared Lee Richardson
+>> >> >> <jaredr26@gmail.com>
+>> >> >> wrote:
+>> >> >> > Could this risk mitigation measure be an optional flag? And if
+>> >> >> > so,
+>> >> >> > could it+BIP91 signal on a different bit than bit4?
+>> >> >> It's fairly trivial for miners to signal for BIP91 on bit4 or a
+>> >> >> different bit at the same time as the code is trivial enough to
+>> >> >> combine
+>> >> >> >
+>> >> >> > The reason being, if for some reason the segwit2x activation
+>> >> >> > cannot
+>> >> >> > take place in time, it would be preferable for miners to have a
+>> >> >> > more
+>> >> >> > standard approach to activation that requires stronger consensus
+>> >> >> > and
+>> >> >> > may be more forgiving than BIP148. If the segwit2x activation is
+>> >> >> > on
+>> >> >> > time to cooperate with BIP148, it could be signaled through the
+>> >> >> > non-bit4 approach and everything could go smoothly. Thoughts on
+>> >> >> > that
+>> >> >> > idea? It may add more complexity and more developer time, but may
+>> >> >> > also address your concerns among others.
+>> >> >> This does give miners another approach to activate segwit ahead of
+>> >> >> BIP148, if segwit2x activation is rolled out and activated
+>> >> >> immediately
+>> >> >> then this would not be needed however based on the timeline here
+>> >> >> https://segwit2x.github.io/ it would not be possible for BIP91 to
+>> >> >> enforce mandatory signalling ahead of BIP148. Maybe that can be
+>> >> >> changed though, I've suggested an immediate rollout with a
+>> >> >> placeholder
+>> >> >> client timeout instead of the HF code initially in order to
+>> >> >> accelerate
+>> >> >> that.
+>> >> >> >
+>> >> >> >> Since this BIP
+>> >> >> >> only activates with a clear miner majority it should not increase
+>> >> >> >> the
+>> >> >> >> risk of an extended chain split.
+>> >> >> >
+>> >> >> > The concern I'm raising is more about the psychology of giving
+>> >> >> > BIP148
+>> >> >> > a sense of safety that may not be valid. Without several more
+>> >> >> > steps,
+>> >> >> > BIP148 is definitely on track to be a risky chainsplit, and
+>> >> >> > without
+>> >> >> > segwit2x it will almost certainly be a small minority chain.
+>> >> >> > (Unless
+>> >> >> > the segwit2x compromise falls apart before then, and even in that
+>> >> >> > case
+>> >> >> > it is likely to be a minority chain)
+>> >> >> There are 2 primary factors involved here, economic support and
+>> >> >> hashpower either of which is enough to make a permanent chain split
+>> >> >> unlikely, miners will mine whichever chain is most profitable(see
+>> >> >> ETH/ETC hashpower profitability equilibrium for an example of how
+>> >> >> this
+>> >> >> works in practice) however there may be lag time immediately after
+>> >> >> the
+>> >> >> split if there is an economic majority but not a hashpower majority
+>> >> >> initially. This is risk mitigation that only requires miners support
+>> >> >> however. The main issue is just one of activation timelines, BIP91
+>> >> >> as
+>> >> >> is takes too long to activate unless started ahead of the existing
+>> >> >> segwit2x schedule and it's unlikely that BIP148 will get pushed back
+>> >> >> any further.
+>> >> >> >
+>> >> >> > Jared
+>> >> >> >
+>> >> >> >
+>> >> >> > On Wed, Jun 7, 2017 at 2:42 PM, James Hilliard
+>> >> >> > <james.hilliard1@gmail.com> wrote:
+>> >> >> >> I don't really see how this would increase the likelihood of an
+>> >> >> >> extended chain split assuming BIP148 is going to have
+>> >> >> >> non-insignificant economic backing. This BIP is designed to
+>> >> >> >> provide
+>> >> >> >> a
+>> >> >> >> risk mitigation measure that miners can safely deploy. Since this
+>> >> >> >> BIP
+>> >> >> >> only activates with a clear miner majority it should not increase
+>> >> >> >> the
+>> >> >> >> risk of an extended chain split. At this point it is not
+>> >> >> >> completely
+>> >> >> >> clear how much economic support there is for BIP148 but support
+>> >> >> >> certainly seems to be growing and we have nearly 2 months until
+>> >> >> >> BIP148
+>> >> >> >> activation. I intentionally used a shorter activation period here
+>> >> >> >> so
+>> >> >> >> that decisions by miners can be made close to the BIP148
+>> >> >> >> activation
+>> >> >> >> date.
+>> >> >> >>
+>> >> >> >> On Wed, Jun 7, 2017 at 4:29 PM, Jared Lee Richardson
+>> >> >> >> <jaredr26@gmail.com> wrote:
+>> >> >> >>> I think this BIP represents a gamble, and the gamble may not be
+>> >> >> >>> a
+>> >> >> >>> good
+>> >> >> >>> one. The gamble here is that if the segwit2x changes are rolled
+>> >> >> >>> out
+>> >> >> >>> on time, and if the signatories accept the bit4 + bit1 signaling
+>> >> >> >>> proposals within BIP91, the launch will go smoother, as
+>> >> >> >>> intended.
+>> >> >> >>> But
+>> >> >> >>> conversely, if either the segwit2x signatories balk about the
+>> >> >> >>> Bit1
+>> >> >> >>> signaling OR if the timelines for segwit2mb are missed even by a
+>> >> >> >>> bit,
+>> >> >> >>> it may cause the BIP148 chainsplit to be worse than it would be
+>> >> >> >>> without. Given the frequent concerns raised in multiple places
+>> >> >> >>> about
+>> >> >> >>> the aggressiveness of the segwit2x timelines, including the
+>> >> >> >>> non-hardfork timelines, this does not seem like a great gamble
+>> >> >> >>> to
+>> >> >> >>> be
+>> >> >> >>> making.
+>> >> >> >>>
+>> >> >> >>> The reason I say it may make the chainsplit be worse than it
+>> >> >> >>> would
+>> >> >> >>> otherwise be is that it may provide a false sense of safety for
+>> >> >> >>> BIP148
+>> >> >> >>> that currently does not currently exist(and should not, as it is
+>> >> >> >>> a
+>> >> >> >>> chainsplit). That sense of safety would only be legitimate if
+>> >> >> >>> the
+>> >> >> >>> segwit2x signatories were on board, and the segwit2x code
+>> >> >> >>> effectively
+>> >> >> >>> enforced BIP148 simultaneously, neither of which are guaranteed.
+>> >> >> >>> If
+>> >> >> >>> users and more miners had a false sense that BIP148 was *not*
+>> >> >> >>> going
+>> >> >> >>> to
+>> >> >> >>> chainsplit from default / segwit2x, they might not follow the
+>> >> >> >>> news
+>> >> >> >>> if
+>> >> >> >>> suddenly the segwit2x plan were delayed for a few days. While
+>> >> >> >>> any
+>> >> >> >>> additional support would definitely be cheered on by BIP148
+>> >> >> >>> supporters, the practical reality might be that this proposal
+>> >> >> >>> would
+>> >> >> >>> take BIP148 from the "unlikely to have any viable chain after
+>> >> >> >>> flag
+>> >> >> >>> day
+>> >> >> >>> without segwit2x" category into the "small but viable minority
+>> >> >> >>> chain"
+>> >> >> >>> category, and even worse, it might strengthen the chainsplit
+>> >> >> >>> just
+>> >> >> >>> days
+>> >> >> >>> before segwit is activated on BOTH chains, putting the BIP148
+>> >> >> >>> supporters on the wrong pro-segwit, but still-viable chain.
+>> >> >> >>>
+>> >> >> >>> If Core had taken a strong stance to include BIP148 into the
+>> >> >> >>> client,
+>> >> >> >>> and if BIP148 support were much much broader, I would feel
+>> >> >> >>> differently
+>> >> >> >>> as the gamble would be more likely to discourage a chainsplit
+>> >> >> >>> (By
+>> >> >> >>> forcing the acceleration of segwit2x) rather than encourage it
+>> >> >> >>> (by
+>> >> >> >>> strengthening an extreme minority chainsplit that may wind up on
+>> >> >> >>> the
+>> >> >> >>> wrong side of two segwit-activated chains). As it stands now,
+>> >> >> >>> this
+>> >> >> >>> seems like a very dangerous attempt to compromise with a small
+>> >> >> >>> but
+>> >> >> >>> vocal group that are the ones creating the threat to begin with.
+>> >> >> >>>
+>> >> >> >>> Jared
+>> >> >> >>>
+>> >> >> >>> On Tue, Jun 6, 2017 at 5:56 PM, James Hilliard via bitcoin-dev
+>> >> >> >>> <bitcoin-dev@lists.linuxfoundation.org> wrote:
+>> >> >> >>>> Due to the proposed calendar(https://segwit2x.github.io/) for
+>> >> >> >>>> the
+>> >> >> >>>> SegWit2x agreement being too slow to activate SegWit mandatory
+>> >> >> >>>> signalling ahead of BIP148 using BIP91 I would like to propose
+>> >> >> >>>> another
+>> >> >> >>>> option that miners can use to prevent a chain split ahead of
+>> >> >> >>>> the
+>> >> >> >>>> Aug
+>> >> >> >>>> 1st BIP148 activation date.
+>> >> >> >>>>
+>> >> >> >>>> The splitprotection soft fork is essentially BIP91 but using
+>> >> >> >>>> BIP8
+>> >> >> >>>> instead of BIP9 with a lower activation threshold and immediate
+>> >> >> >>>> mandatory signalling lock-in. This allows for a majority of
+>> >> >> >>>> miners
+>> >> >> >>>> to
+>> >> >> >>>> activate mandatory SegWit signalling and prevent a potential
+>> >> >> >>>> chain
+>> >> >> >>>> split ahead of BIP148 activation.
+>> >> >> >>>>
+>> >> >> >>>> This BIP allows for miners to respond to market forces quickly
+>> >> >> >>>> ahead
+>> >> >> >>>> of BIP148 activation by signalling for splitprotection. Any
+>> >> >> >>>> miners
+>> >> >> >>>> already running BIP148 should be encouraged to use
+>> >> >> >>>> splitprotection.
+>> >> >> >>>>
+>> >> >> >>>> <pre>
+>> >> >> >>>> BIP: splitprotection
+>> >> >> >>>> Layer: Consensus (soft fork)
+>> >> >> >>>> Title: User Activated Soft Fork Split Protection
+>> >> >> >>>> Author: James Hilliard <james.hilliard1@gmail.com>
+>> >> >> >>>> Comments-Summary: No comments yet.
+>> >> >> >>>> Comments-URI:
+>> >> >> >>>> Status: Draft
+>> >> >> >>>> Type: Standards Track
+>> >> >> >>>> Created: 2017-05-22
+>> >> >> >>>> License: BSD-3-Clause
+>> >> >> >>>> CC0-1.0
+>> >> >> >>>> </pre>
+>> >> >> >>>>
+>> >> >> >>>> ==Abstract==
+>> >> >> >>>>
+>> >> >> >>>> This document specifies a coordination mechanism for a simple
+>> >> >> >>>> majority
+>> >> >> >>>> of miners to prevent a chain split ahead of BIP148 activation.
+>> >> >> >>>>
+>> >> >> >>>> ==Definitions==
+>> >> >> >>>>
+>> >> >> >>>> "existing segwit deployment" refer to the BIP9 "segwit"
+>> >> >> >>>> deployment
+>> >> >> >>>> using bit 1, between November 15th 2016 and November 15th 2017
+>> >> >> >>>> to
+>> >> >> >>>> activate BIP141, BIP143 and BIP147.
+>> >> >> >>>>
+>> >> >> >>>> ==Motivation==
+>> >> >> >>>>
+>> >> >> >>>> The biggest risk of BIP148 is an extended chain split, this BIP
+>> >> >> >>>> provides a way for a simple majority of miners to eliminate
+>> >> >> >>>> that
+>> >> >> >>>> risk.
+>> >> >> >>>>
+>> >> >> >>>> This BIP provides a way for a simple majority of miners to
+>> >> >> >>>> coordinate
+>> >> >> >>>> activation of the existing segwit deployment with less than 95%
+>> >> >> >>>> hashpower before BIP148 activation. Due to time constraints
+>> >> >> >>>> unless
+>> >> >> >>>> immediately deployed BIP91 will likely not be able to enforce
+>> >> >> >>>> mandatory signalling of segwit before the Aug 1st activation of
+>> >> >> >>>> BIP148. This BIP provides a method for rapid miner activation
+>> >> >> >>>> of
+>> >> >> >>>> SegWit mandatory signalling ahead of the BIP148 activation
+>> >> >> >>>> date.
+>> >> >> >>>> Since
+>> >> >> >>>> the primary goal of this BIP is to reduce the chance of an
+>> >> >> >>>> extended
+>> >> >> >>>> chain split as much as possible we activate using a simple
+>> >> >> >>>> miner
+>> >> >> >>>> majority of 65% over a 504 block interval rather than a higher
+>> >> >> >>>> percentage. This BIP also allows miners to signal their
+>> >> >> >>>> intention
+>> >> >> >>>> to
+>> >> >> >>>> run BIP148 in order to prevent a chain split.
+>> >> >> >>>>
+>> >> >> >>>> ==Specification==
+>> >> >> >>>>
+>> >> >> >>>> While this BIP is active, all blocks must set the nVersion
+>> >> >> >>>> header
+>> >> >> >>>> top
+>> >> >> >>>> 3 bits to 001 together with bit field (1<<1) (according to the
+>> >> >> >>>> existing segwit deployment). Blocks that do not signal as
+>> >> >> >>>> required
+>> >> >> >>>> will be rejected.
+>> >> >> >>>>
+>> >> >> >>>> ==Deployment==
+>> >> >> >>>>
+>> >> >> >>>> This BIP will be deployed by "version bits" with a 65%(this can
+>> >> >> >>>> be
+>> >> >> >>>> adjusted if desired) activation threshold BIP9 with the name
+>> >> >> >>>> "splitprotecion" and using bit 2.
+>> >> >> >>>>
+>> >> >> >>>> This BIP starts immediately and is a BIP8 style soft fork since
+>> >> >> >>>> mandatory signalling will start on midnight August 1st 2017
+>> >> >> >>>> (epoch
+>> >> >> >>>> time 1501545600) regardless of whether or not this BIP has
+>> >> >> >>>> reached
+>> >> >> >>>> its
+>> >> >> >>>> own signalling threshold. This BIP will cease to be active when
+>> >> >> >>>> segwit
+>> >> >> >>>> is locked-in.
+>> >> >> >>>>
+>> >> >> >>>> === Reference implementation ===
+>> >> >> >>>>
+>> >> >> >>>> <pre>
+>> >> >> >>>> // Check if Segregated Witness is Locked In
+>> >> >> >>>> bool IsWitnessLockedIn(const CBlockIndex* pindexPrev, const
+>> >> >> >>>> Consensus::Params& params)
+>> >> >> >>>> {
+>> >> >> >>>> LOCK(cs_main);
+>> >> >> >>>> return (VersionBitsState(pindexPrev, params,
+>> >> >> >>>> Consensus::DEPLOYMENT_SEGWIT, versionbitscache) ==
+>> >> >> >>>> THRESHOLD_LOCKED_IN);
+>> >> >> >>>> }
+>> >> >> >>>>
+>> >> >> >>>> // SPLITPROTECTION mandatory segwit signalling.
+>> >> >> >>>> if ( VersionBitsState(pindex->pprev,
+>> >> >> >>>> chainparams.GetConsensus(),
+>> >> >> >>>> Consensus::DEPLOYMENT_SPLITPROTECTION, versionbitscache) ==
+>> >> >> >>>> THRESHOLD_LOCKED_IN &&
+>> >> >> >>>> !IsWitnessLockedIn(pindex->pprev,
+>> >> >> >>>> chainparams.GetConsensus())
+>> >> >> >>>> &&
+>> >> >> >>>> // Segwit is not locked in
+>> >> >> >>>> !IsWitnessEnabled(pindex->pprev,
+>> >> >> >>>> chainparams.GetConsensus())
+>> >> >> >>>> )
+>> >> >> >>>> //
+>> >> >> >>>> and is not active.
+>> >> >> >>>> {
+>> >> >> >>>> bool fVersionBits = (pindex->nVersion &
+>> >> >> >>>> VERSIONBITS_TOP_MASK)
+>> >> >> >>>> ==
+>> >> >> >>>> VERSIONBITS_TOP_BITS;
+>> >> >> >>>> bool fSegbit = (pindex->nVersion &
+>> >> >> >>>> VersionBitsMask(chainparams.GetConsensus(),
+>> >> >> >>>> Consensus::DEPLOYMENT_SEGWIT)) != 0;
+>> >> >> >>>> if (!(fVersionBits && fSegbit)) {
+>> >> >> >>>> return state.DoS(0, error("ConnectBlock(): relayed
+>> >> >> >>>> block
+>> >> >> >>>> must
+>> >> >> >>>> signal for segwit, please upgrade"), REJECT_INVALID,
+>> >> >> >>>> "bad-no-segwit");
+>> >> >> >>>> }
+>> >> >> >>>> }
+>> >> >> >>>>
+>> >> >> >>>> // BIP148 mandatory segwit signalling.
+>> >> >> >>>> int64_t nMedianTimePast = pindex->GetMedianTimePast();
+>> >> >> >>>> if ( (nMedianTimePast >= 1501545600) && // Tue 01 Aug 2017
+>> >> >> >>>> 00:00:00
+>> >> >> >>>> UTC
+>> >> >> >>>> (nMedianTimePast <= 1510704000) && // Wed 15 Nov 2017
+>> >> >> >>>> 00:00:00
+>> >> >> >>>> UTC
+>> >> >> >>>> (!IsWitnessLockedIn(pindex->pprev,
+>> >> >> >>>> chainparams.GetConsensus())
+>> >> >> >>>> &&
+>> >> >> >>>> // Segwit is not locked in
+>> >> >> >>>> !IsWitnessEnabled(pindex->pprev,
+>> >> >> >>>> chainparams.GetConsensus())) )
+>> >> >> >>>> // and is not active.
+>> >> >> >>>> {
+>> >> >> >>>> bool fVersionBits = (pindex->nVersion &
+>> >> >> >>>> VERSIONBITS_TOP_MASK)
+>> >> >> >>>> ==
+>> >> >> >>>> VERSIONBITS_TOP_BITS;
+>> >> >> >>>> bool fSegbit = (pindex->nVersion &
+>> >> >> >>>> VersionBitsMask(chainparams.GetConsensus(),
+>> >> >> >>>> Consensus::DEPLOYMENT_SEGWIT)) != 0;
+>> >> >> >>>> if (!(fVersionBits && fSegbit)) {
+>> >> >> >>>> return state.DoS(0, error("ConnectBlock(): relayed
+>> >> >> >>>> block
+>> >> >> >>>> must
+>> >> >> >>>> signal for segwit, please upgrade"), REJECT_INVALID,
+>> >> >> >>>> "bad-no-segwit");
+>> >> >> >>>> }
+>> >> >> >>>> }
+>> >> >> >>>> </pre>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>> https://github.com/bitcoin/bitcoin/compare/0.14...jameshilliard:splitprotection-v0.14.1
+>> >> >> >>>>
+>> >> >> >>>> ==Backwards Compatibility==
+>> >> >> >>>>
+>> >> >> >>>> This deployment is compatible with the existing "segwit" bit 1
+>> >> >> >>>> deployment scheduled between midnight November 15th, 2016 and
+>> >> >> >>>> midnight
+>> >> >> >>>> November 15th, 2017. This deployment is also compatible with
+>> >> >> >>>> the
+>> >> >> >>>> existing BIP148 deployment. This BIP is compatible with BIP91
+>> >> >> >>>> only
+>> >> >> >>>> if
+>> >> >> >>>> BIP91 activates before it and before BIP148. Miners will need
+>> >> >> >>>> to
+>> >> >> >>>> upgrade their nodes to support splitprotection otherwise they
+>> >> >> >>>> may
+>> >> >> >>>> build on top of an invalid block. While this bip is active
+>> >> >> >>>> users
+>> >> >> >>>> should either upgrade to splitprotection or wait for additional
+>> >> >> >>>> confirmations when accepting payments.
+>> >> >> >>>>
+>> >> >> >>>> ==Rationale==
+>> >> >> >>>>
+>> >> >> >>>> Historically we have used IsSuperMajority() to activate soft
+>> >> >> >>>> forks
+>> >> >> >>>> such as BIP66 which has a mandatory signalling requirement for
+>> >> >> >>>> miners
+>> >> >> >>>> once activated, this ensures that miners are aware of new rules
+>> >> >> >>>> being
+>> >> >> >>>> enforced. This technique can be leveraged to lower the
+>> >> >> >>>> signalling
+>> >> >> >>>> threshold of a soft fork while it is in the process of being
+>> >> >> >>>> deployed
+>> >> >> >>>> in a backwards compatible way. We also use a BIP8 style timeout
+>> >> >> >>>> to
+>> >> >> >>>> ensure that this BIP is compatible with BIP148 and that BIP148
+>> >> >> >>>> compatible mandatory signalling activates regardless of miner
+>> >> >> >>>> signalling levels.
+>> >> >> >>>>
+>> >> >> >>>> By orphaning non-signalling blocks during the BIP9 bit 1
+>> >> >> >>>> "segwit"
+>> >> >> >>>> deployment, this BIP can cause the existing "segwit" deployment
+>> >> >> >>>> to
+>> >> >> >>>> activate without needing to release a new deployment. As we
+>> >> >> >>>> approach
+>> >> >> >>>> BIP148 activation it may be desirable for a majority of miners
+>> >> >> >>>> to
+>> >> >> >>>> have
+>> >> >> >>>> a method that will ensure that there is no chain split.
+>> >> >> >>>>
+>> >> >> >>>> ==References==
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>> *[https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-March/013714.html
+>> >> >> >>>> Mailing list discussion]
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>>
+>> >> >> >>>> *[https://github.com/bitcoin/bitcoin/blob/v0.6.0/src/main.cpp#L1281-L1283
+>> >> >> >>>> P2SH flag day activation]
+>> >> >> >>>> *[[bip-0009.mediawiki|BIP9 Version bits with timeout and
+>> >> >> >>>> delay]]
+>> >> >> >>>> *[[bip-0016.mediawiki|BIP16 Pay to Script Hash]]
+>> >> >> >>>> *[[bip-0091.mediawiki|BIP91 Reduced threshold Segwit MASF]]
+>> >> >> >>>> *[[bip-0141.mediawiki|BIP141 Segregated Witness (Consensus
+>> >> >> >>>> layer)]]
+>> >> >> >>>> *[[bip-0143.mediawiki|BIP143 Transaction Signature Verification
+>> >> >> >>>> for
+>> >> >> >>>> Version 0 Witness Program]]
+>> >> >> >>>> *[[bip-0147.mediawiki|BIP147 Dealing with dummy stack element
+>> >> >> >>>> malleability]]
+>> >> >> >>>> *[[bip-0148.mediawiki|BIP148 Mandatory activation of segwit
+>> >> >> >>>> deployment]]
+>> >> >> >>>> *[[bip-0149.mediawiki|BIP149 Segregated Witness (second
+>> >> >> >>>> deployment)]]
+>> >> >> >>>> *[https://bitcoincore.org/en/2016/01/26/segwit-benefits/ Segwit
+>> >> >> >>>> benefits]
+>> >> >> >>>>
+>> >> >> >>>> ==Copyright==
+>> >> >> >>>>
+>> >> >> >>>> This document is dual licensed as BSD 3-clause, and Creative
+>> >> >> >>>> Commons
+>> >> >> >>>> CC0 1.0 Universal.
+>> >> >> >>>> _______________________________________________
+>> >> >> >>>> bitcoin-dev mailing list
+>> >> >> >>>> bitcoin-dev@lists.linuxfoundation.org
+>> >> >> >>>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
+>> >> >
+>> >> >
+>> >
+>> >
+>
+>
+