Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id E94F33EE for ; Sat, 1 Aug 2015 13:05:29 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-io0-f181.google.com (mail-io0-f181.google.com [209.85.223.181]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 7B73710E for ; Sat, 1 Aug 2015 13:05:29 +0000 (UTC) Received: by ioeg141 with SMTP id g141so109327100ioe.3 for ; Sat, 01 Aug 2015 06:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=VjriGhlfx1l0i37N/qqAUOvZJDBidYRS87M/pbEbziI=; b=QXQfR0oY+ked91uLNVO2hIEv4HJc9JQoh4nKQ/gA1GbwyKmLkYBoqqx/xiR2uT4DyB Sy4q/ujhu8Ut+JMF7E2sG0hgJC195G6Ayd67yPD04NkTfzE+gEbrPm52xzE8wrif4oYn 1pRc8OxR6LDitQjGK9N4bolZygB1S4C5SCAvDIXHbAVDXbuffCcPFSReBhSIv92ew6tJ LPYp0z4SgU+7SuXKpaaxZadR3bZ2mSTRMjjdRYoqkLsXoewLtQggZ0Umk/FCypRcS1M9 DTuT4m5c4Uggv4VVW34eR3GanBCJMpVPzZDqbOvjNYY2GkmXFd3U2lBHJscrjdTy/sSj CkkA== MIME-Version: 1.0 X-Received: by 10.107.129.101 with SMTP id c98mr11790649iod.96.1438434328949; Sat, 01 Aug 2015 06:05:28 -0700 (PDT) Received: by 10.107.24.198 with HTTP; Sat, 1 Aug 2015 06:05:28 -0700 (PDT) In-Reply-To: <20150723192633.Horde.cGMZGo9Ji0-_9HZhcSUpww5@server47.web-hosting.com> References: <20150723162321.Horde.bphh__8AhyXa_m-YAYpiyw1@server47.web-hosting.com> <20150723192633.Horde.cGMZGo9Ji0-_9HZhcSUpww5@server47.web-hosting.com> Date: Sat, 1 Aug 2015 09:05:28 -0400 Message-ID: From: Michael Ruddy To: jl2012@xbt.hk Content-Type: text/plain; charset=UTF-8 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: bitcoin-dev@lists.linuxfoundation.org Subject: Re: [bitcoin-dev] BIP draft: Hardfork bit X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Development Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Aug 2015 13:05:30 -0000 >> Ok, so set the bit and then include BIP-GIT-HASH of the canonical BIP on >> github in the coinbase? > > > I guess the git hash is not known until the code is written? (correct me if > I'm wrong) As the coinbase message is consensus-critical, it must be part of > the source code and therefore you can't use any kind of hash of the code > itself (a chicken-and-egg problem) > I took Tier's comment to mean that the commit hash (taken from git) of the BIP for the particular hard fork being rolled out via your hard fork bit mechanism could be used in the coinbase. The commit for the BIP is separate from the commit for the code changes implementing it. By using the commit hash of the BIP, it means that the BIP cannot specify itself what to put in the coinbase. I'd suggest that your hard fork bit proposal allows BIP authors to specify, within a 20 byte limit (to let them ripe160 a message or something), the unique value to use. This would be just as well and would allow the specific hard fork BIPs to be updated without having to make code changes (e.g.- for simple grammatical updates, post deployment clarification, etc...). Perhaps more preferable, in order to keep the coinbases small, or, if you're worried about BIP authors using duplicate values, then just specify in your proposal that the coinbase message include "BIP" as BIP numbers are not going to be reused. All you are trying to achieve is something that can be uniquely pattern matched. Are the reasons for your use of the coinbase message 1) to guard against one or more hard forks piggy-backing on another's flag block, without prior collaboration, and 2) to have a nicer message in the alerting system? If so, you might want to spell that out in your proposal. At first, I was thinking that the coinbase thing was not entirely necessary since the possibility of multiple hard forks taking place concurrently is low. Multiple forking changes could be coordinated to all use the same possible voting mechanisms, median timestamp, and thus flag block. But if the concern is about competing hard forks where two or more forks abandon the original chain and attempt to use the same checkpoint block, then I can see why you'd need it. I was reading this proposal alongside another of your messages (https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-July/009520.html) proposing a version 0 or even a >1MB block in the specific case of a block size limit hard fork. I can see the >1MB flag block creating DoS banning problems. That's more of a practical issue than a consensus issue due to the existing mono-culture of full nodes. So, currently a >1MB flag block is not as appealing as a version 0 or this hard fork bit proposal. Besides the DoS ban, the >1MB proposal would mean that older nodes do not have the chance to notice a fork is happening (for alerting) as they would with a version 0 or hard fork bit. A version 0 flag block would not be able to contain any transactions unless the flag block version was assumed to be that of the most recent version at the time. This is because we'd want to enforce the rules of the previous soft forks that had been locked in. Other than that, the version 0 idea seems pretty similar to the hard fork bit proposal because you need more context than just the block itself to determine if it's a valid flag block (and this extra context is probably not great, but I don't have a better idea right now). Were those reasons part of why you progressed towards this hard fork bit proposal?