elements/src/script
Samuel Dobson 9dd7bd47be
Merge #18034: Get the OutputType for a descriptor
7e80f646b2 Get the OutputType for a descriptor (Andrew Chow)

Pull request description:

  Adds a `GetOutputType()` method to get the OutputType of a descriptor. Some descriptors don't have a determinate OutputType, so we actually use an `Optional<OutputType>`. For descriptors with indeterminate OutputType, we return `nullopt`.

  `addr()` and `raw()` use OutputTypes as determined by the CTxDestination they have. For simplicity, `ScriptHash` destinations are `LEGACY` even though they could be `P2SH_SEGWIT`.
  `combo()`, `pk()`, and `multi()` are `nullopt` as they either don't have an OutputType or they have multiple. `DescriptorImpl` defaults to `nullopt`.
  `pkh()` is `LEGACY` as expected
  `wpkh()` and `wsh()` are `BECH32` as expected.
  `sh()` checks whether the sub-descriptor is `BECH32`. If so, it is `P2SH_SEGWIT`. Otherwise it is `LEGACY`.

  The descriptor tests are updated to check the OutputType too.

ACKs for top commit:
  fjahr:
    ACK 7e80f646b2
  meshcollider:
    utACK 7e80f646b2
  instagibbs:
    cursory ACK https://github.com/bitcoin/bitcoin/pull/18034/commits/7e80f646b24a2abf3c031a649bcc706a695f80da
  Sjors:
    Code review ACK 7e80f646b2
  jonatack:
    ACK 7e80f64 code review/build/tests

Tree-SHA512: c5a813447b62e982435e1c948066f8d6c148c9ebffb0a5eb5a9028b173b01d5ead2f076a5ca3f7f37698538baa346f82a977ee48f583d89cb4e5ebd9111b2341
2020-02-22 08:02:52 +13:00
..
bitcoinconsensus.cpp Drop unused GetType() from CSizeComputer 2018-09-11 00:58:05 -04:00
bitcoinconsensus.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
descriptor.cpp Get the OutputType for a descriptor 2020-02-11 13:23:51 -05:00
descriptor.h Get the OutputType for a descriptor 2020-02-11 13:23:51 -05:00
interpreter.cpp refactor: define a UINT256_ONE global constant 2020-01-23 16:35:08 -05:00
interpreter.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
keyorigin.h Remove unused includes 2019-10-15 22:56:43 +00:00
script.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
script.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
script_error.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
script_error.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
sigcache.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
sigcache.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
sign.cpp Always try to sign for all pubkeys in multisig 2020-01-23 16:35:08 -05:00
sign.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
signingprovider.cpp Move WatchOnly stuff from SigningProvider to CWallet 2019-07-09 16:20:18 -04:00
signingprovider.h wallet: Improve LegacyScriptPubKeyMan::CanProvide script recognition 2020-02-12 11:48:30 -05:00
standard.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
standard.h Merge #17924: Bug: IsUsedDestination shouldn't use key id as script id for ScriptHash 2020-01-16 19:23:33 +01:00