Skip to content

Commit 6b60d04

Browse files
committed
refactor(wallet)!: remove signers and it's APIs
- use default empty `SignersContainer::new()` on both wallet `create_with_params` and `load_with_params`. - remove `add_signer`, `set_keymap` and `get_signers` methods. - updates `FullyNodedExport::export_wallet` to export public descriptors only, and updates it's tests accordingly. - remove test assertions for signers/keymaps creation/load. - remove both fields `signers` and `change_signers` from `Wallet`. - all usage of signers for `extract_policy` fns in `create_tx` and `policies` methods now rely on the `SignersContainer::default()`.
1 parent e03af20 commit 6b60d04

File tree

5 files changed

+68
-258
lines changed

5 files changed

+68
-258
lines changed

wallet/src/wallet/export.rs

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ use core::fmt;
6060
use core::str::FromStr;
6161
use serde::{Deserialize, Serialize};
6262

63-
use miniscript::descriptor::{ShInner, WshInner};
63+
use miniscript::descriptor::{KeyMap, ShInner, WshInner};
6464
use miniscript::{Descriptor, ScriptContext, Terminal};
6565

6666
use crate::types::KeychainKind;
@@ -119,11 +119,8 @@ impl FullyNodedExport {
119119
) -> Result<Self, &'static str> {
120120
let descriptor = wallet
121121
.public_descriptor(KeychainKind::External)
122-
.to_string_with_secret(
123-
&wallet
124-
.get_signers(KeychainKind::External)
125-
.as_key_map(wallet.secp_ctx()),
126-
);
122+
.to_string_with_secret(&KeyMap::new());
123+
127124
let descriptor = remove_checksum(descriptor);
128125
Self::is_compatible_with_core(&descriptor)?;
129126

@@ -147,11 +144,7 @@ impl FullyNodedExport {
147144
let change_descriptor = {
148145
let descriptor = wallet
149146
.public_descriptor(KeychainKind::Internal)
150-
.to_string_with_secret(
151-
&wallet
152-
.get_signers(KeychainKind::Internal)
153-
.as_key_map(wallet.secp_ctx()),
154-
);
147+
.to_string_with_secret(&KeyMap::new());
155148
Some(remove_checksum(descriptor))
156149
};
157150

@@ -239,16 +232,23 @@ mod test {
239232
wallet
240233
}
241234

235+
// TODO: (@leonardo) what's the best way to update these tests ?
242236
#[test]
243237
fn test_export_bip44() {
244238
let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
239+
let public_descriptor = "wpkh([a12b02f4/44'/0'/0']xpub6BzhLAQUDcBUfHRQHZxDF2AbcJqp4Kaeq6bzJpXrjrWuK26ymTFwkEFbxPra2bJ7yeZKbDjfDeFwxe93JMqpo5SsPJH6dZdvV9kMzJkAZ69/0/*)";
240+
245241
let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
242+
let public_change_descriptor = "wpkh([a12b02f4/44'/0'/0']xpub6BzhLAQUDcBUfHRQHZxDF2AbcJqp4Kaeq6bzJpXrjrWuK26ymTFwkEFbxPra2bJ7yeZKbDjfDeFwxe93JMqpo5SsPJH6dZdvV9kMzJkAZ69/1/*)";
246243

247244
let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
248245
let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
249246

250-
assert_eq!(export.descriptor(), descriptor);
251-
assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
247+
assert_eq!(export.descriptor(), public_descriptor);
248+
assert_eq!(
249+
export.change_descriptor(),
250+
Some(public_change_descriptor.into())
251+
);
252252
assert_eq!(export.blockheight, 5000);
253253
assert_eq!(export.label, "Test Label");
254254
}
@@ -305,24 +305,33 @@ mod test {
305305
#[test]
306306
fn test_export_tr() {
307307
let descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/0/*)";
308+
let public_descriptor = "tr([73c5da0a/86'/0'/0']tpubDC3pD7UZXnsgh3EBjbtBQiB1FnLask7UHBSunZ1DPK4dCFFZoFRkgxHB8gt42FvLzx1DpxfHWxAsYaY6b643RVcGjDxXxns7wKKYnnfEcbB/0/*)";
309+
308310
let change_descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/1/*)";
311+
let public_change_descriptor = "tr([73c5da0a/86'/0'/0']tpubDC3pD7UZXnsgh3EBjbtBQiB1FnLask7UHBSunZ1DPK4dCFFZoFRkgxHB8gt42FvLzx1DpxfHWxAsYaY6b643RVcGjDxXxns7wKKYnnfEcbB/1/*)";
312+
309313
let wallet = get_test_wallet(descriptor, change_descriptor, Network::Testnet);
310314
let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
311-
assert_eq!(export.descriptor(), descriptor);
312-
assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
315+
assert_eq!(export.descriptor(), public_descriptor);
316+
assert_eq!(
317+
export.change_descriptor(),
318+
Some(public_change_descriptor.into())
319+
);
313320
assert_eq!(export.blockheight, 5000);
314321
assert_eq!(export.label, "Test Label");
315322
}
316323

317324
#[test]
318325
fn test_export_to_json() {
319326
let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
327+
let public_descriptor = "wpkh([a12b02f4/44'/0'/0']xpub6BzhLAQUDcBUfHRQHZxDF2AbcJqp4Kaeq6bzJpXrjrWuK26ymTFwkEFbxPra2bJ7yeZKbDjfDeFwxe93JMqpo5SsPJH6dZdvV9kMzJkAZ69/0/*)";
328+
320329
let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
321330

322331
let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
323332
let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
324333

325-
assert_eq!(export.to_string(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
334+
assert_eq!(export.to_string(), format!("{{\"descriptor\":\"{public_descriptor}\",\"blockheight\":5000,\"label\":\"Test Label\"}}"));
326335
}
327336

328337
#[test]

0 commit comments

Comments
 (0)