@1sat/actions 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/paymail.d.ts +20 -0
- package/dist/paymail.d.ts.map +1 -0
- package/dist/paymail.js +83 -0
- package/dist/paymail.js.map +1 -0
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +24 -7
- package/dist/payments/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight paymail client for P2P payments.
|
|
3
|
+
*
|
|
4
|
+
* Handles SRV resolution via Google DoH with a fix for Cloudflare-managed
|
|
5
|
+
* zones that return NOERROR with empty answers instead of NXDOMAIN.
|
|
6
|
+
*/
|
|
7
|
+
export interface P2pDestination {
|
|
8
|
+
reference: string;
|
|
9
|
+
outputs: {
|
|
10
|
+
script: string;
|
|
11
|
+
satoshis: number;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
export interface P2pSendResult {
|
|
15
|
+
txid: string;
|
|
16
|
+
note?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function getP2pPaymentDestination(paymail: string, satoshis: number): Promise<P2pDestination>;
|
|
19
|
+
export declare function sendTransactionP2P(paymail: string, hex: string, reference: string): Promise<P2pSendResult>;
|
|
20
|
+
//# sourceMappingURL=paymail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paymail.d.ts","sourceRoot":"","sources":["../src/paymail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC/C;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AA8CD,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
|
package/dist/paymail.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight paymail client for P2P payments.
|
|
3
|
+
*
|
|
4
|
+
* Handles SRV resolution via Google DoH with a fix for Cloudflare-managed
|
|
5
|
+
* zones that return NOERROR with empty answers instead of NXDOMAIN.
|
|
6
|
+
*/
|
|
7
|
+
const DOH_URL = 'https://dns.google.com/resolve';
|
|
8
|
+
const P2P_PAYMENT_DESTINATION = '2a40af698840';
|
|
9
|
+
const P2P_RECEIVE_TX = '5f1323cddf31';
|
|
10
|
+
const capabilityCache = new Map();
|
|
11
|
+
async function resolveHost(domain) {
|
|
12
|
+
const resp = await fetch(`${DOH_URL}?name=_bsvalias._tcp.${domain}&type=SRV&cd=0`);
|
|
13
|
+
const doh = await resp.json();
|
|
14
|
+
// NXDOMAIN or NOERROR with no answer — fall back to domain:443
|
|
15
|
+
if (doh.Status === 3 || !doh.Answer?.length) {
|
|
16
|
+
return { host: domain, port: 443 };
|
|
17
|
+
}
|
|
18
|
+
// Parse SRV answer: "priority weight port target"
|
|
19
|
+
const parts = doh.Answer[0].data.split(' ');
|
|
20
|
+
let target = parts[3];
|
|
21
|
+
if (target.endsWith('.'))
|
|
22
|
+
target = target.slice(0, -1);
|
|
23
|
+
// If DNSSEC-validated, trust the target. Otherwise require domain match.
|
|
24
|
+
if (!doh.AD) {
|
|
25
|
+
const norm = (d) => d.replace(/\.$/, '');
|
|
26
|
+
const a = norm(domain);
|
|
27
|
+
const b = norm(target);
|
|
28
|
+
if (a !== b && !a.endsWith('.' + b) && !b.endsWith('.' + a)) {
|
|
29
|
+
// Untrusted redirect — fall back to domain
|
|
30
|
+
return { host: domain, port: 443 };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { host: target, port: parseInt(parts[2]) };
|
|
34
|
+
}
|
|
35
|
+
async function getCapabilities(domain) {
|
|
36
|
+
const cached = capabilityCache.get(domain);
|
|
37
|
+
if (cached)
|
|
38
|
+
return cached;
|
|
39
|
+
const { host, port } = await resolveHost(domain);
|
|
40
|
+
const resp = await fetch(`https://${host}:${port}/.well-known/bsvalias`);
|
|
41
|
+
const json = await resp.json();
|
|
42
|
+
const caps = json.capabilities;
|
|
43
|
+
capabilityCache.set(domain, caps);
|
|
44
|
+
return caps;
|
|
45
|
+
}
|
|
46
|
+
function resolveUrl(template, alias, domain) {
|
|
47
|
+
return template.replace('{alias}', alias).replace('{domain.tld}', domain);
|
|
48
|
+
}
|
|
49
|
+
export async function getP2pPaymentDestination(paymail, satoshis) {
|
|
50
|
+
const [alias, domain] = paymail.split('@');
|
|
51
|
+
const caps = await getCapabilities(domain);
|
|
52
|
+
const url = caps[P2P_PAYMENT_DESTINATION];
|
|
53
|
+
if (!url)
|
|
54
|
+
throw new Error(`${domain} does not support P2P payment destinations`);
|
|
55
|
+
const resp = await fetch(resolveUrl(url, alias, domain), {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: { 'Content-Type': 'application/json' },
|
|
58
|
+
body: JSON.stringify({ satoshis }),
|
|
59
|
+
});
|
|
60
|
+
if (!resp.ok)
|
|
61
|
+
throw new Error(`P2P destination request failed: ${resp.status}`);
|
|
62
|
+
return await resp.json();
|
|
63
|
+
}
|
|
64
|
+
export async function sendTransactionP2P(paymail, hex, reference) {
|
|
65
|
+
const [alias, domain] = paymail.split('@');
|
|
66
|
+
const caps = await getCapabilities(domain);
|
|
67
|
+
const url = caps[P2P_RECEIVE_TX];
|
|
68
|
+
if (!url)
|
|
69
|
+
throw new Error(`${domain} does not support P2P transaction receive`);
|
|
70
|
+
const resp = await fetch(resolveUrl(url, alias, domain), {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: { 'Content-Type': 'application/json' },
|
|
73
|
+
body: JSON.stringify({
|
|
74
|
+
hex,
|
|
75
|
+
reference,
|
|
76
|
+
metadata: { sender: '1Sat Wallet', pubkey: '', signature: '', note: '' },
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
79
|
+
if (!resp.ok)
|
|
80
|
+
throw new Error(`P2P send failed: ${resp.status}`);
|
|
81
|
+
return await resp.json();
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=paymail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paymail.js","sourceRoot":"","sources":["../src/paymail.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAYtC,MAAM,WAAW,cAAc;IAC9B,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,uBAAuB;IACvB,WAAW,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAyCD,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CA6HzD,CAAA;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC/B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,CAkD/D,CAAA;AAMD,uCAAuC;AACvC,eAAO,MAAM,eAAe,sFAAwB,CAAA"}
|
package/dist/payments/index.js
CHANGED
|
@@ -5,17 +5,20 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Inscription } from '@bopen-io/templates';
|
|
7
7
|
import { P2PKH, Script, Utils } from '@bsv/sdk';
|
|
8
|
+
import { getP2pPaymentDestination, sendTransactionP2P } from '../paymail';
|
|
8
9
|
/**
|
|
9
10
|
* Magic constant that tells the wallet to send all available funds minus fees.
|
|
10
11
|
* When an output has this satoshis value, it's adjusted to the maximum fundable amount.
|
|
11
12
|
*/
|
|
12
13
|
const maxPossibleSatoshis = 2099999999999999;
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// Internal helpers
|
|
15
|
-
// ============================================================================
|
|
16
14
|
function isPaymail(address) {
|
|
17
15
|
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(address);
|
|
18
16
|
}
|
|
17
|
+
async function deliverP2P(refs, txHex) {
|
|
18
|
+
for (const ref of refs) {
|
|
19
|
+
await sendTransactionP2P(ref.paymail, txHex, ref.reference);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
19
22
|
function buildInscriptionScript(address, base64Data, mimeType) {
|
|
20
23
|
const content = Utils.toArray(base64Data, 'base64');
|
|
21
24
|
const inscription = Inscription.create(new Uint8Array(content), mimeType);
|
|
@@ -78,7 +81,21 @@ export const sendBsv = {
|
|
|
78
81
|
return { error: 'no-requests' };
|
|
79
82
|
}
|
|
80
83
|
const outputs = [];
|
|
84
|
+
const paymailRefs = [];
|
|
81
85
|
for (const req of requests) {
|
|
86
|
+
if (req.paymail) {
|
|
87
|
+
const dest = await getP2pPaymentDestination(req.paymail, req.satoshis);
|
|
88
|
+
paymailRefs.push({ paymail: req.paymail, reference: dest.reference });
|
|
89
|
+
for (const output of dest.outputs) {
|
|
90
|
+
outputs.push({
|
|
91
|
+
lockingScript: output.script,
|
|
92
|
+
satoshis: output.satoshis,
|
|
93
|
+
outputDescription: `Paymail payment to ${req.paymail}`,
|
|
94
|
+
tags: [],
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
82
99
|
let lockingScript;
|
|
83
100
|
if (req.script) {
|
|
84
101
|
lockingScript = Script.fromHex(req.script);
|
|
@@ -99,9 +116,6 @@ export const sendBsv = {
|
|
|
99
116
|
return { error: 'invalid-data' };
|
|
100
117
|
}
|
|
101
118
|
}
|
|
102
|
-
else if (req.paymail) {
|
|
103
|
-
return { error: 'paymail-not-yet-implemented' };
|
|
104
|
-
}
|
|
105
119
|
else {
|
|
106
120
|
return { error: 'invalid-request' };
|
|
107
121
|
}
|
|
@@ -120,6 +134,9 @@ export const sendBsv = {
|
|
|
120
134
|
if (!result.txid) {
|
|
121
135
|
return { error: 'no-txid-returned' };
|
|
122
136
|
}
|
|
137
|
+
if (paymailRefs.length > 0 && result.tx) {
|
|
138
|
+
await deliverP2P(paymailRefs, Utils.toHex(result.tx));
|
|
139
|
+
}
|
|
123
140
|
return {
|
|
124
141
|
txid: result.txid,
|
|
125
142
|
rawtx: result.tx ? Utils.toHex(result.tx) : undefined,
|
|
@@ -156,7 +173,7 @@ export const sendAllBsv = {
|
|
|
156
173
|
try {
|
|
157
174
|
const { destination } = input;
|
|
158
175
|
if (isPaymail(destination)) {
|
|
159
|
-
return { error: 'paymail
|
|
176
|
+
return { error: 'sendAllBsv does not support paymail — use sendBsv with a fixed amount' };
|
|
160
177
|
}
|
|
161
178
|
const result = await ctx.wallet.createAction({
|
|
162
179
|
description: 'Send all BSV',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAA2B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"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"}
|