11// Tapscript 
22
3- // use super::{ 
4- //     checksum::{desc_checksum, verify_checksum}, 
5- //     DescriptorTrait, 
6- // }; 
3+ use  super :: checksum:: { desc_checksum,  verify_checksum} ; 
74use  bitcoin:: hashes:: _export:: _core:: fmt:: Formatter ; 
85use  errstr; 
96use  expression:: { self ,  FromTree ,  Tree } ; 
5047{ 
5148    fn  fmt ( & self ,  f :  & mut  Formatter < ' _ > )  -> fmt:: Result  { 
5249        let  desc = self . to_string_no_checksum ( ) ; 
53-         // let checksum = desc_checksum(&desc).map_err(|_| fmt::Error)?; 
54-         // write!(f, "{}#{}", &desc, &checksum) 
5550        write ! ( f,  "{}" ,  & desc) 
5651    } 
5752} 
@@ -110,6 +105,14 @@ where
110105            } 
111106        } 
112107    } 
108+ 
109+     pub  fn  to_string_no_checksum ( & self )  -> String  { 
110+         let  key = & self . key_path ; 
111+         match  self . script_path  { 
112+             Some ( ref  s)  => format ! ( "tr({},{})" ,  key,  s) , 
113+             None  => format ! ( "tr({})" ,  key) , 
114+         } 
115+     } 
113116} 
114117
115118impl < Pk :  MiniscriptKey >  FromTree  for  Tr < Pk > 
@@ -178,11 +181,8 @@ where
178181    type  Err  = Error ; 
179182
180183    fn  from_str ( s :  & str )  -> Result < Self ,  Self :: Err >  { 
181-         // let desc_str = verify_checksum(s)?; 
182-         // let top = expression::Tree::from_str(desc_str)?; 
183- 
184-         // Pass the TapTree then 
185-         let  top = parse_tr ( s) ?; 
184+         let  desc_str = verify_checksum ( s) ?; 
185+         let  top = parse_tr ( desc_str) ?; 
186186        Self :: from_tree ( & top)  // parse taptree and tapscript differently 
187187    } 
188188} 
@@ -195,11 +195,9 @@ where
195195    <<Pk  as  MiniscriptKey >:: Hash  as  FromStr >:: Err :  ToString , 
196196{ 
197197    fn  fmt ( & self ,  f :  & mut  fmt:: Formatter )  -> fmt:: Result  { 
198-         let  key = & self . key_path ; 
199-         match  self . script_path  { 
200-             Some ( ref  s)  => write ! ( f,  "tr({},{})" ,  key,  s) , 
201-             None  => write ! ( f,  "tr({})" ,  key) , 
202-         } 
198+         let  desc = self . to_string_no_checksum ( ) ; 
199+         let  checksum = desc_checksum ( & desc) . map_err ( |_| fmt:: Error ) ?; 
200+         write ! ( f,  "{}#{}" ,  & desc,  & checksum) 
203201    } 
204202} 
205203
0 commit comments