@bsv/wallet-toolbox-client 2.1.27 → 2.1.28
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.
- package/README.md +92 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +12 -0
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +59 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +93 -4
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts +8 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +8 -1
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +79 -1
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +68 -5
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/createAction.js +27 -13
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +11 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +94 -26
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +160 -114
- package/out/src/storage/portable/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -20,7 +20,17 @@ const blockHeaderUtilities_1 = require("../../services/chaintracker/chaintracks/
|
|
|
20
20
|
* Processing starts with simple validation and then checks for a pre-existing transaction.
|
|
21
21
|
* If the transaction is already known to the user, then the outputs are reviewed against the existing outputs treatment,
|
|
22
22
|
* and merge rules are added to the arguments passed to the storage layer.
|
|
23
|
-
*
|
|
23
|
+
*
|
|
24
|
+
* The existing transaction's `status` determines what the merge path does next:
|
|
25
|
+
* - `'unproven'` or `'completed'`: outputs are merged into the existing record. The transaction status is left as-is.
|
|
26
|
+
* - `'nosend'`: an ambiguous case. The transaction was created with `noSend: true` and may have been externally
|
|
27
|
+
* broadcast, may be sitting in a sendWith chain, or may be stuck mid-flight. The merge path treats the
|
|
28
|
+
* `internalizeAction` call as explicit authorization to advance the lifecycle. Specifically: `transactions.status`
|
|
29
|
+
* is promoted to `'completed'` (when a BUMP is included in the BEEF) or `'unproven'` (otherwise), and the
|
|
30
|
+
* `proven_tx_req` is moved out of `'nosend'` so Monitor's standard proof-fetching flow can finalize it.
|
|
31
|
+
* This makes the `internalizeAction` semantics consistent regardless of whether the originator shares the
|
|
32
|
+
* same storage as the internalizer or not.
|
|
33
|
+
* - Any other status: an error.
|
|
24
34
|
*
|
|
25
35
|
* When the transaction already exists, the description is updated. The isOutgoing sense is not changed.
|
|
26
36
|
*
|
|
@@ -246,8 +256,36 @@ class InternalizeActionContext {
|
|
|
246
256
|
}
|
|
247
257
|
return tr.tx;
|
|
248
258
|
}
|
|
259
|
+
async findOrInsertProvenTxFromBump(bump, btx) {
|
|
260
|
+
const now = new Date();
|
|
261
|
+
const merkleRoot = bump.computeRoot(this.txid);
|
|
262
|
+
const indexEntry = bump.path[0].find(p => p.hash === this.txid);
|
|
263
|
+
if (indexEntry == null) {
|
|
264
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
|
|
265
|
+
}
|
|
266
|
+
const index = indexEntry.offset;
|
|
267
|
+
const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
|
|
268
|
+
if (!header) {
|
|
269
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
|
|
270
|
+
}
|
|
271
|
+
const hash = (0, blockHeaderUtilities_1.blockHash)(header);
|
|
272
|
+
const provenTxR = await this.storage.findOrInsertProvenTx({
|
|
273
|
+
created_at: now,
|
|
274
|
+
updated_at: now,
|
|
275
|
+
provenTxId: 0,
|
|
276
|
+
txid: this.txid,
|
|
277
|
+
height: bump.blockHeight,
|
|
278
|
+
index,
|
|
279
|
+
merklePath: bump.toBinary(),
|
|
280
|
+
rawTx: btx.rawTx,
|
|
281
|
+
blockHash: hash,
|
|
282
|
+
merkleRoot
|
|
283
|
+
});
|
|
284
|
+
return provenTxR.proven;
|
|
285
|
+
}
|
|
249
286
|
async mergedInternalize() {
|
|
250
287
|
const transactionId = this.etx.transactionId;
|
|
288
|
+
const wasNoSend = this.etx.status === 'nosend';
|
|
251
289
|
await this.addLabels(transactionId);
|
|
252
290
|
for (const payment of this.walletPayments) {
|
|
253
291
|
if ((payment.eo != null) && !payment.ignore)
|
|
@@ -261,6 +299,60 @@ class InternalizeActionContext {
|
|
|
261
299
|
else
|
|
262
300
|
await this.storeNewBasketInsertionForOutput(transactionId, basket);
|
|
263
301
|
}
|
|
302
|
+
// Lifecycle advance when merging into a tx that was 'nosend'.
|
|
303
|
+
//
|
|
304
|
+
// Background: an internalizeAction call against an existing tx in
|
|
305
|
+
// 'nosend' status is the caller asserting the tx has now been
|
|
306
|
+
// externally broadcast (and potentially mined if the BEEF includes
|
|
307
|
+
// a BUMP). Before this advance, mergedInternalize only updated
|
|
308
|
+
// labels + per-output ownership records and left transactions.status
|
|
309
|
+
// and proven_tx_reqs.status unchanged. The nosend state then had no
|
|
310
|
+
// reliable retirement path: TaskCheckNoSends's default daily cadence
|
|
311
|
+
// combined with intermittent wallet uptime meant the req could sit
|
|
312
|
+
// in 'nosend' indefinitely, and a subsequent abortAction call would
|
|
313
|
+
// unconditionally invalidate the on-chain tx — orphaning every
|
|
314
|
+
// output the tx produced.
|
|
315
|
+
//
|
|
316
|
+
// BUMP-present path: mirror newInternalize's findOrInsertProvenTx
|
|
317
|
+
// path, then promote the existing transaction record to 'completed'
|
|
318
|
+
// with the new provenTxId and retire the proven_tx_req to
|
|
319
|
+
// 'completed' too.
|
|
320
|
+
//
|
|
321
|
+
// BUMP-absent path: promote transactions.status to 'unproven' (so
|
|
322
|
+
// listOutputs filters the tx's outputs into the spendable set
|
|
323
|
+
// immediately) and transition the proven_tx_req to 'unmined' so
|
|
324
|
+
// TaskCheckForProofs picks it up on its next nudge cycle. This
|
|
325
|
+
// hands off to Monitor's standard proof-fetching flow.
|
|
326
|
+
if (wasNoSend) {
|
|
327
|
+
const bump = this.ab.findBump(this.txid);
|
|
328
|
+
if (bump != null) {
|
|
329
|
+
const btx = this.ab.findTxid(this.txid);
|
|
330
|
+
if (btx == null) {
|
|
331
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Could not find transaction ${this.txid} in AtomicBEEF`);
|
|
332
|
+
}
|
|
333
|
+
const proven = await this.findOrInsertProvenTxFromBump(bump, btx);
|
|
334
|
+
await this.storage.updateTransaction(transactionId, {
|
|
335
|
+
provenTxId: proven.provenTxId,
|
|
336
|
+
status: 'completed'
|
|
337
|
+
});
|
|
338
|
+
const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
|
|
339
|
+
if (req != null && req.status === 'nosend') {
|
|
340
|
+
req.addHistoryNote({ what: 'internalizeAction-bumpRetire', userId: this.userId });
|
|
341
|
+
req.provenTxId = proven.provenTxId;
|
|
342
|
+
req.status = 'completed';
|
|
343
|
+
await req.updateStorageDynamicProperties(this.storage);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
await this.storage.updateTransaction(transactionId, { status: 'unproven' });
|
|
348
|
+
const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
|
|
349
|
+
if (req != null && req.status === 'nosend') {
|
|
350
|
+
req.addHistoryNote({ what: 'internalizeAction-nosendRetire', userId: this.userId });
|
|
351
|
+
req.status = 'unmined';
|
|
352
|
+
await req.updateStorageDynamicProperties(this.storage);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
264
356
|
}
|
|
265
357
|
/**
|
|
266
358
|
* internalize output(s) from a transaction with txid unknown to storage.
|
|
@@ -276,31 +368,7 @@ class InternalizeActionContext {
|
|
|
276
368
|
// The presence bump indicates the transaction has already been mined.
|
|
277
369
|
// Verify a provenTx record exist before creating a new transaction with completed status...
|
|
278
370
|
// Which normally means creating a new provenTx record.
|
|
279
|
-
|
|
280
|
-
const merkleRoot = bump.computeRoot(this.txid);
|
|
281
|
-
const indexEntry = bump.path[0].find(p => p.hash === this.txid);
|
|
282
|
-
if (indexEntry == null) {
|
|
283
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
|
|
284
|
-
}
|
|
285
|
-
const index = indexEntry.offset;
|
|
286
|
-
const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
|
|
287
|
-
if (!header) {
|
|
288
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
|
|
289
|
-
}
|
|
290
|
-
const hash = (0, blockHeaderUtilities_1.blockHash)(header);
|
|
291
|
-
const provenTxR = await this.storage.findOrInsertProvenTx({
|
|
292
|
-
created_at: now,
|
|
293
|
-
updated_at: now,
|
|
294
|
-
provenTxId: 0,
|
|
295
|
-
txid: this.txid,
|
|
296
|
-
height: bump.blockHeight,
|
|
297
|
-
index,
|
|
298
|
-
merklePath: bump.toBinary(),
|
|
299
|
-
rawTx: btx.rawTx,
|
|
300
|
-
blockHash: hash,
|
|
301
|
-
merkleRoot
|
|
302
|
-
});
|
|
303
|
-
pr.proven = provenTxR.proven;
|
|
371
|
+
pr.proven = await this.findOrInsertProvenTxFromBump(bump, btx);
|
|
304
372
|
}
|
|
305
373
|
this.etx = await this.findOrInsertTargetTransaction(this.satoshis, pr.proven);
|
|
306
374
|
const transactionId = this.etx.transactionId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/portable/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/portable/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -209,14 +209,32 @@ async function encryptBRC39(documentOrJson, password, options) {
|
|
|
209
209
|
header.set(nonce, BRC39_HEADER_LENGTH + salt.length);
|
|
210
210
|
return Array.from(concatBytes(header, result, authenticationTag));
|
|
211
211
|
}
|
|
212
|
-
|
|
213
|
-
const file = new Uint8Array(bytes);
|
|
212
|
+
function parseBRC39Header(file) {
|
|
214
213
|
if (file.length < BRC39_HEADER_LENGTH + BRC39_TAG_LENGTH + 2)
|
|
215
214
|
throw new Error('Invalid BRC-39 file: too short');
|
|
216
215
|
for (let i = 0; i < BRC39_MAGIC.length; i++) {
|
|
217
216
|
if (file[i] !== BRC39_MAGIC[i])
|
|
218
217
|
throw new Error('Invalid BRC-39 file: bad magic');
|
|
219
218
|
}
|
|
219
|
+
assertHeaderConstants(file);
|
|
220
|
+
for (let i = 21; i < BRC39_HEADER_LENGTH; i++) {
|
|
221
|
+
if (file[i] !== 0)
|
|
222
|
+
throw new Error('Invalid BRC-39 reserved bytes');
|
|
223
|
+
}
|
|
224
|
+
const saltLength = file[9];
|
|
225
|
+
const nonceLength = file[10];
|
|
226
|
+
if (saltLength === 0)
|
|
227
|
+
throw new Error('Invalid BRC-39 salt length');
|
|
228
|
+
if (nonceLength === 0)
|
|
229
|
+
throw new Error('Invalid BRC-39 nonce length');
|
|
230
|
+
const iterations = readUInt32BE(file, 11);
|
|
231
|
+
const memoryKiB = readUInt32BE(file, 15);
|
|
232
|
+
const parallelism = file[19];
|
|
233
|
+
const hashLength = file[20];
|
|
234
|
+
validateKdfParams(iterations, memoryKiB, parallelism, hashLength);
|
|
235
|
+
return { saltLength, nonceLength, iterations, memoryKiB, parallelism, hashLength };
|
|
236
|
+
}
|
|
237
|
+
function assertHeaderConstants(file) {
|
|
220
238
|
if (file[4] !== 1)
|
|
221
239
|
throw new Error('Unsupported BRC-39 format version');
|
|
222
240
|
if (file[5] !== 1)
|
|
@@ -227,29 +245,18 @@ async function decryptBRC39(bytes, password) {
|
|
|
227
245
|
throw new Error('Unsupported BRC-39 KDF type');
|
|
228
246
|
if (file[8] !== 0)
|
|
229
247
|
throw new Error('Invalid BRC-39 flags');
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const
|
|
233
|
-
const
|
|
234
|
-
const
|
|
235
|
-
const hashLength = file[20];
|
|
236
|
-
for (let i = 21; i < BRC39_HEADER_LENGTH; i++) {
|
|
237
|
-
if (file[i] !== 0)
|
|
238
|
-
throw new Error('Invalid BRC-39 reserved bytes');
|
|
239
|
-
}
|
|
240
|
-
if (saltLength === 0)
|
|
241
|
-
throw new Error('Invalid BRC-39 salt length');
|
|
242
|
-
if (nonceLength === 0)
|
|
243
|
-
throw new Error('Invalid BRC-39 nonce length');
|
|
244
|
-
validateKdfParams(iterations, memoryKiB, parallelism, hashLength);
|
|
245
|
-
const payloadStart = BRC39_HEADER_LENGTH + saltLength + nonceLength;
|
|
248
|
+
}
|
|
249
|
+
async function decryptBRC39(bytes, password) {
|
|
250
|
+
const file = new Uint8Array(bytes);
|
|
251
|
+
const header = parseBRC39Header(file);
|
|
252
|
+
const payloadStart = BRC39_HEADER_LENGTH + header.saltLength + header.nonceLength;
|
|
246
253
|
if (file.length <= payloadStart + BRC39_TAG_LENGTH)
|
|
247
254
|
throw new Error('Invalid BRC-39 ciphertext');
|
|
248
|
-
const salt = file.slice(BRC39_HEADER_LENGTH, BRC39_HEADER_LENGTH + saltLength);
|
|
249
|
-
const nonce = file.slice(BRC39_HEADER_LENGTH + saltLength, payloadStart);
|
|
255
|
+
const salt = file.slice(BRC39_HEADER_LENGTH, BRC39_HEADER_LENGTH + header.saltLength);
|
|
256
|
+
const nonce = file.slice(BRC39_HEADER_LENGTH + header.saltLength, payloadStart);
|
|
250
257
|
const ciphertext = file.slice(payloadStart, file.length - BRC39_TAG_LENGTH);
|
|
251
258
|
const tag = file.slice(file.length - BRC39_TAG_LENGTH);
|
|
252
|
-
const key = await deriveBRC39Key(password, salt, iterations, memoryKiB, parallelism);
|
|
259
|
+
const key = await deriveBRC39Key(password, salt, header.iterations, header.memoryKiB, header.parallelism);
|
|
253
260
|
const plaintext = (0, AESGCM_1.AESGCMDecrypt)(ciphertext, nonce, tag, key);
|
|
254
261
|
if (plaintext == null)
|
|
255
262
|
throw new Error('BRC-39 authentication failed');
|
|
@@ -469,33 +476,40 @@ function normalizeSyncMap(source) {
|
|
|
469
476
|
return normalized;
|
|
470
477
|
for (const key of Object.keys(normalized)) {
|
|
471
478
|
const incoming = source[key];
|
|
472
|
-
if (
|
|
473
|
-
|
|
474
|
-
const target = normalized[key];
|
|
475
|
-
if (typeof incoming.entityName === 'string')
|
|
476
|
-
target.entityName = incoming.entityName;
|
|
477
|
-
if (Number.isInteger(incoming.count))
|
|
478
|
-
target.count = incoming.count;
|
|
479
|
-
if (isObject(incoming.idMap)) {
|
|
480
|
-
target.idMap = {};
|
|
481
|
-
for (const [remoteId, localId] of Object.entries(incoming.idMap)) {
|
|
482
|
-
const parsedRemoteId = Number(remoteId);
|
|
483
|
-
if (Number.isInteger(parsedRemoteId) && Number.isInteger(localId)) {
|
|
484
|
-
target.idMap[parsedRemoteId] = localId;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
if (typeof incoming.maxUpdated_at === 'string') {
|
|
489
|
-
const maxUpdatedAt = new Date(incoming.maxUpdated_at);
|
|
490
|
-
if (!Number.isNaN(maxUpdatedAt.getTime()))
|
|
491
|
-
target.maxUpdated_at = maxUpdatedAt;
|
|
492
|
-
}
|
|
493
|
-
else if (incoming.maxUpdated_at instanceof Date) {
|
|
494
|
-
target.maxUpdated_at = incoming.maxUpdated_at;
|
|
495
|
-
}
|
|
479
|
+
if (isObject(incoming))
|
|
480
|
+
mergeSyncMapEntry(normalized[key], incoming);
|
|
496
481
|
}
|
|
497
482
|
return normalized;
|
|
498
483
|
}
|
|
484
|
+
function mergeSyncMapEntry(target, incoming) {
|
|
485
|
+
if (typeof incoming.entityName === 'string')
|
|
486
|
+
target.entityName = incoming.entityName;
|
|
487
|
+
if (Number.isInteger(incoming.count))
|
|
488
|
+
target.count = incoming.count;
|
|
489
|
+
if (isObject(incoming.idMap))
|
|
490
|
+
target.idMap = parseIdMap(incoming.idMap);
|
|
491
|
+
applyMaxUpdatedAt(target, incoming.maxUpdated_at);
|
|
492
|
+
}
|
|
493
|
+
function parseIdMap(incoming) {
|
|
494
|
+
const idMap = {};
|
|
495
|
+
for (const [remoteId, localId] of Object.entries(incoming)) {
|
|
496
|
+
const parsedRemoteId = Number(remoteId);
|
|
497
|
+
if (Number.isInteger(parsedRemoteId) && Number.isInteger(localId)) {
|
|
498
|
+
idMap[parsedRemoteId] = localId;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
return idMap;
|
|
502
|
+
}
|
|
503
|
+
function applyMaxUpdatedAt(target, value) {
|
|
504
|
+
if (typeof value === 'string') {
|
|
505
|
+
const maxUpdatedAt = new Date(value);
|
|
506
|
+
if (!Number.isNaN(maxUpdatedAt.getTime()))
|
|
507
|
+
target.maxUpdated_at = maxUpdatedAt;
|
|
508
|
+
}
|
|
509
|
+
else if (value instanceof Date) {
|
|
510
|
+
target.maxUpdated_at = value;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
499
513
|
function remapEntityIdMap(idMap, importIdMap) {
|
|
500
514
|
for (const key of Object.keys(idMap)) {
|
|
501
515
|
const targetId = importIdMap[idMap[Number(key)]];
|
|
@@ -530,101 +544,120 @@ function countDecodedRows(data) {
|
|
|
530
544
|
data.txLabels.length + data.txLabelMaps.length + data.certificates.length + data.certificateFields.length +
|
|
531
545
|
data.syncStates.length;
|
|
532
546
|
}
|
|
533
|
-
function
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
547
|
+
function buildRelationshipIndex(data) {
|
|
548
|
+
return {
|
|
549
|
+
userId: requireNumber(data.user.userId, 'user.userId'),
|
|
550
|
+
txIds: ids(data.tables.transactions, 'transactionId', 'transactions'),
|
|
551
|
+
txidValues: new Set(data.tables.transactions.map(t => t.txid).filter((v) => typeof v === 'string')),
|
|
552
|
+
provenTxIds: ids(data.tables.provenTxs, 'provenTxId', 'provenTxs'),
|
|
553
|
+
basketIds: ids(data.tables.outputBaskets, 'basketId', 'outputBaskets'),
|
|
554
|
+
outputIds: ids(data.tables.outputs, 'outputId', 'outputs'),
|
|
555
|
+
outputTagIds: ids(data.tables.outputTags, 'outputTagId', 'outputTags'),
|
|
556
|
+
txLabelIds: ids(data.tables.txLabels, 'txLabelId', 'txLabels'),
|
|
557
|
+
certificateIds: ids(data.tables.certificates, 'certificateId', 'certificates')
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
function requireRef(set, value, path, message) {
|
|
561
|
+
if (!set.has(requireNumber(value, path)))
|
|
562
|
+
throw new Error(message);
|
|
563
|
+
}
|
|
564
|
+
function validateTransactions(data, idx) {
|
|
543
565
|
for (const row of data.tables.transactions) {
|
|
544
|
-
requireUserId(row, userId, 'transactions');
|
|
545
|
-
if (row.provenTxId != null
|
|
546
|
-
|
|
566
|
+
requireUserId(row, idx.userId, 'transactions');
|
|
567
|
+
if (row.provenTxId != null) {
|
|
568
|
+
requireRef(idx.provenTxIds, row.provenTxId, 'transaction.provenTxId', 'BRC-38 transaction.provenTxId does not reference an exported provenTx');
|
|
547
569
|
}
|
|
548
570
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
for (const row of data.tables.outputTags)
|
|
552
|
-
requireUserId(row, userId, 'outputTags');
|
|
553
|
-
for (const row of data.tables.txLabels)
|
|
554
|
-
requireUserId(row, userId, 'txLabels');
|
|
555
|
-
for (const row of data.tables.certificates)
|
|
556
|
-
requireUserId(row, userId, 'certificates');
|
|
557
|
-
for (const row of data.tables.syncStates)
|
|
558
|
-
requireUserId(row, userId, 'syncStates');
|
|
571
|
+
}
|
|
572
|
+
function validateOutputs(data, idx) {
|
|
559
573
|
for (const row of data.tables.outputs) {
|
|
560
|
-
requireUserId(row, userId, 'outputs');
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
if (row.basketId != null && !basketIds.has(requireNumber(row.basketId, 'output.basketId'))) {
|
|
565
|
-
throw new Error('BRC-38 output.basketId does not reference an exported output basket');
|
|
574
|
+
requireUserId(row, idx.userId, 'outputs');
|
|
575
|
+
requireRef(idx.txIds, row.transactionId, 'output.transactionId', 'BRC-38 output.transactionId does not reference an exported transaction');
|
|
576
|
+
if (row.basketId != null) {
|
|
577
|
+
requireRef(idx.basketIds, row.basketId, 'output.basketId', 'BRC-38 output.basketId does not reference an exported output basket');
|
|
566
578
|
}
|
|
567
|
-
if (row.spentBy != null
|
|
568
|
-
|
|
579
|
+
if (row.spentBy != null) {
|
|
580
|
+
requireRef(idx.txIds, row.spentBy, 'output.spentBy', 'BRC-38 output.spentBy does not reference an exported transaction');
|
|
569
581
|
}
|
|
570
582
|
}
|
|
583
|
+
}
|
|
584
|
+
function validateCommissions(data, idx) {
|
|
571
585
|
for (const row of data.tables.commissions) {
|
|
572
|
-
requireUserId(row, userId, 'commissions');
|
|
573
|
-
|
|
574
|
-
throw new Error('BRC-38 commission.transactionId does not reference an exported transaction');
|
|
575
|
-
}
|
|
586
|
+
requireUserId(row, idx.userId, 'commissions');
|
|
587
|
+
requireRef(idx.txIds, row.transactionId, 'commission.transactionId', 'BRC-38 commission.transactionId does not reference an exported transaction');
|
|
576
588
|
}
|
|
589
|
+
}
|
|
590
|
+
function validateTxLabelMaps(data, idx) {
|
|
577
591
|
for (const row of data.tables.txLabelMaps) {
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
}
|
|
581
|
-
if (!txLabelIds.has(requireNumber(row.txLabelId, 'txLabelMap.txLabelId'))) {
|
|
582
|
-
throw new Error('BRC-38 txLabelMap.txLabelId does not reference an exported transaction label');
|
|
583
|
-
}
|
|
592
|
+
requireRef(idx.txIds, row.transactionId, 'txLabelMap.transactionId', 'BRC-38 txLabelMap.transactionId does not reference an exported transaction');
|
|
593
|
+
requireRef(idx.txLabelIds, row.txLabelId, 'txLabelMap.txLabelId', 'BRC-38 txLabelMap.txLabelId does not reference an exported transaction label');
|
|
584
594
|
}
|
|
595
|
+
}
|
|
596
|
+
function validateOutputTagMaps(data, idx) {
|
|
585
597
|
for (const row of data.tables.outputTagMaps) {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
}
|
|
589
|
-
if (!outputTagIds.has(requireNumber(row.outputTagId, 'outputTagMap.outputTagId'))) {
|
|
590
|
-
throw new Error('BRC-38 outputTagMap.outputTagId does not reference an exported output tag');
|
|
591
|
-
}
|
|
598
|
+
requireRef(idx.outputIds, row.outputId, 'outputTagMap.outputId', 'BRC-38 outputTagMap.outputId does not reference an exported output');
|
|
599
|
+
requireRef(idx.outputTagIds, row.outputTagId, 'outputTagMap.outputTagId', 'BRC-38 outputTagMap.outputTagId does not reference an exported output tag');
|
|
592
600
|
}
|
|
601
|
+
}
|
|
602
|
+
function validateCertificateFields(data, idx) {
|
|
593
603
|
for (const row of data.tables.certificateFields) {
|
|
594
|
-
requireUserId(row, userId, 'certificateFields');
|
|
595
|
-
|
|
596
|
-
throw new Error('BRC-38 certificateField.certificateId does not reference an exported certificate');
|
|
597
|
-
}
|
|
604
|
+
requireUserId(row, idx.userId, 'certificateFields');
|
|
605
|
+
requireRef(idx.certificateIds, row.certificateId, 'certificateField.certificateId', 'BRC-38 certificateField.certificateId does not reference an exported certificate');
|
|
598
606
|
}
|
|
607
|
+
}
|
|
608
|
+
function validateProvenTxReqs(data, idx) {
|
|
599
609
|
for (const row of data.tables.provenTxReqs) {
|
|
600
|
-
if (!txidValues.has(requireString(row.txid, 'provenTxReq.txid'))) {
|
|
610
|
+
if (!idx.txidValues.has(requireString(row.txid, 'provenTxReq.txid'))) {
|
|
601
611
|
throw new Error('BRC-38 provenTxReq.txid does not match an exported transaction');
|
|
602
612
|
}
|
|
603
|
-
if (row.provenTxId != null
|
|
604
|
-
|
|
613
|
+
if (row.provenTxId != null) {
|
|
614
|
+
requireRef(idx.provenTxIds, row.provenTxId, 'provenTxReq.provenTxId', 'BRC-38 provenTxReq.provenTxId does not reference an exported provenTx');
|
|
605
615
|
}
|
|
606
616
|
}
|
|
607
617
|
}
|
|
618
|
+
function validateRelationships(data) {
|
|
619
|
+
const idx = buildRelationshipIndex(data);
|
|
620
|
+
validateTransactions(data, idx);
|
|
621
|
+
for (const row of data.tables.outputBaskets)
|
|
622
|
+
requireUserId(row, idx.userId, 'outputBaskets');
|
|
623
|
+
for (const row of data.tables.outputTags)
|
|
624
|
+
requireUserId(row, idx.userId, 'outputTags');
|
|
625
|
+
for (const row of data.tables.txLabels)
|
|
626
|
+
requireUserId(row, idx.userId, 'txLabels');
|
|
627
|
+
for (const row of data.tables.certificates)
|
|
628
|
+
requireUserId(row, idx.userId, 'certificates');
|
|
629
|
+
for (const row of data.tables.syncStates)
|
|
630
|
+
requireUserId(row, idx.userId, 'syncStates');
|
|
631
|
+
validateOutputs(data, idx);
|
|
632
|
+
validateCommissions(data, idx);
|
|
633
|
+
validateTxLabelMaps(data, idx);
|
|
634
|
+
validateOutputTagMaps(data, idx);
|
|
635
|
+
validateCertificateFields(data, idx);
|
|
636
|
+
validateProvenTxReqs(data, idx);
|
|
637
|
+
}
|
|
608
638
|
function validatePortableRows(kind, rows, path) {
|
|
609
639
|
var _a, _b, _c;
|
|
610
640
|
const dateFields = new Set((_a = dateFieldsByKind[kind]) !== null && _a !== void 0 ? _a : []);
|
|
611
641
|
const binaryFields = new Set((_b = binaryFieldsByKind[kind]) !== null && _b !== void 0 ? _b : []);
|
|
612
642
|
const jsonFields = new Set((_c = jsonFieldsByKind[kind]) !== null && _c !== void 0 ? _c : []);
|
|
613
643
|
for (const [index, row] of rows.entries()) {
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
644
|
+
validatePortableRow(row, `${path}[${index}]`, dateFields, binaryFields, jsonFields);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
function validatePortableRow(row, rowPath, dateFields, binaryFields, jsonFields) {
|
|
648
|
+
if (!isObject(row))
|
|
649
|
+
throw new Error(`BRC-38 ${rowPath} must be an object`);
|
|
650
|
+
for (const field of dateFields) {
|
|
651
|
+
if (field in row)
|
|
652
|
+
assertIsoDate(row[field], `${rowPath}.${field}`);
|
|
653
|
+
}
|
|
654
|
+
for (const field of binaryFields) {
|
|
655
|
+
if (field in row)
|
|
656
|
+
assertBase64(row[field], `${rowPath}.${field}`);
|
|
657
|
+
}
|
|
658
|
+
for (const field of jsonFields) {
|
|
659
|
+
if (field in row && !isObject(row[field]))
|
|
660
|
+
throw new Error(`BRC-38 ${rowPath}.${field} must be an object`);
|
|
628
661
|
}
|
|
629
662
|
}
|
|
630
663
|
function portableRow(kind, row) {
|
|
@@ -762,10 +795,23 @@ function canonicalize(value) {
|
|
|
762
795
|
if (Array.isArray(value))
|
|
763
796
|
return `[${value.map(canonicalize).join(',')}]`;
|
|
764
797
|
if (isObject(value)) {
|
|
765
|
-
|
|
798
|
+
const entries = Object.keys(value)
|
|
799
|
+
.sort(compareCodepoints)
|
|
800
|
+
.map(key => canonicalizeEntry(key, value[key]));
|
|
801
|
+
return `{${entries.join(',')}}`;
|
|
766
802
|
}
|
|
767
803
|
throw new Error(`Unsupported JSON value type: ${typeof value}`);
|
|
768
804
|
}
|
|
805
|
+
function canonicalizeEntry(key, value) {
|
|
806
|
+
return `${JSON.stringify(key)}:${canonicalize(value)}`;
|
|
807
|
+
}
|
|
808
|
+
function compareCodepoints(a, b) {
|
|
809
|
+
if (a < b)
|
|
810
|
+
return -1;
|
|
811
|
+
if (a > b)
|
|
812
|
+
return 1;
|
|
813
|
+
return 0;
|
|
814
|
+
}
|
|
769
815
|
function isoDate(date) {
|
|
770
816
|
return date.toISOString();
|
|
771
817
|
}
|