@bsv/overlay 0.1.0-alpha.1 → 0.1.0-alpha.2

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.
Files changed (51) hide show
  1. package/dist/cjs/mod.js +5 -14
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +2 -2
  4. package/dist/cjs/src/Engine.js +110 -43
  5. package/dist/cjs/src/Engine.js.map +1 -1
  6. package/dist/cjs/src/storage/knex/KnexStorage.js +25 -3
  7. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  8. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  9. package/dist/esm/mod.js +2 -13
  10. package/dist/esm/mod.js.map +1 -1
  11. package/dist/esm/src/Engine.js +110 -43
  12. package/dist/esm/src/Engine.js.map +1 -1
  13. package/dist/esm/src/storage/knex/KnexStorage.js +24 -3
  14. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  15. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  16. package/dist/types/mod.d.ts +12 -12
  17. package/dist/types/mod.d.ts.map +1 -1
  18. package/dist/types/src/AdmittanceInstructions.d.ts +2 -2
  19. package/dist/types/src/AdmittanceInstructions.d.ts.map +1 -1
  20. package/dist/types/src/Engine.d.ts +46 -26
  21. package/dist/types/src/Engine.d.ts.map +1 -1
  22. package/dist/types/src/LookupAnswer.d.ts.map +1 -1
  23. package/dist/types/src/LookupFormula.d.ts +5 -5
  24. package/dist/types/src/LookupFormula.d.ts.map +1 -1
  25. package/dist/types/src/LookupQuestion.d.ts.map +1 -1
  26. package/dist/types/src/LookupService.d.ts +32 -20
  27. package/dist/types/src/LookupService.d.ts.map +1 -1
  28. package/dist/types/src/Output.d.ts +4 -4
  29. package/dist/types/src/Output.d.ts.map +1 -1
  30. package/dist/types/src/STEAK.d.ts +1 -1
  31. package/dist/types/src/TopicManager.d.ts +5 -5
  32. package/dist/types/src/TopicManager.d.ts.map +1 -1
  33. package/dist/types/src/storage/Storage.d.ts +47 -34
  34. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  35. package/dist/types/src/storage/knex/KnexStorage.d.ts +6 -4
  36. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  37. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  38. package/mod.ts +12 -12
  39. package/package.json +2 -2
  40. package/src/AdmittanceInstructions.ts +8 -8
  41. package/src/Engine.ts +458 -383
  42. package/src/LookupAnswer.ts +7 -7
  43. package/src/LookupFormula.ts +21 -21
  44. package/src/LookupQuestion.ts +9 -9
  45. package/src/LookupService.ts +54 -36
  46. package/src/Output.ts +22 -22
  47. package/src/STEAK.ts +1 -1
  48. package/src/TopicManager.ts +21 -15
  49. package/src/__tests/Engine.test.ts +6 -4
  50. package/src/storage/Storage.ts +49 -34
  51. package/src/storage/knex/KnexStorage.ts +101 -76
package/dist/cjs/mod.js CHANGED
@@ -23,21 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.KnexStorageMigrations = exports.KnexStorage = exports.LookupAnswer = exports.LookupFormula = exports.LookupQuestion = exports.STEAK = exports.TaggedBEEF = exports.AdmittanceInstructions = exports.Output = exports.Storage = exports.TopicManager = exports.LookupService = exports.Engine = void 0;
26
+ exports.KnexStorageMigrations = exports.KnexStorage = exports.Engine = void 0;
27
27
  // Fundamentals
28
- exports.Engine = __importStar(require("./src/Engine.js"));
29
- exports.LookupService = __importStar(require("./src/LookupService.js"));
30
- exports.TopicManager = __importStar(require("./src/TopicManager.js"));
31
- // Interfaces and structures
32
- exports.Storage = __importStar(require("./src/storage/Storage.js"));
33
- exports.Output = __importStar(require("./src/Output.js"));
34
- exports.AdmittanceInstructions = __importStar(require("./src/AdmittanceInstructions.js"));
35
- exports.TaggedBEEF = __importStar(require("./src/TaggedBEEF.js"));
36
- exports.STEAK = __importStar(require("./src/STEAK.js"));
37
- exports.LookupQuestion = __importStar(require("./src/LookupQuestion.js"));
38
- exports.LookupFormula = __importStar(require("./src/LookupFormula.js"));
39
- exports.LookupAnswer = __importStar(require("./src/LookupAnswer.js"));
28
+ var Engine_js_1 = require("./src/Engine.js");
29
+ Object.defineProperty(exports, "Engine", { enumerable: true, get: function () { return Engine_js_1.Engine; } });
40
30
  // The Knex storage system
