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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions