Skip to content

Support DNS payment instructions, BIP353 #13

Closed

Description

@notmandatory

Describe the enhancement

A new transaction builder crate should add an optional feature to enable DNS payment instructions support. If this option is enabled the builder will include a new function to add a recipient via their DNS payment instructions name, i.e. ₿user@domain or user@domain, instead of a bitcoin address.

An error must be thrown if the DNS payment instructions lookup does not return valid payment instructions that include an on-chain address. An error should also be thrown if the user supplied payment amount does not equal the returned payment instructions fixed amount or is not in the min/max range for a configurable amount.

If a DNS payment instructions derived address is used for an output then the PSBT_OUT_DNSSEC_PROOF must also be included in the resulting PSBT.

Use case

This feature will allow a wallet developer to enable paying recipients via their human readable DNS payment instructions name. It will also allow hardware wallets that support BIP353 to validate and display the recipients payment instructions name.

Initially this will only support static on-chain addresses which are likely to be reused and thus be less private. But when BDK is able to support Silent Payments this feature can be used in a way that avoids address reuse.

For a full run-down of the pros/cons see BIP353.

Additional context

BIP 21: URI Scheme
BIP 353: DNS Payment Instructions
BIP 352: Silent Payments

@TheBlueMatt created a new bitcoin-payment-instructions crate to lookup, validate and parse DNS bitcoin payment instructions. It should make the implementation of this feature pretty straight forward. See discussion on discord.

Activity

  1. moved this to Discussion in BDK Walleton Apr 5, 2025
  2. added this to the 2.0.0 milestone on Apr 5, 2025
  3. sdmg15 commented on May 5, 2025

    @sdmg15

    Should we wait for this to be merged ? bitcoindevkit/bdk-tx#1
    Was already prototyping something and came across that PR.

    I'm also not sure to understand what you mean by "A new transaction builder crate". Shouldn't updating the tx_builder.rs with a feature flag enough?

  4. notmandatory commented on Dec 1, 2025

    @notmandatory
    MemberAuthor

    @sdmg15 sorry I just saw your comment. You don't have to wait for bdk-tx to be finished, you can work on adding this feature on your fork of the latest bdk-tx repo.

  5. sdmg15 commented on Dec 2, 2025

    @sdmg15

    Alright, the PR I was referring to in the comment was merged in the meantime. Anyway working to get a draft PR for this in the next few days.

  6. notmandatory commented on Dec 2, 2025

    @notmandatory
    MemberAuthor

    Great! I put your name on this issue so others know you're working on it.

  7. notmandatory commented on Dec 16, 2025

    @notmandatory
    MemberAuthor

    Per discussion in dev call today, my thinking now is that this feature probably doesn't need to be directly implemented in bdk_wallet or the new bdk-tx. Instead it could be done first as a new feature in bdk-cli and based on the example there turned into a detailed tutorial in the book-of-bdk for how to use the bitcoin-payment-instructions crate with a BDK based wallet app.

  8. moved this from Discussion to Todo in BDK Walleton Mar 3, 2026
  9. moved this from Todo to Discussion in BDK Walleton Apr 14, 2026
  10. removed this from the Wallet 3.1.0 milestone on Apr 14, 2026
  11. github-actions commented on Oct 12, 2026

    @github-actions

    This issue has been inactive for 180 days and labeled stale, comment to keep it open. It will be closed in 30 days if there is no activity.

  12. notmandatory commented on Oct 13, 2026

    @notmandatory
    MemberAuthor

    I'd like to close this one as complete since bitcoindevkit/bdk-cli#236 is merged and is a complete example of how to use HRN support with BDK. Ideally we'd have sending to SP address support too, but it will be a small change when that's ready.

  13. sdmg15 commented on Oct 13, 2026

    @sdmg15

    Yes we can go ahead and close this one.

  14. moved this from Triage to Done in BDK Walleton Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

new featureNew feature or request

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions