@@ -1610,6 +1610,37 @@ where
16101610 }
16111611}
16121612
1613+ /// Deterministically generate a unique name given the descriptors defining the wallet
1614+ ///
1615+ /// Compatible with [`wallet_name_from_descriptor`]
1616+ pub fn wallet_name_from_descriptor < T > (
1617+ descriptor : T ,
1618+ change_descriptor : Option < T > ,
1619+ network : Network ,
1620+ secp : & SecpCtx ,
1621+ ) -> Result < String , Error >
1622+ where
1623+ T : IntoWalletDescriptor ,
1624+ {
1625+ //TODO check descriptors contains only public keys
1626+ let descriptor = descriptor
1627+ . into_wallet_descriptor ( secp, network) ?
1628+ . 0
1629+ . to_string ( ) ;
1630+ let mut wallet_name = get_checksum ( & descriptor[ ..descriptor. find ( '#' ) . unwrap ( ) ] ) ?;
1631+ if let Some ( change_descriptor) = change_descriptor {
1632+ let change_descriptor = change_descriptor
1633+ . into_wallet_descriptor ( secp, network) ?
1634+ . 0
1635+ . to_string ( ) ;
1636+ wallet_name. push_str (
1637+ get_checksum ( & change_descriptor[ ..change_descriptor. find ( '#' ) . unwrap ( ) ] ) ?. as_str ( ) ,
1638+ ) ;
1639+ }
1640+
1641+ Ok ( wallet_name)
1642+ }
1643+
16131644/// Return a fake wallet that appears to be funded for testing.
16141645pub fn get_funded_wallet (
16151646 descriptor : & str ,
@@ -4087,34 +4118,3 @@ pub(crate) mod test {
40874118 ) ;
40884119 }
40894120}
4090-
4091- /// Deterministically generate a unique name given the descriptors defining the wallet
4092- ///
4093- /// Compatible with [`wallet_name_from_descriptor`]
4094- pub fn wallet_name_from_descriptor < T > (
4095- descriptor : T ,
4096- change_descriptor : Option < T > ,
4097- network : Network ,
4098- secp : & SecpCtx ,
4099- ) -> Result < String , Error >
4100- where
4101- T : IntoWalletDescriptor ,
4102- {
4103- //TODO check descriptors contains only public keys
4104- let descriptor = descriptor
4105- . into_wallet_descriptor ( secp, network) ?
4106- . 0
4107- . to_string ( ) ;
4108- let mut wallet_name = get_checksum ( & descriptor[ ..descriptor. find ( '#' ) . unwrap ( ) ] ) ?;
4109- if let Some ( change_descriptor) = change_descriptor {
4110- let change_descriptor = change_descriptor
4111- . into_wallet_descriptor ( secp, network) ?
4112- . 0
4113- . to_string ( ) ;
4114- wallet_name. push_str (
4115- get_checksum ( & change_descriptor[ ..change_descriptor. find ( '#' ) . unwrap ( ) ] ) ?. as_str ( ) ,
4116- ) ;
4117- }
4118-
4119- Ok ( wallet_name)
4120- }
0 commit comments