-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bdk_wallet: Don't reimplement descriptor checksum, use the one from rust-miniscript #1523
Conversation
24b935e
to
413b3ce
Compare
CI failure looks unrelated to this PR:
EDIT: fixed in #1524. |
Thanks for this! we'll get #1524 merged soon so you can rebase. |
It can just be a String.
This code was: 1. Removing the checksum from the descriptor string, asserting it was present 2. Re-calculating the checksum on the descriptor string absent the checksum Instead, just use the existing checksum? If we don't trust it we probably shouldn't assert its presence in the first place.
413b3ce
to
70c7d6b
Compare
Rebased on master after the merge of #1524 to fix CI. Looks like CI is failing on master though. Maybe a flaky unit test? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK 70c7d6b
// if input data already had a checksum, check calculated checksum against original checksum | ||
if let Some(original_checksum) = original_checksum { | ||
if original_checksum.as_bytes() != checksum { | ||
let og_checksum = split.1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Who is the original gansta we are referring to here? 😆
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haha, i meant "original" of course. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK 70c7d6b
Skimming through the BDK code today i noticed the descriptor checksum algorithm is re-implemented instead of using the implementation from rust-miniscript. Re-implementing it here is more code to review and maintain, more room for mistakes and overall less eyes over the code than centralizing a single implementation over at
rust-miniscript
.While doing this i noticed that one of the variants was completely unnecessary (
calc_checksum_bytes
), so i removed it. I realise it's breaking the API, so if we want to avoid that i can remove this part. I also added a commit to remove redundant calls tocalc_checsum
.Overall this is just a quick PoC as i noticed it i figured i'd send a PR, my bad if i missed anything!