@bsv/overlay 0.1.0-alpha.3 → 0.1.0-alpha.4

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.
@@ -7,21 +7,27 @@ export class Engine {
7
7
  lookupServices;
8
8
  storage;
9
9
  chainTracker;
10
+ hostingURL;
10
11
  broadcaster;
12
+ advertiser;
11
13
  /**
12
14
  * Creates a new Overlay Services Engine
13
15
  * @param {[key: string]: TopicManager} managers - manages topic admittance
14
16
  * @param {[key: string]: LookupService} lookupServices - manages UTXO lookups
15
17
  * @param {Storage} storage - for interacting with internally-managed persistent data
16
18
  * @param {ChainTracker} chainTracker - Verifies SPV data associated with transactions
19
+ * @param {string} hostingURL
17
20
  * @param {Broadcaster} [Broadcaster] - broadcaster used for broadcasting the incoming transaction
21
+ * @param {Advertiser} [Advertiser] - handles SHIP and SLAP advertisements for peer-discovery
18
22
  */
19
- constructor(managers, lookupServices, storage, chainTracker, broadcaster) {
23
+ constructor(managers, lookupServices, storage, chainTracker, hostingURL, broadcaster, advertiser) {
20
24
  this.managers = managers;
21
25
  this.lookupServices = lookupServices;
22
26
  this.storage = storage;
23
27
  this.chainTracker = chainTracker;
28
+ this.hostingURL = hostingURL;
24
29
  this.broadcaster = broadcaster;
30
+ this.advertiser = advertiser;
25
31
  }
26
32
  /**
27
33
  * Submits a transaction for processing by Overlay Services.
@@ -173,8 +179,80 @@ export class Engine {
173
179
  if (Object.keys(steak).length > 0 && this.broadcaster !== undefined) {
174
180
  await this.broadcaster.broadcast(tx);
175
181
  }
182
+ // If we don't have an advertiser, just return the steak
183
+ if (this.advertiser === undefined) {
184
+ return steak;
185
+ }
186
+ // Propagate transaction to other nodes according to synchronization agreements
187
+ // 1. Find nodes that host the topics associated with admissable outputs
188
+ // We want to figure out which topics we actually care about (because their associated outputs were admitted)
189
+ // AND if the topic was not admitted we want to remove it from the list of topics we care about.
190
+ const relevantTopics = taggedBEEF.topics.filter(topic => steak[topic] !== undefined && steak[topic].outputsToAdmit.length !== 0);
191
+ if (relevantTopics.length > 0) {
192
+ // Find all SHIP advertisements for the topics we care about
193
+ const domainToTopicsMap = new Map();
194
+ for (const topic of relevantTopics) {
195
+ try {
196
+ // Handle custom lookup service answers
197
+ const lookupAnswer = await this.lookup({
198
+ service: 'ls_ship',
199
+ query: {
200
+ topic
201
+ }
202
+ });
203
+ // Lookup will currently always return type output-list
204
+ if (lookupAnswer.type === 'output-list') {
205
+ const shipAdvertisements = [];
206
+ lookupAnswer.outputs.forEach(output => {
207
+ try {
208
+ // Parse out the advertisements using the provided parser
209
+ const tx = Transaction.fromBEEF(output.beef);
210
+ const advertisement = this.advertiser?.parseAdvertisement(tx.outputs[output.outputIndex].lockingScript);
211
+ if (advertisement !== undefined && advertisement !== null && advertisement.protocol === 'SHIP') {
212
+ shipAdvertisements.push(advertisement);
213
+ }
214
+ }
215
+ catch (error) {
216
+ console.error('Failed to parse advertisement output:', error);
217
+ }
218
+ });
219
+ if (shipAdvertisements.length > 0) {
220
+ shipAdvertisements.forEach((advertisement) => {
221
+ if (!domainToTopicsMap.has(advertisement.domainName)) {
222
+ domainToTopicsMap.set(advertisement.domainName, new Set());
223
+ }
224
+ domainToTopicsMap.get(advertisement.domainName)?.add(topic);
225
+ });
226
+ }
227
+ }
228
+ }
229
+ catch (error) {
230
+ console.error(`Error looking up topic ${String(topic)}:`, error);
231
+ }
232
+ }
233
+ const broadcastPromises = [];
234
+ // Note: We are depending on window.fetch, this may not be ideal for the long term.
235
+ for (const [domain, topics] of domainToTopicsMap.entries()) {
236
+ if (domain !== this.hostingURL) {
237
+ const promise = fetch(`${String(domain)}/submit`, {
238
+ method: 'POST',
239
+ headers: {
240
+ 'Content-Type': 'application/octet-stream',
241
+ 'X-Topics': JSON.stringify(Array.from(topics))
242
+ },
243
+ body: new Uint8Array(taggedBEEF.beef)
244
+ });
245
+ broadcastPromises.push(promise);
246
+ }
247
+ }
248
+ try {
249
+ await Promise.all(broadcastPromises);
250
+ }
251
+ catch (error) {
252
+ console.error('Error during broadcasting:', error);
253
+ }
254
+ }
176
255
  return steak;
177
- // TODO propagate transaction to other nodes according to synchronization agreements
178
256
  }
179
257
  /**
180
258
  * Submit a lookup question to the Overlay Services Engine, and receive bakc a Lookup Answer
@@ -212,6 +290,70 @@ export class Engine {
212
290
  outputs: hydratedOutputs
213
291
  };
214
292
  }
293
+ /**
294
+ * Ensures alignment between the current SHIP/SLAP advertisements and the
295
+ * configured Topic Managers and Lookup Services in the engine.
296
+ *
297
+ * This method performs the following actions:
298
+ * 1. Retrieves the current configuration of topics and services.
299
+ * 2. Fetches the existing SHIP advertisements for each configured topic.
300
+ * 3. Fetches the existing SLAP advertisements for each configured service.
301
+ * 4. Compares the current configuration with the fetched advertisements to determine which advertisements
302
+ * need to be created or revoked.
303
+ * 5. Creates new SHIP/SLAP advertisements if they do not exist for the configured topics/services.
304
+ * 6. Revokes existing SHIP/SLAP advertisements if they are no longer required based on the current configuration.
305
+ *
306
+ * The function uses the `Advertiser` methods to create or revoke advertisements and ensures the updates are
307
+ * submitted to the SHIP/SLAP overlay networks using the engine's `submit()` method.
308
+ *
309
+ * @throws Will throw an error if there are issues during the advertisement synchronization process.
310
+ * @returns {Promise<void>} A promise that resolves when the synchronization process is complete.
311
+ */
312
+ async syncAdvertisements() {
313
+ if (this.advertiser === undefined) {
314
+ return;
315
+ }
316
+ // Step 1: Retrieve Current Configuration
317
+ const configuredTopics = Object.keys(this.managers);
318
+ const configuredServices = Object.keys(this.lookupServices);
319
+ // Step 2: Fetch Existing Advertisements for each topic and service
320
+ const currentSHIPAdvertisements = [];
321
+ for (const topic of configuredTopics) {
322
+ const ads = await this.advertiser.findAllSHIPAdvertisements(topic);
323
+ currentSHIPAdvertisements.push(...ads);
324
+ }
325
+ const currentSLAPAdvertisements = [];
326
+ for (const service of configuredServices) {
327
+ const ads = await this.advertiser.findAllSLAPAdvertisements(service);
328
+ currentSLAPAdvertisements.push(...ads);
329
+ }
330
+ // Step 3: Compare and Determine Actions
331
+ const requiredSHIPAdvertisements = new Set(configuredTopics);
332
+ const requiredSLAPAdvertisements = new Set(configuredServices);
333
+ const existingSHIPTopics = new Set(currentSHIPAdvertisements.map(ad => ad.topicName));
334
+ const existingSLAPServices = new Set(currentSLAPAdvertisements.map(ad => ad.serviceName));
335
+ const shipToCreate = Array.from(requiredSHIPAdvertisements).filter(topic => !existingSHIPTopics.has(topic));
336
+ const shipToRevoke = currentSHIPAdvertisements.filter(ad => !requiredSHIPAdvertisements.has(ad.topicName));
337
+ const slapToCreate = Array.from(requiredSLAPAdvertisements).filter(service => !existingSLAPServices.has(service));
338
+ const slapToRevoke = currentSLAPAdvertisements.filter(ad => !requiredSLAPAdvertisements.has(ad.serviceName));
339
+ // Step 4: Update Advertisements
340
+ for (const topic of shipToCreate) {
341
+ const taggedBEEF = await this.advertiser.createSHIPAdvertisement(topic);
342
+ await this.submit(taggedBEEF);
343
+ }
344
+ for (const service of slapToCreate) {
345
+ const taggedBEEF = await this.advertiser.createSLAPAdvertisement(service);
346
+ await this.submit(taggedBEEF);
347
+ }
348
+ for (const ad of shipToRevoke) {
349
+ const taggedBEEF = await this.advertiser.revokeAdvertisement(ad);
350
+ await this.submit(taggedBEEF);
351
+ }
352
+ for (const ad of slapToRevoke) {
353
+ const taggedBEEF = await this.advertiser.revokeAdvertisement(ad);
354
+ await this.submit(taggedBEEF);
355
+ }
356
+ }
215
357
  /**
216
358
  * Traverse and return the history of a UTXO.
217
359
  *
@@ -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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"}