From 91e0196d29eb8b6f209e5f6cb9594cf80f0dd4a2 Mon Sep 17 00:00:00 2001 From: "Mark E. Jeftovic" Date: Wed, 8 Oct 2025 11:54:10 -0400 Subject: [PATCH 1/3] Update bip-0353.mediawiki BIP-353: Clarify TXT record structure and concatenation order (single RR; RDATA order; no cross-RR joins) --- bip-0353.mediawiki | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bip-0353.mediawiki b/bip-0353.mediawiki index 120eae5824..483fe40cda 100644 --- a/bip-0353.mediawiki +++ b/bip-0353.mediawiki @@ -36,7 +36,9 @@ Thus, using TXT records to store Bitcoin payment instructions allows for human-r Bitcoin wallets MUST NOT prefer to use DNS-based resolving when methods with explicit public keys or addresses are available. In other words, if a standard Bitcoin address or direct BIP 21 URI is available or would suffice, Bitcoin wallets MUST prefer to use that instead. === Records === -Payment instructions are indexed by both a user and a domain. Instructions for a given user and domain are stored at user.user._bitcoin-payment.domain in a single TXT record. +Payment instructions are indexed by both a user and a domain. Instructions for a given user and domain are stored at user.user._bitcoin-payment.domain in a single TXT RR. + +The TXT RR’s RDATA MUST consist of one or more DNS <character-string>s (see [[https://www.rfc-editor.org/rfc/rfc1035#section-3.3.14|RFC 1035 §3.3.14]]), each ≤255 bytes. All payment instructions MUST be DNSSEC-signed. @@ -52,7 +54,10 @@ For payment instructions that have a built-in expiry time (e.g. Lightning BOLT 1 Clients resolving Bitcoin payment instructions MUST ignore any TXT records at the same label which do not begin with (ignoring case) "bitcoin:". Resolvers encountering multiple "bitcoin:"-matching TXT records at the same label MUST treat the records as invalid and refuse to use any payment instructions therein. -Clients resolving Bitcoin payment instructions MUST concatenate all strings in the TXT record before processing the complete URI.TXT records are defined as "one or more character-strings" in [[https://www.rfc-editor.org/rfc/rfc1035#section-3.3.14|RFC 1035]], and a "character-string" is a single byte (with a max value of 255) followed by that many characters. +Clients resolving Bitcoin payment instructions MUST reconstruct the bitcoin: URI by concatenating the TXT RR’s <character-string> fields in RDATA order, without inserting separators, before parsing.DNS TXT RDATA consists of one or more length-prefixed strings with a maximum of 255 bytes of content; see RFC 1035 §3.3.14. + +Clients MUST NOT concatenate across multiple TXT RRs at the same owner name. +If more than one TXT RR beginning with (case-insensitive) bitcoin: is present at that owner name, clients MUST treat the name as invalid. Clients resolving Bitcoin payment instructions MUST fully validate DNSSEC signatures leading to the DNS root (including any relevant CNAME or DNAME records) and MUST NOT accept DNSSEC signatures which use SHA-1 or RSA with keys shorter than 1024 bits. Resolvers MAY accept SHA-1 DS records. From 2e9e55eb23ee4c657ade9e9770df3cbf8a2c33e2 Mon Sep 17 00:00:00 2001 From: "Mark E. Jeftovic" Date: Wed, 8 Oct 2025 13:34:37 -0400 Subject: [PATCH 2/3] Update bip-0353.mediawiki MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit removed: “If more than one TXT RR beginning with bitcoin: … treat as invalid.” -- redundant. --- bip-0353.mediawiki | 1 - 1 file changed, 1 deletion(-) diff --git a/bip-0353.mediawiki b/bip-0353.mediawiki index 483fe40cda..6f82eec660 100644 --- a/bip-0353.mediawiki +++ b/bip-0353.mediawiki @@ -57,7 +57,6 @@ Clients resolving Bitcoin payment instructions MUST ignore any TXT records at th Clients resolving Bitcoin payment instructions MUST reconstruct the bitcoin: URI by concatenating the TXT RR’s <character-string> fields in RDATA order, without inserting separators, before parsing.DNS TXT RDATA consists of one or more length-prefixed strings with a maximum of 255 bytes of content; see RFC 1035 §3.3.14. Clients MUST NOT concatenate across multiple TXT RRs at the same owner name. -If more than one TXT RR beginning with (case-insensitive) bitcoin: is present at that owner name, clients MUST treat the name as invalid. Clients resolving Bitcoin payment instructions MUST fully validate DNSSEC signatures leading to the DNS root (including any relevant CNAME or DNAME records) and MUST NOT accept DNSSEC signatures which use SHA-1 or RSA with keys shorter than 1024 bits. Resolvers MAY accept SHA-1 DS records. From a686b1f8cad44a376c4b10fd89de15d03cd2c002 Mon Sep 17 00:00:00 2001 From: "Mark E. Jeftovic" Date: Thu, 9 Oct 2025 19:42:59 -0400 Subject: [PATCH 3/3] Update bip-0353.mediawiki MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix markup: use literal instead of html entities <…> --- bip-0353.mediawiki | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bip-0353.mediawiki b/bip-0353.mediawiki index 6f82eec660..ed02003236 100644 --- a/bip-0353.mediawiki +++ b/bip-0353.mediawiki @@ -38,7 +38,7 @@ Bitcoin wallets MUST NOT prefer to use DNS-based resolving when methods with exp === Records === Payment instructions are indexed by both a user and a domain. Instructions for a given user and domain are stored at user.user._bitcoin-payment.domain in a single TXT RR. -The TXT RR’s RDATA MUST consist of one or more DNS <character-string>s (see [[https://www.rfc-editor.org/rfc/rfc1035#section-3.3.14|RFC 1035 §3.3.14]]), each ≤255 bytes. +The TXT RR’s RDATA MUST consist of one or more DNS s (see [[https://www.rfc-editor.org/rfc/rfc1035#section-3.3.14|RFC 1035 §3.3.14]]), each ≤255 bytes. All payment instructions MUST be DNSSEC-signed. @@ -54,7 +54,7 @@ For payment instructions that have a built-in expiry time (e.g. Lightning BOLT 1 Clients resolving Bitcoin payment instructions MUST ignore any TXT records at the same label which do not begin with (ignoring case) "bitcoin:". Resolvers encountering multiple "bitcoin:"-matching TXT records at the same label MUST treat the records as invalid and refuse to use any payment instructions therein. -Clients resolving Bitcoin payment instructions MUST reconstruct the bitcoin: URI by concatenating the TXT RR’s <character-string> fields in RDATA order, without inserting separators, before parsing.DNS TXT RDATA consists of one or more length-prefixed strings with a maximum of 255 bytes of content; see RFC 1035 §3.3.14. +Clients resolving Bitcoin payment instructions MUST reconstruct the bitcoin: URI by concatenating the TXT RR’s fields in RDATA order, without inserting separators, before parsing.DNS TXT RDATA consists of one or more length-prefixed strings with a maximum of 255 bytes of content; see RFC 1035 §3.3.14. Clients MUST NOT concatenate across multiple TXT RRs at the same owner name.