@bsv/overlay 0.1.3 → 0.1.5

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/overlay",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
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/gasp": "^0.1.0",
50
+ "@bsv/gasp": "^0.1.2",
51
51
  "@bsv/sdk": "^1.1.6",
52
52
  "knex": "^3.1.0"
53
53
  }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OverlayGASPStorage = exports.OverlayGASPRemote = exports.Engine = void 0;
4
4
  const sdk_1 = require("@bsv/sdk");
5
- const gasp_1 = require("@bsv/gasp");
5
+ const GASP_js_1 = require("./GASP.js");
6
6
  /**
7
7
  * Am engine for running BSV Overlay Services (topic managers and lookup services).
8
8
  */
@@ -31,6 +31,13 @@ class Engine {
31
31
  this.broadcaster = broadcaster;
32
32
  this.advertiser = advertiser;
33
33
  this.syncConfiguration = syncConfiguration;
34
+ // To encourage synchronization of overlay services, the SHIP sync strategy is used by default for all topics.
35
+ if (syncConfiguration === undefined) {
36
+ this.syncConfiguration = {};
37
+ for (const managerName of Object.keys(managers)) {
38
+ this.syncConfiguration[managerName] = 'SHIP';
39
+ }
40
+ }
34
41
  }
35
42
  /**
36
43
  * Submits a transaction for processing by Overlay Services.
@@ -458,7 +465,7 @@ class Engine {
458
465
  if (Array.isArray(syncEndpoints)) {
459
466
  await Promise.all(syncEndpoints.map(async (endpoint) => {
460
467
  // Sync to each host that is associated with this topic
461
- const gasp = new gasp_1.GASP(new OverlayGASPStorage(topic, this), new OverlayGASPRemote(endpoint, topic), 0, `[GASP Sync of ${topic} with ${endpoint}] `, true);
468
+ const gasp = new GASP_js_1.GASP(new OverlayGASPStorage(topic, this), new OverlayGASPRemote(endpoint, topic), 0, `[GASP Sync of ${topic} with ${endpoint}] `, true);
462
469
  await gasp.sync();
463
470
  }));
464
471
  }
@@ -497,21 +504,64 @@ class Engine {
497
504
  * @throws An error if no output is found for the given transaction ID and output index.
498
505
  */
