@bsv/sdk 1.6.5 → 1.6.7

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.
@@ -33,6 +33,12 @@ export default class LocalKVStore {
33
33
  * @readonly
34
34
  */
35
35
  originator;
36
+ acceptDelayedBroadcast = false;
37
+ /**
38
+ * A map to store locks for each key to ensure atomic updates.
39
+ * @private
40
+ */
41
+ keyLocks = new Map();
36
42
  /**
37
43
  * Creates an instance of the localKVStore.
38
44
  *
@@ -42,7 +48,7 @@ export default class LocalKVStore {
42
48
  * @param {string} [originator] — An originator to use with PushDrop and the wallet, if provided.
43
49
  * @throws {Error} If the context is missing or empty.
44
50
  */
45
- constructor(wallet = new WalletClient(), context = 'kvstore default', encrypt = true, originator) {
51
+ constructor(wallet = new WalletClient(), context = 'kvstore default', encrypt = true, originator, acceptDelayedBroadcast = false) {
46
52
  if (typeof context !== 'string' || context.length < 1) {
47
53
  throw new Error('A context in which to operate is required.');
48
54
  }
@@ -50,6 +56,35 @@ export default class LocalKVStore {
50
56
  this.context = context;
51
57
  this.encrypt = encrypt;
52
58
  this.originator = originator;
59
+ this.acceptDelayedBroadcast = acceptDelayedBroadcast;
60
+ }
61
+ async queueOperationOnKey(key) {
62
+ // Check if a lock exists for this key and wait for it to resolve
63
+ let lockQueue = this.keyLocks.get(key);
64
+ if (lockQueue == null) {
65
+ lockQueue = [];
66
+ this.keyLocks.set(key, lockQueue);
67
+ }
68
+ let resolveNewLock = () => { };
69
+ const newLock = new Promise((resolve) => {
70
+ resolveNewLock = resolve;
71
+ if (lockQueue != null) {
72
+ lockQueue.push(resolve);
73
+ }
74
+ });
75
+ // If we are the only request, resolve the lock immediately, queue remains at 1 item until request ends.
76
+ if (lockQueue.length === 1) {
77
+ resolveNewLock();
78
+ }
79
+ await newLock;
80
+ return lockQueue;
81
+ }
82
+ finishOperationOnKey(key, lockQueue) {
83
+ lockQueue.shift(); // Remove the current lock from the queue
84
+ if (lockQueue.length > 0) {
85
+ // If there are more locks waiting, resolve the next one
86
+ lockQueue[0]();
87
+ }
53
88
  }
54
89
  getProtocol(key) {
55
90
  return { protocolID: [2, this.context], keyID: key };
@@ -75,8 +110,14 @@ export default class LocalKVStore {
75
110
  * @throws {Error} If the found output's locking script cannot be decoded or represents an invalid token format.
76
111
  */
77
112
  async get(key, defaultValue = undefined) {
78
- const r = await this.lookupValue(key, defaultValue, 5);
79
- return r.value;
113
+ const lockQueue = await this.queueOperationOnKey(key);
114
+ try {
115
+ const r = await this.lookupValue(key, defaultValue, 5);
116
+ return r.value;
117
+ }
118
+ finally {
119
+ this.finishOperationOnKey(key, lockQueue);
120
+ }
80
121
  }
81
122
  getLockingScript(output, beef) {
82
123
  const [txid, vout] = output.outpoint.split('.');
@@ -148,77 +189,85 @@ export default class LocalKVStore {
148
189
  return spends;
149
190
  }
150
191
  /**
151
- * Sets or updates the value associated with a given key.
192
+ * Sets or updates the value associated with a given key atomically.
152
193
  * If the key already exists (one or more outputs found), it spends the existing output(s)
153
194
  * and creates a new one with the updated value. If multiple outputs exist for the key,
154
195
  * they are collapsed into a single new output.
155
196
  * If the key does not exist, it creates a new output.
156
197
  * Handles encryption if enabled.
157
198
  * If signing the update/collapse transaction fails, it relinquishes the original outputs and starts over with a new chain.
199
+ * Ensures atomicity by locking the key during the operation, preventing concurrent updates
200
+ * to the same key from missing earlier changes.
158
201
  *
159
202
  * @param {string} key - The key to set or update.
160
203
  * @param {string} value - The value to associate with the key.
161
204
  * @returns {Promise<OutpointString>} A promise that resolves to the outpoint string (txid.vout) of the new or updated token output.
162
205
  */
163
206
  async set(key, value) {
164
- const current = await this.lookupValue(key, undefined, 10);
165
- if (current.value === value) {
166
- if (current.outpoint === undefined) {
167
- throw new Error('outpoint must be valid when value is valid and unchanged');
168
- }
169
- // Don't create a new transaction if the value doesn't need to change...
170
- return current.outpoint;
171
- }
172
- const protocol = this.getProtocol(key);
173
- let valueAsArray = Utils.toArray(value, 'utf8');
174
- if (this.encrypt) {
175
- const { ciphertext } = await this.wallet.encrypt({
176
- ...protocol,
177
- plaintext: valueAsArray
178
- });
179
- valueAsArray = ciphertext;
180
- }
181
- const pushdrop = new PushDrop(this.wallet, this.originator);
182
- const lockingScript = await pushdrop.lock([valueAsArray], protocol.protocolID, protocol.keyID, 'self');
183
- const { outputs, BEEF: inputBEEF } = current.lor;
184
- let outpoint;
207
+ const lockQueue = await this.queueOperationOnKey(key);
185
208
  try {
186
- const inputs = this.getInputs(outputs);
187
- const { txid, signableTransaction } = await this.wallet.createAction({
188
- description: `Update ${key} in ${this.context}`,
189
- inputBEEF,
190
- inputs,
191
- outputs: [{
192
- basket: this.context,
193
- tags: [key],
194
- lockingScript: lockingScript.toHex(),
195
- satoshis: 1,
196
- outputDescription: 'Key-value token'
197
- }],
198
- options: {
199
- acceptDelayedBroadcast: false,
200
- randomizeOutputs: false
209
+ const current = await this.lookupValue(key, undefined, 10);
210
+ if (current.value === value) {
211
+ if (current.outpoint === undefined) {
212
+ throw new Error('outpoint must be valid when value is valid and unchanged');
201
213
  }
202
- });
203
- if (outputs.length > 0 && typeof signableTransaction !== 'object') {
204
- throw new Error('Wallet did not return a signable transaction when expected.');
214
+ // Don't create a new transaction if the value doesn't need to change
215
+ return current.outpoint;
205
216
  }
206
- if (signableTransaction == null) {
207
- outpoint = `${txid}.0`;
217
+ const protocol = this.getProtocol(key);
218
+ let valueAsArray = Utils.toArray(value, 'utf8');
219
+ if (this.encrypt) {
220
+ const { ciphertext } = await this.wallet.encrypt({
221
+ ...protocol,
222
+ plaintext: valueAsArray
223
+ });
224
+ valueAsArray = ciphertext;
208
225
  }
209
- else {
210
- const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
211
- const { txid } = await this.wallet.signAction({
212
- reference: signableTransaction.reference,
213
- spends
226
+ const pushdrop = new PushDrop(this.wallet, this.originator);
227
+ const lockingScript = await pushdrop.lock([valueAsArray], protocol.protocolID, protocol.keyID, 'self');
228
+ const { outputs, BEEF: inputBEEF } = current.lor;
229
+ let outpoint;
230
+ try {
231
+ const inputs = this.getInputs(outputs);
232
+ const { txid, signableTransaction } = await this.wallet.createAction({
233
+ description: `Update ${key} in ${this.context}`,
234
+ inputBEEF,
235
+ inputs,
236
+ outputs: [{
237
+ basket: this.context,
238
+ tags: [key],
239
+ lockingScript: lockingScript.toHex(),
240
+ satoshis: 1,
241
+ outputDescription: 'Key-value token'
242
+ }],
243
+ options: {
244
+ acceptDelayedBroadcast: this.acceptDelayedBroadcast,
245
+ randomizeOutputs: false
246
+ }
214
247
  });
215
- outpoint = `${txid}.0`;
248
+ if (outputs.length > 0 && typeof signableTransaction !== 'object') {
249
+ throw new Error('Wallet did not return a signable transaction when expected.');
250
+ }
251
+ if (signableTransaction == null) {
252
+ outpoint = `${txid}.0`;
253
+ }
254
+ else {
255
+ const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
256
+ const { txid } = await this.wallet.signAction({
257
+ reference: signableTransaction.reference,
258
+ spends
259
+ });
260
+ outpoint = `${txid}.0`;
261
+ }
216
262
  }
263
+ catch (_) {
264
+ throw new Error(`There are ${outputs.length} outputs with tag ${key} that cannot be unlocked.`);
265
+ }
266
+ return outpoint;
217
267
  }
218
- catch (_) {
219
- throw new Error(`There are ${outputs.length} outputs with tag ${key} that cannot be unlocked.`);
268
+ finally {
269
+ this.finishOperationOnKey(key, lockQueue);
220
270
  }
221
- return outpoint;
222
271
  }
223
272
  /**
224
273
  * Removes the key-value pair associated with the given key.
@@ -231,43 +280,49 @@ export default class LocalKVStore {
231
280
  * @returns {Promise<string[]>} A promise that resolves to the txids of the removal transactions if successful.
232
281
  */
233
282
  async remove(key) {
234
- const txids = [];
235
- for (;;) {
236
- const { outputs, BEEF: inputBEEF, totalOutputs } = await this.getOutputs(key);
237
- if (outputs.length > 0) {
238
- const pushdrop = new PushDrop(this.wallet, this.originator);
239
- try {
240
- const inputs = this.getInputs(outputs);
241
- const { signableTransaction } = await this.wallet.createAction({
242
- description: `Remove ${key} in ${this.context}`,
243
- inputBEEF,
244
- inputs,
245
- options: {
246
- acceptDelayedBroadcast: false
283
+ const lockQueue = await this.queueOperationOnKey(key);
284
+ try {
285
+ const txids = [];
286
+ for (;;) {
287
+ const { outputs, BEEF: inputBEEF, totalOutputs } = await this.getOutputs(key);
288
+ if (outputs.length > 0) {
289
+ const pushdrop = new PushDrop(this.wallet, this.originator);
290
+ try {
291
+ const inputs = this.getInputs(outputs);
292
+ const { signableTransaction } = await this.wallet.createAction({
293
+ description: `Remove ${key} in ${this.context}`,
294
+ inputBEEF,
295
+ inputs,
296
+ options: {
297
+ acceptDelayedBroadcast: this.acceptDelayedBroadcast
298
+ }
299
+ });
300
+ if (typeof signableTransaction !== 'object') {
301
+ throw new Error('Wallet did not return a signable transaction when expected.');
247
302
  }
248
- });
249
- if (typeof signableTransaction !== 'object') {
250
- throw new Error('Wallet did not return a signable transaction when expected.');
303
+ const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
304
+ const { txid } = await this.wallet.signAction({
305
+ reference: signableTransaction.reference,
306
+ spends
307
+ });
308
+ if (txid === undefined) {
309
+ throw new Error('signAction must return a valid txid');
310
+ }
311
+ txids.push(txid);
251
312
  }
252
- const spends = await this.getSpends(key, outputs, pushdrop, signableTransaction.tx);
253
- const { txid } = await this.wallet.signAction({
254
- reference: signableTransaction.reference,
255
- spends
256
- });
257
- if (txid === undefined) {
258
- throw new Error('signAction must return a valid txid');
313
+ catch (_) {
314
+ throw new Error(`There are ${totalOutputs} outputs with tag ${key} that cannot be unlocked.`);
259
315
  }
260
- txids.push(txid);
261
316
  }
262
- catch (_) {
263
- throw new Error(`There are ${totalOutputs} outputs with tag ${key} that cannot be unlocked.`);
317
+ if (outputs.length === totalOutputs) {
318
+ break;
264
319
  }
265
320
  }
266
- if (outputs.length === totalOutputs) {
267
- break;
268
- }
321
+ return txids;
322
+ }
323
+ finally {
324
+ this.finishOperationOnKey(key, lockQueue);
269
325
  }
270
- return txids;
271
326
  }
272
327
  }
273
328
  //# sourceMappingURL=LocalKVStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/LocalKVStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/LocalKVStore.ts"],"names":[],"mappings":"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"}
@@ -3,22 +3,16 @@ import { StorageUtils } from './index.js';
3
3
  import PushDrop from '../script/templates/PushDrop.js';
4
4
  import Transaction from '../transaction/Transaction.js';
5
5
  import { Hash, Utils } from '../primitives/index.js';
6
- /**
7
- * Locates HTTP URLs where content can be downloaded. It uses the passed or the default one.
8
- *
9
- * @param {Object} obj All parameters are passed in an object.
10
- * @param {String} obj.uhrpUrl The UHRP url to resolve.
11
- * @param {string} obj.confederacyHost HTTPS URL for for the with default setting.
12
- *
13
- * @return {Array<String>} An array of HTTP URLs where content can be downloaded.
14
- * @throws {Error} If UHRP url parameter invalid or is not an array
15
- * or there is an error retrieving url(s) stored in the UHRP token.
16
- */
17
6
  export class StorageDownloader {
18
7
  networkPreset = 'mainnet';
19
8
  constructor(config) {
20
9
  this.networkPreset = config?.networkPreset;
21
10
  }
11
+ /**
12
+ * Resolves the UHRP URL to a list of HTTP URLs where content can be downloaded.
13
+ * @param uhrpUrl The UHRP URL to resolve.
14
+ * @returns A promise that resolves to an array of HTTP URLs.
15
+ */
22
16
  async resolve(uhrpUrl) {
23
17
  // Use UHRP lookup service
24
18
  const lookupResolver = new LookupResolver({ networkPreset: this.networkPreset });
@@ -39,6 +33,11 @@ export class StorageDownloader {
39
33
  }
40
34
  return decodedResults;
41
35
  }
36
+ /**
37
+ * Downloads the content from the UHRP URL after validating the hash for integrity.
38
+ * @param uhrpUrl The UHRP URL to download.
39
+ * @returns A promise that resolves to the downloaded content.
40
+ */
42
41
  async download(uhrpUrl) {
43
42
  if (!StorageUtils.isValidURL(uhrpUrl)) {
44
43
  throw new Error('Invalid parameter UHRP url');
@@ -1 +1 @@
1
- {"version":3,"file":"StorageDownloader.js","sourceRoot":"","sources":["../../../../src/storage/StorageDownloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StorageDownloader.js","sourceRoot":"","sources":["../../../../src/storage/StorageDownloader.ts"],"names":[],"mappings":"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"}