@1sat/actions 0.0.69 → 0.0.70

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.
@@ -20,6 +20,7 @@ export interface ScanResult {
20
20
  funding: SweepInput[];
21
21
  ordinals: SweepInput[];
22
22
  bsv21Tokens: TokenBalance[];
23
+ run: SweepInput[];
23
24
  totalFundingSats: number;
24
25
  }
25
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE1D,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,eAAe,EAAE,CAAA;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,WAAW,EAAE,YAAY,EAAE,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAkFrB"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAK1D,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,eAAe,EAAE,CAAA;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,WAAW,EAAE,YAAY,EAAE,CAAA;IAC3B,GAAG,EAAE,UAAU,EAAE,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAkGrB"}
@@ -4,6 +4,9 @@
4
4
  * Scans an address for UTXOs using the owner sync service and categorizes them
5
5
  * into funding, ordinals, and BSV-21 tokens.
6
6
  */
7
+ import { parseOutpoint } from '@1sat/utils';
8
+ /** RUN protocol OP_RETURN prefix: OP_FALSE OP_RETURN OP_PUSH3 "run" */
9
+ const RUN_PREFIX = Uint8Array.from([0x00, 0x6a, 0x03, 0x72, 0x75, 0x6e]);
7
10
  /**
8
11
  * Scan an address for UTXOs and categorize them into funding, ordinals, and BSV-21 tokens.
9
12
  * Uses the owner sync service to fetch unspent outputs.
@@ -75,7 +78,59 @@ export async function scanAddressUtxos(services, address) {
75
78
  inputs: group.inputs,
76
79
  });
77
80
  }
78
- const totalFundingSats = funding.reduce((sum, f) => sum + f.satoshis, 0);
79
- return { address, funding, ordinals, bsv21Tokens, totalFundingSats };
81
+ // Check funding outputs for RUN token transactions
82
+ const run = [];
83
+ const cleanFunding = [];
84
+ if (funding.length > 0) {
85
+ const runTxids = await detectRunTransactions(services, funding);
86
+ for (const f of funding) {
87
+ const { txid } = parseOutpoint(f.outpoint);
88
+ if (runTxids.has(txid)) {
89
+ run.push(f);
90
+ }
91
+ else {
92
+ cleanFunding.push(f);
93
+ }
94
+ }
95
+ }
96
+ const totalFundingSats = cleanFunding.reduce((sum, f) => sum + f.satoshis, 0);
97
+ return { address, funding: cleanFunding, ordinals, bsv21Tokens, run, totalFundingSats };
98
+ }
99
+ /**
100
+ * Check source transactions for the RUN protocol OP_RETURN pattern.
101
+ * Returns the set of txids that contain a RUN OP_RETURN output.
102
+ */
103
+ async function detectRunTransactions(services, funding) {
104
+ const txids = [...new Set(funding.map((f) => parseOutpoint(f.outpoint).txid))];
105
+ const runTxids = new Set();
106
+ for (const txid of txids) {
107
+ try {
108
+ const beef = await services.getBeefForTxid(txid);
109
+ const beefTx = beef.findTxid(txid);
110
+ if (!beefTx?.tx)
111
+ continue;
112
+ for (const output of beefTx.tx.outputs) {
113
+ const script = output.lockingScript?.toBinary();
114
+ if (script && hasRunPrefix(script)) {
115
+ runTxids.add(txid);
116
+ break;
117
+ }
118
+ }
119
+ }
120
+ catch {
121
+ // If we can't fetch the tx, leave the output in funding
122
+ }
123
+ }
124
+ return runTxids;
125
+ }
126
+ /** Check if a locking script starts with the RUN OP_RETURN prefix */
127
+ function hasRunPrefix(script) {
128
+ if (script.length < RUN_PREFIX.length)
129
+ return false;
130
+ for (let i = 0; i < RUN_PREFIX.length; i++) {
131
+ if (script[i] !== RUN_PREFIX[i])
132
+ return false;
133
+ }
134
+ return true;
80
135
  }
81
136
  //# sourceMappingURL=scan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1sat/actions",
3
- "version": "0.0.69",
3
+ "version": "0.0.70",
4
4
  "description": "Action definitions for the 1Sat SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",