aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/index.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-01 20:28:56 -0700
committerAdam Soltys <[email protected]>2026-08-01 20:28:56 -0700
commit5986cbf5337593eb11fd984d284bd41da7719a87 (patch)
tree4ea35eb279b7213f5ebe9ec77118710612f35b6d /src/features/index.js
parent348a57004f94dd0f58c4e70769e65ca7ea3f7619 (diff)
downloadcoinosv3-5986cbf5337593eb11fd984d284bd41da7719a87.tar.gz
coinosv3-5986cbf5337593eb11fd984d284bd41da7719a87.zip
Payment names: ₿[email protected] via BIP-353 DNS payment instructions
Receiving: a Settings card claims a username, signed with the wallet's nostr key; the new names registrar (names/server.js, deployed at names.halwallet.app) enforces first-come ownership by that key and mirrors the claim into a DNSSEC-signed TXT record at <name>.user._bitcoin-payment.halwallet.app whose BIP-21 URI carries the wallet's reusable ark address. The record re-registers itself if the ark address ever changes, and a collapsible hint shows the single CNAME a user adds to serve the same name from their own domain (BIP-353 supports delegation when both zones are DNSSEC-signed). Sending: a pasted name@domain resolves over DNS first — two independent DoH resolvers must agree and both report the DNSSEC AD flag (full client-side chain validation is the stated follow-up) — an ark= instruction pays natively, an on-chain path fills the send form, and a name with no DNS record falls back to the Lightning-address zap flow. Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat (limited to 'src/features/index.js')
-rw-r--r--src/features/index.js5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/features/index.js b/src/features/index.js
index 583334f..e34de3d 100644
--- a/src/features/index.js
+++ b/src/features/index.js
@@ -6,6 +6,7 @@
import { giftsFeature } from './gifts.js';
import { arkFeature } from './ark.js';
+import { namesFeature } from './names.js';
import { zapsFeature } from './zaps.js';
import { syncFeature } from './sync.js';
import { nwcFeature } from './nwc.js';
@@ -15,6 +16,8 @@ import { nwcFeature } from './nwc.js';
// after ark so an npub prefers an instant Ark zap and only falls through to a
// Lightning zap when Ark can't serve it. nwc sits after ark because it
// drives ark's headless pay/balance seam.
+// names sits between ark and zaps: a pasted user@domain resolves over DNS
+// (BIP-353) before the zaps feature treats it as a plain Lightning address.
export function buildFeatures(ctx) {
- return [giftsFeature(ctx), arkFeature(ctx), zapsFeature(ctx), nwcFeature(ctx), syncFeature(ctx)];
+ return [giftsFeature(ctx), arkFeature(ctx), namesFeature(ctx), zapsFeature(ctx), nwcFeature(ctx), syncFeature(ctx)];
}