Skip to content

Conversation

@jgriffiths
Copy link
Contributor

@jgriffiths jgriffiths commented May 18, 2025

  • Support el prefixes for descriptor builtins, and mark the descriptor as elements if used.
  • Support the top-level ct() confidential descriptor builtin.
  • Support slip77 and ELIP-150 blinding keys inside ct() descriptors.
  • Support fetching blinding keys from ct() descriptors.
  • Support confidential address generation from confidential descriptors.
  • Expose calls for pubkey and elip-150 tweaking.
  • Tests for the above.

jgriffiths added 17 commits May 12, 2025 23:00
There is no need to use the node flags since the entire descriptor is
either Elements or not.
This key is reused in the ELIP-150 tests so give it a short name to make
the test easier to read.
These are not documented anywhere and are only implemented in
rust-miniscript, which renames descriptor builtins to be prefixed
with "el" - making them incompatible with any descriptor currently
supported by Elements core.

However the test vectors from ELIP-0150 include elsh(wpkh()) expressions
in addition to elwpkh() expressions, which seems to indicate that mixing
prefixed and non-prefixed builtins should be accepted.

This implementation therefore allows mixing prefixed and non-prefixed
builtins, with the descriptor being marked as Elements if either a
prefixed builtin is given, or if the descriptor is explicitly parsed as
Elements via WALLY_MINISCRIPT_AS_ELEMENTS.
Allows callers to avoid doing the private-to-public key
conversion themselves.
…ddresses

Add the slip77 test cases from ELIP-0150.
Confidential descriptors require tweaking - wrap it to reduce
internal code duplication.
generate_ functions behave like the standard wally API calls, while
generate_inplace_ functions read and possibly adjust the written
parameter because they modify already generated output.

Make this handling more explicit and consistent, and add a check to
avoid a scan-build false positive triggered by the new ct() code.
In particular, ensure that ct() blinding keys are not returned as
regular keys.
20.04 is EOL and no longer supported by github for building.
@jgriffiths jgriffiths force-pushed the elements_descriptor branch from a821abb to 823f21c Compare May 18, 2025 23:09
@jgriffiths jgriffiths force-pushed the elements_descriptor branch from 2658df1 to 45a7bed Compare May 20, 2025 06:19
@jgriffiths jgriffiths merged commit 45a7bed into master May 27, 2025
5 checks passed
@jgriffiths jgriffiths deleted the elements_descriptor branch May 27, 2025 05:53
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.

1 participant