public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Natanael <natanael.l@gmail•com>
To: Bitcoin Dev <bitcoin-dev@lists•linuxfoundation.org>,
	Johnson Lau <jl2012@xbt•hk>
Subject: Re: [bitcoin-dev] Anti-transaction replay in a hardfork
Date: Wed, 25 Jan 2017 02:22:44 +0100	[thread overview]
Message-ID: <CAAt2M1_=8jDWuyO5_n8aXXDVYypvGQ2uL6zkJNn1ZnQOaXM6nQ@mail.gmail.com> (raw)
In-Reply-To: <A182F080-F154-4F05-B2F1-21B90E469267@xbt.hk>

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

Den 24 jan. 2017 15:33 skrev "Johnson Lau via bitcoin-dev" <
bitcoin-dev@lists•linuxfoundation.org>:



B. For transactions created before this proposal is made, they are not
protected from anti-replay. The new fork has to accept these transactions,
as there is no guarantee that the existing fork would survive nor maintain
any value. People made time-locked transactions in anticipation that they
would be accepted later. In order to maximise the value of such
transactions, the only way is to make them accepted by any potential
hardforks.


This can be fixed.

Make old-format transactions valid *only when paired with a fork-only
follow-up transaction* which is spending at least one (or all) of the
outputs of the old-format transaction.

(Yes, I know this introduces new statefulness into the block validation
logic. Unfortunately it is necessary for maximal fork safety. It can be
disabled at a later time if ever deemed no longer necessary.)

Meanwhile, the old network SHOULD soft-fork in an identical rule with a
follow-up transaction format incompatible with the fork.

This means that old transactions can not be replayed across forks/networks,
because they're not valid when stand-alone. It also means that all wallet
clients either needs to be updated OR paired with software that intercepts
generated transactions, and automatically generates the correct follow-up
transaction for it (old network only).

The rules should be that old-format transactions can't reference new-format
transactions, even if only a softfork change differ between the formats.
This prevents an unnecessary amount of transactions pairs generated by old
wallets. Thus they can spend old outputs, but not spend new ones.

[-- Attachment #2: Type: text/html, Size: 2509 bytes --]

  parent reply	other threads:[~2017-01-25  1:22 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-24 14:33 Johnson Lau
2017-01-24 18:52 ` Tom Harding
2017-01-25  4:03   ` Johnson Lau
2017-01-25 19:32     ` Tom Harding
2017-01-27 20:47       ` Johnson Lau
2017-01-27 22:11         ` Tom Harding
2017-01-25  1:22 ` Natanael [this message]
2017-01-25  7:05   ` Johnson Lau
2017-01-25  7:15     ` Natanael
2017-01-25  7:21       ` Johnson Lau
2017-01-25  7:29         ` Natanael
2017-01-25  7:42           ` Johnson Lau
2017-01-26  3:29 ` Matt Corallo
2017-01-26  7:03   ` Chris Priest
2017-01-26  7:14     ` Johnson Lau
2017-01-26  8:59       ` Chris Priest
2017-01-26  9:20         ` Johnson Lau
2017-01-26 10:55           ` Edmund Edgar
2017-01-26 15:58           ` Tom Harding
2017-01-26 17:21   ` Gavin Andresen
2017-01-26 17:41     ` Matt Corallo

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='CAAt2M1_=8jDWuyO5_n8aXXDVYypvGQ2uL6zkJNn1ZnQOaXM6nQ@mail.gmail.com' \
    --to=natanael.l@gmail$(echo .)com \
    --cc=bitcoin-dev@lists$(echo .)linuxfoundation.org \
    --cc=jl2012@xbt$(echo .)hk \
    /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