Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id B6DF7902 for ; Wed, 8 Mar 2017 21:21:04 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-qk0-f182.google.com (mail-qk0-f182.google.com [209.85.220.182]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id BC8531F6 for ; Wed, 8 Mar 2017 21:21:03 +0000 (UTC) Received: by mail-qk0-f182.google.com with SMTP id y76so88674390qkb.0 for ; Wed, 08 Mar 2017 13:21:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=achow101-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to; bh=IKr3w0smppWZu1mPMUSm8SWKZ5sEaWdHG7XDwOUQcjc=; b=g5sI0Ylz36qkGRCzZ95hxV2N0ZSDPPtmNEEEzZp/vqBqHjBNE91nXbDmApLxzPr78n in8XAkGv4zQVDvCMumMNBME6IZdx/rfpsuXQCC9haLANxt0E6X+jEcOxxr9s78/zshsC NDLhXL4GJ+bIZ6Nzk1G5NHcCROiAVjJZCydr0iVpuVf+p/rx5WvC5lCxBSkTo1JxAqRu VUxUFPX+R09uwOoBhZ7s5Xpys1eFyVGkwwoUZOKABeCkuQ03QNzdukkJEe/lZIiT8egE yjYyjAOa5YbVPUV397bvDfjY0Xw/3cCDTZwrci3RPd+pmPx4IXmKPkxzrJ4qahLWbobt mhyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to; bh=IKr3w0smppWZu1mPMUSm8SWKZ5sEaWdHG7XDwOUQcjc=; b=t3AP8KyYCBc/HEWLpumuxRRqVP7Nkf43BdFkFK9DEOHUuedd3g8cz0Occ6pWa3L968 Eme9w+uRVN7V/Mop0EfCL16GdjhdPK5IyN+gpdviGGmgRags/O0vgbv+nhWaCHtGP70o JSEQduEtScoRVHA4Q+iwf7IbQx+0tv8VHSRxCfGG5OtzFUXSA1Rf9Lv/f0wwYwxpx/3G biuZubtH556qBkf4/+RyGKg6px02doxoZYss2j11/iZ6FBuQNgZA0qVtcyRhMereNSqm ZaGP31/akUUCjyxw1Hn5SgQD7OiCgbX+JFtcgsVV8ZmGDniaeyrhWfbfqNU2Kbz5Ujv6 qBPQ== X-Gm-Message-State: AMke39mHLYIpfkBJtoCdVK4a6RS9jV5uFAmKFNgBu5WDwpbq9iSdyc2zjBQIm0PU9D2C+Q== X-Received: by 10.200.51.199 with SMTP id d7mr10276341qtb.94.1489008062738; Wed, 08 Mar 2017 13:21:02 -0800 (PST) Received: from [10.104.253.157] (129-2-180-252.wireless.umd.edu. [129.2.180.252]) by smtp.gmail.com with ESMTPSA id p48sm2939236qte.4.2017.03.08.13.21.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Mar 2017 13:21:02 -0800 (PST) To: Erik Aronesty , Bitcoin Protocol Discussion References: From: Andrew Chow Message-ID: <4db320cc-a165-c6bd-798b-ea85ee7fc9de@achow101.com> Date: Wed, 8 Mar 2017 16:21:15 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------0843B37B757B44BB392BD5DC" X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org X-Mailman-Approved-At: Wed, 08 Mar 2017 21:45:01 +0000 Subject: Re: [bitcoin-dev] High consensus fork system for scaling without limits X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Mar 2017 21:21:04 -0000 This is a multi-part message in MIME format. --------------0843B37B757B44BB392BD5DC Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Hi Erik, I have left you some comments below. Some general questions: How will you deal with excessive sighashing (i.e. massive transactions that include a lot of signature verification)? Presumably the sigops limit will increase proportionally? On 3/8/2017 2:42 PM, Erik Aronesty via bitcoin-dev wrote: > I woudl like to propose a BIP that works something like this: > > 1. Allow users to signal readiness by publishing an EB. This EB is an > absolute upper bound, and cannot be overridden by miners. Current EB > is 1MB, the status-quo. Maybe EB can be configured in a config file, > not a UI, since it's an "advanced" feature. What does EB stand for? What is the point of users publishing an EB? Is it for miners to determine what to set theirs to? If so, what about sybil attacks with fake nodes publishing EBs? How do users publish an EB? Do they use a transaction? Or is it something that goes into the User Agent? How high can the EB go? What is its maximum? > 2. Miners can also signal readiness by publishing their own EB in a block. > > 3. If 95% of blocks within a one month signalling period contain an EB > greater than the previous consensus EB, a fork date is triggered at 6 > months using the smallest 5th percentile EB published. (Other times > can be selected, but these are fairly conservative, looking for > feedback here). Miner signalling is ignored during the waiting period. > > 4. Block heights used for timing > > 5. After 6 months, any users which already have the new EB or greater > begin actually using it to validate transactions. Users use the EB or > the latest 95% consensus triggered value - whichever is less. This > means that the portion of users that originally signaled for the > increase do not have to upgrade their software to participate in the > hard fork. So anyone who does not change their EB are forked off of the network? If the EB is an "advanced feature", then most users are going to be leaving it at the default shipped with the software. That means that they will then be forked off of the network when they don't change the EB because it is an "advanced feature" that is more difficult to access. > > 6. Core can (optionally) ship a version with a default EB in-line with > their own perceived consensus. > > 7. Some sort of versioning system is used to ensure that the two > networks (old and new) are incompatible... blocks hashed in one cannot > be used in the other. I think this would require a soft fork beforehand in order to implement such a system. > > Any users which don't already have the new EB or greater should update > their EB within the 6 month period - or they will be excluded from the > majority fork. > > It would be in the best interests of major exchanges and users would > to publicly announce their EB's. Why? > > Users are free to safely set very high EB levels, based on their > current hardware and network speeds. These EB levels don't cause those > users to accept invalid blocks ever. They are safe because block size > transitions behave like normal hard forks with high miner consensus (95%). > > No code changes will be needed to fork the network as many times as > both users and miners feel the need to do so. (Bitcoin core is off > the hook for "scaling" issues...forever!) "Scaling" includes a lot more than just the block size. There is much more to scaling than just increasing the block size. > > If a smaller block size is needed, a reduced size can also be > published and agreed upon by *both* users and miners using a the same > mechanism, but the largest 5th percentile is used. In other words... > the requires broad consensus to deviate from status quo and fork. > > Any new node can simply follow these rules to validate all the blocks > in a chain... even if the sizes changes a lot (at most twice per year). What if the EB of a new node is set to be smaller than the current block size? > > > > > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev --------------0843B37B757B44BB392BD5DC Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: 8bit Hi Erik,

I have left you some comments below.

Some general questions:
How will you deal with excessive sighashing (i.e. massive transactions that include a lot of signature verification)?
Presumably the sigops limit will increase proportionally?

On 3/8/2017 2:42 PM, Erik Aronesty via bitcoin-dev wrote:
I woudl like to propose a BIP that works something like this:

1. Allow users to signal readiness by publishing an EB. This EB is an absolute upper bound, and cannot be overridden by miners. Current EB is 1MB, the status-quo.   Maybe EB can be configured in a config file, not a UI, since it's an "advanced" feature.
What does EB stand for?

What is the point of users publishing an EB? Is it for miners to determine what to set theirs to? If so, what about sybil attacks with fake nodes publishing EBs?

How do users publish an EB? Do they use a transaction? Or is it something that goes into the User Agent?

How high can the EB go? What is its maximum?
2. Miners can also signal readiness by publishing their own EB in a block.

3. If 95% of blocks within a one month signalling period contain an EB greater than the previous consensus EB, a fork date is triggered at 6 months using the smallest 5th percentile EB published. (Other times can be selected, but these are fairly conservative, looking for feedback here).    Miner signalling is ignored during the waiting period.

4. Block heights used for timing

5. After 6 months, any users which already have the new EB or greater begin actually using it to validate transactions. Users use the EB or the latest 95% consensus triggered value - whichever is less.   This means that the portion of users that originally signaled for the increase do not have to upgrade their software to participate in the hard fork.
So anyone who does not change their EB are forked off of the network? If the EB is an "advanced feature", then most users are going to be leaving it at the default shipped with the software. That means that they will then be forked off of the network when they don't change the EB because it is an "advanced feature" that is more difficult to access.

6. Core can (optionally) ship a version with a default EB in-line with their own perceived consensus.  

7. Some sort of versioning system is used to ensure that the two networks (old and new) are incompatible... blocks hashed in one cannot be used in the other.
I think this would require a soft fork beforehand in order to implement such a system.

Any users which don't already have the new EB or greater should update their EB within the 6 month period - or they will be excluded from the majority fork.

It would be in the best interests of major exchanges and users would to publicly announce their EB's.
Why?

Users are free to safely set very high EB levels, based on their current hardware and network speeds. These EB levels don't cause those users to accept invalid blocks ever. They are safe because block size transitions behave like normal hard forks with high miner consensus (95%).

No code changes will be needed to fork the network as many times as both users and miners feel the need to do so.  (Bitcoin core is off the hook for "scaling" issues...forever!)
"Scaling" includes a lot more than just the block size. There is much more to scaling than just increasing the block size.

If a smaller block size is needed, a reduced size can also be published and agreed upon by *both* users and miners using a the same mechanism, but the largest 5th percentile is used.   In other words... the requires broad consensus to deviate from status quo and fork.

Any new node can simply follow these rules to validate all the blocks in a chain... even if the sizes changes a lot (at most twice per year).
What if the EB of a new node is set to be smaller than the current block size?




_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

--------------0843B37B757B44BB392BD5DC--