Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Ypttq-0003GJ-CP for bitcoin-development@lists.sourceforge.net; Wed, 06 May 2015 07:37:46 +0000 Received: from mail-wi0-f177.google.com ([209.85.212.177]) by sog-mx-2.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1Yptto-0007FO-1l for bitcoin-development@lists.sourceforge.net; Wed, 06 May 2015 07:37:46 +0000 Received: by widdi4 with SMTP id di4so190702853wid.0 for ; Wed, 06 May 2015 00:37:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=fsAcHvmBIz4mb1NtfzhkcUXH+fsHYzfLPPCxlctcMjk=; b=DZBGAKHImQ4a+9XNWLYxe+M46cJ6uVRvZjQhmxGGcfEZ4zPt6zlGcArBfg10IPfHY7 1wgXaYl9Ifw4vRI04geh/90xSY2Q6SmOFrw4oqIIWbAk1jRV/hFr4PnZiV++hAlEwlnI KYoQFv+yCzGmV4Js3I40cwJT8MdITs+TU7xzr5QhVz21fIYCIVjMKqFk/1j6ajsfcFQM BYcCIhwCVv34002zAXncOnkaIUWiAJP+SmqDvSF+q5uY9nQNfZkv9xHhfwdkcLMx7VJV aSyaHFlVhAxYqblobGvtWUXoBS94mBzAC0DHZwF1KTtcItd8vedlX81bgz7CucLcgTj1 u3FA== X-Gm-Message-State: ALoCoQlYAXTk0QEPCLCMWTNoK2HPSVCKKVNMqp/IisPpLdGZSE9bKz4/ujFomQvlioxpCAkhoxVU MIME-Version: 1.0 X-Received: by 10.180.37.73 with SMTP id w9mr2401796wij.7.1430897857968; Wed, 06 May 2015 00:37:37 -0700 (PDT) Received: by 10.194.124.2 with HTTP; Wed, 6 May 2015 00:37:37 -0700 (PDT) In-Reply-To: References: <20141001130826.GM28710@savin.petertodd.org> <55075795.20904@bluematt.me> <20150421075912.GA25282@savin.petertodd.org> <5546D653.4070404@bluematt.me> Date: Wed, 6 May 2015 09:37:37 +0200 Message-ID: From: =?UTF-8?B?Sm9yZ2UgVGltw7Nu?= To: Tier Nolan Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. X-Headers-End: 1Yptto-0007FO-1l Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] Relative CHECKLOCKTIMEVERIFY (was CLTV proposal) X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 May 2015 07:37:46 -0000 On Tue, May 5, 2015 at 10:38 PM, Tier Nolan wrote: > I think that should be greater than in the comparison? You want it to fa= il > if the the height of the UTXO plus the sequence number is greater than th= e > spending block's height. Yes, sorry, I changed it just before sending from "what needs to be satisfied for the validation error to trigger" to "what needs to be satisfied for the tx to be valid". You're right. > There should be an exception for final inputs. Otherwise, they will coun= t > as relative locktime of 0xFFFFFFFF. Is this check handled elsewhere? > > if (!tx.vin[i].IsFinal() && nSpendHeight < coins->nHeight + > tx.vin[i].nSequence) > return state.Invalid(false, REJECT_INVALID, > "bad-txns-non-final-input"); Yes, this would be the simplest solution. Another option would be to have a new tx version in which IsFinal(CTransaction) doesn't check the inputs sequences to be 0xFFFFFFFF for the tx to be final. > Is the intention to let the script check the sequence number? > > OP_RELATIVELOCKTIMEVERIFY > > would check if is less than or equal to the sequence number. Yes. > It does make sequence mean something completely different from before. > Invalidating previously valid transactions has the potential to reduce > confidence in the currency. Well, the semantics of nSequence don't really change completely. In fact, one could argue that this put it closer to its original semantics. But in any case, yes, already signed transaction should remain valid. No transaction would become invalid, just non-final. As soon as the height of its inputs plus their respective nSquences get higher than current height they will become final again. I cannot think of any use case where a tx becomes invalid forever. Also, probably most people have usedrelatively low values for nSequence given the original semantics, just like the relative lock nSquence will likely be used as well. > A workaround would be to have a way to enable it in the sigScript by > extending Peter Todd's suggestion in the other email chain. > > <1> OP_NOP2 means OP_CHECKLOCKTIMEVERIFY (absolute) > <2> OP_NOP2 means OP_RELATIVECHECKLOCKTIMEVERIFY > > <3> OP_NOP2 means OP_SEQUENCE_AS_RELATIVE_HEIGHT To be clear, this proposal is supposed to replace RCLTV, so there would still be 2 options. But please let's imagine we have infinite opcodes in this thread and let the "should we design an uglier scripting langues to save opcodes?" question in the other one. > OP_SEQUENCE_AS_RELATIVE_HEIGHT would cause the script to fail unless it w= as > the first opcode in the script. It acts as a flag to enable using the > sequence number as for relative block height. > > This can be achieved using a simple pattern match. > > bool CScript::IsSequenceAsRelativeHeight() const > { > // Extra-fast test for pay-to-script-hash CScripts: > return (this->size() >=3D 4 && > this->at(0) =3D=3D OP_PUSHDATA1 && > this->at(1) =3D=3D 1 && > this->at(2) =3D=3D 0xFF && > this->at(3) =3D=3D OP_NOP2); > } > > if (!tx.vin[i].IsFinal() && tx.vin[i].scriptSig.IsSequenceAsRelativeHeigh= t() > && nSpendHeight < coins->nHeight + tx.vin[i].nSequence) > return state.Invalid(false, REJECT_INVALID, > "bad-txns-non-final-input"); This gives you less flexibility and I don't think it's necessary. Please let's try to avoid this if it's possible. > On Mon, May 4, 2015 at 12:24 PM, Jorge Tim=C3=B3n wrot= e: >> >> for (unsigned int i =3D 0; i < tx.vin.size(); i++) { >> // ... >> if (coins->nHeight + tx.vin[i].nSequence < nSpendHeight) >> return state.Invalid(false, REJECT_INVALID, >> "bad-txns-non-final-input"); >> // ... >> } > > > > > -------------------------------------------------------------------------= ----- > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development >