Skip to content
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

Merged
merged 3 commits into from
Aug 5, 2024

Conversation

darosior
Copy link
Contributor

@darosior darosior commented Jul 25, 2024

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 to calc_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!

@darosior darosior force-pushed the 2407_desc_checksum branch 2 times, most recently from 24b935e to 413b3ce Compare July 25, 2024 15:58
@notmandatory notmandatory added this to the 1.0.0-beta milestone Jul 26, 2024
@darosior
Copy link
Contributor Author

darosior commented Jul 26, 2024

CI failure looks unrelated to this PR:

error: package tokio v1.39.1 cannot be built because it requires rustc 1.70 or newer, while the currently active rustc version is 1.63.0

EDIT: fixed in #1524.

@notmandatory
Copy link
Member

Thanks for this! we'll get #1524 merged soon so you can rebase.

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.
@darosior
Copy link
Contributor Author

Rebased on master after the merge of #1524 to fix CI. Looks like CI is failing on master though. Maybe a flaky unit test?

Copy link
Contributor

@storopoli storopoli left a 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;
Copy link
Member

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? 😆

Copy link
Contributor Author

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. :)

Copy link
Member

@evanlinjin evanlinjin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 70c7d6b

@evanlinjin evanlinjin merged commit 6123778 into bitcoindevkit:master Aug 5, 2024
12 checks passed
@darosior darosior deleted the 2407_desc_checksum branch August 5, 2024 07:56
@notmandatory notmandatory mentioned this pull request Aug 25, 2024
31 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants