[POLICY] Make sending to future native witness outputs standard #15846

pull sipa wants to merge 1 commits into bitcoin:master from sipa:201904_futuresegwitstandard changing 2 files +6 −6
  1. sipa commented at 7:58 PM on April 18, 2019: member

    As discussed in the April 18 2019 IRC meeting.

    This makes sending to future Segwit versions via native outputs (bech32) standard for relay, mempool acceptance, and mining. The reasons are:

    • This may interfere with smooth adoption of future segwit versions, if they're defined (by the sender wallet/node).
    • It violates BIP173 ("Version 0 witness addresses are always 42 or 62 characters, but implementations MUST allow the use of any version."), though admittedly this code was written before BIP173.
    • It doesn't protect much, as P2SH-embedded segwit cannot be filtered in this way.
    • As a general policy, the sender shouldn't care what the receiver likes his outputs to be.

    Note that spending such outputs (including P2SH-embedded ones) remains nonstandard, as that is actually required for softfork safety.

  2. [POLICY] Make sending to future native witness outputs standard c634b1e207
  3. MarcoFalke commented at 8:02 PM on April 18, 2019: member

    utACK c634b1e2076d8e15a8284638475e26c691d4e100

  4. MarcoFalke added this to the milestone 0.19.0 on Apr 18, 2019
  5. DrahtBot added the label Tests on Apr 18, 2019
  6. DrahtBot added the label TX fees and policy on Apr 18, 2019
  7. jnewbery commented at 8:53 PM on April 18, 2019: member

    IRC discussion here: http://www.erisian.com.au/meetbot/bitcoin-core-dev/2019/bitcoin-core-dev.2019-04-18-19.00.log.html#l-77

    Concept ACK this change. I agree that the mempool should accept and relay txs with outputs to any segwit version.

    It violates BIP173 ("Version 0 witness addresses are always 42 or 62 characters, but implementations MUST allow the use of any version."), though admittedly this code was written before BIP173.

    This isn't relevant to the change here. BIP173 describes an address format and how to decode that into a scriptPubKey. The node/mempool has no concept of addresses.

    I think your last three points are actually arguments to not stop the wallet from sending to segwit v1+ addresses, rather than arguments to allow the mempool to accept/relay those txs.

    I'd prefer to prevent the Bitcoin Core wallet from sending to v1+ addresses, or at least to warn. We can't prevent all classes of sending insecure or unspendable addresses, but I think it makes sense to do so when we can.

    I think the main concern that people have with that is that it might slow down segwit v1 adoption. I disagree - bech32 adoption has mostly been slowed down by large exchanges or other services not implementing send-to-bech32. That's something that is outside our control.

  8. luke-jr commented at 9:13 PM on April 18, 2019: member

    utACK

  9. gmaxwell commented at 9:33 PM on April 18, 2019: contributor

    utACK

  10. harding commented at 2:37 PM on April 24, 2019: contributor

    Tested ACK c634b1e2076d8e15a8284638475e26c691d4e100

    Separately tested a bc1p... v1 address with sendrawtransaction and the wallet GUI on mainnet. Transactions were accepted to the local mempool, relayed to a remote peer I controlled, and entered that peer's mempool (both peers running this PR).

    (Hint for anyone else testing, if you want to empty your mempool so you can run abandontransaction, you need to restart with -persistmempool=0 -walletbroadcast=0, run the savemempool RPC, abandon your transaction either via the RPC or the GUI, and then restart again. If you don't savemempool, your node will restore the mempool from the run before you set persistmempool=0 and that mempool will contain your wallet transaction.)

  11. gmaxwell commented at 6:17 PM on April 24, 2019: contributor

    utACK

  12. MarcoFalke cross-referenced this on Apr 25, 2019 from issue test: Require standard txs in regtest by default by MarcoFalke
  13. sdaftuar commented at 2:25 PM on April 25, 2019: member

    utACK

  14. instagibbs commented at 5:29 PM on April 25, 2019: member

    utACK

  15. meshcollider merged this on Apr 27, 2019
  16. meshcollider closed this on Apr 27, 2019

  17. meshcollider referenced this in commit b025aa3b9e on Apr 27, 2019
  18. sidhujag referenced this in commit 71bb171d6b on May 1, 2019
  19. jnewbery cross-referenced this on May 9, 2019 from issue Allow all mempool txs to be replaced after a configurable timeout (default 6h) by greenaddress
  20. Sjors referenced this in commit 6969493b58 on Jun 11, 2019
  21. Sjors cross-referenced this on Jun 11, 2019 from issue Allow SegWit versions 0-16 by Sjors
  22. greenaddress referenced this in commit 89488395bb on Jun 28, 2019
  23. MarcoFalke referenced this in commit 24dbcf3808 on Jul 16, 2019
  24. sidhujag referenced this in commit e283a6f907 on Jul 29, 2019
  25. rustyrussell referenced this in commit e8f8a7968b on Sep 18, 2019
  26. rustyrussell cross-referenced this on Sep 18, 2019 from issue BOLT 2: `option_shutdown_anysegwit` (Feature 26/27) by rustyrussell
  27. jnewbery cross-referenced this on Jul 27, 2020 from issue Newsletters: add 108 (2020-07-29) by harding
  28. pinheadmz cross-referenced this on Aug 13, 2020 from issue Address getHash requires data length of 20 or 32 only by pinheadmz
  29. pinheadmz cross-referenced this on Aug 14, 2020 from issue [POLICY] address: fix isUnknown() to allow nullData and version 0 addresses by pinheadmz
  30. rustyrussell referenced this in commit 2df5c06800 on Aug 20, 2020
  31. cdecker referenced this in commit 75c02f98c1 on Dec 22, 2020
  32. cdecker referenced this in commit 4acbb39a46 on Dec 22, 2020
  33. rustyrussell referenced this in commit e127a2ad1f on Feb 18, 2021
  34. rustyrussell referenced this in commit 42d6d79914 on Feb 18, 2021
  35. rustyrussell referenced this in commit 4f728566df on Feb 18, 2021
  36. rustyrussell referenced this in commit 4e329271a3 on Feb 18, 2021
  37. jonatack cross-referenced this on Mar 2, 2021 from issue Newsletters: add 138 (2021-03-03) by harding
  38. rustyrussell referenced this in commit 3508e4e85d on May 24, 2021
  39. ariard cross-referenced this on Aug 24, 2021 from issue policy: correct (lower) the dust threshold for Taproot outputs by darosior
  40. MarcoFalke cross-referenced this on Jan 20, 2022 from issue policy: treat P2TR outputs with invalid x-only pubkey as non-standard by theStack
  41. MarcoFalke removed the label Tests on Jan 20, 2022
  42. Munkybooty referenced this in commit e49c5b9c72 on Jan 24, 2022
  43. Munkybooty referenced this in commit b9f6428644 on Jan 24, 2022
  44. Munkybooty referenced this in commit a8ff95537d on Jan 24, 2022
  45. Munkybooty referenced this in commit 1073b803ca on Jan 24, 2022
  46. Munkybooty referenced this in commit f812ff9751 on Jan 24, 2022
  47. Munkybooty referenced this in commit 10ef2d1ae1 on Jan 24, 2022
  48. Munkybooty referenced this in commit 21f800c81e on Jan 24, 2022
  49. Munkybooty referenced this in commit b1ef2d0294 on Jan 24, 2022
  50. Munkybooty referenced this in commit 077343af26 on Jan 24, 2022
  51. Munkybooty referenced this in commit 896d1eacb0 on Jan 24, 2022
  52. Munkybooty referenced this in commit ab8342315f on Jan 25, 2022
  53. Munkybooty referenced this in commit 8ca90f3f99 on Jan 30, 2022
  54. bitcoin locked this on Jan 20, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-19 06:54 UTC