499
506
  async provideForeignGASPNode(graphID, txid, outputIndex) {
500
- const output = await this.storage.findOutput(txid, outputIndex);
501
- if (output === undefined || output === null) {
502
- throw new Error('No matching output found!');
503
- }
504
- const tx = sdk_1.Transaction.fromBEEF(output.beef);
505
- const rawTx = tx.toHex();
506
- const node = {
507
- rawTx,
508
- graphID,
509
- outputIndex
507
+ const hydrator = async (output) => {
508
+ if (output === undefined || output === null) {
509
+ throw new Error('No matching output found!');
510
+ }
511
+ const rootTx = sdk_1.Transaction.fromBEEF(output.beef);
512
+ let correctTx;
513
+ const searchInput = (tx) => {
514
+ if (tx.id('hex') === txid) {
515
+ correctTx = tx;
516
+ }
517
+ else {
518
+ // For each input, look it up and recurse.
519
+ for (const input of tx.inputs) {
520
+ // We should always have a source transaction
521
+ if (input.sourceTransaction !== undefined) {
522
+ searchInput(input.sourceTransaction);
523
+ }
524
+ else {
525
+ throw new Error('Incomplete SPV data!');
526
+ }
527
+ }
528
+ }
529
+ };
530
+ searchInput(rootTx);
531
+ if (correctTx !== undefined) {
532
+ const rawTx = correctTx.toHex();
533
+ const node = {
534
+ rawTx,
535
+ graphID,
536
+ outputIndex
537
+ };
538
+ if (correctTx.merklePath !== undefined) {
539
+ node.proof = correctTx.merklePath.toHex();
540
+ }
541
+ return node;
542
+ }
543
+ else {
544
+ // Recursively try to find a matching output
545
+ let foundNode;
546
+ for (const currentOutput of output.outputsConsumed) {
547
+ try {
548
+ const outputFound = await this.storage.findOutput(currentOutput.txid, currentOutput.outputIndex);
549
+ foundNode = await hydrator(outputFound);
550
+ break;
551
+ }
552
+ catch (error) {
553
+ continue;
554
+ }
555
+ }
556
+ if (foundNode !== undefined) {
557
+ return foundNode;
558
+ }
559
+ }
560
+ throw new Error('Unable to find output associated with your request!');
510
561
  };
511
- if (tx.merklePath !== undefined) {
512
- node.proof = tx.merklePath.toHex();
513
- }
514
- return node;
562
+ const [rootTxid, rootOutputIndex] = graphID.split('.');
563
+ const output = await this.storage.findOutput(rootTxid, Number(rootOutputIndex));
564
+ return await hydrator(output);
515
565
  }
516
566
  /**
517
567
  * Traverse and return the history of a UTXO.
@@ -856,9 +906,30 @@ class OverlayGASPStorage {
856
906
  outputIndex: output.outputIndex
857
907
  }));
858
908
  }
859
- // TODO: Consider optionality on interface
909
+ /**
910
+ * For a given txid and output index, returns the associated transaction, a merkle proof if the transaction is in a block, and metadata if if requested. If no metadata is requested, metadata hashes on inputs are not returned.
911
+ * @param graphID
912
+ * @param txid
913
+ * @param outputIndex
914
+ * @param metadata
915
+ * @returns
916
+ */
860
917
  async hydrateGASPNode(graphID, txid, outputIndex, metadata) {
861
- throw new Error('GASP node hydration Not supported!');
918
+ const output = await this.engine.storage.findOutput(txid, outputIndex);
919
+ if (output === undefined || output === null) {
920
+ throw new Error('No matching output found!');
921
+ }
922
+ const tx = sdk_1.Transaction.fromBEEF(output.beef);
923
+ const rawTx = tx.toHex();
924
+ const node = {
925
+ rawTx,
926
+ graphID,
927
+ outputIndex
928
+ };
929
+ if (tx.merklePath !== undefined) {
930
+ node.proof = tx.merklePath.toHex();
931
+ }
932
+ return node;
862
933
  }
863
934
  /**
864
935
  * For a given node, returns the inputs needed to complete the graph, including whether updated metadata is requested for those inputs.
@@ -885,7 +956,6 @@ class OverlayGASPStorage {
885
956
  const admittanceResult = await this.engine.managers[this.topic].identifyAdmissibleOutputs(parsedTx.toBEEF(), []);
886
957
  if (admittanceResult.outputsToAdmit.includes(tx.outputIndex)) {
887
958
  // The transaction is admissible, no further inputs are needed
888
- return;
889
959
  }
890
960
  else {
891
961
  // The transaction is not admissible, get inputs needed for further verification
@@ -903,21 +973,9 @@ class OverlayGASPStorage {
903
973
  catch (e) {
904
974
  console.error(`An error occurred when identifying needed inputs for transaction: ${parsedTx.id('hex')}.${tx.outputIndex}!`);
905
975
  // Cut off the graph in case of an error here.
906
- return;
907
- }
908
- }
909
- else {
910
- // In case the topic manager isn't able to stipulate needed inputs, we need to request all inputs as if we had no merkle proof.
911
- // However, it's dubious that we sometimes don't know — QUESTION: Should we require all topic managers to support this functionality?
912
- // The alternative to requiring ALL inputs by default is to require NO inputs by default, cutting off the historical graph at this point
913
- // (e.g. `return undefined`).
914
- for (const input of parsedTx.inputs) {
915
- response.requestedInputs[`${input.sourceTXID}.${input.sourceOutputIndex}`] = {
916
- metadata: false
917
- };
918
976
  }
919
- return await this.stripAlreadyKnownInputs(response);
920
977
  }
978
+ // By default, if the topic manager isn't able to stipulate needed inputs, only the inputs necessary for SPV are requested.
921
979
  }
922
980
  // Everything else falls through to returning undefined/void, which will terminate the synchronization at this point.
923
981
  }
@@ -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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"}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GASP = exports.GASPVersionMismatchError = void 0;
4
+ const sdk_1 = require("@bsv/sdk");
5
+ class GASPVersionMismatchError extends Error {
6
+ constructor(message, currentVersion, foreignVersion) {
7
+ super(message);
8
+ this.code = 'ERR_GASP_VERSION_MISMATCH';
9
+ this.currentVersion = currentVersion;
10
+ this.foreignVersion = foreignVersion;
11
+ }
12
+ }
13
+ exports.GASPVersionMismatchError = GASPVersionMismatchError;
14
+ /**
15
+ * Main class implementing the Graph Aware Sync Protocol.
16
+ */
17
+ class GASP {
18
+ /**
19
+ *
20
+ * @param storage The GASP Storage interface to use
21
+ * @param remote The GASP Remote interface to use
22
+ * @param lastInteraction The timestamp when we last interacted with this remote party
23
+ */
24
+ constructor(storage, remote, lastInteraction = 0, logPrefix = '[GASP] ', log = false) {
25
+ this.storage = storage;
26
+ this.remote = remote;
27
+ this.lastInteraction = lastInteraction;
28
+ this.version = 1;
29
+ this.logPrefix = logPrefix;
30
+ this.log = log;
31
+ this.validateTimestamp(this.lastInteraction);
32
+ this.logData(`GASP initialized with version: ${this.version}, lastInteraction: ${this.lastInteraction}`);
33
+ }
34
+ logData(...data) {
35
+ if (this.log) {
36
+ console.log(this.logPrefix, ...data);
37
+ }
38
+ }
39
+ validateTimestamp(timestamp) {
40
+ if (typeof timestamp !== 'number' || isNaN(timestamp) || timestamp < 0 || !Number.isInteger(timestamp)) {
41
+ throw new Error('Invalid timestamp format');
42
+ }
43
+ }
44
+ /**
45
+ * Computes a 36-byte structure from a transaction ID and output index.
46
+ * @param txid The transaction ID.
47
+ * @param index The output index.
48
+ * @returns A string representing the 36-byte structure.
49
+ */
50
+ compute36ByteStructure(txid, index) {
51
+ const result = `${txid}.${index.toString()}`;
52
+ this.logData(`Computed 36-byte structure: ${result} from txid: ${txid}, index: ${index}`);
53
+ return result;
54
+ }
55
+ /**
56
+ * Deconstructs a 36-byte structure into a transaction ID and output index.
57
+ * @param outpoint The 36-byte structure.
58
+ * @returns An object containing the transaction ID and output index.
59
+ */
60
+ deconstruct36ByteStructure(outpoint) {
61
+ const [txid, index] = outpoint.split('.');
62
+ const result = {
63
+ txid,
64
+ outputIndex: parseInt(index, 10)
65
+ };
66
+ this.logData(`Deconstructed 36-byte structure: ${outpoint} into txid: ${txid}, outputIndex: ${result.outputIndex}`);
67
+ return result;
68
+ }
69
+ /**
70
+ * Computes the transaction ID for a given transaction.
71
+ * @param tx The transaction string.
72
+ * @returns The computed transaction ID.
73
+ */
74
+ computeTXID(tx) {
75
+ const txid = sdk_1.Transaction.fromHex(tx).id('hex');
76
+ this.logData(`Computed TXID: ${txid} from transaction: ${tx}`);
77
+ return txid;
78
+ }
79
+ /**
80
+ * Synchronizes the transaction data between the local and remote participants.
81
+ * TODO: Support stipulating upload, download, or bidirectional which should be default.
82
+ */
83
+ async sync() {
84
+ this.logData(`Starting sync process. Last interaction timestamp: ${this.lastInteraction}`);
85
+ debugger;
86
+ const initialRequest = await this.buildInitialRequest(this.lastInteraction);
87
+ const initialResponse = await this.remote.getInitialResponse(initialRequest);
88
+ if (initialResponse.UTXOList.length > 0) {
89
+ const foreignUTXOs = await this.storage.findKnownUTXOs(0);
90
+ await Promise.all(initialResponse.UTXOList
91
+ .filter(x => !foreignUTXOs.some(y => x.txid === y.txid && x.outputIndex === y.outputIndex))
92
+ .map(async (UTXO) => {
93
+ try {
94
+ this.logData(`Requesting node for UTXO: ${JSON.stringify(UTXO)}`);
95
+ const resolvedNode = await this.remote.requestNode(this.compute36ByteStructure(UTXO.txid, UTXO.outputIndex), UTXO.txid, UTXO.outputIndex, true);
96
+ this.logData(`Received unspent graph node from remote: ${JSON.stringify(resolvedNode)}`);
97
+ await this.processIncomingNode(resolvedNode);
98
+ await this.completeGraph(resolvedNode.graphID);
99
+ }
100
+ catch (e) {
101
+ this.logData(`Error with incoming UTXO ${UTXO.txid}.${UTXO.outputIndex}: ${e.message}`);
102
+ }
103
+ }));
104
+ }
105
+ // const initialReply = await this.getInitialReply(initialResponse)
106
+ // this.logData(`Received initial reply: ${JSON.stringify(initialReply)}`)
107
+ // if (initialReply.UTXOList.length > 0) {
108
+ // await Promise.all(initialReply.UTXOList.map(async UTXO => {
109
+ // try {
110
+ // this.logData(`Hydrating GASP node for UTXO: ${JSON.stringify(UTXO)}`)
111
+ // const outgoingNode = await this.storage.hydrateGASPNode(
112
+ // this.compute36ByteStructure(UTXO.txid, UTXO.outputIndex),
113
+ // UTXO.txid,
114
+ // UTXO.outputIndex,
115
+ // true
116
+ // )
117
+ // this.logData(`Sending unspent graph node for remote: ${JSON.stringify(outgoingNode)}`)
118
+ // await this.processOutgoingNode(outgoingNode)
119
+ // } catch (e) {
120
+ // this.logData(`Error with outgoing UTXO ${UTXO.txid}.${UTXO.outputIndex}: ${(e as Error).message}`)
121
+ // }
122
+ // }))
123
+ // }
124
+ this.logData('Sync completed!');
125
+ }
126
+ /**
127
+ * Builds the initial request for the sync process.
128
+ * @returns A promise for the initial request object.
129
+ */
130
+ async buildInitialRequest(since) {
131
+ const request = {
132
+ version: this.version,
133
+ since
134
+ };
135
+ this.logData(`Built initial request: ${JSON.stringify(request)}`);
136
+ return request;
137
+ }
138
+ /**
139
+ * Builds the initial response based on the received request.
140
+ * @param request The initial request object.
141
+ * @returns A promise for an initial response
142
+ */
143
+ async getInitialResponse(request) {
144
+ this.logData(`Received initial request: ${JSON.stringify(request)}`);
145
+ if (request.version !== this.version) {
146
+ const error = new GASPVersionMismatchError(`GASP version mismatch. Current version: ${this.version}, foreign version: ${request.version}`, this.version, request.version);
147
+ console.error(`GASP version mismatch error: ${error.message}`);
148
+ throw error;
149
+ }
150
+ this.validateTimestamp(request.since);
151
+ const response = {
152
+ since: this.lastInteraction,
153
+ UTXOList: await this.storage.findKnownUTXOs(request.since)
154
+ };
155
+ this.logData(`Built initial response: ${JSON.stringify(response)}`);
156
+ return response;
157
+ }
158
+ /**
159
+ * Builds the initial reply based on the received response.
160
+ * @param response The initial response object.
161
+ * @returns A promise for an initial reply
162
+ */
163
+ async getInitialReply(response) {
164
+ this.logData(`Received initial response: ${JSON.stringify(response)}`);
165
+ const knownUTXOs = await this.storage.findKnownUTXOs(response.since);
166
+ const filteredUTXOs = knownUTXOs.filter(x => !response.UTXOList.some(y => y.txid === x.txid && y.outputIndex === x.outputIndex));
167
+ const reply = {
168
+ UTXOList: filteredUTXOs
169
+ };
170
+ this.logData(`Built initial reply: ${JSON.stringify(reply)}`);
171
+ return reply;
172
+ }
173
+ /**
174
+ * Provides a requested node to a foreign instance who requested it.
175
+ */
176
+ async requestNode(graphID, txid, outputIndex, metadata) {
177
+ this.logData(`Remote is requesting node with graphID: ${graphID}, txid: ${txid}, outputIndex: ${outputIndex}, metadata: ${metadata}`);
178
+ const node = await this.storage.hydrateGASPNode(graphID, txid, outputIndex, metadata);
179
+ this.logData(`Returning node: ${JSON.stringify(node)}`);
180
+ return node;
181
+ }
182
+ /**
183
+ * Provides a set of inputs we care about after processing a new incoming node.
184
+ * Also finalizes or discards a graph if no additional data is requested from the foreign instance.
185
+ */
186
+ async submitNode(node) {
187
+ this.logData(`Remote party is submitting node: ${JSON.stringify(node)}`);
188
+ await this.storage.appendToGraph(node);
189
+ const requestedInputs = await this.storage.findNeededInputs(node);
190
+ this.logData(`Requested inputs: ${JSON.stringify(requestedInputs)}`);
191
+ if (!requestedInputs) {
192
+ await this.completeGraph(node.graphID);
193
+ }
194
+ return requestedInputs;
195
+ }
196
+ /**
197
+ * Handles the completion of a newly-synced graph
198
+ * @param {string} graphID The ID of the newly-synced graph
199
+ */
200
+ async completeGraph(graphID) {
201
+ this.logData(`Completing newly-synced graph: ${graphID}`);
202
+ try {
203
+ await this.storage.validateGraphAnchor(graphID);
204
+ this.logData(`Graph validated for node: ${graphID}`);
205
+ await this.storage.finalizeGraph(graphID);
206
+ this.logData(`Graph finalized for node: ${graphID}`);
207
+ }
208
+ catch (e) {
209
+ this.logData(`Error validating graph: ${e.message}. Discarding graph for node: ${graphID}`);
210
+ await this.storage.discardGraph(graphID);
211
+ }
212
+ }
213
+ /**
214
+ * Processes an incoming node from the remote participant.
215
+ * @param node The incoming GASP node.
216
+ * @param spentBy The 36-byte structure of the node that spent this one, if applicable.
217
+ */
218
+ async processIncomingNode(node, spentBy, seenNodes = new Set()) {
219
+ const nodeId = `${this.computeTXID(node.rawTx)}.${node.outputIndex}`;
220
+ this.logData(`Processing incoming node: ${JSON.stringify(node)}, spentBy: ${spentBy}`);
221
+ if (seenNodes.has(nodeId)) {
222
+ this.logData(`Node ${nodeId} already processed, skipping.`);
223
+ return; // Prevent infinite recursion
224
+ }
225
+ seenNodes.add(nodeId);
226
+ await this.storage.appendToGraph(node, spentBy);
227
+ const neededInputs = await this.storage.findNeededInputs(node);
228
+ this.logData(`Needed inputs for node ${nodeId}: ${JSON.stringify(neededInputs)}`);
229
+ if (neededInputs) {
230
+ await Promise.all(Object.entries(neededInputs.requestedInputs).map(async ([outpoint, { metadata }]) => {
231
+ const { txid, outputIndex } = this.deconstruct36ByteStructure(outpoint);
232
+ this.logData(`Requesting new node for txid: ${txid}, outputIndex: ${outputIndex}, metadata: ${metadata}`);
233
+ const newNode = await this.remote.requestNode(node.graphID, txid, outputIndex, metadata);
234
+ this.logData(`Received new node: ${JSON.stringify(newNode)}`);
235
+ await this.processIncomingNode(newNode, this.compute36ByteStructure(this.computeTXID(node.rawTx), node.outputIndex), seenNodes);
236
+ }));
237
+ }
238
+ }
239
+ /**
240
+ * Processes an outgoing node to the remote participant.
241
+ * @param node The outgoing GASP node.
242
+ */
243
+ async processOutgoingNode(node, seenNodes = new Set()) {
244
+ const nodeId = `${this.computeTXID(node.rawTx)}.${node.outputIndex}`;
245
+ this.logData(`Processing outgoing node: ${JSON.stringify(node)}`);
246
+ if (seenNodes.has(nodeId)) {
247
+ this.logData(`Node ${nodeId} already processed, skipping.`);
248
+ return; // Prevent infinite recursion
249
+ }
250
+ seenNodes.add(nodeId);
251
+ if (this.remote.submitNode === undefined) {
252
+ throw new Error('Remote does not support GASP node submission!');
253
+ }
254
+ const response = await this.remote.submitNode(node);
255
+ this.logData(`Received response for submitted node: ${JSON.stringify(response)}`);
256
+ if (response) {
257
+ await Promise.all(Object.entries(response.requestedInputs).map(async ([outpoint, { metadata }]) => {
258
+ const { txid, outputIndex } = this.deconstruct36ByteStructure(outpoint);
259
+ try {
260
+ this.logData(`Hydrating node for txid: ${txid}, outputIndex: ${outputIndex}, metadata: ${metadata}`);
261
+ const hydratedNode = await this.storage.hydrateGASPNode(node.graphID, txid, outputIndex, metadata);
262
+ this.logData(`Hydrated node: ${JSON.stringify(hydratedNode)}`);
263
+ await this.processOutgoingNode(hydratedNode, seenNodes);
264
+ }
265
+ catch (e) {
266
+ this.logData(`Error hydrating node: ${e.message}`);
267
+ // If we can't send the outgoing node, we just stop. The remote won't validate the anchor, and their temporary graph will be discarded.
268
+ return;
269
+ }
270
+ }));
271
+ }
272
+ }
273
+ }
274
+ exports.GASP = GASP;
275
+ //# sourceMappingURL=GASP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GASP.js","sourceRoot":"","sources":["../../../src/GASP.ts"],"names":[],"mappings":"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"}