@totemsdk/core 1.2.5 → 1.2.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.
- package/dist/MiniNumber.js +19 -21
- package/dist/Streamable.js +31 -54
- package/dist/adapters/index.js +9 -18
- package/dist/adapters/types.js +11 -19
- package/dist/binio.js +7 -20
- package/dist/bip39.js +14 -24
- package/dist/canonical.d.ts +3 -0
- package/dist/canonical.js +22 -0
- package/dist/cjs/MiniNumber.d.ts +47 -0
- package/dist/cjs/MiniNumber.js +302 -0
- package/dist/cjs/Streamable.d.ts +268 -0
- package/dist/cjs/Streamable.js +439 -0
- package/dist/cjs/adapters/index.d.ts +190 -0
- package/dist/cjs/adapters/index.js +118 -0
- package/dist/cjs/adapters/types.d.ts +150 -0
- package/dist/cjs/adapters/types.js +81 -0
- package/dist/cjs/binio.d.ts +9 -0
- package/dist/cjs/binio.js +25 -0
- package/dist/cjs/bip39.d.ts +91 -0
- package/dist/cjs/bip39.js +434 -0
- package/dist/cjs/canonical.d.ts +3 -0
- package/dist/cjs/canonical.js +27 -0
- package/dist/cjs/derive.d.ts +2 -0
- package/dist/cjs/derive.js +13 -0
- package/dist/cjs/index.d.ts +49 -0
- package/dist/cjs/index.js +231 -0
- package/dist/cjs/javaStreamables.d.ts +254 -0
- package/dist/cjs/javaStreamables.js +391 -0
- package/dist/cjs/lease/LeaseMonitor.d.ts +44 -0
- package/dist/cjs/lease/LeaseMonitor.js +115 -0
- package/dist/cjs/lease/LeaseStore.d.ts +58 -0
- package/dist/cjs/lease/LeaseStore.js +151 -0
- package/dist/cjs/lease/WatermarkStore.d.ts +61 -0
- package/dist/cjs/lease/WatermarkStore.js +209 -0
- package/dist/cjs/lease/index.d.ts +14 -0
- package/dist/cjs/lease/index.js +22 -0
- package/dist/cjs/lease-client.d.ts +31 -0
- package/dist/cjs/lease-client.js +44 -0
- package/dist/cjs/legacy.d.ts +23 -0
- package/dist/cjs/legacy.js +163 -0
- package/dist/cjs/minima32.d.ts +18 -0
- package/dist/cjs/minima32.js +121 -0
- package/dist/cjs/minimaWireSerializer.d.ts +60 -0
- package/dist/cjs/minimaWireSerializer.js +77 -0
- package/dist/cjs/mmr.d.ts +157 -0
- package/dist/cjs/mmr.js +352 -0
- package/dist/cjs/mx.d.ts +1 -0
- package/dist/cjs/mx.js +10 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/params.d.ts +29 -0
- package/dist/cjs/params.js +20 -0
- package/dist/cjs/script.d.ts +7 -0
- package/dist/cjs/script.js +27 -0
- package/dist/cjs/scripts/contract-helpers.d.ts +252 -0
- package/dist/cjs/scripts/contract-helpers.js +407 -0
- package/dist/cjs/scripts/dapp-types.d.ts +119 -0
- package/dist/cjs/scripts/dapp-types.js +77 -0
- package/dist/cjs/scripts/index.d.ts +4 -0
- package/dist/cjs/scripts/index.js +38 -0
- package/dist/cjs/scripts/types.d.ts +81 -0
- package/dist/cjs/scripts/types.js +159 -0
- package/dist/cjs/scripts/witness-serializer.d.ts +29 -0
- package/dist/cjs/scripts/witness-serializer.js +306 -0
- package/dist/cjs/transaction.d.ts +106 -0
- package/dist/cjs/transaction.js +293 -0
- package/dist/cjs/treekey.d.ts +399 -0
- package/dist/cjs/treekey.js +827 -0
- package/dist/cjs/tx/TransactionLifecycle.d.ts +55 -0
- package/dist/cjs/tx/TransactionLifecycle.js +205 -0
- package/dist/cjs/tx/TransactionReceiptStore.d.ts +36 -0
- package/dist/cjs/tx/TransactionReceiptStore.js +93 -0
- package/dist/cjs/tx/TransactionService.d.ts +50 -0
- package/dist/cjs/tx/TransactionService.js +186 -0
- package/dist/cjs/tx/index.d.ts +13 -0
- package/dist/cjs/tx/index.js +20 -0
- package/dist/cjs/tx/types.d.ts +115 -0
- package/dist/cjs/tx/types.js +6 -0
- package/dist/cjs/util.d.ts +1 -0
- package/dist/cjs/util.js +5 -0
- package/dist/cjs/utils.d.ts +8 -0
- package/dist/cjs/utils.js +42 -0
- package/dist/cjs/verify.d.ts +18 -0
- package/dist/cjs/verify.js +174 -0
- package/dist/cjs/version.d.ts +12 -0
- package/dist/cjs/version.js +15 -0
- package/dist/cjs/wasm-sync.d.ts +71 -0
- package/dist/cjs/wasm-sync.js +97 -0
- package/dist/cjs/wots.d.ts +232 -0
- package/dist/cjs/wots.js +589 -0
- package/dist/derive.js +7 -11
- package/dist/index.d.ts +8 -2
- package/dist/index.js +50 -143
- package/dist/javaStreamables.js +34 -55
- package/dist/lease/LeaseMonitor.js +10 -10
- package/dist/lease/LeaseStore.js +8 -9
- package/dist/lease/WatermarkStore.js +8 -9
- package/dist/lease/index.js +4 -13
- package/dist/lease-client.js +3 -8
- package/dist/legacy.js +13 -140
- package/dist/minima32.js +13 -22
- package/dist/minimaWireSerializer.js +14 -20
- package/dist/mmr.js +27 -41
- package/dist/mx.js +1 -10
- package/dist/params.js +5 -9
- package/dist/script.js +7 -12
- package/dist/scripts/contract-helpers.js +25 -36
- package/dist/scripts/dapp-types.js +6 -11
- package/dist/scripts/index.js +4 -38
- package/dist/scripts/types.js +12 -26
- package/dist/scripts/witness-serializer.js +30 -48
- package/dist/transaction.js +46 -55
- package/dist/treekey.js +96 -89
- package/dist/tx/TransactionLifecycle.js +15 -11
- package/dist/tx/TransactionReceiptStore.js +9 -9
- package/dist/tx/TransactionService.js +14 -14
- package/dist/tx/index.js +3 -11
- package/dist/tx/types.js +1 -2
- package/dist/util.js +1 -5
- package/dist/utils.js +5 -12
- package/dist/verify.js +25 -36
- package/dist/version.js +2 -5
- package/dist/wasm-sync.d.ts +2 -2
- package/dist/wasm-sync.js +58 -61
- package/dist/wots.js +64 -94
- package/package.json +84 -45
- package/dist/wasm-bridge.d.ts +0 -54
- package/dist/wasm-bridge.js +0 -303
package/dist/lease/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @module @totemsdk/core/lease
|
|
4
3
|
* WOTS lease lifecycle management
|
|
@@ -8,15 +7,7 @@
|
|
|
8
7
|
* - WatermarkStore: WOTS index tracking with server sync
|
|
9
8
|
* - LeaseMonitor: Expiry monitoring and renewal
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var WatermarkStore_js_1 = require("./WatermarkStore.js");
|
|
16
|
-
Object.defineProperty(exports, "WatermarkStore", { enumerable: true, get: function () { return WatermarkStore_js_1.WatermarkStore; } });
|
|
17
|
-
var LeaseMonitor_js_1 = require("./LeaseMonitor.js");
|
|
18
|
-
Object.defineProperty(exports, "LeaseMonitor", { enumerable: true, get: function () { return LeaseMonitor_js_1.LeaseMonitor; } });
|
|
19
|
-
var lease_client_js_1 = require("../lease-client.js");
|
|
20
|
-
Object.defineProperty(exports, "prepareLease", { enumerable: true, get: function () { return lease_client_js_1.prepareLease; } });
|
|
21
|
-
Object.defineProperty(exports, "finalizeLease", { enumerable: true, get: function () { return lease_client_js_1.finalizeLease; } });
|
|
22
|
-
Object.defineProperty(exports, "flatIndexFromLanes", { enumerable: true, get: function () { return lease_client_js_1.flatIndexFromLanes; } });
|
|
10
|
+
export { LeaseStore, } from './LeaseStore.js';
|
|
11
|
+
export { WatermarkStore, } from './WatermarkStore.js';
|
|
12
|
+
export { LeaseMonitor, } from './LeaseMonitor.js';
|
|
13
|
+
export { prepareLease, finalizeLease, flatIndexFromLanes } from '../lease-client.js';
|
package/dist/lease-client.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prepareLease = prepareLease;
|
|
4
|
-
exports.finalizeLease = finalizeLease;
|
|
5
|
-
exports.flatIndexFromLanes = flatIndexFromLanes;
|
|
6
|
-
async function prepareLease(apiUrl, apiKey, args) {
|
|
1
|
+
export async function prepareLease(apiUrl, apiKey, args) {
|
|
7
2
|
const res = await fetch(`${apiUrl}/v1/wots-hardened/prepare`, {
|
|
8
3
|
method: 'POST',
|
|
9
4
|
headers: { 'content-type': 'application/json', 'x-api-key': apiKey },
|
|
@@ -27,7 +22,7 @@ async function prepareLease(apiUrl, apiKey, args) {
|
|
|
27
22
|
digestTx: raw.digestTx ?? null
|
|
28
23
|
};
|
|
29
24
|
}
|
|
30
|
-
async function finalizeLease(apiUrl, apiKey, leaseToken, signedHex) {
|
|
25
|
+
export async function finalizeLease(apiUrl, apiKey, leaseToken, signedHex) {
|
|
31
26
|
const res = await fetch(`${apiUrl}/v1/wots-hardened/finalize`, {
|
|
32
27
|
method: 'POST',
|
|
33
28
|
headers: { 'content-type': 'application/json', 'x-api-key': apiKey },
|
|
@@ -37,7 +32,7 @@ async function finalizeLease(apiUrl, apiKey, leaseToken, signedHex) {
|
|
|
37
32
|
return { status: res.status, body: text };
|
|
38
33
|
}
|
|
39
34
|
/** lane tuple -> flat WOTS index (64^3 space) */
|
|
40
|
-
function flatIndexFromLanes(addressIndex, l1, l2) {
|
|
35
|
+
export function flatIndexFromLanes(addressIndex, l1, l2) {
|
|
41
36
|
if (addressIndex | l1 | l2 & ~63)
|
|
42
37
|
throw new Error('lane out of range');
|
|
43
38
|
return (addressIndex * 64 * 64) + (l1 * 64) + l2;
|
package/dist/legacy.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Legacy JS implementations — backward compatibility.
|
|
4
3
|
*
|
|
@@ -9,155 +8,29 @@
|
|
|
9
8
|
* Import legacy implementations directly:
|
|
10
9
|
* import { wotsSign } from '@totemsdk/core/legacy';
|
|
11
10
|
*/
|
|
12
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
24
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
25
|
-
};
|
|
26
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.legacyGenerateWordList = exports.legacyPhraseToSeed = exports.convertWordListToSeed = exports.convertStringToSeed = exports.legacyValidatePhrase = exports.legacyCleanSeedPhrase = exports.WORD_LIST = exports.serializeRealMMRProof = exports.serializeMMRProof = exports.deserializeMMRProof = exports.parseMMRProofFromHex = exports.legacyVerifyMMRProof = exports.calculateProofRoot = exports.createMMRDataParentNode = exports.createMMRDataLeafNode = exports.mmrRootFromSingleLeaf = exports.mmrLeafExact = exports.MMRTree = exports.createPerAddressTreeKeyAsync = exports.createPerAddressTreeKey = exports.legacyDeriveUnifiedAddressPublicKey = exports.legacyCreateUnifiedRootTreeKey = exports.createUnifiedChildTreeKeyAsync = exports.legacyCreateUnifiedChildTreeKey = exports.DEFAULT_LEVELS = exports.DEFAULT_KEYS_PER_LEVEL = exports.getRootPublicKey = exports.deserializeTreeSignature = exports.serializeTreeSignature = exports.legacyVerifyTreeSignature = exports.TreeKeyNode = exports.TreeKey = exports.legacyWotsPublicKeyFromSeed = exports.legacyWotsVerifyDigest = exports.legacyWotsVerify = exports.legacyWotsPkFromSig = exports.wotsSignLegacy = exports.legacyWotsSign = exports.legacyWotsKeypairFromSeed = exports.legacyDerivePKdigest = exports.baseWWithChecksum = exports.toWinternitzDigits = exports.prfChainSeed = exports.h = exports.assert32 = exports.u32be = exports.u16be = exports.fromHex = exports.hex = exports.F = void 0;
|
|
28
|
-
exports.legacyPrecomputeTransactionCoinIDTx = exports.serializeMMREntry = exports.serializeMMRData = exports.serializeMMREntryNumber = exports.createMMREntryNumber = exports.deriveUnifiedChildSeed = exports.legacyDeriveRootPrivSeed = exports.legacyDerivePerAddressSeed = exports.indexToMiniDataBytes = exports.javaHashAllObjects = exports.serializeMiniNumberONE = exports.serializeMiniNumberZERO = exports.hashObject = exports.deriveChildTreeSeedJava = exports.legacyDeriveChainSeedJava = exports.hashAllObjects = exports.serializeMiniData = exports.serializeMiniNumber = exports.writeHashToStream = exports.legacyWriteMiniString = exports.bigIntToByteArray = exports.legacyBytesToHex = exports.legacyHexToBytes = exports.concat = exports.writeMMREntryNumber = exports.writeMiniByte = exports.legacyWriteMiniData = exports.legacyWriteMiniNumber = exports.convertMinimaAddress = exports.makeMinimaAddress = exports.decodeMx = exports.encodeMx = exports.mxToHex = exports.hexToMx = exports.legacyParseMxAddress = exports.legacyMakeMxAddress = exports.decodeMxRadix32Frame = exports.encodeMxRadix32Frame = exports.legacyWotsAddressFromKeypair = exports.scriptFromWotsPk = exports.addressToRoot = exports.scriptToAddress = exports.buildMinimaCoin = exports.createDefaultTransaction = exports.legacyPrecomputeTransactionCoinID = exports.legacyComputeTransactionDigest = exports.legacySerializeTransaction = exports.serializeCoin = exports.parseDecimalToMiniNumber = exports.generateSeedPhrase = void 0;
|
|
29
|
-
exports.legacyValidateChallenge = exports.legacyCreateChallenge = exports.normalizeHex = exports.deriveAddressFromPublicKey = exports.verifyTreeSignatureDetailed = exports.verifySignatureDetailed = exports.verifySignature = exports.legacyConcatBytes = void 0;
|
|
30
11
|
// WOTS — unique exports
|
|
31
|
-
|
|
32
|
-
Object.defineProperty(exports, "F", { enumerable: true, get: function () { return wots_js_1.F; } });
|
|
33
|
-
Object.defineProperty(exports, "hex", { enumerable: true, get: function () { return wots_js_1.hex; } });
|
|
34
|
-
Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return wots_js_1.fromHex; } });
|
|
35
|
-
Object.defineProperty(exports, "u16be", { enumerable: true, get: function () { return wots_js_1.u16be; } });
|
|
36
|
-
Object.defineProperty(exports, "u32be", { enumerable: true, get: function () { return wots_js_1.u32be; } });
|
|
37
|
-
Object.defineProperty(exports, "assert32", { enumerable: true, get: function () { return wots_js_1.assert32; } });
|
|
38
|
-
Object.defineProperty(exports, "h", { enumerable: true, get: function () { return wots_js_1.h; } });
|
|
39
|
-
Object.defineProperty(exports, "prfChainSeed", { enumerable: true, get: function () { return wots_js_1.prfChainSeed; } });
|
|
40
|
-
Object.defineProperty(exports, "toWinternitzDigits", { enumerable: true, get: function () { return wots_js_1.toWinternitzDigits; } });
|
|
41
|
-
Object.defineProperty(exports, "baseWWithChecksum", { enumerable: true, get: function () { return wots_js_1.baseWWithChecksum; } });
|
|
42
|
-
Object.defineProperty(exports, "legacyDerivePKdigest", { enumerable: true, get: function () { return wots_js_1.derivePKdigest; } });
|
|
43
|
-
Object.defineProperty(exports, "legacyWotsKeypairFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsKeypairFromSeed; } });
|
|
44
|
-
Object.defineProperty(exports, "legacyWotsSign", { enumerable: true, get: function () { return wots_js_1.wotsSign; } });
|
|
45
|
-
Object.defineProperty(exports, "wotsSignLegacy", { enumerable: true, get: function () { return wots_js_1.wotsSignLegacy; } });
|
|
46
|
-
Object.defineProperty(exports, "legacyWotsPkFromSig", { enumerable: true, get: function () { return wots_js_1.wotsPkFromSig; } });
|
|
47
|
-
Object.defineProperty(exports, "legacyWotsVerify", { enumerable: true, get: function () { return wots_js_1.wotsVerify; } });
|
|
48
|
-
Object.defineProperty(exports, "legacyWotsVerifyDigest", { enumerable: true, get: function () { return wots_js_1.wotsVerifyDigest; } });
|
|
49
|
-
Object.defineProperty(exports, "legacyWotsPublicKeyFromSeed", { enumerable: true, get: function () { return wots_js_1.wotsPublicKeyFromSeed; } });
|
|
12
|
+
export { F, hex, fromHex, u16be, u32be, assert32, h, prfChainSeed, toWinternitzDigits, baseWWithChecksum, derivePKdigest as legacyDerivePKdigest, wotsKeypairFromSeed as legacyWotsKeypairFromSeed, wotsSign as legacyWotsSign, wotsSignLegacy, wotsPkFromSig as legacyWotsPkFromSig, wotsVerify as legacyWotsVerify, wotsVerifyDigest as legacyWotsVerifyDigest, wotsPublicKeyFromSeed as legacyWotsPublicKeyFromSeed, } from './wots.js';
|
|
50
13
|
// TreeKey — unique exports
|
|
51
|
-
|
|
52
|
-
Object.defineProperty(exports, "TreeKey", { enumerable: true, get: function () { return treekey_js_1.TreeKey; } });
|
|
53
|
-
Object.defineProperty(exports, "TreeKeyNode", { enumerable: true, get: function () { return treekey_js_1.TreeKeyNode; } });
|
|
54
|
-
Object.defineProperty(exports, "legacyVerifyTreeSignature", { enumerable: true, get: function () { return treekey_js_1.verifyTreeSignature; } });
|
|
55
|
-
Object.defineProperty(exports, "serializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.serializeTreeSignature; } });
|
|
56
|
-
Object.defineProperty(exports, "deserializeTreeSignature", { enumerable: true, get: function () { return treekey_js_1.deserializeTreeSignature; } });
|
|
57
|
-
Object.defineProperty(exports, "getRootPublicKey", { enumerable: true, get: function () { return treekey_js_1.getRootPublicKey; } });
|
|
58
|
-
Object.defineProperty(exports, "DEFAULT_KEYS_PER_LEVEL", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_KEYS_PER_LEVEL; } });
|
|
59
|
-
Object.defineProperty(exports, "DEFAULT_LEVELS", { enumerable: true, get: function () { return treekey_js_1.DEFAULT_LEVELS; } });
|
|
60
|
-
Object.defineProperty(exports, "legacyCreateUnifiedChildTreeKey", { enumerable: true, get: function () { return treekey_js_1.createUnifiedChildTreeKey; } });
|
|
61
|
-
Object.defineProperty(exports, "createUnifiedChildTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createUnifiedChildTreeKeyAsync; } });
|
|
62
|
-
Object.defineProperty(exports, "legacyCreateUnifiedRootTreeKey", { enumerable: true, get: function () { return treekey_js_1.createUnifiedRootTreeKey; } });
|
|
63
|
-
Object.defineProperty(exports, "legacyDeriveUnifiedAddressPublicKey", { enumerable: true, get: function () { return treekey_js_1.deriveUnifiedAddressPublicKey; } });
|
|
64
|
-
Object.defineProperty(exports, "createPerAddressTreeKey", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKey; } });
|
|
65
|
-
Object.defineProperty(exports, "createPerAddressTreeKeyAsync", { enumerable: true, get: function () { return treekey_js_1.createPerAddressTreeKeyAsync; } });
|
|
14
|
+
export { TreeKey, TreeKeyNode, verifyTreeSignature as legacyVerifyTreeSignature, serializeTreeSignature, deserializeTreeSignature, getRootPublicKey, DEFAULT_KEYS_PER_LEVEL, DEFAULT_LEVELS, createUnifiedChildTreeKey as legacyCreateUnifiedChildTreeKey, createUnifiedChildTreeKeyAsync, createUnifiedRootTreeKey as legacyCreateUnifiedRootTreeKey, deriveUnifiedAddressPublicKey as legacyDeriveUnifiedAddressPublicKey, createPerAddressTreeKey, createPerAddressTreeKeyAsync, } from './treekey.js';
|
|
66
15
|
// MMR — unique exports
|
|
67
|
-
|
|
68
|
-
Object.defineProperty(exports, "MMRTree", { enumerable: true, get: function () { return mmr_js_1.MMRTree; } });
|
|
69
|
-
Object.defineProperty(exports, "mmrLeafExact", { enumerable: true, get: function () { return mmr_js_1.mmrLeafExact; } });
|
|
70
|
-
Object.defineProperty(exports, "mmrRootFromSingleLeaf", { enumerable: true, get: function () { return mmr_js_1.mmrRootFromSingleLeaf; } });
|
|
71
|
-
Object.defineProperty(exports, "createMMRDataLeafNode", { enumerable: true, get: function () { return mmr_js_1.createMMRDataLeafNode; } });
|
|
72
|
-
Object.defineProperty(exports, "createMMRDataParentNode", { enumerable: true, get: function () { return mmr_js_1.createMMRDataParentNode; } });
|
|
73
|
-
Object.defineProperty(exports, "calculateProofRoot", { enumerable: true, get: function () { return mmr_js_1.calculateProofRoot; } });
|
|
74
|
-
Object.defineProperty(exports, "legacyVerifyMMRProof", { enumerable: true, get: function () { return mmr_js_1.verifyMMRProof; } });
|
|
75
|
-
Object.defineProperty(exports, "parseMMRProofFromHex", { enumerable: true, get: function () { return mmr_js_1.parseMMRProofFromHex; } });
|
|
76
|
-
Object.defineProperty(exports, "deserializeMMRProof", { enumerable: true, get: function () { return mmr_js_1.deserializeMMRProof; } });
|
|
77
|
-
Object.defineProperty(exports, "serializeMMRProof", { enumerable: true, get: function () { return mmr_js_1.serializeMMRProof; } });
|
|
78
|
-
Object.defineProperty(exports, "serializeRealMMRProof", { enumerable: true, get: function () { return mmr_js_1.serializeRealMMRProof; } });
|
|
16
|
+
export { MMRTree, mmrLeafExact, mmrRootFromSingleLeaf, createMMRDataLeafNode, createMMRDataParentNode, calculateProofRoot, verifyMMRProof as legacyVerifyMMRProof, parseMMRProofFromHex, deserializeMMRProof, serializeMMRProof, serializeRealMMRProof, } from './mmr.js';
|
|
79
17
|
// BIP39
|
|
80
|
-
|
|
81
|
-
Object.defineProperty(exports, "WORD_LIST", { enumerable: true, get: function () { return bip39_js_1.WORD_LIST; } });
|
|
82
|
-
Object.defineProperty(exports, "legacyCleanSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.cleanSeedPhrase; } });
|
|
83
|
-
Object.defineProperty(exports, "legacyValidatePhrase", { enumerable: true, get: function () { return bip39_js_1.validatePhrase; } });
|
|
84
|
-
Object.defineProperty(exports, "convertStringToSeed", { enumerable: true, get: function () { return bip39_js_1.convertStringToSeed; } });
|
|
85
|
-
Object.defineProperty(exports, "convertWordListToSeed", { enumerable: true, get: function () { return bip39_js_1.convertWordListToSeed; } });
|
|
86
|
-
Object.defineProperty(exports, "legacyPhraseToSeed", { enumerable: true, get: function () { return bip39_js_1.phraseToSeed; } });
|
|
87
|
-
Object.defineProperty(exports, "legacyGenerateWordList", { enumerable: true, get: function () { return bip39_js_1.generateWordList; } });
|
|
88
|
-
Object.defineProperty(exports, "generateSeedPhrase", { enumerable: true, get: function () { return bip39_js_1.generateSeedPhrase; } });
|
|
18
|
+
export { WORD_LIST, cleanSeedPhrase as legacyCleanSeedPhrase, validatePhrase as legacyValidatePhrase, convertStringToSeed, convertWordListToSeed, phraseToSeed as legacyPhraseToSeed, generateWordList as legacyGenerateWordList, generateSeedPhrase, } from './bip39.js';
|
|
89
19
|
// Transaction
|
|
90
|
-
|
|
91
|
-
Object.defineProperty(exports, "parseDecimalToMiniNumber", { enumerable: true, get: function () { return transaction_js_1.parseDecimalToMiniNumber; } });
|
|
92
|
-
Object.defineProperty(exports, "serializeCoin", { enumerable: true, get: function () { return transaction_js_1.serializeCoin; } });
|
|
93
|
-
Object.defineProperty(exports, "legacySerializeTransaction", { enumerable: true, get: function () { return transaction_js_1.serializeTransaction; } });
|
|
94
|
-
Object.defineProperty(exports, "legacyComputeTransactionDigest", { enumerable: true, get: function () { return transaction_js_1.computeTransactionDigest; } });
|
|
95
|
-
Object.defineProperty(exports, "legacyPrecomputeTransactionCoinID", { enumerable: true, get: function () { return transaction_js_1.precomputeTransactionCoinID; } });
|
|
96
|
-
Object.defineProperty(exports, "createDefaultTransaction", { enumerable: true, get: function () { return transaction_js_1.createDefaultTransaction; } });
|
|
97
|
-
Object.defineProperty(exports, "buildMinimaCoin", { enumerable: true, get: function () { return transaction_js_1.buildMinimaCoin; } });
|
|
20
|
+
export { parseDecimalToMiniNumber, serializeCoin, serializeTransaction as legacySerializeTransaction, computeTransactionDigest as legacyComputeTransactionDigest, precomputeTransactionCoinID as legacyPrecomputeTransactionCoinID, createDefaultTransaction, buildMinimaCoin, } from './transaction.js';
|
|
98
21
|
// Derive
|
|
99
|
-
|
|
100
|
-
Object.defineProperty(exports, "scriptToAddress", { enumerable: true, get: function () { return derive_js_1.scriptToAddress; } });
|
|
101
|
-
Object.defineProperty(exports, "addressToRoot", { enumerable: true, get: function () { return derive_js_1.addressToRoot; } });
|
|
22
|
+
export { scriptToAddress, addressToRoot } from './derive.js';
|
|
102
23
|
// Script
|
|
103
|
-
|
|
104
|
-
Object.defineProperty(exports, "scriptFromWotsPk", { enumerable: true, get: function () { return script_js_1.scriptFromWotsPk; } });
|
|
105
|
-
Object.defineProperty(exports, "legacyWotsAddressFromKeypair", { enumerable: true, get: function () { return script_js_1.wotsAddressFromKeypair; } });
|
|
24
|
+
export { scriptFromWotsPk, wotsAddressFromKeypair as legacyWotsAddressFromKeypair } from './script.js';
|
|
106
25
|
// Minima32
|
|
107
|
-
|
|
108
|
-
Object.defineProperty(exports, "encodeMxRadix32Frame", { enumerable: true, get: function () { return minima32_js_1.encodeMxRadix32Frame; } });
|
|
109
|
-
Object.defineProperty(exports, "decodeMxRadix32Frame", { enumerable: true, get: function () { return minima32_js_1.decodeMxRadix32Frame; } });
|
|
110
|
-
Object.defineProperty(exports, "legacyMakeMxAddress", { enumerable: true, get: function () { return minima32_js_1.makeMxAddress; } });
|
|
111
|
-
Object.defineProperty(exports, "legacyParseMxAddress", { enumerable: true, get: function () { return minima32_js_1.parseMxAddress; } });
|
|
112
|
-
Object.defineProperty(exports, "hexToMx", { enumerable: true, get: function () { return minima32_js_1.hexToMx; } });
|
|
113
|
-
Object.defineProperty(exports, "mxToHex", { enumerable: true, get: function () { return minima32_js_1.mxToHex; } });
|
|
114
|
-
Object.defineProperty(exports, "encodeMx", { enumerable: true, get: function () { return minima32_js_1.encodeMx; } });
|
|
115
|
-
Object.defineProperty(exports, "decodeMx", { enumerable: true, get: function () { return minima32_js_1.decodeMx; } });
|
|
116
|
-
Object.defineProperty(exports, "makeMinimaAddress", { enumerable: true, get: function () { return minima32_js_1.makeMinimaAddress; } });
|
|
117
|
-
Object.defineProperty(exports, "convertMinimaAddress", { enumerable: true, get: function () { return minima32_js_1.convertMinimaAddress; } });
|
|
26
|
+
export { encodeMxRadix32Frame, decodeMxRadix32Frame, makeMxAddress as legacyMakeMxAddress, parseMxAddress as legacyParseMxAddress, hexToMx, mxToHex, encodeMx, decodeMx, makeMinimaAddress, convertMinimaAddress, } from './minima32.js';
|
|
118
27
|
// Streamable
|
|
119
|
-
|
|
120
|
-
Object.defineProperty(exports, "legacyWriteMiniNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMiniNumber; } });
|
|
121
|
-
Object.defineProperty(exports, "legacyWriteMiniData", { enumerable: true, get: function () { return Streamable_js_1.writeMiniData; } });
|
|
122
|
-
Object.defineProperty(exports, "writeMiniByte", { enumerable: true, get: function () { return Streamable_js_1.writeMiniByte; } });
|
|
123
|
-
Object.defineProperty(exports, "writeMMREntryNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMMREntryNumber; } });
|
|
124
|
-
Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return Streamable_js_1.concat; } });
|
|
125
|
-
Object.defineProperty(exports, "legacyHexToBytes", { enumerable: true, get: function () { return Streamable_js_1.hexToBytes; } });
|
|
126
|
-
Object.defineProperty(exports, "legacyBytesToHex", { enumerable: true, get: function () { return Streamable_js_1.bytesToHex; } });
|
|
127
|
-
Object.defineProperty(exports, "bigIntToByteArray", { enumerable: true, get: function () { return Streamable_js_1.bigIntToByteArray; } });
|
|
128
|
-
Object.defineProperty(exports, "legacyWriteMiniString", { enumerable: true, get: function () { return Streamable_js_1.writeMiniString; } });
|
|
129
|
-
Object.defineProperty(exports, "writeHashToStream", { enumerable: true, get: function () { return Streamable_js_1.writeHashToStream; } });
|
|
28
|
+
export { writeMiniNumber as legacyWriteMiniNumber, writeMiniData as legacyWriteMiniData, writeMiniByte, writeMMREntryNumber, concat, hexToBytes as legacyHexToBytes, bytesToHex as legacyBytesToHex, bigIntToByteArray, writeMiniString as legacyWriteMiniString, writeHashToStream, } from './Streamable.js';
|
|
130
29
|
// JavaStreamables
|
|
131
|
-
|
|
132
|
-
Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumber; } });
|
|
133
|
-
Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniData; } });
|
|
134
|
-
Object.defineProperty(exports, "hashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.hashAllObjects; } });
|
|
135
|
-
Object.defineProperty(exports, "legacyDeriveChainSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChainSeedJava; } });
|
|
136
|
-
Object.defineProperty(exports, "deriveChildTreeSeedJava", { enumerable: true, get: function () { return javaStreamables_js_1.deriveChildTreeSeedJava; } });
|
|
137
|
-
Object.defineProperty(exports, "hashObject", { enumerable: true, get: function () { return javaStreamables_js_1.hashObject; } });
|
|
138
|
-
Object.defineProperty(exports, "serializeMiniNumberZERO", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberZERO; } });
|
|
139
|
-
Object.defineProperty(exports, "serializeMiniNumberONE", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMiniNumberONE; } });
|
|
140
|
-
Object.defineProperty(exports, "javaHashAllObjects", { enumerable: true, get: function () { return javaStreamables_js_1.javaHashAllObjects; } });
|
|
141
|
-
Object.defineProperty(exports, "indexToMiniDataBytes", { enumerable: true, get: function () { return javaStreamables_js_1.indexToMiniDataBytes; } });
|
|
142
|
-
Object.defineProperty(exports, "legacyDerivePerAddressSeed", { enumerable: true, get: function () { return javaStreamables_js_1.derivePerAddressSeed; } });
|
|
143
|
-
Object.defineProperty(exports, "legacyDeriveRootPrivSeed", { enumerable: true, get: function () { return javaStreamables_js_1.deriveRootPrivSeed; } });
|
|
144
|
-
Object.defineProperty(exports, "deriveUnifiedChildSeed", { enumerable: true, get: function () { return javaStreamables_js_1.deriveUnifiedChildSeed; } });
|
|
145
|
-
Object.defineProperty(exports, "createMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.createMMREntryNumber; } });
|
|
146
|
-
Object.defineProperty(exports, "serializeMMREntryNumber", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntryNumber; } });
|
|
147
|
-
Object.defineProperty(exports, "serializeMMRData", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMRData; } });
|
|
148
|
-
Object.defineProperty(exports, "serializeMMREntry", { enumerable: true, get: function () { return javaStreamables_js_1.serializeMMREntry; } });
|
|
149
|
-
Object.defineProperty(exports, "legacyPrecomputeTransactionCoinIDTx", { enumerable: true, get: function () { return javaStreamables_js_1.precomputeTransactionCoinID; } });
|
|
30
|
+
export { serializeMiniNumber, serializeMiniData, hashAllObjects, deriveChainSeedJava as legacyDeriveChainSeedJava, deriveChildTreeSeedJava, hashObject, serializeMiniNumberZERO, serializeMiniNumberONE, javaHashAllObjects, indexToMiniDataBytes, derivePerAddressSeed as legacyDerivePerAddressSeed, deriveRootPrivSeed as legacyDeriveRootPrivSeed, deriveUnifiedChildSeed, createMMREntryNumber, serializeMMREntryNumber, serializeMMRData, serializeMMREntry, precomputeTransactionCoinID as legacyPrecomputeTransactionCoinIDTx, } from './javaStreamables.js';
|
|
150
31
|
// Utils
|
|
151
|
-
|
|
152
|
-
Object.defineProperty(exports, "legacyConcatBytes", { enumerable: true, get: function () { return utils_js_1.concatBytes; } });
|
|
32
|
+
export { concatBytes as legacyConcatBytes } from './utils.js';
|
|
153
33
|
// Params
|
|
154
|
-
|
|
34
|
+
export * from './params.js';
|
|
155
35
|
// Verify
|
|
156
|
-
|
|
157
|
-
Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return verify_js_1.verifySignature; } });
|
|
158
|
-
Object.defineProperty(exports, "verifySignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifySignatureDetailed; } });
|
|
159
|
-
Object.defineProperty(exports, "verifyTreeSignatureDetailed", { enumerable: true, get: function () { return verify_js_1.verifyTreeSignatureDetailed; } });
|
|
160
|
-
Object.defineProperty(exports, "deriveAddressFromPublicKey", { enumerable: true, get: function () { return verify_js_1.deriveAddressFromPublicKey; } });
|
|
161
|
-
Object.defineProperty(exports, "normalizeHex", { enumerable: true, get: function () { return verify_js_1.normalizeHex; } });
|
|
162
|
-
Object.defineProperty(exports, "legacyCreateChallenge", { enumerable: true, get: function () { return verify_js_1.createChallenge; } });
|
|
163
|
-
Object.defineProperty(exports, "legacyValidateChallenge", { enumerable: true, get: function () { return verify_js_1.validateChallenge; } });
|
|
36
|
+
export { verifySignature, verifySignatureDetailed, verifyTreeSignatureDetailed, deriveAddressFromPublicKey, normalizeHex, createChallenge as legacyCreateChallenge, validateChallenge as legacyValidateChallenge, } from './verify.js';
|
package/dist/minima32.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Minima "Mx" Base32 — matches org.minima.utils.BaseConverter.encode32/decode32
|
|
3
2
|
// Source behavior: BigInteger radix-32, then i→w, l→y, o→z, uppercased, prefixed with "Mx".
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.convertMinimaAddress = exports.makeMinimaAddress = exports.decodeMx = exports.encodeMx = void 0;
|
|
6
|
-
exports.encodeMxRadix32Frame = encodeMxRadix32Frame;
|
|
7
|
-
exports.decodeMxRadix32Frame = decodeMxRadix32Frame;
|
|
8
|
-
exports.makeMxAddress = makeMxAddress;
|
|
9
|
-
exports.parseMxAddress = parseMxAddress;
|
|
10
|
-
exports.hexToMx = hexToMx;
|
|
11
|
-
exports.mxToHex = mxToHex;
|
|
12
3
|
function bytesToBigInt(bytes) {
|
|
13
4
|
let x = 0n;
|
|
14
5
|
for (const b of bytes)
|
|
@@ -27,13 +18,13 @@ function bigIntToBytes(x) {
|
|
|
27
18
|
}
|
|
28
19
|
return out;
|
|
29
20
|
}
|
|
30
|
-
function encodeMxRadix32Frame(frame) {
|
|
21
|
+
export function encodeMxRadix32Frame(frame) {
|
|
31
22
|
let s = bytesToBigInt(frame).toString(32).toLowerCase();
|
|
32
23
|
// JAR swaps (avoid ambiguous letters) then uppercase and add prefix
|
|
33
24
|
s = s.replace(/i/g, 'w').replace(/l/g, 'y').replace(/o/g, 'z');
|
|
34
25
|
return 'Mx' + s.toUpperCase();
|
|
35
26
|
}
|
|
36
|
-
function decodeMxRadix32Frame(mx) {
|
|
27
|
+
export function decodeMxRadix32Frame(mx) {
|
|
37
28
|
let s = mx.trim().toLowerCase();
|
|
38
29
|
if (s.startsWith('mx'))
|
|
39
30
|
s = s.slice(2);
|
|
@@ -48,9 +39,9 @@ function decodeMxRadix32Frame(mx) {
|
|
|
48
39
|
}
|
|
49
40
|
return bigIntToBytes(x);
|
|
50
41
|
}
|
|
51
|
-
|
|
42
|
+
import { sha3_256 as nobleSha3 } from './wasm-sync.js';
|
|
52
43
|
/** Encode raw 32 bytes to Mx address with frame and checksum */
|
|
53
|
-
function makeMxAddress(root32) {
|
|
44
|
+
export function makeMxAddress(root32) {
|
|
54
45
|
if (root32.length !== 32) {
|
|
55
46
|
throw new Error(`Expected 32 bytes, got ${root32.length}`);
|
|
56
47
|
}
|
|
@@ -61,12 +52,12 @@ function makeMxAddress(root32) {
|
|
|
61
52
|
frame[2] = 32; // Length low byte
|
|
62
53
|
frame.set(root32, 3);
|
|
63
54
|
// Calculate checksum of the raw 32 bytes
|
|
64
|
-
const chk = (
|
|
55
|
+
const chk = nobleSha3(root32);
|
|
65
56
|
frame.set(chk.slice(0, 4), 35);
|
|
66
57
|
return encodeMxRadix32Frame(frame);
|
|
67
58
|
}
|
|
68
59
|
/** Decode Mx address to raw 32 bytes, validating frame and checksum */
|
|
69
|
-
function parseMxAddress(mx) {
|
|
60
|
+
export function parseMxAddress(mx) {
|
|
70
61
|
const frame = decodeMxRadix32Frame(mx);
|
|
71
62
|
// Validate frame structure
|
|
72
63
|
if (frame[0] !== 0x01) {
|
|
@@ -79,7 +70,7 @@ function parseMxAddress(mx) {
|
|
|
79
70
|
const root32 = frame.slice(3, 35);
|
|
80
71
|
const checksum = frame.slice(35, 39);
|
|
81
72
|
// Validate checksum
|
|
82
|
-
const expectedChk = (
|
|
73
|
+
const expectedChk = nobleSha3(root32);
|
|
83
74
|
const expected = expectedChk.slice(0, 4);
|
|
84
75
|
for (let i = 0; i < 4; i++) {
|
|
85
76
|
if (checksum[i] !== expected[i]) {
|
|
@@ -102,20 +93,20 @@ function bytesToHex(bytes) {
|
|
|
102
93
|
return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('').toUpperCase();
|
|
103
94
|
}
|
|
104
95
|
/** Make an Mx address from a hex string (legacy API compatibility) */
|
|
105
|
-
function hexToMx(hex) {
|
|
96
|
+
export function hexToMx(hex) {
|
|
106
97
|
const bytes = hexToBytes(hex);
|
|
107
98
|
return makeMxAddress(bytes);
|
|
108
99
|
}
|
|
109
100
|
/** Convert an Mx address back to uppercase hex (legacy API compatibility) */
|
|
110
|
-
function mxToHex(mx) {
|
|
101
|
+
export function mxToHex(mx) {
|
|
111
102
|
const bytes = parseMxAddress(mx);
|
|
112
103
|
return bytesToHex(bytes);
|
|
113
104
|
}
|
|
114
105
|
/** @deprecated Use makeMxAddress */
|
|
115
|
-
|
|
106
|
+
export const encodeMx = makeMxAddress;
|
|
116
107
|
/** @deprecated Use parseMxAddress */
|
|
117
|
-
|
|
108
|
+
export const decodeMx = parseMxAddress;
|
|
118
109
|
/** @deprecated Use hexToMx */
|
|
119
|
-
|
|
110
|
+
export const makeMinimaAddress = hexToMx;
|
|
120
111
|
/** @deprecated Use mxToHex */
|
|
121
|
-
|
|
112
|
+
export const convertMinimaAddress = mxToHex;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Minima Wire Format Serializer
|
|
4
3
|
*
|
|
@@ -8,15 +7,10 @@
|
|
|
8
7
|
* @deprecated (2026-01) - Most functions deprecated. Use Streamable.ts directly for
|
|
9
8
|
* byte-level serialization. This file remains for HierarchicalWitnessBundle hex APIs.
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const Streamable_js_1 = require("./Streamable.js");
|
|
16
|
-
Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return Streamable_js_1.hexToBytes; } });
|
|
17
|
-
Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return Streamable_js_1.bytesToHex; } });
|
|
18
|
-
Object.defineProperty(exports, "serializeMiniNumber", { enumerable: true, get: function () { return Streamable_js_1.writeMiniNumber; } });
|
|
19
|
-
Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: function () { return Streamable_js_1.writeMiniData; } });
|
|
10
|
+
import { concat, hexToBytes, bytesToHex, writeMiniNumber, writeMiniData, } from './Streamable.js';
|
|
11
|
+
// Re-export primitives for backward compatibility
|
|
12
|
+
export { writeMiniNumber as serializeMiniNumber, writeMiniData as serializeMiniData };
|
|
13
|
+
export { hexToBytes as fromHex, bytesToHex as toHex };
|
|
20
14
|
/**
|
|
21
15
|
* Serialize a SignatureProof from pre-serialized byte arrays
|
|
22
16
|
*
|
|
@@ -27,7 +21,7 @@ Object.defineProperty(exports, "serializeMiniData", { enumerable: true, get: fun
|
|
|
27
21
|
* 3. MMRProof bytes (pre-serialized)
|
|
28
22
|
*/
|
|
29
23
|
function serializeSignatureProofFromBytes(publicKey, signature, mmrProofBytes) {
|
|
30
|
-
return
|
|
24
|
+
return concat(writeMiniData(publicKey), writeMiniData(signature), mmrProofBytes // Already serialized - pass through directly
|
|
31
25
|
);
|
|
32
26
|
}
|
|
33
27
|
/**
|
|
@@ -49,20 +43,20 @@ function serializeSignatureProofFromBytes(publicKey, signature, mmrProofBytes) {
|
|
|
49
43
|
* IMPORTANT: Uses pre-serialized MMR proof bytes directly to avoid
|
|
50
44
|
* double-serialization (deserialize then re-serialize).
|
|
51
45
|
*/
|
|
52
|
-
function serializeHierarchicalWitness(bundle) {
|
|
46
|
+
export function serializeHierarchicalWitness(bundle) {
|
|
53
47
|
const parts = [];
|
|
54
48
|
// Witness.signatureCount (MiniNumber) - 1 Signature object containing N proofs
|
|
55
|
-
parts.push((
|
|
49
|
+
parts.push(writeMiniNumber(1n, 0));
|
|
56
50
|
// Signature.proofCount (MiniNumber) - N SignatureProofs inside the Signature
|
|
57
|
-
parts.push(
|
|
51
|
+
parts.push(writeMiniNumber(BigInt(bundle.proofs.length), 0));
|
|
58
52
|
for (const proofHex of bundle.proofs) {
|
|
59
|
-
const publicKey =
|
|
60
|
-
const signature =
|
|
61
|
-
const mmrProofBytes =
|
|
53
|
+
const publicKey = hexToBytes(proofHex.leafPubkey);
|
|
54
|
+
const signature = hexToBytes(proofHex.signature);
|
|
55
|
+
const mmrProofBytes = hexToBytes(proofHex.mmrProof); // Already serialized
|
|
62
56
|
// Serialize SignatureProof with pre-serialized MMR bytes
|
|
63
57
|
parts.push(serializeSignatureProofFromBytes(publicKey, signature, mmrProofBytes));
|
|
64
58
|
}
|
|
65
|
-
return
|
|
59
|
+
return concat(...parts);
|
|
66
60
|
}
|
|
67
61
|
/**
|
|
68
62
|
* @deprecated (2026-01) This function's output is NOT used in the main Totem transaction flow.
|
|
@@ -71,7 +65,7 @@ function serializeHierarchicalWitness(bundle) {
|
|
|
71
65
|
*
|
|
72
66
|
* Serialize hierarchical witness bundle to hex string for transport
|
|
73
67
|
*/
|
|
74
|
-
function serializeHierarchicalWitnessToHex(bundle) {
|
|
68
|
+
export function serializeHierarchicalWitnessToHex(bundle) {
|
|
75
69
|
const bytes = serializeHierarchicalWitness(bundle);
|
|
76
|
-
return
|
|
70
|
+
return bytesToHex(bytes);
|
|
77
71
|
}
|
package/dist/mmr.js
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializeMMRProof = exports.MMRTree = exports.serializeRealMMRProof = void 0;
|
|
4
|
-
exports.serializeMMRProof = serializeMMRProof;
|
|
5
|
-
exports.mmrLeafExact = mmrLeafExact;
|
|
6
|
-
exports.mmrRootFromSingleLeaf = mmrRootFromSingleLeaf;
|
|
7
|
-
exports.createMMRDataLeafNode = createMMRDataLeafNode;
|
|
8
|
-
exports.createMMRDataParentNode = createMMRDataParentNode;
|
|
9
|
-
exports.calculateProofRoot = calculateProofRoot;
|
|
10
|
-
exports.verifyMMRProof = verifyMMRProof;
|
|
11
|
-
exports.parseMMRProofFromHex = parseMMRProofFromHex;
|
|
12
|
-
// packages/totem-sdk/packages/core/src/mmr.ts
|
|
1
|
+
// packages/core/src/mmr.ts
|
|
13
2
|
// Full MMR implementation matching Minima's MMR.java, MMRData.java, and TreeKeyNode.java
|
|
14
|
-
|
|
15
|
-
|
|
3
|
+
import { sha3_256 as nobleSha3 } from './wasm-sync.js';
|
|
4
|
+
import { serializeMiniNumber, serializeMiniData, javaHashAllObjects } from "./javaStreamables.js";
|
|
16
5
|
// Import canonical wire serialization from Streamable.ts (single source of truth)
|
|
17
|
-
|
|
6
|
+
import { writeMMRProof } from "./Streamable.js";
|
|
18
7
|
// Re-export for API compatibility (existing code imports from mmr.ts)
|
|
19
8
|
// Using a wrapper function for better compatibility with dynamic imports
|
|
20
|
-
function serializeMMRProof(proof, blockTime = 0n) {
|
|
9
|
+
export function serializeMMRProof(proof, blockTime = 0n) {
|
|
21
10
|
// Convert to Streamable format and serialize
|
|
22
11
|
const streamableProof = {
|
|
23
12
|
blockTime: blockTime,
|
|
@@ -26,12 +15,12 @@ function serializeMMRProof(proof, blockTime = 0n) {
|
|
|
26
15
|
mmrData: { data: c.mmrData.data, value: c.mmrData.value }
|
|
27
16
|
}))
|
|
28
17
|
};
|
|
29
|
-
return
|
|
18
|
+
return writeMMRProof(streamableProof);
|
|
30
19
|
}
|
|
31
|
-
|
|
20
|
+
export const serializeRealMMRProof = serializeMMRProof;
|
|
32
21
|
/** SHA3-256 helper returning 32 bytes */
|
|
33
22
|
function sha3(data) {
|
|
34
|
-
return (
|
|
23
|
+
return nobleSha3(data);
|
|
35
24
|
}
|
|
36
25
|
/** concat utility */
|
|
37
26
|
function concat(...parts) {
|
|
@@ -70,14 +59,14 @@ function encodeMiniStringUTF8(text) {
|
|
|
70
59
|
* Byte-exact one-leaf MMR leaf used by Minima Address.java path:
|
|
71
60
|
* sha3( MiniNumber.ZERO || MiniString(script) || MiniNumber.ZERO )
|
|
72
61
|
*/
|
|
73
|
-
function mmrLeafExact(script) {
|
|
62
|
+
export function mmrLeafExact(script) {
|
|
74
63
|
const zero = encodeMiniNumberZERO();
|
|
75
64
|
const mstr = encodeMiniStringUTF8(script);
|
|
76
65
|
const all = concat(zero, mstr, zero);
|
|
77
66
|
return sha3(all); // 32-byte leaf hash
|
|
78
67
|
}
|
|
79
68
|
/** In a single-leaf MMR the root equals the leaf commitment. */
|
|
80
|
-
function mmrRootFromSingleLeaf(script) {
|
|
69
|
+
export function mmrRootFromSingleLeaf(script) {
|
|
81
70
|
return mmrLeafExact(script);
|
|
82
71
|
}
|
|
83
72
|
/**
|
|
@@ -97,20 +86,20 @@ function mmrRootFromSingleLeaf(script) {
|
|
|
97
86
|
* 2. MiniData (pubkey): [4-byte length] + [bytes] (writeDataStream, NOT writeHashToStream)
|
|
98
87
|
* 3. MiniNumber.ZERO: [0x00, 0x01, 0x00]
|
|
99
88
|
*/
|
|
100
|
-
function createMMRDataLeafNode(pubkey, sumValue = 0n) {
|
|
89
|
+
export function createMMRDataLeafNode(pubkey, sumValue = 0n) {
|
|
101
90
|
// Use cached ZERO serialization for efficiency
|
|
102
91
|
const zero = new Uint8Array([0x00, 0x01, 0x00]); // MiniNumber.ZERO
|
|
103
92
|
// IMPORTANT: hashAllObjects uses writeDataStream which is 4-byte length prefixed
|
|
104
|
-
const pubkeySerialized =
|
|
93
|
+
const pubkeySerialized = serializeMiniData(pubkey);
|
|
105
94
|
// For sumValue, serialize as MiniNumber
|
|
106
95
|
let sumSerialized;
|
|
107
96
|
if (sumValue === 0n) {
|
|
108
97
|
sumSerialized = new Uint8Array([0x00, 0x01, 0x00]); // MiniNumber.ZERO
|
|
109
98
|
}
|
|
110
99
|
else {
|
|
111
|
-
sumSerialized =
|
|
100
|
+
sumSerialized = serializeMiniNumber(Number(sumValue));
|
|
112
101
|
}
|
|
113
|
-
const hash =
|
|
102
|
+
const hash = javaHashAllObjects(zero, pubkeySerialized, sumSerialized);
|
|
114
103
|
return { data: hash, value: sumValue };
|
|
115
104
|
}
|
|
116
105
|
/**
|
|
@@ -130,22 +119,22 @@ function createMMRDataLeafNode(pubkey, sumValue = 0n) {
|
|
|
130
119
|
* 3. MiniData (right.data): [4-byte length] + [bytes]
|
|
131
120
|
* 4. MiniNumber (sumvalue): serialized MiniNumber
|
|
132
121
|
*/
|
|
133
|
-
function createMMRDataParentNode(left, right) {
|
|
122
|
+
export function createMMRDataParentNode(left, right) {
|
|
134
123
|
const sumValue = left.value + right.value;
|
|
135
124
|
// MiniNumber.ONE: [0x00, 0x01, 0x01]
|
|
136
125
|
const one = new Uint8Array([0x00, 0x01, 0x01]);
|
|
137
126
|
// Serialize left and right data as MiniData (4-byte length-prefixed)
|
|
138
|
-
const leftDataSerialized =
|
|
139
|
-
const rightDataSerialized =
|
|
127
|
+
const leftDataSerialized = serializeMiniData(left.data);
|
|
128
|
+
const rightDataSerialized = serializeMiniData(right.data);
|
|
140
129
|
// Serialize sum value
|
|
141
130
|
let sumSerialized;
|
|
142
131
|
if (sumValue === 0n) {
|
|
143
132
|
sumSerialized = new Uint8Array([0x00, 0x01, 0x00]); // MiniNumber.ZERO
|
|
144
133
|
}
|
|
145
134
|
else {
|
|
146
|
-
sumSerialized =
|
|
135
|
+
sumSerialized = serializeMiniNumber(Number(sumValue));
|
|
147
136
|
}
|
|
148
|
-
const hash =
|
|
137
|
+
const hash = javaHashAllObjects(one, leftDataSerialized, rightDataSerialized, sumSerialized);
|
|
149
138
|
return { data: hash, value: sumValue };
|
|
150
139
|
}
|
|
151
140
|
/**
|
|
@@ -154,12 +143,10 @@ function createMMRDataParentNode(left, right) {
|
|
|
154
143
|
*
|
|
155
144
|
* This matches TreeKeyNode.java which always uses 64 leaves (2^6)
|
|
156
145
|
*/
|
|
157
|
-
class MMRTree {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
this.maxRow = 0;
|
|
162
|
-
}
|
|
146
|
+
export class MMRTree {
|
|
147
|
+
entries = new Map();
|
|
148
|
+
leafCount = 0;
|
|
149
|
+
maxRow = 0;
|
|
163
150
|
getKey(row, entryNumber) {
|
|
164
151
|
return `${row}:${entryNumber}`;
|
|
165
152
|
}
|
|
@@ -252,7 +239,6 @@ class MMRTree {
|
|
|
252
239
|
return entry?.mmrData || null;
|
|
253
240
|
}
|
|
254
241
|
}
|
|
255
|
-
exports.MMRTree = MMRTree;
|
|
256
242
|
/**
|
|
257
243
|
* Calculate root from leaf data and proof
|
|
258
244
|
* Matches SignatureProof.getRootPublicKey() in Java
|
|
@@ -261,7 +247,7 @@ exports.MMRTree = MMRTree;
|
|
|
261
247
|
* MMRData pubentry = MMRData.CreateMMRDataLeafNode(mPublicKey, MiniNumber.ZERO);
|
|
262
248
|
* return mProof.calculateProof(pubentry).getData();
|
|
263
249
|
*/
|
|
264
|
-
function calculateProofRoot(leafData, proof) {
|
|
250
|
+
export function calculateProofRoot(leafData, proof) {
|
|
265
251
|
let current = leafData;
|
|
266
252
|
for (const chunk of proof.chunks) {
|
|
267
253
|
if (chunk.isLeft) {
|
|
@@ -278,7 +264,7 @@ function calculateProofRoot(leafData, proof) {
|
|
|
278
264
|
/**
|
|
279
265
|
* Verify a proof: check that leaf + proof computes to expected root
|
|
280
266
|
*/
|
|
281
|
-
function verifyMMRProof(leafPubkey, proof, expectedRoot) {
|
|
267
|
+
export function verifyMMRProof(leafPubkey, proof, expectedRoot) {
|
|
282
268
|
const leafData = createMMRDataLeafNode(leafPubkey, 0n);
|
|
283
269
|
const computedRoot = calculateProofRoot(leafData, proof);
|
|
284
270
|
if (computedRoot.length !== expectedRoot.length)
|
|
@@ -304,7 +290,7 @@ function verifyMMRProof(leafPubkey, proof, expectedRoot) {
|
|
|
304
290
|
*
|
|
305
291
|
* @returns { proof: MMRProof, blockTime: bigint }
|
|
306
292
|
*/
|
|
307
|
-
function parseMMRProofFromHex(data) {
|
|
293
|
+
export function parseMMRProofFromHex(data) {
|
|
308
294
|
let offset = 0;
|
|
309
295
|
// Read blockTime as MiniNumber
|
|
310
296
|
const { value: blockTime, bytesRead: btRead } = readMiniNumber(data, offset);
|
|
@@ -351,4 +337,4 @@ function readMiniNumber(data, offset) {
|
|
|
351
337
|
return { value, bytesRead: 2 + length };
|
|
352
338
|
}
|
|
353
339
|
/** @deprecated Use parseMMRProofFromHex */
|
|
354
|
-
|
|
340
|
+
export const deserializeMMRProof = parseMMRProofFromHex;
|
package/dist/mx.js
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decodeMx = exports.encodeMx = exports.convertMinimaAddress = exports.makeMinimaAddress = exports.mxToHex = exports.hexToMx = void 0;
|
|
4
|
-
var minima32_js_1 = require("./minima32.js");
|
|
5
|
-
Object.defineProperty(exports, "hexToMx", { enumerable: true, get: function () { return minima32_js_1.hexToMx; } });
|
|
6
|
-
Object.defineProperty(exports, "mxToHex", { enumerable: true, get: function () { return minima32_js_1.mxToHex; } });
|
|
7
|
-
Object.defineProperty(exports, "makeMinimaAddress", { enumerable: true, get: function () { return minima32_js_1.makeMinimaAddress; } });
|
|
8
|
-
Object.defineProperty(exports, "convertMinimaAddress", { enumerable: true, get: function () { return minima32_js_1.convertMinimaAddress; } });
|
|
9
|
-
Object.defineProperty(exports, "encodeMx", { enumerable: true, get: function () { return minima32_js_1.encodeMx; } });
|
|
10
|
-
Object.defineProperty(exports, "decodeMx", { enumerable: true, get: function () { return minima32_js_1.decodeMx; } });
|
|
1
|
+
export { hexToMx, mxToHex, makeMinimaAddress, convertMinimaAddress, encodeMx, decodeMx } from './minima32.js';
|
package/dist/params.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WOTS_V2_SPEC = exports.WOTS_V1_DEV = exports.WOTS_MINIMA = void 0;
|
|
4
|
-
exports.getParamSet = getParamSet;
|
|
5
|
-
exports.WOTS_MINIMA = {
|
|
1
|
+
export const WOTS_MINIMA = {
|
|
6
2
|
name: 'minima',
|
|
7
3
|
n: 256,
|
|
8
4
|
w: 8,
|
|
@@ -13,8 +9,8 @@ exports.WOTS_MINIMA = {
|
|
|
13
9
|
maxDigit: 255,
|
|
14
10
|
};
|
|
15
11
|
// Legacy aliases for backwards compatibility during migration
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function getParamSet(_env) {
|
|
19
|
-
return
|
|
12
|
+
export const WOTS_V1_DEV = WOTS_MINIMA;
|
|
13
|
+
export const WOTS_V2_SPEC = WOTS_MINIMA;
|
|
14
|
+
export function getParamSet(_env) {
|
|
15
|
+
return WOTS_MINIMA;
|
|
20
16
|
}
|