aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Chow <achow101-github@achow101.com>2021-06-04 16:42:33 -0400
committerAndrew Chow <achow101-github@achow101.com>2021-06-22 21:57:04 -0400
commit6dbe4d10728f882986ed0d9ed77bc736f051c662 (patch)
tree7c8aa8e4b4b15c9840b97be75ef4aff263374345
parent699dfcd8ad9487a4e04c1ffc68211e84e126b3d2 (diff)
Use BECH32M for tr() desc, WitV1Taproot, and WitUnknown CTxDests
The tr() descriptor, WitnessV1Taproot CTxDestination, and WitnessUnknown CTxDestination are OutputType::BECH32M so they should report as such.
-rw-r--r--src/script/descriptor.cpp10
-rwxr-xr-xtest/functional/wallet_taproot.py6
2 files changed, 9 insertions, 7 deletions
diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp
index 84a8b06c5c..5da249b7f9 100644
--- a/src/script/descriptor.cpp
+++ b/src/script/descriptor.cpp
@@ -646,11 +646,13 @@ static std::optional<OutputType> OutputTypeFromDestination(const CTxDestination&
return OutputType::LEGACY;
}
if (std::holds_alternative<WitnessV0KeyHash>(dest) ||
- std::holds_alternative<WitnessV0ScriptHash>(dest) ||
- std::holds_alternative<WitnessV1Taproot>(dest) ||
- std::holds_alternative<WitnessUnknown>(dest)) {
+ std::holds_alternative<WitnessV0ScriptHash>(dest)) {
return OutputType::BECH32;
}
+ if (std::holds_alternative<WitnessV1Taproot>(dest) ||
+ std::holds_alternative<WitnessUnknown>(dest)) {
+ return OutputType::BECH32M;
+ }
return std::nullopt;
}
@@ -874,7 +876,7 @@ public:
{
assert(m_subdescriptor_args.size() == m_depths.size());
}
- std::optional<OutputType> GetOutputType() const override { return OutputType::BECH32; }
+ std::optional<OutputType> GetOutputType() const override { return OutputType::BECH32M; }
bool IsSingleType() const final { return true; }
};
diff --git a/test/functional/wallet_taproot.py b/test/functional/wallet_taproot.py
index 1547a90125..b085a6eab6 100755
--- a/test/functional/wallet_taproot.py
+++ b/test/functional/wallet_taproot.py
@@ -226,7 +226,7 @@ class WalletTaprootTest(BitcoinTestFramework):
result = self.addr_gen.importdescriptors([{"desc": desc_pub, "active": True, "timestamp": "now"}])
assert(result[0]['success'])
for i in range(4):
- addr_g = self.addr_gen.getnewaddress(address_type='bech32')
+ addr_g = self.addr_gen.getnewaddress(address_type='bech32m')
if treefn is not None:
addr_r = self.make_addr(treefn, keys, i)
assert_equal(addr_g, addr_r)
@@ -259,7 +259,7 @@ class WalletTaprootTest(BitcoinTestFramework):
result = self.rpc_online.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
assert(result[0]['success'])
for i in range(4):
- addr_g = self.rpc_online.getnewaddress(address_type='bech32')
+ addr_g = self.rpc_online.getnewaddress(address_type='bech32m')
if treefn is not None:
addr_r = self.make_addr(treefn, keys_pay, i)
assert_equal(addr_g, addr_r)
@@ -290,7 +290,7 @@ class WalletTaprootTest(BitcoinTestFramework):
result = self.psbt_offline.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}])
assert(result[0]['success'])
for i in range(4):
- addr_g = self.psbt_online.getnewaddress(address_type='bech32')
+ addr_g = self.psbt_online.getnewaddress(address_type='bech32m')
if treefn is not None:
addr_r = self.make_addr(treefn, keys_pay, i)
assert_equal(addr_g, addr_r)