@bsv/overlay 2.0.2 → 2.0.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.
- package/dist/cjs/mod.js +6 -1
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +13 -11
- package/dist/cjs/src/BASM.js +92 -0
- package/dist/cjs/src/BASM.js.map +1 -0
- package/dist/cjs/src/BASMRemote.js +43 -0
- package/dist/cjs/src/BASMRemote.js.map +1 -0
- package/dist/cjs/src/Engine.js +649 -47
- package/dist/cjs/src/Engine.js.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPRemote.js +2 -2
- package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPStorage.js +18 -25
- package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/cjs/src/storage/knex/KnexStorage.js +329 -12
- package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/cjs/src/storage/knex/all-migrations.js +3 -1
- package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/cjs/src/storage/knex/migrations/2025-05-28-001-enlarge.js +2 -24
- package/dist/cjs/src/storage/knex/migrations/2025-05-28-001-enlarge.js.map +1 -1
- package/dist/cjs/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js +114 -0
- package/dist/cjs/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +1 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/BASM.js +85 -0
- package/dist/esm/src/BASM.js.map +1 -0
- package/dist/esm/src/BASMRemote.js +42 -0
- package/dist/esm/src/BASMRemote.js.map +1 -0
- package/dist/esm/src/Engine.js +637 -46
- package/dist/esm/src/Engine.js.map +1 -1
- package/dist/esm/src/GASP/OverlayGASPRemote.js +2 -2
- package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/esm/src/GASP/OverlayGASPStorage.js +18 -25
- package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/esm/src/storage/knex/KnexStorage.js +323 -12
- package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/esm/src/storage/knex/all-migrations.js +3 -1
- package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/esm/src/storage/knex/migrations/2025-05-28-001-enlarge.js +2 -24
- package/dist/esm/src/storage/knex/migrations/2025-05-28-001-enlarge.js.map +1 -1
- package/dist/esm/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js +109 -0
- package/dist/esm/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +2 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/BASM.d.ts +110 -0
- package/dist/types/src/BASM.d.ts.map +1 -0
- package/dist/types/src/BASMRemote.d.ts +14 -0
- package/dist/types/src/BASMRemote.d.ts.map +1 -0
- package/dist/types/src/Engine.d.ts +78 -1
- package/dist/types/src/Engine.d.ts.map +1 -1
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts +1 -1
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
- package/dist/types/src/LookupService.d.ts.map +1 -1
- package/dist/types/src/storage/Storage.d.ts +118 -0
- package/dist/types/src/storage/Storage.d.ts.map +1 -1
- package/dist/types/src/storage/knex/KnexStorage.d.ts +38 -6
- 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/2025-05-28-001-enlarge.d.ts.map +1 -1
- package/dist/types/src/storage/knex/migrations/2026-05-29-001-brc136-basm.d.ts +4 -0
- package/dist/types/src/storage/knex/migrations/2026-05-29-001-brc136-basm.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/docs/BRC-136-BASM.md +285 -0
- package/docs/README.md +2 -0
- package/docs/Synchronization.md +10 -1
- package/mod.ts +25 -1
- package/package.json +25 -23
- package/src/BASM.ts +208 -0
- package/src/BASMRemote.ts +54 -0
- package/src/Engine.ts +762 -47
- package/src/GASP/OverlayGASPRemote.ts +2 -2
- package/src/GASP/OverlayGASPStorage.ts +17 -22
- package/src/LookupService.ts +2 -1
- package/src/__tests/BASM.test.ts +44 -0
- package/src/__tests/BASMChain.test.ts +290 -0
- package/src/__tests/Engine.test.ts +3 -4
- package/src/storage/Storage.ts +127 -0
- package/src/storage/knex/KnexStorage.ts +376 -14
- package/src/storage/knex/all-migrations.ts +3 -1
- package/src/storage/knex/migrations/2025-05-28-001-enlarge.ts +2 -22
- package/src/storage/knex/migrations/2026-05-29-001-brc136-basm.ts +123 -0
package/dist/cjs/mod.js
CHANGED
|
@@ -33,10 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.KnexStorageMigrations = exports.KnexStorage = exports.Engine = void 0;
|
|
36
|
+
exports.KnexStorageMigrations = exports.KnexStorage = exports.extractMerkleProofMetadata = exports.computeTac = exports.computeBasmRoot = exports.BASM_ZERO_HASH = exports.Engine = void 0;
|
|
37
37
|
// Fundamentals
|
|
38
38
|
var Engine_js_1 = require("./src/Engine.js");
|
|
39
39
|
Object.defineProperty(exports, "Engine", { enumerable: true, get: function () { return Engine_js_1.Engine; } });
|
|
40
|
+
var BASM_js_1 = require("./src/BASM.js");
|
|
41
|
+
Object.defineProperty(exports, "BASM_ZERO_HASH", { enumerable: true, get: function () { return BASM_js_1.BASM_ZERO_HASH; } });
|
|
42
|
+
Object.defineProperty(exports, "computeBasmRoot", { enumerable: true, get: function () { return BASM_js_1.computeBasmRoot; } });
|
|
43
|
+
Object.defineProperty(exports, "computeTac", { enumerable: true, get: function () { return BASM_js_1.computeTac; } });
|
|
44
|
+
Object.defineProperty(exports, "extractMerkleProofMetadata", { enumerable: true, get: function () { return BASM_js_1.extractMerkleProofMetadata; } });
|
|
40
45
|
// The Knex storage system
|
|
41
46
|
var KnexStorage_js_1 = require("./src/storage/knex/KnexStorage.js");
|
|
42
47
|
Object.defineProperty(exports, "KnexStorage", { enumerable: true, get: function () { return KnexStorage_js_1.KnexStorage; } });
|
package/dist/cjs/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,6CAAwC;AAA/B,mGAAA,MAAM,OAAA;
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,6CAAwC;AAA/B,mGAAA,MAAM,OAAA;AAWf,yCAKsB;AAJpB,yGAAA,cAAc,OAAA;AACd,0GAAA,eAAe,OAAA;AACf,qGAAA,UAAU,OAAA;AACV,qHAAA,0BAA0B,OAAA;AAqB5B,0BAA0B;AAC1B,oEAA+D;AAAtD,6GAAA,WAAW,OAAA;AACpB,8FAA6E"}
|
package/dist/cjs/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bsv/overlay",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "BSV Blockchain Overlay Services Engine",
|
|
6
6
|
"files": [
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|
|
26
|
-
"url": "git+https://github.com/bsv-blockchain/
|
|
26
|
+
"url": "git+https://github.com/bsv-blockchain/ts-stack.git",
|
|
27
|
+
"directory": "packages/overlays/overlay"
|
|
27
28
|
},
|
|
28
29
|
"keywords": [
|
|
29
30
|
"BSV",
|
|
@@ -35,21 +36,22 @@
|
|
|
35
36
|
"author": "BSV Association",
|
|
36
37
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
37
38
|
"bugs": {
|
|
38
|
-
"url": "https://github.com/
|
|
39
|
+
"url": "https://github.com/bsv-blockchain/ts-stack/issues"
|
|
39
40
|
},
|
|
40
|
-
"homepage": "https://github.com/
|
|
41
|
+
"homepage": "https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay#readme",
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"@types/jest": "^
|
|
43
|
-
"
|
|
44
|
-
"
|
|
43
|
+
"@types/jest": "^30.0.0",
|
|
44
|
+
"@types/node": "^25.9.3",
|
|
45
|
+
"jest": "^30.4.2",
|
|
46
|
+
"ts-jest": "^29.4.11",
|
|
45
47
|
"ts-standard": "^12.0.2",
|
|
46
48
|
"ts2md": "^0.2.0",
|
|
47
49
|
"tsconfig-to-dual-package": "^1.2.0",
|
|
48
|
-
"typescript": "^
|
|
50
|
+
"typescript": "^6.0.3"
|
|
49
51
|
},
|
|
50
52
|
"dependencies": {
|
|
51
|
-
"@bsv/gasp": "^1.2.
|
|
52
|
-
"@bsv/sdk": "^2.
|
|
53
|
-
"knex": "^3.
|
|
53
|
+
"@bsv/gasp": "^1.2.3",
|
|
54
|
+
"@bsv/sdk": "^2.1.4",
|
|
55
|
+
"knex": "^3.2.10"
|
|
54
56
|
}
|
|
55
57
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BASM_ZERO_HASH = void 0;
|
|
4
|
+
exports.computeBasmRoot = computeBasmRoot;
|
|
5
|
+
exports.computeTac = computeTac;
|
|
6
|
+
exports.extractMerkleProofMetadata = extractMerkleProofMetadata;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
exports.BASM_ZERO_HASH = '0000000000000000000000000000000000000000000000000000000000000000';
|
|
9
|
+
function sha256d(buffer) {
|
|
10
|
+
const first = (0, node_crypto_1.createHash)('sha256').update(buffer).digest();
|
|
11
|
+
return (0, node_crypto_1.createHash)('sha256').update(first).digest();
|
|
12
|
+
}
|
|
13
|
+
function assertHashHex(hash, label) {
|
|
14
|
+
if (!/^[0-9a-fA-F]{64}$/.test(hash)) {
|
|
15
|
+
throw new Error(`${label} must be 32 bytes of hex`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function displayHexToInternal(hash) {
|
|
19
|
+
assertHashHex(hash, 'hash');
|
|
20
|
+
return Buffer.from(hash, 'hex').reverse();
|
|
21
|
+
}
|
|
22
|
+
function internalToDisplayHex(hash) {
|
|
23
|
+
return Buffer.from(hash).reverse().toString('hex');
|
|
24
|
+
}
|
|
25
|
+
function normalizeAdmittedTxids(admitted) {
|
|
26
|
+
return admitted
|
|
27
|
+
.map((item, originalIndex) => {
|
|
28
|
+
if (typeof item === 'string') {
|
|
29
|
+
return { txid: item, blockIndex: originalIndex };
|
|
30
|
+
}
|
|
31
|
+
return item;
|
|
32
|
+
})
|
|
33
|
+
.sort((a, b) => a.blockIndex - b.blockIndex)
|
|
34
|
+
.map(item => item.txid.toLowerCase());
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Computes a BRC-136 BASM root from admitted topic txids.
|
|
38
|
+
*
|
|
39
|
+
* The API accepts normal display-order txid hex because that is what the BSV
|
|
40
|
+
* TypeScript stack exposes at its public boundaries. Hashing is performed on
|
|
41
|
+
* internal byte order as required by the BRC, and the returned root is display
|
|
42
|
+
* order for JSON/wire compatibility.
|
|
43
|
+
*/
|
|
44
|
+
function computeBasmRoot(admitted) {
|
|
45
|
+
const txids = normalizeAdmittedTxids(admitted);
|
|
46
|
+
if (txids.length === 0) {
|
|
47
|
+
return exports.BASM_ZERO_HASH;
|
|
48
|
+
}
|
|
49
|
+
let layer = txids.map(txid => displayHexToInternal(txid));
|
|
50
|
+
if (layer.length === 1) {
|
|
51
|
+
return internalToDisplayHex(layer[0]);
|
|
52
|
+
}
|
|
53
|
+
while (layer.length > 1) {
|
|
54
|
+
const next = [];
|
|
55
|
+
for (let i = 0; i < layer.length; i += 2) {
|
|
56
|
+
const left = layer[i];
|
|
57
|
+
const right = i + 1 < layer.length ? layer[i + 1] : left;
|
|
58
|
+
next.push(sha256d(Buffer.concat([left, right])));
|
|
59
|
+
}
|
|
60
|
+
layer = next;
|
|
61
|
+
}
|
|
62
|
+
return internalToDisplayHex(layer[0]);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Computes the BRC-136 cumulative Topic Anchor Chain hash:
|
|
66
|
+
* SHA256d(prevTac || blockHash || basmRoot), with all inputs reversed to
|
|
67
|
+
* internal byte order before hashing and the output returned as display hex.
|
|
68
|
+
*/
|
|
69
|
+
function computeTac(prevTac, blockHash, basmRoot) {
|
|
70
|
+
const input = Buffer.concat([
|
|
71
|
+
displayHexToInternal(prevTac.toLowerCase()),
|
|
72
|
+
displayHexToInternal(blockHash.toLowerCase()),
|
|
73
|
+
displayHexToInternal(basmRoot.toLowerCase())
|
|
74
|
+
]);
|
|
75
|
+
return internalToDisplayHex(sha256d(input));
|
|
76
|
+
}
|
|
77
|
+
function extractMerkleProofMetadata(txid, proof) {
|
|
78
|
+
var _a;
|
|
79
|
+
if (proof === undefined) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const leaf = (_a = proof.path[0]) === null || _a === void 0 ? void 0 : _a.find(candidate => candidate.hash === txid);
|
|
83
|
+
if (leaf === undefined) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
blockHeight: proof.blockHeight,
|
|
88
|
+
blockIndex: leaf.offset,
|
|
89
|
+
merkleRoot: proof.computeRoot(txid)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=BASM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BASM.js","sourceRoot":"","sources":["../../../src/BASM.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BASMRemote = void 0;
|
|
4
|
+
class BASMRemote {
|
|
5
|
+
constructor(endpoint, topic, fetchImpl = fetch.bind(globalThis)) {
|
|
6
|
+
this.endpoint = endpoint;
|
|
7
|
+
this.topic = topic;
|
|
8
|
+
this.fetchImpl = fetchImpl;
|
|
9
|
+
}
|
|
10
|
+
async requestTopicAnchorTip() {
|
|
11
|
+
return await this.post('/requestTopicAnchorTip', {});
|
|
12
|
+
}
|
|
13
|
+
async requestTopicAnchorRange(fromHeight, toHeight) {
|
|
14
|
+
return await this.post('/requestTopicAnchorRange', { fromHeight, toHeight });
|
|
15
|
+
}
|
|
16
|
+
async requestAdmittedList(blockHeight, blockHash) {
|
|
17
|
+
return await this.post('/requestAdmittedList', { blockHeight, blockHash });
|
|
18
|
+
}
|
|
19
|
+
async requestCompoundMerklePath(blockHeight, txids) {
|
|
20
|
+
return await this.post('/requestCompoundMerklePath', { blockHeight, txids });
|
|
21
|
+
}
|
|
22
|
+
async requestRawTransactions(txids) {
|
|
23
|
+
return await this.post('/requestRawTransactions', { txids });
|
|
24
|
+
}
|
|
25
|
+
async post(path, body) {
|
|
26
|
+
const response = await this.fetchImpl(new URL(path, this.endpoint).toString(), {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: {
|
|
29
|
+
Accept: 'application/json',
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
'x-bsv-topic': this.topic
|
|
32
|
+
},
|
|
33
|
+
body: JSON.stringify(body)
|
|
34
|
+
});
|
|
35
|
+
const text = await response.text();
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
throw new Error(`BASM peer ${this.endpoint} returned ${response.status}: ${text}`);
|
|
38
|
+
}
|
|
39
|
+
return (text.length === 0 ? {} : JSON.parse(text));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.BASMRemote = BASMRemote;
|
|
43
|
+
//# sourceMappingURL=BASMRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BASMRemote.js","sourceRoot":"","sources":["../../../src/BASMRemote.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IACrB,YACmB,QAAgB,EAChB,KAAa,EACb,YAA0B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAFhD,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QACb,cAAS,GAAT,SAAS,CAAuC;IAC/D,CAAC;IAEL,KAAK,CAAC,qBAAqB;QACzB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAiB,wBAAwB,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAAkB,EAAE,QAAgB;QAChE,OAAO,MAAM,IAAI,CAAC,IAAI,CAA2B,0BAA0B,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,SAAkB;QAC/D,OAAO,MAAM,IAAI,CAAC,IAAI,CAAuB,sBAAsB,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;IAClG,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,WAAmB,EAAE,KAAe;QAClE,OAAO,MAAM,IAAI,CAAC,IAAI,CAA6B,4BAA4B,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1G,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAe;QAC1C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAyB,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACtF,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAa;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,KAAK;aAC1B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,aAAa,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;QACpF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAM,CAAA;IACzD,CAAC;CACF;AA7CD,gCA6CC"}
|