Skip to content

Bug: valid eltr(...,sortedmulti_a(...)) descriptor is rejected #101

Description

@Nuhiat-Arefin

Summary

elements-miniscript rejects a valid taproot descriptor using sortedmulti_a(...) under eltr(...).

Minimal repro

eltr(02a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd,sortedmulti_a(2,50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,6db06226e41c692fc82b8b56ac1c540c5bd50929b74c1a04954b78b4b6035e97,442e8300a13cfc307ffaad450d79fd434b05ee7f7a2ea03c0cb5dd7ad4a82e89))

Observed behavior

The parser rejects with:

unexpected «sortedmulti_a(4 args) while parsing Miniscript»

Control case

A closely related multi_a(...) descriptor under the same eltr(...) wrapper is accepted, normalized, and compiled:

eltr(02a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd,multi_a(2,50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,6db06226e41c692fc82b8b56ac1c540c5bd50929b74c1a04954b78b4b6035e97,442e8300a13cfc307ffaad450d79fd434b05ee7f7a2ea03c0cb5dd7ad4a82e89))

Cross-check

The equivalent miniscript shape is accepted and compiled by:

  • rust-miniscript
  • bitcoin/bitcoin
  • embit

Why this looks like a parser omission

The parser has explicit branches for multi and multi_a, but no corresponding branch for sortedmulti_a, so the generic fallback reports:

unexpected «sortedmulti_a(4 args) while parsing Miniscript»

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions