4

BIP62 introduces a number of rules to prevent transaction malleability. However many transactions already in the blockchain fail these tests. Is BIP62 currently being used to filter transactions from entering the blockchain? If not then are there any plans by the core development team to use BIP62 like this?

mulllhausen
  • 1,713
  • 2
  • 14
  • 33

1 Answers1

7

Yes, you should.

BIP62 is currently not being pursued as a consensus rule on the network.

However, all its rules (including the ones that are only applied to new style transactions according to BIP62, specifically the lower-S rule) - are currently being enforced as a standardness rule since Bitcoin Core 0.11.1 and 0.10.3.

The reason for this is that at the time BIP62 was written, requiring lower-S was not feasible due to the large amount of wallets that were still creating high-S signatures. In recent times, a large fraction of them switched to lower-S, making it viable to just unconditionally apply that rule. If a significant amount of network nodes (and specifically, miners) upgrade to versions that enforce this, wallets that do not enforce lower-S will gradually stop working and need upgrading.

If that process completes and we end up in a state where near-0% of blocks still contain high-S signatures, people may want to propose unconditionally applying it as a consensus rule.

Pieter Wuille
  • 98,249
  • 9
  • 183
  • 287
  • are the rules only mandatory when a transaction has version 3? i'm trying to validate the blockchain and some of the version 1 transactions fail the bip62 criteria, so i want to know when i should use them. – mulllhausen Nov 02 '15 at 20:32
  • Version 3 transactions do not exist. Just read BIP62 as if it said "apply all these rules to all transactions". BIP62 only proposing them on new transactions because at the time it was unreasonable to apply to all of them for reasons explained above. – Pieter Wuille Nov 02 '15 at 20:34
  • 1
    And *in the blockchain* BIP62 does not exist either. It is not a consensus rule. It's only enforced as a standardness rule so far. – Pieter Wuille Nov 02 '15 at 20:35
  • cool. that's what i originally meant (i should have been more specific). in future how will i know whether to validate the blockchain against bip62. will the transaction version number be the determining factor? – mulllhausen Nov 02 '15 at 20:40
  • nvm - i found the criteria in bip62 under [block validity](https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki#block-validity) :) – mulllhausen Nov 02 '15 at 20:52
  • As I said, BIP62 is outdated. It's a proposal. It does not describe the actual rules. If something like this ever becomes a consensus rule, it likely will not use new transaction versions, as it is no longer needed (see above). – Pieter Wuille Nov 02 '15 at 21:04
  • How you will know what to validate? You don't need to. Soft fork consensus changes are backwards compatible. You're connecting to a full node anyway, right, so you won't accept invalid transactions? – Pieter Wuille Nov 02 '15 at 21:40
  • Let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/31028/discussion-between-mulllhausen-and-pieter-wuille). – mulllhausen Nov 02 '15 at 21:54