|
8 | 8 | use core::convert::TryFrom;
|
9 | 9 | use core::fmt;
|
10 | 10 |
|
| 11 | +use bitcoin::key::CompressedPublicKey; |
11 | 12 | use bitcoin::{Address, Network, ScriptBuf, Weight};
|
12 | 13 |
|
13 | 14 | use super::checksum::verify_checksum;
|
@@ -132,14 +133,19 @@ impl<Pk: MiniscriptKey> Wsh<Pk> {
|
132 | 133 |
|
133 | 134 | impl<Pk: MiniscriptKey + ToPublicKey> Wsh<Pk> {
|
134 | 135 | /// Obtains the corresponding script pubkey for this descriptor.
|
135 |
| - pub fn script_pubkey(&self) -> ScriptBuf { self.inner_script().to_p2wsh() } |
| 136 | + pub fn script_pubkey(&self) -> ScriptBuf { |
| 137 | + self.inner_script() |
| 138 | + .to_p2wsh() |
| 139 | + .expect("TODO: Do we need to propagate this error") |
| 140 | + } |
136 | 141 |
|
137 | 142 | /// Obtains the corresponding script pubkey for this descriptor.
|
138 | 143 | pub fn address(&self, network: Network) -> Address {
|
139 |
| - match self.inner { |
| 144 | + let res = match self.inner { |
140 | 145 | WshInner::SortedMulti(ref smv) => Address::p2wsh(&smv.encode(), network),
|
141 | 146 | WshInner::Ms(ref ms) => Address::p2wsh(&ms.encode(), network),
|
142 |
| - } |
| 147 | + }; |
| 148 | + res.expect("TODO: Do we need to propagate this error") |
143 | 149 | }
|
144 | 150 |
|
145 | 151 | /// Obtains the underlying miniscript for this descriptor.
|
@@ -375,21 +381,19 @@ impl<Pk: MiniscriptKey> Wpkh<Pk> {
|
375 | 381 | impl<Pk: MiniscriptKey + ToPublicKey> Wpkh<Pk> {
|
376 | 382 | /// Obtains the corresponding script pubkey for this descriptor.
|
377 | 383 | pub fn script_pubkey(&self) -> ScriptBuf {
|
378 |
| - let pk = self.pk.to_public_key(); |
379 |
| - let compressed = bitcoin::key::CompressedPublicKey::try_from(pk) |
| 384 | + let pk = CompressedPublicKey::try_from(self.pk.to_public_key()) |
380 | 385 | .expect("wpkh descriptors have compressed keys");
|
| 386 | + let addr = Address::p2wpkh(pk, Network::Bitcoin); |
381 | 387 |
|
382 |
| - let addr = Address::p2wpkh(&compressed, Network::Bitcoin); |
383 | 388 | addr.script_pubkey()
|
384 | 389 | }
|
385 | 390 |
|
386 | 391 | /// Obtains the corresponding script pubkey for this descriptor.
|
387 | 392 | pub fn address(&self, network: Network) -> Address {
|
388 |
| - let pk = self.pk.to_public_key(); |
389 |
| - let compressed = bitcoin::key::CompressedPublicKey::try_from(pk) |
390 |
| - .expect("Rust Miniscript types don't allow uncompressed pks in segwit descriptors"); |
| 393 | + let pk = CompressedPublicKey::try_from(self.pk.to_public_key()) |
| 394 | + .expect("wpkh descriptors have compressed keys"); |
391 | 395 |
|
392 |
| - Address::p2wpkh(&compressed, network) |
| 396 | + Address::p2wpkh(pk, network) |
393 | 397 | }
|
394 | 398 |
|
395 | 399 | /// Obtains the underlying miniscript for this descriptor.
|
|
0 commit comments