41
- exports.KnexStorage = __importStar(require("./src/storage/knex/KnexStorage.js"));
31
+ var KnexStorage_js_1 = require("./src/storage/knex/KnexStorage.js");
32
+ Object.defineProperty(exports, "KnexStorage", { enumerable: true, get: function () { return KnexStorage_js_1.KnexStorage; } });
42
33
  exports.KnexStorageMigrations = __importStar(require("./src/storage/knex/all-migrations.js"));
43
34
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,0DAAyC;AACzC,wEAAuD;AACvD,sEAAqD;AAErD,4BAA4B;AAC5B,oEAAmD;AACnD,0DAAyC;AACzC,0FAAyE;AACzE,kEAAiD;AACjD,wDAAuC;AACvC,0EAAyD;AACzD,wEAAuD;AACvD,sEAAqD;AAErD,0BAA0B;AAC1B,iFAAgE;AAChE,8FAA6E"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,6CAAwC;AAA/B,mGAAA,MAAM,OAAA;AAcf,0BAA0B;AAC1B,oEAA+D;AAAtD,6GAAA,WAAW,OAAA;AACpB,8FAA6E"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/overlay",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.2",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Overlay Services Engine",
6
6
  "files": [
@@ -47,7 +47,7 @@
47
47
  "typescript": "^5.2.2"
48
48
  },
49
49
  "dependencies": {
50
- "@bsv/sdk": "^1.0.20",
50
+ "@bsv/sdk": "^1.1.4",
51
51
  "knex": "^3.1.0"
52
52
  }
53
53
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Engine = void 0;
3
4
  const sdk_1 = require("@bsv/sdk");
4
5
  /**
5
6
  * Am engine for running BSV Overlay Services (topic managers and lookup services).
@@ -11,15 +12,14 @@ class Engine {
11
12
  * @param {[key: string]: LookupService} lookupServices - manages UTXO lookups
12
13
  * @param {Storage} storage - for interacting with internally-managed persistent data
13
14
  * @param {ChainTracker} chainTracker - Verifies SPV data associated with transactions
14
- * @param {ProofNotifier[]} [proofNotifiers] - proof notifier services coming soon!
15
+ * @param {Broadcaster} [Broadcaster] - broadcaster used for broadcasting the incoming transaction
15
16
  */
