public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: jl2012@xbt.hk
To: Mark Friedenbach <mark@friedenbach.org>
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] [BIP-draft] CHECKSEQUENCEVERIFY - An opcode for relative locktime
Date: Thu, 17 Sep 2015 03:43:02 -0400	[thread overview]
Message-ID: <52804bf0fb44a77efb3610e6bdf978e4@xbt.hk> (raw)
In-Reply-To: <CAOG=w-tuFtX2t+0FVfkoObw_a9-7j4LwX87YJU1n7adYu=DMdQ@mail.gmail.com>

How many years of relative lock time do we need? It really depends why 
we need a relative lock time in the first place, what what does it offer 
in addition to CHECKLOCKTIMEVERIFY. The only case I know is when the 
confirmation taking too long, CLTV may expire before the tx is 
confirmed. For use case like this, 1 year of relative lock time is much 
more than enough, since Bitcoin is basically worthless if it takes 
months to confirm a tx with a reasonable fee.

Is there any other use case of CSV that is irreplaceable by CLTV? There 
is only one example in the BIP CSV draft.

For the timebased relative lock time, 256 seconds of granularity is more 
than enough since the block interval is 600s. Although it is not 
impossible to reduce the block interval in the future, that will be a 
hardfork anyway and we may just hardfork BIP68/CSV at the same time.



Mark Friedenbach via bitcoin-dev 於 2015-08-27 19:32 寫到:
> So I've created 2 new repositories with changed rules regarding
> sequencenumbers:
> 
> https://github.com/maaku/bitcoin/tree/sequencenumbers2 [2]
> 
> This repository inverts (un-inverts?) the sequence number. nSequence=1
> means 1 block relative lock-height. nSequence=LOCKTIME_THRESHOLD means
> 1 second relative lock-height. nSequence>=0x80000000 (most significant
> bit set) is not interpreted as a relative lock-time.
> 
> https://github.com/maaku/bitcoin/tree/sequencenumbers3 [3]
> 
> This repository not only inverts the sequence number, but also
> interprets it as a fixed-point number. This allows up to 5 year
> relative lock times using blocks as units, and saves 12 low-order bits
> for future use. Or, up to about 2 year relative lock times using
> seconds as units, and saves 4 bits for future use without second-level
> granularity. More bits could be recovered from time-based locktimes by
> choosing a higher granularity (a soft-fork change if done correctly).
> 
> On Tue, Aug 25, 2015 at 3:08 PM, Mark Friedenbach
> <mark@friedenbach.org> wrote:
> 
>> To follow up on this, let's say that you want to be able to have up
>> to 1 year relative lock-times. This choice is somewhat arbitrary and
>> what I would like some input on, but I'll come back to this point.
>> 
>> * 1 bit is necessary to enable/disable relative lock-time.
>> 
>> * 1 bit is necessary to indicate whether seconds vs blocks as the
>> unit of measurement.
>> 
>> * 1 year of time with 1-second granularity requires 25 bits.
>> However since blocks occur at approximately 10 minute intervals on
>> average, having a relative lock-time significantly less than this
>> interval doesn't make much sense. A granularity of 256 seconds would
>> be greater than the Nyquist frequency and requires only 17 bits.
>> 
>> * 1 year of blocks with 1-block granularity requires 16 bits.
>> 
>> So time-based relative lock time requires about 19 bits, and
>> block-based relative lock-time requires about 18 bits. That leaves
>> 13 or 14 bits for other uses.
>> 
>> Assuming a maximum of 1-year relative lock-times. But what is an
>> appropriate maximum to choose? The use cases I have considered have
>> only had lock times on the order of a few days to a month or so.
>> However I would feel uncomfortable going less than a year for a hard
>> maximum, and am having trouble thinking of any use case that would
>> require more than a year of lock-time. Can anyone else think of a
>> use case that requires >1yr relative lock-time?
>> 
>> TL;DR
>> 
>> On Sun, Aug 23, 2015 at 7:37 PM, Mark Friedenbach
>> <mark@friedenbach.org> wrote:
>> 
>> A power of 2 would be far more efficient here. The key question is
>> how long of a relative block time do you need? Figure out what the
>> maximum should be ( I don't know what that would be, any ideas?) and
>> then see how many bits you have left over.
>> 
>> On Aug 23, 2015 7:23 PM, "Jorge Timón"
>> <bitcoin-dev@lists.linuxfoundation.org> wrote:
>> On Mon, Aug 24, 2015 at 3:01 AM, Gregory Maxwell via bitcoin-dev
>> <bitcoin-dev@lists.linuxfoundation.org> wrote:
>>> Seperately, to Mark and Btcdrank: Adding an extra wrinkel to the
>>> discussion has any thought been given to represent one block with
>> more
>>> than one increment? This would leave additional space for future
>>> signaling, or allow, for example, higher resolution numbers for a
>>> sharechain commitement.
>> 
>> No, I don't think anybody thought about this. I just explained this
>> to
>> Pieter using "for example, 10 instead of 1".
>> He suggested 600 increments so that it is more similar to
>> timestamps.
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev [1]
> 
> 
> 
> Links:
> ------
> [1] https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> [2] https://github.com/maaku/bitcoin/tree/sequencenumbers2
> [3] https://github.com/maaku/bitcoin/tree/sequencenumbers3
> 
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev



  parent reply	other threads:[~2015-09-17  7:43 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-13 11:06 [bitcoin-dev] [BIP-draft] CHECKSEQUENCEVERIFY - An opcode for relative locktime Btc Drak
2015-08-13 18:12 ` Mark Friedenbach
2015-08-13 19:20   ` Gregory Maxwell
2015-08-13 23:42 ` Joseph Poon
2015-08-14  0:47   ` Mark Friedenbach
2015-08-14 18:53     ` Matt Corallo
2015-08-14 21:29       ` Mark Friedenbach
2015-08-14 22:24         ` Jorge Timón
2015-08-17 19:58 ` Btc Drak
2015-08-19 10:37   ` Jorge Timón
2015-08-19 16:21     ` Mark Friedenbach
2015-08-19 21:27       ` Joseph Poon
2015-08-19 21:32         ` Jorge Timón
2015-08-20 21:23         ` Peter Todd
2015-08-24  0:25       ` Tom Harding
2015-08-24  1:01         ` Gregory Maxwell
2015-08-24  2:23           ` Jorge Timón
2015-08-24  2:37             ` Mark Friedenbach
2015-08-25 22:08               ` Mark Friedenbach
2015-08-25 22:36                 ` Tier Nolan
2015-08-27 23:32                 ` Mark Friedenbach
2015-09-16 22:40                   ` Btc Drak
2015-09-16 23:23                     ` Eric Lombrozo
2015-09-17  4:23                       ` Mark Friedenbach
2015-09-18  1:21                         ` Rusty Russell
2015-09-17  7:43                   ` jl2012 [this message]
2015-08-24  2:40           ` jl2012
2015-08-24  2:54             ` Mark Friedenbach
2015-08-24  7:00               ` jl2012
2015-08-25 10:15                 ` Btc Drak
2015-08-27  3:08                   ` Rusty Russell
2015-08-27 11:03                     ` David A. Harding
2015-08-27 12:29                     ` jl2012
2015-08-30 21:33                       ` Rusty Russell

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=52804bf0fb44a77efb3610e6bdf978e4@xbt.hk \
    --to=jl2012@xbt.hk \
    --cc=bitcoin-dev@lists.linuxfoundation.org \
    --cc=mark@friedenbach.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
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