@bsv/overlay 2.3.1 → 2.6.1
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 +166 -0
- package/dist/cjs/mod.d.ts +3 -0
- package/dist/cjs/mod.d.ts.map +1 -1
- package/dist/cjs/mod.js +8 -1
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +10 -4
- package/dist/cjs/src/BASM.d.ts +6 -0
- package/dist/cjs/src/BASM.d.ts.map +1 -1
- package/dist/cjs/src/BASM.js +21 -8
- package/dist/cjs/src/BASM.js.map +1 -1
- package/dist/cjs/src/BASMRemote.d.ts +8 -1
- package/dist/cjs/src/BASMRemote.d.ts.map +1 -1
- package/dist/cjs/src/BASMRemote.js +179 -13
- package/dist/cjs/src/BASMRemote.js.map +1 -1
- package/dist/cjs/src/BASMValidation.d.ts +27 -0
- package/dist/cjs/src/BASMValidation.d.ts.map +1 -0
- package/dist/cjs/src/BASMValidation.js +108 -0
- package/dist/cjs/src/BASMValidation.js.map +1 -0
- package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts +11 -0
- package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
- package/dist/cjs/src/DiscoveryAdvertisementValidation.js +60 -0
- package/dist/cjs/src/DiscoveryAdvertisementValidation.js.map +1 -0
- package/dist/cjs/src/Engine.d.ts +37 -13
- package/dist/cjs/src/Engine.d.ts.map +1 -1
- package/dist/cjs/src/Engine.js +1713 -336
- package/dist/cjs/src/Engine.js.map +1 -1
- package/dist/cjs/src/EngineAdmission.d.ts +70 -0
- package/dist/cjs/src/EngineAdmission.d.ts.map +1 -0
- package/dist/cjs/src/EngineAdmission.js +297 -0
- package/dist/cjs/src/EngineAdmission.js.map +1 -0
- package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts +4 -3
- package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPRemote.js +27 -43
- package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts +22 -16
- package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPStorage.js +206 -57
- package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/cjs/src/RemoteSecurity.d.ts +50 -0
- package/dist/cjs/src/RemoteSecurity.d.ts.map +1 -0
- package/dist/cjs/src/RemoteSecurity.js +301 -0
- package/dist/cjs/src/RemoteSecurity.js.map +1 -0
- package/dist/cjs/src/storage/AdmissionStorage.d.ts +185 -0
- package/dist/cjs/src/storage/AdmissionStorage.d.ts.map +1 -0
- package/dist/cjs/src/storage/AdmissionStorage.js +93 -0
- package/dist/cjs/src/storage/AdmissionStorage.js.map +1 -0
- package/dist/cjs/src/storage/RecoveryContract.d.ts +50 -0
- package/dist/cjs/src/storage/RecoveryContract.d.ts.map +1 -0
- package/dist/cjs/src/storage/RecoveryContract.js +35 -0
- package/dist/cjs/src/storage/RecoveryContract.js.map +1 -0
- package/dist/cjs/src/storage/Storage.d.ts +32 -19
- package/dist/cjs/src/storage/Storage.d.ts.map +1 -1
- package/dist/cjs/src/storage/Storage.js +5 -0
- package/dist/cjs/src/storage/Storage.js.map +1 -1
- package/dist/cjs/src/storage/knex/KnexStorage.d.ts +8 -8
- package/dist/cjs/src/storage/knex/KnexStorage.d.ts.map +1 -1
- package/dist/cjs/src/storage/knex/KnexStorage.js +98 -61
- package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/cjs/src/storage/knex/all-migrations.d.ts.map +1 -1
- package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
- package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +36 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js +16 -0
- package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js +229 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js +675 -0
- package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
- package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js +453 -0
- package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
- package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoPayloadStore.js +756 -0
- package/dist/cjs/src/storage/mongo/MongoPayloadStore.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts +44 -0
- package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoReadGuards.js +135 -0
- package/dist/cjs/src/storage/mongo/MongoReadGuards.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoSchema.d.ts +67 -0
- package/dist/cjs/src/storage/mongo/MongoSchema.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoSchema.js +743 -0
- package/dist/cjs/src/storage/mongo/MongoSchema.js.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
- package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js +368 -0
- package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
- package/dist/cjs/src/storage/mongo.d.ts +9 -0
- package/dist/cjs/src/storage/mongo.d.ts.map +1 -0
- package/dist/cjs/src/storage/mongo.js +25 -0
- package/dist/cjs/src/storage/mongo.js.map +1 -0
- package/dist/esm/mod.js +3 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/BASM.js +21 -8
- package/dist/esm/src/BASM.js.map +1 -1
- package/dist/esm/src/BASMRemote.js +176 -12
- package/dist/esm/src/BASMRemote.js.map +1 -1
- package/dist/esm/src/BASMValidation.js +95 -0
- package/dist/esm/src/BASMValidation.js.map +1 -0
- package/dist/esm/src/DiscoveryAdvertisementValidation.js +57 -0
- package/dist/esm/src/DiscoveryAdvertisementValidation.js.map +1 -0
- package/dist/esm/src/Engine.js +1698 -326
- package/dist/esm/src/Engine.js.map +1 -1
- package/dist/esm/src/EngineAdmission.js +280 -0
- package/dist/esm/src/EngineAdmission.js.map +1 -0
- package/dist/esm/src/GASP/OverlayGASPRemote.js +27 -43
- package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/esm/src/GASP/OverlayGASPStorage.js +200 -56
- package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/esm/src/RemoteSecurity.js +279 -0
- package/dist/esm/src/RemoteSecurity.js.map +1 -0
- package/dist/esm/src/storage/AdmissionStorage.js +85 -0
- package/dist/esm/src/storage/AdmissionStorage.js.map +1 -0
- package/dist/esm/src/storage/RecoveryContract.js +31 -0
- package/dist/esm/src/storage/RecoveryContract.js.map +1 -0
- package/dist/esm/src/storage/Storage.js +4 -1
- package/dist/esm/src/storage/Storage.js.map +1 -1
- package/dist/esm/src/storage/knex/KnexStorage.js +98 -61
- package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/esm/src/storage/knex/all-migrations.js +5 -1
- package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +32 -0
- package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
- package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js +12 -0
- package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js +217 -0
- package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js +673 -0
- package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoOverlayStorage.js +451 -0
- package/dist/esm/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoPayloadStore.js +747 -0
- package/dist/esm/src/storage/mongo/MongoPayloadStore.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoReadGuards.js +129 -0
- package/dist/esm/src/storage/mongo/MongoReadGuards.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoSchema.js +730 -0
- package/dist/esm/src/storage/mongo/MongoSchema.js.map +1 -0
- package/dist/esm/src/storage/mongo/MongoTransactionRunner.js +371 -0
- package/dist/esm/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
- package/dist/esm/src/storage/mongo.js +9 -0
- package/dist/esm/src/storage/mongo.js.map +1 -0
- package/dist/types/mod.d.ts +3 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/BASM.d.ts +6 -0
- package/dist/types/src/BASM.d.ts.map +1 -1
- package/dist/types/src/BASMRemote.d.ts +8 -1
- package/dist/types/src/BASMRemote.d.ts.map +1 -1
- package/dist/types/src/BASMValidation.d.ts +27 -0
- package/dist/types/src/BASMValidation.d.ts.map +1 -0
- package/dist/types/src/DiscoveryAdvertisementValidation.d.ts +11 -0
- package/dist/types/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
- package/dist/types/src/Engine.d.ts +37 -13
- package/dist/types/src/Engine.d.ts.map +1 -1
- package/dist/types/src/EngineAdmission.d.ts +70 -0
- package/dist/types/src/EngineAdmission.d.ts.map +1 -0
- package/dist/types/src/GASP/OverlayGASPRemote.d.ts +4 -3
- package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts +22 -16
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
- package/dist/types/src/RemoteSecurity.d.ts +50 -0
- package/dist/types/src/RemoteSecurity.d.ts.map +1 -0
- package/dist/types/src/storage/AdmissionStorage.d.ts +185 -0
- package/dist/types/src/storage/AdmissionStorage.d.ts.map +1 -0
- package/dist/types/src/storage/RecoveryContract.d.ts +50 -0
- package/dist/types/src/storage/RecoveryContract.d.ts.map +1 -0
- package/dist/types/src/storage/Storage.d.ts +32 -19
- package/dist/types/src/storage/Storage.d.ts.map +1 -1
- package/dist/types/src/storage/knex/KnexStorage.d.ts +8 -8
- package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
- package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
- package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
- package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
- package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
- package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
- package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
- package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
- package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
- package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoReadGuards.d.ts +44 -0
- package/dist/types/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoSchema.d.ts +67 -0
- package/dist/types/src/storage/mongo/MongoSchema.d.ts.map +1 -0
- package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
- package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
- package/dist/types/src/storage/mongo.d.ts +9 -0
- package/dist/types/src/storage/mongo.d.ts.map +1 -0
- package/package.json +11 -5
|
@@ -1,17 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OverlayGASPStorage = void 0;
|
|
4
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
4
5
|
const sdk_1 = require("@bsv/sdk");
|
|
6
|
+
const RemoteSecurity_js_1 = require("../RemoteSecurity.js");
|
|
7
|
+
const DEFAULT_MAX_NODES_IN_GRAPH = 2048;
|
|
8
|
+
const MAX_CONFIGURED_NODES_IN_GRAPH = 100000;
|
|
9
|
+
const DEFAULT_MAX_BYTES_IN_GRAPH = 64 * 1024 * 1024;
|
|
5
10
|
class OverlayGASPStorage {
|
|
6
|
-
constructor(topic, engine, maxNodesInGraph) {
|
|
11
|
+
constructor(topic, engine, maxNodesInGraph, maxBytesInGraph = DEFAULT_MAX_BYTES_IN_GRAPH) {
|
|
7
12
|
this.topic = topic;
|
|
8
13
|
this.engine = engine;
|
|
9
14
|
this.maxNodesInGraph = maxNodesInGraph;
|
|
10
|
-
this.
|
|
15
|
+
this.maxBytesInGraph = maxBytesInGraph;
|
|
16
|
+
this.temporaryGraphNodeRefs = Object.create(null);
|
|
17
|
+
this.graphNodeCounts = new Map();
|
|
18
|
+
this.graphByteCounts = new Map();
|
|
19
|
+
(0, RemoteSecurity_js_1.assertTopic)(topic, 'GASP storage topic');
|
|
20
|
+
const nodeLimit = maxNodesInGraph !== null && maxNodesInGraph !== void 0 ? maxNodesInGraph : DEFAULT_MAX_NODES_IN_GRAPH;
|
|
21
|
+
if (!Number.isSafeInteger(nodeLimit) ||
|
|
22
|
+
nodeLimit < 1 ||
|
|
23
|
+
nodeLimit > MAX_CONFIGURED_NODES_IN_GRAPH) {
|
|
24
|
+
throw new TypeError(`maxNodesInGraph must be between 1 and ${MAX_CONFIGURED_NODES_IN_GRAPH}`);
|
|
25
|
+
}
|
|
26
|
+
if (!Number.isSafeInteger(maxBytesInGraph) || maxBytesInGraph < 1) {
|
|
27
|
+
throw new TypeError('maxBytesInGraph must be a positive safe integer');
|
|
28
|
+
}
|
|
29
|
+
this.maxNodesInGraph = nodeLimit;
|
|
30
|
+
}
|
|
31
|
+
graphNodeKey(graphID, nodeID) {
|
|
32
|
+
return graphID === nodeID ? graphID : `${graphID}\u0000${nodeID}`;
|
|
33
|
+
}
|
|
34
|
+
graphNode(graphID, nodeID) {
|
|
35
|
+
return this.temporaryGraphNodeRefs[this.graphNodeKey(graphID, nodeID)];
|
|
36
|
+
}
|
|
37
|
+
nodeByteLength(node) {
|
|
38
|
+
var _a, _b, _c;
|
|
39
|
+
var _d, _e, _f, _g;
|
|
40
|
+
let length = node.graphID.length + node.rawTx.length + 16;
|
|
41
|
+
length += (_d = (_a = node.proof) === null || _a === void 0 ? void 0 : _a.length) !== null && _d !== void 0 ? _d : 0;
|
|
42
|
+
length += (_e = (_b = node.txMetadata) === null || _b === void 0 ? void 0 : _b.length) !== null && _e !== void 0 ? _e : 0;
|
|
43
|
+
length += (_f = (_c = node.outputMetadata) === null || _c === void 0 ? void 0 : _c.length) !== null && _f !== void 0 ? _f : 0;
|
|
44
|
+
for (const [outpoint, metadata] of Object.entries((_g = node.inputs) !== null && _g !== void 0 ? _g : {})) {
|
|
45
|
+
length += outpoint.length + metadata.hash.length;
|
|
46
|
+
}
|
|
47
|
+
return length;
|
|
11
48
|
}
|
|
12
49
|
static async acquireAnchorValidationSlot() {
|
|
13
|
-
if (OverlayGASPStorage.activeAnchorValidations >=
|
|
14
|
-
|
|
50
|
+
if (OverlayGASPStorage.activeAnchorValidations >=
|
|
51
|
+
OverlayGASPStorage.MAX_CONCURRENT_ANCHOR_VALIDATIONS) {
|
|
52
|
+
await new Promise(resolve => {
|
|
53
|
+
OverlayGASPStorage.anchorValidationQueue.push(resolve);
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
15
56
|
}
|
|
16
57
|
OverlayGASPStorage.activeAnchorValidations++;
|
|
17
58
|
}
|
|
@@ -19,12 +60,16 @@ class OverlayGASPStorage {
|
|
|
19
60
|
OverlayGASPStorage.activeAnchorValidations--;
|
|
20
61
|
const next = OverlayGASPStorage.anchorValidationQueue.shift();
|
|
21
62
|
if (next !== undefined) {
|
|
63
|
+
OverlayGASPStorage.activeAnchorValidations++;
|
|
22
64
|
next();
|
|
23
65
|
}
|
|
24
66
|
}
|
|
25
67
|
static async acquireFinalizationSlot() {
|
|
26
68
|
if (OverlayGASPStorage.activeFinalizations >= OverlayGASPStorage.MAX_CONCURRENT_FINALIZATIONS) {
|
|
27
|
-
await new Promise(resolve => {
|
|
69
|
+
await new Promise(resolve => {
|
|
70
|
+
OverlayGASPStorage.finalizationQueue.push(resolve);
|
|
71
|
+
});
|
|
72
|
+
return;
|
|
28
73
|
}
|
|
29
74
|
OverlayGASPStorage.activeFinalizations++;
|
|
30
75
|
}
|
|
@@ -32,6 +77,7 @@ class OverlayGASPStorage {
|
|
|
32
77
|
OverlayGASPStorage.activeFinalizations--;
|
|
33
78
|
const next = OverlayGASPStorage.finalizationQueue.shift();
|
|
34
79
|
if (next !== undefined) {
|
|
80
|
+
OverlayGASPStorage.activeFinalizations++;
|
|
35
81
|
next();
|
|
36
82
|
}
|
|
37
83
|
}
|
|
@@ -41,12 +87,21 @@ class OverlayGASPStorage {
|
|
|
41
87
|
* @returns
|
|
42
88
|
*/
|
|
43
89
|
async findKnownUTXOs(since) {
|
|
90
|
+
(0, RemoteSecurity_js_1.assertNonnegativeInteger)(since, 'GASP since score');
|
|
44
91
|
const UTXOs = await this.engine.storage.findUTXOsForTopic(this.topic, since);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
92
|
+
if (!Array.isArray(UTXOs))
|
|
93
|
+
throw new TypeError('Storage returned an invalid GASP UTXO list');
|
|
94
|
+
return UTXOs.map((output, index) => {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
(0, RemoteSecurity_js_1.assertHash)(output.txid, `GASP UTXO[${index}] txid`);
|
|
97
|
+
(0, RemoteSecurity_js_1.assertOutputIndex)(output.outputIndex, `GASP UTXO[${index}] output index`);
|
|
98
|
+
(0, RemoteSecurity_js_1.assertNonnegativeInteger)((_a = output.score) !== null && _a !== void 0 ? _a : 0, `GASP UTXO[${index}] score`);
|
|
99
|
+
return {
|
|
100
|
+
txid: output.txid,
|
|
101
|
+
outputIndex: output.outputIndex,
|
|
102
|
+
score: (_b = output.score) !== null && _b !== void 0 ? _b : 0
|
|
103
|
+
};
|
|
104
|
+
});
|
|
50
105
|
}
|
|
51
106
|
/**
|
|
52
107
|
* 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.
|
|
@@ -57,11 +112,20 @@ class OverlayGASPStorage {
|
|
|
57
112
|
* @returns
|
|
58
113
|
*/
|
|
59
114
|
async hydrateGASPNode(graphID, txid, outputIndex, _metadata) {
|
|
60
|
-
|
|
115
|
+
(0, RemoteSecurity_js_1.assertOutpoint)(graphID, 'GASP graphID');
|
|
116
|
+
(0, RemoteSecurity_js_1.assertHash)(txid, 'GASP txid');
|
|
117
|
+
(0, RemoteSecurity_js_1.assertOutputIndex)(outputIndex, 'GASP output index');
|
|
118
|
+
const output = await this.engine.storage.findOutput(txid, outputIndex, this.topic, undefined, true);
|
|
61
119
|
if ((output === null || output === void 0 ? void 0 : output.beef) === undefined) {
|
|
62
120
|
throw new Error('No matching output found!');
|
|
63
121
|
}
|
|
122
|
+
if (output.topic !== this.topic) {
|
|
123
|
+
throw new Error('Stored GASP output is not admitted to the requested topic');
|
|
124
|
+
}
|
|
64
125
|
const tx = sdk_1.Transaction.fromBEEF(output.beef);
|
|
126
|
+
if (tx.id('hex').toLowerCase() !== txid.toLowerCase() || outputIndex >= tx.outputs.length) {
|
|
127
|
+
throw new Error('Stored GASP output does not match its transaction');
|
|
128
|
+
}
|
|
65
129
|
const rawTx = tx.toHex();
|
|
66
130
|
const node = {
|
|
67
131
|
rawTx,
|
|
@@ -74,21 +138,25 @@ class OverlayGASPStorage {
|
|
|
74
138
|
return node;
|
|
75
139
|
}
|
|
76
140
|
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
141
|
+
* For a given node, returns the inputs needed to complete the graph, including whether updated metadata is requested for those inputs.
|
|
142
|
+
* @param tx The node for which needed inputs should be found.
|
|
143
|
+
* @returns A promise for a mapping of requested input transactions and whether metadata should be provided for each.
|
|
144
|
+
*/
|
|
81
145
|
async findNeededInputs(tx) {
|
|
82
146
|
var _a, _b;
|
|
83
|
-
var _c, _d;
|
|
147
|
+
var _c, _d, _e;
|
|
84
148
|
// If there is no Merkle proof, we always need the inputs
|
|
85
149
|
const response = {
|
|
86
|
-
requestedInputs:
|
|
150
|
+
requestedInputs: Object.create(null)
|
|
87
151
|
};
|
|
88
152
|
const parsedTx = sdk_1.Transaction.fromHex(tx.rawTx);
|
|
153
|
+
const nodeLimit = (_c = this.maxNodesInGraph) !== null && _c !== void 0 ? _c : DEFAULT_MAX_NODES_IN_GRAPH;
|
|
154
|
+
if (parsedTx.inputs.length > nodeLimit) {
|
|
155
|
+
throw new Error('GASP transaction input count exceeds the graph node limit');
|
|
156
|
+
}
|
|
89
157
|
if (tx.proof === undefined) {
|
|
90
158
|
for (const input of parsedTx.inputs) {
|
|
91
|
-
response.requestedInputs[`${(
|
|
159
|
+
response.requestedInputs[`${(_d = input.sourceTXID) !== null && _d !== void 0 ? _d : ''}.${input.sourceOutputIndex}`] = {
|
|
92
160
|
metadata: false
|
|
93
161
|
};
|
|
94
162
|
}
|
|
@@ -96,13 +164,23 @@ class OverlayGASPStorage {
|
|
|
96
164
|
}
|
|
97
165
|
// Attempt to check if the current transaction is admissible
|
|
98
166
|
parsedTx.merklePath = sdk_1.MerklePath.fromHex(tx.proof);
|
|
99
|
-
const admittanceResult = await this.engine.managers[this.topic].identifyAdmissibleOutputs(parsedTx.toBEEF(), [], typeof tx.txMetadata === 'string' ?
|
|
100
|
-
if (!admittanceResult.outputsToAdmit.includes(tx.outputIndex) &&
|
|
167
|
+
const admittanceResult = (0, RemoteSecurity_js_1.validateAdmittanceInstructions)(await this.engine.managers[this.topic].identifyAdmissibleOutputs(parsedTx.toBEEF(), [], typeof tx.txMetadata === 'string' ? (0, utils_1.toArray)(tx.txMetadata) : undefined, 'historical-tx', { dryRun: true }), parsedTx, []);
|
|
168
|
+
if (!admittanceResult.outputsToAdmit.includes(tx.outputIndex) &&
|
|
169
|
+
this.engine.managers[this.topic] !== undefined &&
|
|
170
|
+
typeof this.engine.managers[this.topic].identifyNeededInputs === 'function') {
|
|
101
171
|
// The transaction is not admissible, get inputs needed for further verification
|
|
102
172
|
// TopicManagers should implement a function to identify which inputs are needed.
|
|
103
173
|
try {
|
|
104
|
-
const neededInputs = (
|
|
174
|
+
const neededInputs = (_e = (await ((_b = (_a = this.engine.managers[this.topic]).identifyNeededInputs) === null || _b === void 0 ? void 0 : _b.call(_a, parsedTx.toBEEF())))) !== null && _e !== void 0 ? _e : [];
|
|
175
|
+
if (!Array.isArray(neededInputs) || neededInputs.length > nodeLimit) {
|
|
176
|
+
throw new TypeError('Topic manager returned an invalid or oversized needed-input list');
|
|
177
|
+
}
|
|
105
178
|
for (const input of neededInputs) {
|
|
179
|
+
if (typeof input !== 'object' || input === null) {
|
|
180
|
+
throw new TypeError('Topic manager returned an invalid needed input');
|
|
181
|
+
}
|
|
182
|
+
(0, RemoteSecurity_js_1.assertHash)(input.txid, 'Topic manager needed-input txid');
|
|
183
|
+
(0, RemoteSecurity_js_1.assertOutputIndex)(input.outputIndex, 'Topic manager needed-input output index');
|
|
106
184
|
response.requestedInputs[`${input.txid}.${input.outputIndex}`] = {
|
|
107
185
|
metadata: false
|
|
108
186
|
};
|
|
@@ -140,17 +218,33 @@ class OverlayGASPStorage {
|
|
|
140
218
|
return response;
|
|
141
219
|
}
|
|
142
220
|
/**
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
221
|
+
* Appends a new node to a temporary graph.
|
|
222
|
+
* @param tx The node to append to this graph.
|
|
223
|
+
* @param spentBy Unless this is the same node identified by the graph ID, denotes the TXID and input index for the node which spent this one, in 36-byte format.
|
|
224
|
+
* @throws If the node cannot be appended to the graph, either because the graph ID is for a graph the recipient does not want or because the graph has grown to be too large before being finalized.
|
|
225
|
+
*/
|
|
148
226
|
async appendToGraph(tx, spentBy) {
|
|
149
|
-
|
|
150
|
-
throw new Error('The max number of nodes in transaction graph has been reached!');
|
|
151
|
-
}
|
|
227
|
+
var _a, _b, _c;
|
|
152
228
|
const parsedTx = sdk_1.Transaction.fromHex(tx.rawTx);
|
|
153
229
|
const txid = parsedTx.id('hex');
|
|
230
|
+
(0, RemoteSecurity_js_1.assertGASPNode)(tx, { graphID: tx.graphID, txid, outputIndex: tx.outputIndex });
|
|
231
|
+
if (tx.outputIndex >= parsedTx.outputs.length) {
|
|
232
|
+
throw new Error('GASP node output index does not exist in its transaction');
|
|
233
|
+
}
|
|
234
|
+
const nodeID = `${txid}.${tx.outputIndex}`;
|
|
235
|
+
const nodeLimit = (_a = this.maxNodesInGraph) !== null && _a !== void 0 ? _a : DEFAULT_MAX_NODES_IN_GRAPH;
|
|
236
|
+
if (parsedTx.inputs.length > nodeLimit) {
|
|
237
|
+
throw new Error('GASP transaction input count exceeds the graph node limit');
|
|
238
|
+
}
|
|
239
|
+
const nodeCount = (_b = this.graphNodeCounts.get(tx.graphID)) !== null && _b !== void 0 ? _b : 0;
|
|
240
|
+
if (nodeCount >= nodeLimit) {
|
|
241
|
+
throw new Error('The max number of nodes in transaction graph has been reached!');
|
|
242
|
+
}
|
|
243
|
+
const nodeBytes = this.nodeByteLength(tx);
|
|
244
|
+
const graphBytes = (_c = this.graphByteCounts.get(tx.graphID)) !== null && _c !== void 0 ? _c : 0;
|
|
245
|
+
if (graphBytes + nodeBytes > this.maxBytesInGraph) {
|
|
246
|
+
throw new Error('The max byte size of the transaction graph has been reached!');
|
|
247
|
+
}
|
|
154
248
|
if (tx.proof !== undefined) {
|
|
155
249
|
parsedTx.merklePath = sdk_1.MerklePath.fromHex(tx.proof);
|
|
156
250
|
}
|
|
@@ -169,19 +263,37 @@ class OverlayGASPStorage {
|
|
|
169
263
|
};
|
|
170
264
|
// If spentBy is undefined, then we know it's the root node.
|
|
171
265
|
if (spentBy === undefined) {
|
|
172
|
-
|
|
266
|
+
if (nodeID !== tx.graphID) {
|
|
267
|
+
throw new Error('The root GASP node does not match its graph ID');
|
|
268
|
+
}
|
|
269
|
+
if (this.graphNode(tx.graphID, nodeID) !== undefined) {
|
|
270
|
+
throw new Error('The GASP graph already contains this node');
|
|
271
|
+
}
|
|
272
|
+
this.temporaryGraphNodeRefs[this.graphNodeKey(tx.graphID, nodeID)] = newGraphNode;
|
|
173
273
|
}
|
|
174
274
|
else {
|
|
275
|
+
(0, RemoteSecurity_js_1.assertOutpoint)(spentBy, 'GASP parent outpoint');
|
|
175
276
|
// Find the parent node based on spentBy
|
|
176
|
-
const parentNode = this.
|
|
277
|
+
const parentNode = this.graphNode(tx.graphID, spentBy);
|
|
177
278
|
if (parentNode === undefined) {
|
|
178
279
|
throw new Error(`Parent node with GraphID ${spentBy} not found`);
|
|
179
280
|
}
|
|
281
|
+
if (this.graphNode(tx.graphID, nodeID) !== undefined) {
|
|
282
|
+
throw new Error('The GASP graph already contains this node');
|
|
283
|
+
}
|
|
284
|
+
const parentTransaction = sdk_1.Transaction.fromHex(parentNode.rawTx);
|
|
285
|
+
const isReferencedInput = parentTransaction.inputs.some(input => { var _a, _b; var _c; return ((_b = ((_c = input.sourceTXID) !== null && _c !== void 0 ? _c : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex'))) === null || _b === void 0 ? void 0 : _b.toLowerCase()) ===
|
|
286
|
+
txid.toLowerCase() && input.sourceOutputIndex === tx.outputIndex; });
|
|
287
|
+
if (!isReferencedInput) {
|
|
288
|
+
throw new Error('The GASP child node is not an input of its declared parent');
|
|
289
|
+
}
|
|
180
290
|
// Set parent-child relationship
|
|
181
291
|
parentNode.children.push(newGraphNode);
|
|
182
292
|
newGraphNode.parent = parentNode;
|
|
183
|
-
this.temporaryGraphNodeRefs[
|
|
293
|
+
this.temporaryGraphNodeRefs[this.graphNodeKey(tx.graphID, nodeID)] = newGraphNode;
|
|
184
294
|
}
|
|
295
|
+
this.graphNodeCounts.set(tx.graphID, nodeCount + 1);
|
|
296
|
+
this.graphByteCounts.set(tx.graphID, graphBytes + nodeBytes);
|
|
185
297
|
}
|
|
186
298
|
previousCoinIndexes(tx, coins) {
|
|
187
299
|
var _a;
|
|
@@ -191,26 +303,45 @@ class OverlayGASPStorage {
|
|
|
191
303
|
const sourceTXID = (_b = input.sourceTXID) !== null && _b !== void 0 ? _b : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
|
|
192
304
|
if (sourceTXID == null || sourceTXID === '')
|
|
193
305
|
continue;
|
|
194
|
-
if (coins.has(`${sourceTXID}.${input.sourceOutputIndex}`)) {
|
|
306
|
+
if (coins.has(`${sourceTXID.toLowerCase()}.${input.sourceOutputIndex}`)) {
|
|
195
307
|
previousCoins.push(Number(inputIndex));
|
|
196
308
|
}
|
|
197
309
|
}
|
|
198
310
|
return previousCoins;
|
|
199
311
|
}
|
|
200
|
-
async admitHistoricalBEEF(beef, coins) {
|
|
312
|
+
async admitHistoricalBEEF(beef, coins, spentOutpoints) {
|
|
313
|
+
var _a;
|
|
314
|
+
var _b;
|
|
201
315
|
const tx = sdk_1.Transaction.fromBEEF(beef);
|
|
202
|
-
const
|
|
316
|
+
const previousCoins = this.previousCoinIndexes(tx, coins);
|
|
317
|
+
const inputOutpoints = [];
|
|
318
|
+
for (const input of tx.inputs) {
|
|
319
|
+
const sourceTXID = (_b = input.sourceTXID) !== null && _b !== void 0 ? _b : (_a = input.sourceTransaction) === null || _a === void 0 ? void 0 : _a.id('hex');
|
|
320
|
+
if (sourceTXID == null || sourceTXID === '') {
|
|
321
|
+
throw new Error('Historical GASP transaction contains an unresolved input');
|
|
322
|
+
}
|
|
323
|
+
const outpoint = `${sourceTXID.toLowerCase()}.${input.sourceOutputIndex}`;
|
|
324
|
+
if (spentOutpoints.has(outpoint)) {
|
|
325
|
+
throw new Error(`Historical GASP graph contains a conflicting spend of ${outpoint}`);
|
|
326
|
+
}
|
|
327
|
+
inputOutpoints.push(outpoint);
|
|
328
|
+
}
|
|
329
|
+
const admittanceInstructions = (0, RemoteSecurity_js_1.validateAdmittanceInstructions)(await this.engine.managers[this.topic].identifyAdmissibleOutputs(beef, previousCoins, undefined, 'historical-tx', { dryRun: true }), tx, previousCoins);
|
|
330
|
+
for (const outpoint of inputOutpoints) {
|
|
331
|
+
spentOutpoints.add(outpoint);
|
|
332
|
+
coins.delete(outpoint);
|
|
333
|
+
}
|
|
203
334
|
for (const outputIndex of admittanceInstructions.outputsToAdmit) {
|
|
204
|
-
coins.add(`${tx.id('hex')}.${outputIndex}`);
|
|
335
|
+
coins.add(`${tx.id('hex').toLowerCase()}.${outputIndex}`);
|
|
205
336
|
}
|
|
206
337
|
}
|
|
207
338
|
/**
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
339
|
+
* Checks whether the given graph, in its current state, makes reference only to transactions that are proven in the blockchain, or already known by the recipient to be valid.
|
|
340
|
+
* Additionally, in a breadth-first manner (ensuring that all inputs for any given node are processed before nodes that spend them), it ensures that the root node remains valid according to the rules of the overlay's topic manager,
|
|
341
|
+
* while considering any coins which the Manager had previously indicated were either valid or invalid.
|
|
342
|
+
* @param graphID The TXID and output index (in 36-byte format) for the UTXO at the tip of this graph.
|
|
343
|
+
* @throws If the graph is not well-anchored, according to the rules of Bitcoin or the rules of the Overlay Topic Manager.
|
|
344
|
+
*/
|
|
214
345
|
async validateGraphAnchor(graphID) {
|
|
215
346
|
await OverlayGASPStorage.acquireAnchorValidationSlot();
|
|
216
347
|
try {
|
|
@@ -229,10 +360,11 @@ class OverlayGASPStorage {
|
|
|
229
360
|
const beefs = this.computeOrderedBEEFsForGraph(graphID);
|
|
230
361
|
// coins: a Set of all historical coins to retain (no need to remove them), used to emulate topical admittance of previous inputs over time.
|
|
231
362
|
const coins = new Set();
|
|
363
|
+
const spentOutpoints = new Set();
|
|
232
364
|
// Submit all historical BEEFs in order through the topic manager, tracking what would be retained until we submit the root node last.
|
|
233
365
|
// If, at the end, the root node is admitted, we have a valid overlay-specific graph.
|
|
234
366
|
for (const beef of beefs) {
|
|
235
|
-
await this.admitHistoricalBEEF(beef, coins);
|
|
367
|
+
await this.admitHistoricalBEEF(beef, coins, spentOutpoints);
|
|
236
368
|
}
|
|
237
369
|
// After sending through all the graph's BEEFs...
|
|
238
370
|
// If the root node is now a coin, we have acceptance by the overlay.
|
|
@@ -257,6 +389,8 @@ class OverlayGASPStorage {
|
|
|
257
389
|
delete this.temporaryGraphNodeRefs[nodeId];
|
|
258
390
|
}
|
|
259
391
|
}
|
|
392
|
+
this.graphNodeCounts.delete(graphID);
|
|
393
|
+
this.graphByteCounts.delete(graphID);
|
|
260
394
|
}
|
|
261
395
|
/**
|
|
262
396
|
* Finalizes a graph, solidifying the new UTXO and its ancestors so that it will appear in the list of known UTXOs.
|
|
@@ -274,6 +408,7 @@ class OverlayGASPStorage {
|
|
|
274
408
|
topics: [this.topic]
|
|
275
409
|
}, () => { }, 'historical-tx-no-spv');
|
|
276
410
|
}
|
|
411
|
+
await this.discardGraph(graphID);
|
|
277
412
|
}
|
|
278
413
|
finally {
|
|
279
414
|
OverlayGASPStorage.releaseFinalizationSlot();
|
|
@@ -286,22 +421,36 @@ class OverlayGASPStorage {
|
|
|
286
421
|
*/
|
|
287
422
|
computeOrderedBEEFsForGraph(graphID) {
|
|
288
423
|
const beefs = [];
|
|
289
|
-
const
|
|
290
|
-
const currentBEEF = this.getBEEFForNode(node);
|
|
291
|
-
if (!beefs.includes(currentBEEF)) {
|
|
292
|
-
beefs.unshift(currentBEEF);
|
|
293
|
-
}
|
|
294
|
-
for (const child of node.children) {
|
|
295
|
-
// Continue backwards to the earliest nodes, adding them onto the beginning
|
|
296
|
-
hydrator(child);
|
|
297
|
-
}
|
|
298
|
-
};
|
|
299
|
-
// Start the hydrator with the root node
|
|
300
|
-
const foundRoot = this.temporaryGraphNodeRefs[graphID];
|
|
424
|
+
const foundRoot = this.graphNode(graphID, graphID);
|
|
301
425
|
if (foundRoot == null) {
|
|
302
426
|
throw new Error('Unable to find root node in graph for finalization!');
|
|
303
427
|
}
|
|
304
|
-
|
|
428
|
+
const complete = new Set();
|
|
429
|
+
const visiting = new Set();
|
|
430
|
+
const stack = [
|
|
431
|
+
{ node: foundRoot, expanded: false }
|
|
432
|
+
];
|
|
433
|
+
while (stack.length > 0) {
|
|
434
|
+
const current = stack.pop();
|
|
435
|
+
const nodeID = `${current.node.txid}.${current.node.outputIndex}`;
|
|
436
|
+
if (current.expanded) {
|
|
437
|
+
visiting.delete(nodeID);
|
|
438
|
+
if (!complete.has(nodeID)) {
|
|
439
|
+
beefs.push(this.getBEEFForNode(current.node));
|
|
440
|
+
complete.add(nodeID);
|
|
441
|
+
}
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
if (complete.has(nodeID))
|
|
445
|
+
continue;
|
|
446
|
+
if (visiting.has(nodeID))
|
|
447
|
+
throw new Error('Cycle detected in temporary GASP graph');
|
|
448
|
+
visiting.add(nodeID);
|
|
449
|
+
stack.push({ node: current.node, expanded: true });
|
|
450
|
+
for (let index = current.node.children.length - 1; index >= 0; index--) {
|
|
451
|
+
stack.push({ node: current.node.children[index], expanded: false });
|
|
452
|
+
}
|
|
453
|
+
}
|
|
305
454
|
return beefs;
|
|
306
455
|
}
|
|
307
456
|
/**
|
|
@@ -320,7 +469,7 @@ class OverlayGASPStorage {
|
|
|
320
469
|
}
|
|
321
470
|
// For each input, look it up and recurse.
|
|
322
471
|
for (const [inputIndex, input] of tx.inputs.entries()) {
|
|
323
|
-
const foundNode = this.
|
|
472
|
+
const foundNode = this.graphNode(node.graphID, `${(_a = input.sourceTXID) !== null && _a !== void 0 ? _a : ''}.${input.sourceOutputIndex}`);
|
|
324
473
|
if (foundNode == null) {
|
|
325
474
|
throw new Error('Required input node for unproven parent not found in temporary graph store. Ensure, for every parent of any given already-proven node (kept for Overlay-specific historical reasons), that a proof is also provided on those inputs. While implicitly they are valid by virtue of their descendents being proven in the blockchain, BEEF serialization will still fail when winding forward the topical UTXO set histories during sync.');
|
|
326
475
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayGASPStorage.js","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OverlayGASPStorage.js","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Transaction, type AdmittanceInstructions } from '@bsv/sdk';
|
|
2
|
+
export declare const MAX_GASP_PAGE_SIZE = 10000;
|
|
3
|
+
export declare const MAX_BASM_TXIDS = 256;
|
|
4
|
+
export declare const MAX_REMOTE_JSON_BYTES: number;
|
|
5
|
+
export declare const MAX_GASP_NODE_JSON_BYTES: number;
|
|
6
|
+
export declare const MAX_RAW_TRANSACTION_BYTES: number;
|
|
7
|
+
export declare const REMOTE_BODY_TIMEOUT_MS = 30000;
|
|
8
|
+
export declare function validateAdmittanceInstructions(value: unknown, tx: Transaction, previousCoins: number[]): AdmittanceInstructions;
|
|
9
|
+
export declare function assertTopic(topic: unknown, label?: string): asserts topic is string;
|
|
10
|
+
export declare function assertRegistryName(value: unknown, label: string): asserts value is string;
|
|
11
|
+
export declare function assertHash(value: unknown, label: string): asserts value is string;
|
|
12
|
+
export declare function assertOutputIndex(value: unknown, label: string): asserts value is number;
|
|
13
|
+
export declare function assertNonnegativeInteger(value: unknown, label: string): asserts value is number;
|
|
14
|
+
export declare function assertOutpoint(value: unknown, label: string): asserts value is string;
|
|
15
|
+
export declare function assertHexBytes(value: unknown, label: string, maxBytes: number, allowEmpty?: boolean): asserts value is string;
|
|
16
|
+
export declare function assertTxidList(value: unknown, label: string, options?: {
|
|
17
|
+
allowEmpty?: boolean;
|
|
18
|
+
max?: number;
|
|
19
|
+
}): asserts value is string[];
|
|
20
|
+
export declare function normalizePeerEndpoint(endpoint: string): string;
|
|
21
|
+
export declare function securePeerFetch(endpoint: string, supplied?: typeof fetch): {
|
|
22
|
+
endpoint: string;
|
|
23
|
+
fetchImpl: typeof fetch;
|
|
24
|
+
};
|
|
25
|
+
export declare function readPeerJSON(response: Response, maxBytes?: number): Promise<unknown>;
|
|
26
|
+
export declare function assertGASPInitialResponse(value: unknown, maxOutputs: number): asserts value is {
|
|
27
|
+
UTXOList: Array<{
|
|
28
|
+
txid: string;
|
|
29
|
+
outputIndex: number;
|
|
30
|
+
score: number;
|
|
31
|
+
}>;
|
|
32
|
+
since: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function assertGASPNode(value: unknown, expected: {
|
|
35
|
+
graphID: string;
|
|
36
|
+
txid: string;
|
|
37
|
+
outputIndex: number;
|
|
38
|
+
}): asserts value is {
|
|
39
|
+
graphID: string;
|
|
40
|
+
rawTx: string;
|
|
41
|
+
outputIndex: number;
|
|
42
|
+
proof?: string;
|
|
43
|
+
txMetadata?: string;
|
|
44
|
+
outputMetadata?: string;
|
|
45
|
+
inputs?: Record<string, {
|
|
46
|
+
hash: string;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
export declare function assertRawTransactionMatches(txid: string, rawTx: string): void;
|
|
50
|
+
//# sourceMappingURL=RemoteSecurity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteSecurity.d.ts","sourceRoot":"","sources":["../../../src/RemoteSecurity.ts"],"names":[],"mappings":"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"}
|