16
- constructor(managers, lookupServices, storage, chainTracker
17
- // public proofNotifiers: ProofNotifier[]
18
- ) {
17
+ constructor(managers, lookupServices, storage, chainTracker, broadcaster) {
19
18
  this.managers = managers;
20
19
  this.lookupServices = lookupServices;
21
20
  this.storage = storage;
22
21
  this.chainTracker = chainTracker;
22
+ this.broadcaster = broadcaster;
23
23
  }
24
24
  /**
25
25
  * Submits a transaction for processing by Overlay Services.
@@ -29,8 +29,9 @@ class Engine {
29
29
  async submit(taggedBEEF) {
30
30
  var _a, _b;
31
31
  for (const t of taggedBEEF.topics) {
32
- if (!this.managers[t])
32
+ if (this.managers[t] === undefined || this.managers[t] === null) {
33
33
  throw new Error(`This server does not support this topic: ${t}`);
34
+ }
34
35
  }
35
36
  // Validate the transaction SPV information
36
37
  const tx = sdk_1.Transaction.fromBEEF(taggedBEEF.beef);
@@ -63,14 +64,14 @@ class Engine {
63
64
  const previousTXID = input.sourceTXID || ((_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex'));
64
65
  // Check if a previous UTXO exists in the storage medium
65
66
  const output = await this.storage.findOutput(previousTXID, input.sourceOutputIndex, topic);
66
- if (output) {
67
+ if (output !== undefined && output !== null) {
67
68
  previousCoins.push(i);
68
69
  // This output is now spent.
69
70
  await this.storage.markUTXOAsSpent(output.txid, output.outputIndex, topic);
70
71
  // Notify the lookup services about the spending of this output
71
72
  for (const l of Object.values(this.lookupServices)) {
72
73
  try {
73
- if (l.outputSpent) {
74
+ if (l.outputSpent !== undefined && l.outputSpent !== null) {
74
75
  await l.outputSpent(output.txid, output.outputIndex, topic);
75
76
  }
76
77
  }
@@ -93,9 +94,9 @@ class Engine {
93
94
  continue;
94
95
  }
95
96
  // Keep track of which outputs to admit, mark as stale, or retain
96
- let outputsToAdmit = admissableOutputs.outputsToAdmit;
97
- let staleCoins = [];
98
- let outputsConsumed = [];
97
+ const outputsToAdmit = admissableOutputs.outputsToAdmit;
98
+ const staleCoins = [];
99
+ const outputsConsumed = [];
99
100
  // Find which outputs should not be retained and mark them as stale
100
101
  // For each of the previous UTXOs, if the the UTXO was not included in the list of UTXOs identified for retention, then it will be marked as stale.
101
102
  for (const inputIndex of previousCoins) {
@@ -117,7 +118,7 @@ class Engine {
117
118
  // Remove stale outputs recursively
118
119
  for (const coin of staleCoins) {
119
120
  const output = await this.storage.findOutput(coin.txid, coin.outputIndex, topic);
120
- if (output) {
121
+ if (output !== undefined && output !== null) {
121
122
  await this.deleteUTXODeep(output);
122
123
  }
123
124
  }
@@ -143,7 +144,7 @@ class Engine {
143
144
  // Notify all the lookup services about the new UTXO
144
145
  for (const l of Object.values(this.lookupServices)) {
145
146
  try {
146
- if (l.outputAdded) {
147
+ if (l.outputAdded !== undefined && l.outputAdded !== null) {
147
148
  await l.outputAdded(txid, outputIndex, tx.outputs[outputIndex].lockingScript, topic);
148
149
  }
149
150
  }
@@ -153,7 +154,7 @@ class Engine {
153
154
  // Update each output consumed to know who consumed it
154
155
  for (const output of outputsConsumed) {
155
156
  const outputToUpdate = await this.storage.findOutput(output.txid, output.outputIndex, topic);
156
- if (outputToUpdate) {
157
+ if (outputToUpdate !== undefined && outputToUpdate !== null) {
157
158
  const newConsumedBy = [...new Set([...newUTXOs, ...outputToUpdate.consumedBy])];
158
159
  // Note: only update if newConsumedBy !== new Set(JSON.parse(outputToUpdate.consumedBy)) ?
159
160
  await this.storage.updateConsumedBy(output.txid, output.outputIndex, topic, newConsumedBy);
@@ -167,8 +168,11 @@ class Engine {
167
168
  // Keep track of what outputs were admitted for what topic
168
169
  steak[topic] = admissableOutputs;
169
170
  }
171
+ // Broadcast the transaction
172
+ if (Object.keys(steak).length > 0 && this.broadcaster !== undefined) {
173
+ await this.broadcaster.broadcast(tx);
174
+ }
170
175
  return steak;
171
- // TODO subscribe to get notified by proof notifiers when proof is found for TX if not already present, so the tree can be chopped down
172
176
  // TODO propagate transaction to other nodes according to synchronization agreements
173
177
  }
174
178
  /**
@@ -179,7 +183,7 @@ class Engine {
179
183
  async lookup(lookupQuestion) {
180
184
  // Validate a lookup service for the provider is found
181
185
  const lookupService = this.lookupServices[lookupQuestion.service];
182
- if (!lookupService)
186
+ if (lookupService === undefined || lookupService === null)
183
187
  throw new Error(`Lookup service not found for provider: ${lookupQuestion.service}`);
184
188
  let lookupResult = await lookupService.lookup(lookupQuestion);
185
189
  // Handle custom lookup service answers
@@ -191,11 +195,11 @@ class Engine {
191
195
  for (const { txid, outputIndex, history } of lookupResult) {
192
196
  // Make sure this is an unspent output (UTXO)
193
197
  const UTXO = await this.storage.findOutput(txid, outputIndex, undefined, false);
194
- if (!UTXO)
198
+ if (UTXO === undefined || UTXO === null)
195
199
  continue;
196
200
  // Get the history for this utxo and construct a BRC-8 Envelope
197
201
  const output = await this.getUTXOHistory(UTXO, history, 0);
198
- if (output) {
202
+ if (output !== undefined && output !== null) {
199
203
  hydratedOutputs.push({
200
204
  beef: output.beef,
201
205
  outputIndex: output.outputIndex
@@ -208,14 +212,19 @@ class Engine {
208
212
  };
209
213
  }
210
214
  /**
211
- * Traverse and return the history of a UTXO
212
- * @param historySelector
213
- * @param currentDepth
214
- * @param output
215
- * @param txid
216
- * @param outputIndex
217
- * @param id
218
- * @returns {Promise<EnvelopeEvidenceApi>}
215
+ * Traverse and return the history of a UTXO.
216
+ *
217
+ * This method traverses the history of a given Unspent Transaction Output (UTXO) and returns
218
+ * its historical data based on the provided history selector and current depth.
219
+ *
220
+ * @param output - The UTXO to traverse the history for.
221
+ * @param historySelector - Optionally directs the history traversal:
222
+ * - If a number, denotes how many previous spends (in terms of chain depth) to include.
223
+ * - If a function, accepts a BEEF-formatted transaction, an output index, and the current depth as parameters,
224
+ * returning a promise that resolves to a boolean indicating whether to include the output in the history.
225
+ * @param {number} [currentDepth=0] - The current depth of the traversal relative to the top-level UTXO.
226
+ *
227
+ * @returns {Promise<Output | undefined>} - A promise that resolves to the output history if found, or undefined if not.
219
228
  */
220
229
  async getUTXOHistory(output, historySelector, currentDepth = 0) {
221
230
  // If we have an output but no history selector, jsut return the output.
@@ -233,7 +242,7 @@ class Engine {
233
242
  if (shouldTraverseHistory === false) {
234
243
  return undefined;
235
244
  }
236
- else if (output && output.outputsConsumed.length === 0) {
245
+ else if (output !== null && output !== undefined && output.outputsConsumed.length === 0) {
237
246
  return output;
238
247
  }
239
248
  try {
@@ -241,22 +250,24 @@ class Engine {
241
250
  // Only retrieve unique values in case outputs are doubly referenced
242
251
  const outputsConsumed = output.outputsConsumed;
243
252
  // Find the child outputs for each utxo consumed by the current output
244
- const childHistories = await (await Promise.all(outputsConsumed.map(async (outputIdentifier) => {
253
+ const childHistories = (await Promise.all(outputsConsumed.map(async (outputIdentifier) => {
245
254
  const output = await this.storage.findOutput(outputIdentifier.txid, outputIdentifier.outputIndex);
246
255
  // Make sure an output was found
247
- if (!output) {
256
+ if (output === undefined || output === null) {
248
257
  return undefined;
249
258
  }
250
259
  // Find previousUTXO history
251
- return this.getUTXOHistory(output, historySelector, currentDepth + 1);
260
+ return await this.getUTXOHistory(output, historySelector, currentDepth + 1);
252
261
  }))).filter(x => x !== undefined);
253
262
  const tx = sdk_1.Transaction.fromBEEF(output.beef);
254
263
  for (const input of childHistories) {
255
- if (!input)
264
+ if (input === undefined || input === null)
256
265
  continue;
257
266
  const inputIndex = tx.inputs.findIndex((input) => {
258
267
  var _a;
259
- const sourceTXID = input.sourceTXID || ((_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex'));
268
+ const sourceTXID = input.sourceTXID !== undefined && input.sourceTXID !== ''
269
+ ? input.sourceTXID
270
+ : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
260
271
  return sourceTXID === output.txid && input.sourceOutputIndex === output.outputIndex;
261
272
  });
262
273
  tx.inputs[inputIndex].sourceTransaction = sdk_1.Transaction.fromBEEF(input.beef);
@@ -276,13 +287,10 @@ class Engine {
276
287
  }
277
288
  }
278
289
  /**
279
- * Delete a UTXO and all stale consumed inputs
280
- * @param output
281
- * @param id
282
- * @param txid
283
- * @param outputIndex
284
- * @returns {Promise<void>}
285
- */
290
+ * Delete a UTXO and all stale consumed inputs.
291
+ * @param output - The UTXO to be deleted.
292
+ * @returns {Promise<void>} - A promise that resolves when the deletion process is complete.
293
+ */
286
294
  async deleteUTXODeep(output) {
287
295
  var _a;
288
296
  try {
@@ -305,7 +313,7 @@ class Engine {
305
313
  output.outputsConsumed.map(async (outputIdentifier) => {
306
314
  const staleOutput = await this.storage.findOutput(outputIdentifier.txid, outputIdentifier.outputIndex, output.topic);
307
315
  // Make sure an output was found
308
- if (!staleOutput) {
316
+ if (staleOutput === null || staleOutput === undefined) {
309
317
  return undefined;
310
318
  }
311
319
  // Parse out the existing data, then concat the new outputs with no duplicates
@@ -322,6 +330,63 @@ class Engine {
322
330
  throw new Error(`Failed to delete all stale outputs: ${error}`);
323
331
  }
324
332
  }
333
+ /**
334
+ * Recursively updates the Merkle proof for the given output and its consumedBy outputs.
335
+ * If the output matches the source transaction ID, its Merkle proof is updated directly.
336
+ * Otherwise, the Merkle proof is updated for the corresponding input in each transaction.
337
+ *
338
+ * @param output - The output to update with the new Merkle proof.
339
+ * @param proof - The Merkle proof to be applied to the output or its inputs.
340
+ * @param sourceTxid - The transaction ID of the source output whose Merkle proof is being updated.
341
+ */
342
+ async updateMerkleProof(output, proof, recursionPath) {
343
+ // Add current output to recursionPath
344
+ recursionPath.push({ txid: output.txid, outputIndex: output.outputIndex });
345
+ const tx = sdk_1.Transaction.fromBEEF(output.beef);
346
+ // Handle the base case
347
+ if (output.txid === recursionPath[0].txid) {
348
+ tx.merklePath = proof;
349
+ }
350
+ else {
351
+ // Traverse inputs to update the Merkle proof according to the recursionPath
352
+ let currentInputs = tx.inputs;
353
+ for (let i = recursionPath.length - 1; i >= 0; i--) {
354
+ const crumb = recursionPath[i];
355
+ for (const input of currentInputs) {
356
+ if (input.sourceTXID === crumb.txid && input.sourceOutputIndex === crumb.outputIndex) {
357
+ if (i === 0 && input.sourceTransaction !== undefined) {
358
+ input.sourceTransaction.merklePath = proof;
359
+ }
360
+ else if (input.sourceTransaction !== undefined) {
361
+ currentInputs = input.sourceTransaction.inputs;
362
+ break;
363
+ }
364
+ }
365
+ }
366
+ }
367
+ }
368
+ // Update the output's BEEF in the storage DB
369
+ await this.storage.updateOutputBeef(output.txid, output.outputIndex, output.topic, tx.toBEEF());
370
+ // Recursively update the consumedBy outputs
371
+ for (const consumingOutput of output.consumedBy) {
372
+ const consumedOutputs = await this.storage.findOutputsForTransaction(consumingOutput.txid);
373
+ for (const consumedOutput of consumedOutputs) {
374
+ await this.updateMerkleProof(consumedOutput, proof, []);
375
+ }
376
+ }
377
+ }
378
+ /**
379
+ * Recursively prune UTXOs when an incoming Merkle Proof is received.
380
+ *
381
+ * @param txid - Transaction ID of the associated outputs to prune.
382
+ * @param proof - Merkle proof containing the Merkle path and other relevant data to verify the transaction.
383
+ */
384
+ async handleNewMerkleProof(txid, proof) {
385
+ const outputs = await this.storage.findOutputsForTransaction(txid);
386
+ for (const output of outputs) {
387
+ await this.updateMerkleProof(output, proof, []);
388
+ }
389
+ }
325
390
  /**
326
391
  * Find a list of supported topic managers
327
392
  * @public
@@ -343,9 +408,10 @@ class Engine {
343
408
  * @public
344
409
  * @returns {Promise<string>} - the documentation for the topic manager
345
410
  */
346
- async getDocumentationForTopicManger(manager) {
411
+ async getDocumentationForTopicManager(manager) {
347
412
  var _a, _b;
348
- return ((_b = (_a = this.managers[manager]).getDocumentation) === null || _b === void 0 ? void 0 : _b.call(_a)) || 'No documentation found!';
413
+ const documentation = await ((_b = (_a = this.managers[manager]) === null || _a === void 0 ? void 0 : _a.getDocumentation) === null || _b === void 0 ? void 0 : _b.call(_a));
414
+ return documentation !== undefined ? documentation : 'No documentation found!';
349
415
  }
350
416
  /**
351
417
  * Run a query to get the documentation for a particular lookup service
@@ -354,8 +420,9 @@ class Engine {
354
420
  */
355
421
  async getDocumentationForLookupServiceProvider(provider) {
356
422
  var _a, _b;
357
- return ((_b = (_a = this.lookupServices[provider]).getDocumentation) === null || _b === void 0 ? void 0 : _b.call(_a)) || 'No documentation found!';
423
+ const documentation = await ((_b = (_a = this.lookupServices[provider]) === null || _a === void 0 ? void 0 : _a.getDocumentation) === null || _b === void 0 ? void 0 : _b.call(_a));
424
+ return documentation !== undefined ? documentation : 'No documentation found!';
358
425
  }
359
426
  }
360
- exports.default = Engine;
427
+ exports.Engine = Engine;
361
428
  //# sourceMappingURL=Engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnexStorage = void 0;
3
4
  class KnexStorage {
4
5
  constructor(knex) {
5
6
  this.knex = knex;
@@ -14,7 +15,7 @@ class KnexStorage {
14
15
  if (spent !== undefined)
15
16
  search.spent = spent;
16
17
  const [output] = await this.knex('outputs').where(search).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
17
- if (!output) {
18
+ if (output === undefined || output === null) {
18
19
  return null;
19
20
  }
20
21
  return {
@@ -26,6 +27,20 @@ class KnexStorage {
26
27
  consumedBy: JSON.parse(output.consumedBy)
27
28
  };
28
29
  }
30
+ async findOutputsForTransaction(txid) {
31
+ const [output] = await this.knex('outputs').where({ txid }).select('txid', 'outputIndex', 'outputScript', 'topic', 'satoshis', 'beef', 'outputsConsumed', 'spent', 'consumedBy');
32
+ if (output === undefined || output === null) {
33
+ return [];
34
+ }
35
+ return {
36
+ ...output,
37
+ outputScript: [...output.outputScript],
38
+ beef: [...output.beef],
39
+ spent: Boolean(output.spent),
40
+ outputsConsumed: JSON.parse(output.outputsConsumed),
41
+ consumedBy: JSON.parse(output.consumedBy)
42
+ };
43
+ }
29
44
  async deleteOutput(txid, outputIndex, topic) {
30
45
  await this.knex('outputs').where({
31
46
  txid, outputIndex, topic
@@ -38,7 +53,7 @@ class KnexStorage {
38
53
  outputScript: Buffer.from(output.outputScript),
39
54
  topic: output.topic,
40
55
  satoshis: Number(output.satoshis),
41
- beef: [...output.beef],
56
+ beef: Buffer.from(new Uint8Array(output.beef)),
42
57
  outputsConsumed: JSON.stringify(output.outputsConsumed),
43
58
  consumedBy: JSON.stringify(output.consumedBy),
44
59
  spent: output.spent
@@ -58,6 +73,13 @@ class KnexStorage {
58
73
  topic
59
74
  }).update('consumedBy', consumedBy);
60
75
  }
76
+ async updateOutputBeef(txid, outputIndex, topic, beef) {
77
+ await this.knex('outputs').where({
78
+ txid,
79
+ outputIndex,
80
+ topic
81
+ }).update('beef', beef);
82
+ }
61
83
  async insertAppliedTransaction(tx) {
62
84
  await this.knex('applied_transactions').insert({
63
85
  txid: tx.txid,
@@ -72,5 +94,5 @@ class KnexStorage {
72
94
  return appliedTransactions.length > 0;
73
95
  }
74
96
  }
75
- exports.default = KnexStorage;
97
+ exports.KnexStorage = KnexStorage;
76
98
  //# sourceMappingURL=KnexStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KnexStorage.js","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}