Skip to content

Commit c0930e6

Browse files
tr.rs: add checksum checks and Display refactor for Tr
1 parent 6135e57 commit c0930e6

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

src/descriptor/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1105,7 +1105,7 @@ mod tests {
11051105
#[test]
11061106
fn tr_roundtrip_key() {
11071107
let script = Tr::<DummyKey>::from_str("tr()").unwrap().to_string();
1108-
assert_eq!(script, format!("tr()"))
1108+
assert_eq!(script, format!("tr()#x4ml3kxd"))
11091109
}
11101110

11111111
#[test]
@@ -1114,7 +1114,7 @@ mod tests {
11141114
.unwrap()
11151115
.to_string();
11161116

1117-
assert_eq!(descriptor, "tr(,{pk(),pk()})")
1117+
assert_eq!(descriptor, "tr(,{pk(),pk()})#7dqr6v8r")
11181118
}
11191119

11201120
#[test]
@@ -1123,7 +1123,7 @@ mod tests {
11231123
.unwrap()
11241124
.to_string();
11251125

1126-
assert_eq!(descriptor, "tr(,{pk(),{pk(),or_d(pk(),pkh())}})",)
1126+
assert_eq!(descriptor, "tr(,{pk(),{pk(),or_d(pk(),pkh())}})#39ke346g")
11271127
}
11281128

11291129
#[test]

src/descriptor/tr.rs

+14-16
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// Tapscript
22

3-
// use super::{
4-
// checksum::{desc_checksum, verify_checksum},
5-
// DescriptorTrait,
6-
// };
3+
use super::checksum::{desc_checksum, verify_checksum};
74
use bitcoin::hashes::_export::_core::fmt::Formatter;
85
use errstr;
96
use expression::{self, FromTree, Tree};
@@ -50,8 +47,6 @@ where
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

115118
impl<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

Comments
 (0)