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

[backport] Several small fixes for 12.x #735

Open
wants to merge 4 commits into
base: release-12.x
Choose a base branch
from

Conversation

apoelstra
Copy link
Member

@apoelstra apoelstra commented Aug 31, 2024

We are incorrectly serializing and_n as "and_b", and incorrectly parsing tr(<key>,).

In master the and_b thing is fixed by #722 which rewrites the Display impl completely and the tr(<key>,) thing will be fixed as part of a coming series of PRs to clean up expression parsing.

Also includes #740 since it showed up in time.

Copy link
Member

@sanket1729 sanket1729 left a comment

Choose a reason for hiding this comment

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

ACK 98ea9df

@apoelstra
Copy link
Member Author

Actually I will hold off on this. Will add a patch for #736 and anything else I find over the next few days.

We are incorrectly serializing and_n as "and_b".

In master this is fixed by
rust-bitcoin#722
which rewrites the Display impl completely.
@apoelstra apoelstra marked this pull request as draft September 1, 2024 13:41
apoelstra added a commit to apoelstra/rust-miniscript that referenced this pull request Sep 1, 2024
When fuzzing my new non-recursive tree parsing logic, I noticed that we
were deviating from the released 12.0 in the way that we display l:0.
This is an ambiguous fragment which can be displayed either as l:0 or
u:0. In our released code we use u:0 so stick with that.

This was unintentially changed as part of rust-bitcoin#722. Change it back.

While we are at it add a regression test for rust-bitcoin#735
@apoelstra apoelstra changed the title [backport] miniscript: fix string serialization of and_n [backport] Several small fixes for 12.x Sep 3, 2024
@apoelstra apoelstra marked this pull request as ready for review September 3, 2024 14:51
@apoelstra
Copy link
Member Author

Ready for review. I have fuzzed this against my rewritten code for 40 hours now without any new incompatibilities cropping up.

apoelstra added a commit that referenced this pull request Sep 3, 2024
1259375 miniscript: make display prefer 'u' over 'l' in the fragment l:0 (Andrew Poelstra)
67fdc50 descriptor: reject strings of the form "tr(<key>,)" (Andrew Poelstra)
00cac40 descriptor: add unit test demonstrating sanity-checking behavior in <= 12.x (Andrew Poelstra)

Pull request description:

  This PR has three changes which are mostly unrelated except that they were all found when fuzzing my "rewrite expression parser to be nonrecursive" branch against 12.x.

  * First is a unit test demonstrating #734. It doesn't fix anything, just tests the current behavior.
  * Second is a fix for #736 (backported in #735).
  * Third tweaks the new `Display` code from #722 to change how the ambiguous `l:0`/`u:0` is serialized, to match 12.x.

ACKs for top commit:
  sanket1729:
    ACK 1259375

Tree-SHA512: 921d65a1efd49bda0f9db488a2854b004e14518f584d832497a9dbc13a845ceec99544375385570c6ac42d4985277e8dcbb3aa8654de93235cf9067ba601f91d
@apoelstra
Copy link
Member Author

cc @sanket1729 oops, I totally forgot about this one. We should merge it too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants