public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Erik Aronesty <erik@q32•com>
To: Samson Mow <samson.mow@gmail•com>,
	 Bitcoin Protocol Discussion
	<bitcoin-dev@lists•linuxfoundation.org>
Subject: Re: [bitcoin-dev] Segwit2Mb - combined soft/hard fork - Request For Comments
Date: Fri, 2 Jun 2017 16:04:16 -0400	[thread overview]
Message-ID: <CAJowKgLA94HirOrEJ7MMtxdLVYFNXV1aB5j=W+bGyckubV1xhw@mail.gmail.com> (raw)
In-Reply-To: <CAAWeQ5ebqmmGcYHtoizKa6FXYyvyPSBM09kpzeGOEqJj4=ERZg@mail.gmail.com>

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

From me to you ...this proposal doesn't lock in anything.   We could just
merge it with some small pushback - allow segwit to activate in Aug, then
"upgrade" the hard fork to be "spoonet in 18 months" instead.

On Fri, Mar 31, 2017 at 11:03 PM, Samson Mow via bitcoin-dev <
bitcoin-dev@lists•linuxfoundation.org> wrote:

> A compromise for the sake of compromise doesn't merit technical
> discussions. There are no benefits to be gained from a 2MB hard-fork at
> this time and it would impose an unnecessary cost to the ecosystem for
> testing and implementation.
>
> On Fri, Mar 31, 2017 at 3:13 PM, Sergio Demian Lerner via bitcoin-dev <
> bitcoin-dev@lists•linuxfoundation.org> wrote:
>
>>
>>
>> On Fri, Mar 31, 2017 at 6:22 PM, Matt Corallo <lf-lists@mattcorallo•com>
>> wrote:
>>
>>> Hey Sergio,
>>>
>>> You appear to have ignored the last two years of Bitcoin hardfork
>>> research and understanding, recycling instead BIP 102 from 2015. There
>>> are many proposals which have pushed the state of hard fork research
>>> much further since then, and you may wish to read some of the posts on
>>> this mailing list listed at https://bitcoinhardforkresearch.github.io/
>>> and make further edits based on what you learn.
>>
>>
>> I've read every proposal that was published in the last two years and the
>> choice for NOT implementing any of the super cool research you cite is
>> intentional.
>>
>> We're in a deadlock and it seems we can't go forward adding more
>> functionality to segwit without the community approval (which include
>> miners). This is obvious to me.Then we have to go back.
>>
>> If this last resort solution is merged, we could go back to discuss
>> improvements with the
>>
>> Your goal of "avoid
>>> technical changes" appears to not have any basis outside of perceived
>>> compromise for compromise sake, only making such a hardfork riskier
>>> instead.
>>>
>>> You're are totally correct. It's a compromise for the compromise sake. I
>> couldn't have expressed it more clearly. However the only "riskier" element
>> is the hard forking date. We can move the date forward.
>>
>>
>>> At a minimum, in terms of pure technical changes, you should probably
>>> consider (probably among others):
>>>
>> a) Utilizing the "hard fork signaling bit" in the nVersion of the block.
>>>
>>
>> This I could consider, as it requires probably a single line of code.
>> Which BIP specifies this?
>>
>>
>>> b) Either limiting non-SegWit transactions in some way to fix the n**2
>>> sighash and FindAndDelete runtime and memory usage issues or fix them by
>>> utilizing the new sighash type which many wallets and projects have
>>> already implemented for SegWit in the spending of non-SegWit outputs.
>>>
>>
>> The Seghash problem has already been addressed by limiting the maximum
>> size of a transaction to 1 Mb.
>> The FindAndDelete problem has already been solved by the Core Developers,
>> so we don't have to worry about it anymore.
>>
>>
>>> c) Your really should have replay protection in any HF.
>>
>>
>> We could add a simple protection, although if we reach community
>> consensus and 95% of hashing power, does we really need to? Can the old
>> chain still be alive?
>> If more people ask for replay protection, I will merge Spoonet scheme or
>> develop the minimum possible replay protection (a simple signaling bit in
>> transaction version)
>>
>>
>>> d) You may wish to consider the possibility of tweaking the witness
>>> discount and possibly discounting other parts of the input - SegWit went
>>> a long ways towards making removal of elements from the UTXO set cheaper
>>> than adding them, but didn't quite get there, you should probably finish
>>> that job. This also provides additional tuneable parameters to allow you
>>> to increase the block size while not having a blowup in the worst-case
>>> block size.
>>>
>>
>> That is an interesting economic change and would be out of the scope of
>> segwit2mb.
>>
>>
>>> e) Additional commitments at the top of the merkle root - both for
>>> SegWit transactions and as additional space for merged mining and other
>>> commitments which we may wish to add in the future, this should likely
>>> be implemented an "additional header" ala Johnson Lau's Spoonnet
>>> proposal.
>>>
>>> That is an interesting technical improvement that is out of the scope of
>> segwit2mb.
>> We can keep discussing spoonet while we merge segwit2mb, as spoonnet
>> includes most of technical innovations.
>>
>>
>>> Additionally, I think your parameters here pose very significant risk to
>>> the Bitcoin ecosystem broadly.
>>>
>>> a) Activating a hard fork with less than 18/24 months (and even then...)
>>> from a fully-audited and supported release of full node software to
>>> activation date poses significant risks to many large software projects
>>> and users. I've repeatedly received feedback from various folks that a
>>> year or more is likely required in any hard fork to limit this risk, and
>>> limited pushback on that given the large increase which SegWit provides
>>> itself buying a ton of time.
>>>
>>> The feedback I received is slightly different from your feedback. Many
>> company CTOs have expressed that one year for a Bitcoin hard-fork was
>> period they could schedule a secure upgrade.
>>
>>
>>
>>> b) Having a significant discontinuity in block size increase only serves
>>> to confuse and mislead users and businesses, forcing them to rapidly
>>> adapt to a Bitcoin which changed overnight both by hardforking, and by
>>> fees changing suddenly. Instead, having the hard fork activate technical
>>> changes, and then slowly increasing the block size over the following
>>> several years keeps things nice and continuous and also keeps us from
>>> having to revisit ye old blocksize debate again six months after
>>> activation.
>>>
>>> This is something worth considering. There is the old Pieter BIP103
>> proposal has good parameters (17.7% per year).
>>
>> c) You should likely consider the effect of the many technological
>>> innovations coming down the pipe in the coming months. Technologies like
>>> Lightning, TumbleBit, and even your own RootStock could significantly
>>> reduce fee pressure as transactions move to much faster and more
>>> featureful systems.
>>>
>>> RSK sidechain team would have to take very tough decisions if Bitcoin
>> splits, as RSK platform cannot be pegged to two different cryptocurrencies.
>> We could launch two platforms, but RSK value proposition is "supporting the
>> advance of Bitcoin, the cryptocurrecy with highest network effect". You
>> understand that if Bitcoin splits Bitcoin BTC/BTU separately may cease to
>> be the cryptocurrencies with higher volume/market cap/network effect.
>>
>> Therefore all RSK people that I talked too would prefer to avoid a split
>> at all cost, reather that to be the winners of the scaling war.
>>
>>
>>
>>> On March 31, 2017 5:09:18 PM EDT, Sergio Demian Lerner via bitcoin-dev <
>>> bitcoin-dev@lists•linuxfoundation.org> wrote:
>>> >Hi everyone,
>>> >
>>> >Segwit2Mb is the project to merge into Bitcoin a minimal patch that
>>> >aims to
>>> >untangle the current conflict between different political positions
>>> >regarding segwit activation vs. an increase of the on-chain blockchain
>>> >space through a standard block size increase. It is not a new solution,
>>> >but
>>> >it should be seen more as a least common denominator.
>>> >
>>> >Segwit2Mb combines segwit as it is today in Bitcoin 0.14+ with a 2MB
>>> >block
>>> >size hard-fork activated ONLY if segwit activates (95% of miners
>>> >signaling), but at a fixed future date.
>>> >
>>> >The sole objective of this proposal is to re-unite the Bitcoin
>>> >community
>>> >and avoid a cryptocurrency split. Segwit2Mb does not aim to be best
>>> >possible technical solution to solve Bitcoin technical limitations.
>>> >However, this proposal does not imply a compromise to the future
>>> >scalability or decentralization of Bitcoin, as a small increase in
>>> >block
>>> >size has been proven by several core and non-core developers not to
>>> >affect
>>> >Bitcoin value propositions.
>>> >
>>> >In the worst case, a 2X block size increase has much lower economic
>>> >impact
>>> >than the last bitcoin halving (<10%), which succeeded without problem.
>>> >
>>> >On the other side, Segwit2Mb primary goal is to be minimalistic: in
>>> >this
>>> >patch some choices have been made to reduce the number of lines
>>> >modified in
>>> >the current Bitcoin Core state (master branch), instead of implementing
>>> >the
>>> >most elegant solution. This is because I want to reduce the time it
>>> >takes
>>> >for core programmers and reviewers to check the correctness of the
>>> >code,
>>> >and to report and correct bugs.
>>> >
>>> >The patch was built by forking the master branch of Bitcoin Core,
>>> >mixing a
>>> >few lines of code from Jeff Garzik's BIP102,  and defining a second
>>> >versionbits activation bit (bit 2) for the combined activation.
>>> >
>>> >The combined activation of segwit and 2Mb hard-fork nVersion bit is 2
>>> >(DEPLOYMENT_SEGWIT_AND_2MB_BLOCKS).
>>> >
>>> >This means that segwit can still be activated without the 2MB hard-fork
>>> >by
>>> >signaling bit 1 in nVersion  (DEPLOYMENT_SEGWIT).
>>> >
>>> >The tentative lock-in and hard-fork dates are the following:
>>> >
>>> >Bit 2 signaling StartTime = 1493424000; // April 29th, 2017
>>> >
>>> >Bit 2 signaling Timeout = 1503964800; // August 29th, 2017
>>> >
>>> >HardForkTime = 1513209600; // Thu, 14 Dec 2017 00:00:00 GMT
>>> >
>>> >
>>> >The hard-fork is conditional to 95% of the hashing power has approved
>>> >the
>>> >segwit2mb soft-fork and the segwit soft-fork has been activated (which
>>> >should occur 2016 blocks after its lock-in time)
>>> >
>>> >For more information on how soft-forks are signaled and activated, see
>>> >https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
>>> >
>>> >This means that segwit would be activated before 2Mb: this is
>>> >inevitable,
>>> >as versionbits have been designed to have fixed activation periods and
>>> >thresholds for all bits. Making segwit and 2Mb fork activate together
>>> >at a
>>> >delayed date would have required a major re-write of this code, which
>>> >would
>>> >contradict the premise of creating a minimalistic patch. However, once
>>> >segwit is activated, the hard-fork is unavoidable.
>>> >
>>> >Although I have coded a first version of the segwit2mb patch (which
>>> >modifies 120 lines of code, and adds 220 lines of testing code), I
>>> >would
>>> >prefer to wait to publish the source code until more comments have been
>>> >received from the community.
>>> >
>>> >To prevent worsening block verification time because of the O(N^2)
>>> >hashing
>>> >problem, the simple restriction that transactions cannot be larger than
>>> >1Mb
>>> >has been kept. Therefore the worse-case of block verification time has
>>> >only
>>> >doubled.
>>> >
>>> >Regarding the hard-fork activation date, I want to give enough time to
>>> >all
>>> >active economic nodes to upgrade. As of Fri Mar 31 2017,
>>> >https://bitnodes.21.co/nodes/ reports that 6332 out of 6955 nodes (91%)
>>> >have upgraded to post 0.12 versions. Upgrade to post 0.12 versions can
>>> >be
>>> >used to identify economic active nodes, because in the 0.12 release
>>> >dynamic
>>> >fees were introduced, and currently no Bitcoin automatic payment system
>>> >can
>>> >operate without automatic discovery of the current fee rate. A pre-0.12
>>> >would require constant manual intervention.
>>> >Therefore I conclude that no more than 91% of the network nodes
>>> >reported by
>>> >bitnodes are active economic nodes.
>>> >
>>> >As Bitcoin Core 0.12 was released on February 2016, the time for this
>>> >91%
>>> >to upgrade has been around one year (under a moderate pressure of
>>> >operational problems with unconfirmed transactions).
>>> >Therefore we can expect a similar or lower time to upgrade for a
>>> >hard-fork,
>>> >after developers have discussed and approved the patch, and it has been
>>> >reviewed and merged and 95% of the hashing power has signaled for it
>>> >(the
>>> >pressure not to upgrade being a complete halt of the operations).
>>> >However I
>>> >suggest that we discuss the hard-fork date and delay it if there is a
>>> >real
>>> >need to.
>>> >
>>> >Currently time works against the Bitcoin community, and so is delaying
>>> >a
>>> >compromise solution. Most of the community agree that halting the
>>> >innovation for several years is a very bad option.
>>> >
>>> >After the comments collected by the community, a BIP will be written
>>> >describing the resulting proposal details.
>>> >
>>> >If segwit2mb locks-in, before hard-fork occurs all bitcoin nodes should
>>> >be
>>> >updated to a Segwit2Mb enabled node to prevent them to be forked-away
>>> >in a
>>> >chain with almost no hashing-power.
>>> >
>>> >The proof of concept patch was made for Bitcoin Core but should be
>>> >easily
>>> >ported to other Bitcoin protocol implementations that already support
>>> >versionbits. Lightweight (SPV) wallets should not be affected as they
>>> >generally do not check the block size.
>>> >
>>> >I personally want to see the Lightning Network in action this year, use
>>> >the
>>> >non-malleability features in segwit, see the community discussing other
>>> >exciting soft-forks in the scaling roadmap, Schnorr sigs, drivechains
>>> >and
>>> >MAST.
>>> >
>>> >I want to see miners, developers and industry side-by-side pushing
>>> >Bitcoin
>>> >forward, to increase the value of Bitcoin and prevent high transaction
>>> >fees
>>> >to put out of business use-cases that could have high positive social
>>> >impact.
>>> >
>>> >I believe in the strength of a unified Bitcoin community. If you're a
>>> >developer, please give your opinion, suggest changes, audit it, and
>>> >take a
>>> >stand with me to unlock the current Bitcoin deadlock.
>>> >
>>> >Contributions to the segwit2mb project are welcomed and awaited. The
>>> >only
>>> >limitation is to stick to the principle that the patch should be as
>>> >simple
>>> >to audit as possible. As an example, I wouldn't feel confident if the
>>> >patch
>>> >modified more than ~150 lines of code.
>>> >
>>> >Improvements unrelated to a 2 Mb increase or segwit, as beneficial as
>>> >it
>>> >may be to Bitcoin, should not be part of segwit2Mb.
>>> >
>>> >This proposal should not prevent other consensus proposals to be
>>> >simultaneously merged: segwit2mb is a last resort solution in case we
>>> >can
>>> >not reach consensus on anything better.
>>> >
>>> >Again, the proposal is only a starting point: community feedback is
>>> >expected and welcomed.
>>> >
>>> >Regards,
>>> >Sergio Demian Lerner
>>>
>>
>>
>> _______________________________________________
>> 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: 19888 bytes --]

  parent reply	other threads:[~2017-06-02 20:04 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-31 21:09 Sergio Demian Lerner
2017-03-31 21:18 ` Matt Corallo
2017-03-31 21:22 ` praxeology_guy
2017-03-31 21:50   ` Sergio Demian Lerner
2017-03-31 21:22 ` Matt Corallo
2017-03-31 22:13   ` Sergio Demian Lerner
2017-04-01  3:03     ` Samson Mow
2017-04-01  3:35       ` Sergio Demian Lerner
2017-06-02 20:04       ` Erik Aronesty [this message]
2017-04-01  6:55   ` Jared Lee Richardson
2017-04-01 11:44     ` Sergio Demian Lerner
2017-04-01 12:33       ` Jorge Timón
2017-04-01 13:15         ` Natanael
2017-04-01 14:07           ` Jorge Timón
     [not found]             ` <CAAt2M1_gDzEuDLSvVsJARvdCAtUyM3Yuu7TT25sbm3L-Zi6+0Q@mail.gmail.com>
     [not found]               ` <CAAt2M18=Tjw+05QCv6G7Abv=idB6ONgU9xvtrR=fn731452_mg@mail.gmail.com>
2017-04-01 15:34                 ` Natanael
2017-04-02  4:57                   ` Jorge Timón
2017-04-02 10:03                     ` Natanael
2017-04-02 11:43                       ` Jorge Timón
2017-06-02 20:04         ` Erik Aronesty
2017-06-02 21:51           ` Sergio Demian Lerner
2017-06-03  0:53             ` Erik Aronesty
2017-06-03  2:03               ` Oliver Petruzel
2017-06-03 21:05               ` Oliver Petruzel
2017-04-03 14:40 ` Btc Drak
2017-04-06  2:27   ` Erik Aronesty
2017-04-06 20:58     ` Sergio Demian Lerner
2017-04-06 20:42   ` Sergio Demian Lerner
2017-04-06 21:03     ` Sergio Demian Lerner
2017-04-06 22:29     ` Aymeric Vitte
2017-06-02 12:29     ` R E Broadley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAJowKgLA94HirOrEJ7MMtxdLVYFNXV1aB5j=W+bGyckubV1xhw@mail.gmail.com' \
    --to=erik@q32$(echo .)com \
    --cc=bitcoin-dev@lists$(echo .)linuxfoundation.org \
    --cc=samson.mow@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox