You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat!: check desc, return changeset in add_desc fn
Incorporated `check_wallet_descriptor` in `KeyRing::new` and
`KeyRing::add_descriptor` to catch multipath and hardened descriptors.
Introduced new variants to `DescriptorError` to report cases when trying
to add duplicate desc or keychain. Did not provide the other desc inside
`KeychainAlreadyExists` variant (similar other keychain inside
`DescAlreadyExists`) because introducing type parameter to
`DescriptorError` implies introducing one to `IntoWalletDescriptor`.
The add_descriptor function returns a `KeyRing::Changeset` since this
would eventually be required when we introducing APIs to add descriptors
to `Wallet.keyring`.
let err = KeyRing::new(Network::Regtest,KeychainKind::External,"tr(tpubD6NzVbkrYhZ4WyC5VZLuSJQ14uwfUbus7oAFurAFkZA5N3groeQqtW65m8pG1TT1arPpfWu9RbBsc5rSBncrX2d84BAwJJHQfaRjnMCQwuT/86h/1h/0h/0/*)").err();
let res = keyring.add_descriptor(KeychainKind::Internal,"tr([738b4dbd/86h/1h/0h]tpubDDQsJyQKuP6jCCSZ75Y8zpBAnXsvAN6BWpp6ZoczfxKBDBWnY8XGbC7AMMSyXAcQPNgppkCBmv3hkCLZSaQ4VvSTGsstuTrXuDadMaB7E45/0'/*)",false).err();
let err = KeyRing::new(Network::Regtest,KeychainKind::External,"pkh(tpubD6NzVbkrYhZ4WaWSyoBvQwbpLkojyoTZPRsgXELWz3Popb3qkjcJyJUGLnL4qHHoQvao8ESaAstxYSnhyswJ76uZPStJRJCTKvosUCJZL5B/1/1/<0;1>)").err();
66
+
assert_eq!(
67
+
err,
68
+
Some(DescriptorError::Miniscript(
69
+
miniscript::Error::BadDescriptor(
70
+
"`check_wallet_descriptor` must not contain multipath keys".to_string(),
let res = keyring.add_descriptor(KeychainKind::Internal,"tr(tpubD6NzVbkrYhZ4WyC5VZLuSJQ14uwfUbus7oAFurAFkZA5N3groeQqtW65m8pG1TT1arPpfWu9RbBsc5rSBncrX2d84BAwJJHQfaRjnMCQwuT/86/1/0/<0;1>/*)",false).err();
76
+
assert_eq!(
77
+
res,
78
+
Some(DescriptorError::Miniscript(
79
+
miniscript::Error::BadDescriptor(
80
+
"`check_wallet_descriptor` must not contain multipath keys".to_string(),
let desc2 = get_descriptor("tr(tprv8ZgxMBicQKsPdWAHbugK2tjtVtRjKGixYVZUdL7xLHMgXZS6BFbFi1UDb1CHT25Z5PU1F9j7wGxwUiRhqz9E3nZRztikGUV6HoRDYcqPhM4/86'/1'/0'/1/*)");
0 commit comments