dero-mcp-server 0.1.2 → 0.4.0

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.
Files changed (77) hide show
  1. package/POSITIONING.md +94 -0
  2. package/README.md +132 -31
  3. package/SKILL.md +264 -0
  4. package/data/docs-index.json +276 -264
  5. package/dist/bn254.d.ts +74 -0
  6. package/dist/bn254.d.ts.map +1 -0
  7. package/dist/bn254.js +205 -0
  8. package/dist/bn254.js.map +1 -0
  9. package/dist/citations.d.ts +140 -0
  10. package/dist/citations.d.ts.map +1 -0
  11. package/dist/citations.js +322 -0
  12. package/dist/citations.js.map +1 -0
  13. package/dist/composites/_shared.d.ts +119 -0
  14. package/dist/composites/_shared.d.ts.map +1 -0
  15. package/dist/composites/_shared.js +152 -0
  16. package/dist/composites/_shared.js.map +1 -0
  17. package/dist/composites/audit-chain-artifact-claim.d.ts +128 -0
  18. package/dist/composites/audit-chain-artifact-claim.d.ts.map +1 -0
  19. package/dist/composites/audit-chain-artifact-claim.js +305 -0
  20. package/dist/composites/audit-chain-artifact-claim.js.map +1 -0
  21. package/dist/composites/diagnose-chain-health.d.ts +64 -0
  22. package/dist/composites/diagnose-chain-health.d.ts.map +1 -0
  23. package/dist/composites/diagnose-chain-health.js +144 -0
  24. package/dist/composites/diagnose-chain-health.js.map +1 -0
  25. package/dist/composites/estimate-deploy-cost.d.ts +83 -0
  26. package/dist/composites/estimate-deploy-cost.d.ts.map +1 -0
  27. package/dist/composites/estimate-deploy-cost.js +116 -0
  28. package/dist/composites/estimate-deploy-cost.js.map +1 -0
  29. package/dist/composites/explain-smart-contract.d.ts +64 -0
  30. package/dist/composites/explain-smart-contract.d.ts.map +1 -0
  31. package/dist/composites/explain-smart-contract.js +149 -0
  32. package/dist/composites/explain-smart-contract.js.map +1 -0
  33. package/dist/composites/forge-demo-proof.d.ts +81 -0
  34. package/dist/composites/forge-demo-proof.d.ts.map +1 -0
  35. package/dist/composites/forge-demo-proof.js +204 -0
  36. package/dist/composites/forge-demo-proof.js.map +1 -0
  37. package/dist/composites/recommend-docs-path.d.ts +97 -0
  38. package/dist/composites/recommend-docs-path.d.ts.map +1 -0
  39. package/dist/composites/recommend-docs-path.js +149 -0
  40. package/dist/composites/recommend-docs-path.js.map +1 -0
  41. package/dist/composites/trace-transaction-with-context.d.ts +107 -0
  42. package/dist/composites/trace-transaction-with-context.d.ts.map +1 -0
  43. package/dist/composites/trace-transaction-with-context.js +217 -0
  44. package/dist/composites/trace-transaction-with-context.js.map +1 -0
  45. package/dist/daemon-base.d.ts +28 -0
  46. package/dist/daemon-base.d.ts.map +1 -0
  47. package/dist/daemon-base.js +62 -0
  48. package/dist/daemon-base.js.map +1 -0
  49. package/dist/dero-curve.d.ts +79 -0
  50. package/dist/dero-curve.d.ts.map +1 -0
  51. package/dist/dero-curve.js +79 -0
  52. package/dist/dero-curve.js.map +1 -0
  53. package/dist/docs-parse.d.ts.map +1 -1
  54. package/dist/docs-parse.js +18 -2
  55. package/dist/docs-parse.js.map +1 -1
  56. package/dist/http-server.d.ts +37 -0
  57. package/dist/http-server.d.ts.map +1 -0
  58. package/dist/http-server.js +132 -0
  59. package/dist/http-server.js.map +1 -0
  60. package/dist/index.js +18 -11
  61. package/dist/index.js.map +1 -1
  62. package/dist/proof-decode.d.ts +125 -0
  63. package/dist/proof-decode.d.ts.map +1 -0
  64. package/dist/proof-decode.js +619 -0
  65. package/dist/proof-decode.js.map +1 -0
  66. package/dist/server.d.ts.map +1 -1
  67. package/dist/server.js +414 -114
  68. package/dist/server.js.map +1 -1
  69. package/dist/tool-descriptions.d.ts +53 -0
  70. package/dist/tool-descriptions.d.ts.map +1 -0
  71. package/dist/tool-descriptions.js +285 -0
  72. package/dist/tool-descriptions.js.map +1 -0
  73. package/dist/tx-parse.d.ts +63 -0
  74. package/dist/tx-parse.d.ts.map +1 -0
  75. package/dist/tx-parse.js +183 -0
  76. package/dist/tx-parse.js.map +1 -0
  77. package/package.json +27 -2
@@ -0,0 +1,619 @@
1
+ /**
2
+ * Decoder for DERO `deroproof…` / `dero…` / `deroi…` / `deto…` / `detoi…` bech32 strings.
3
+ *
4
+ * Implements the same wire format as `rpc/address.go` + `rpc/rpc.go` in DEROHE:
5
+ *
6
+ * bech32 → convertbits(5→8, no pad) → version byte (=1) → 33-byte compressed point
7
+ * → optional CBOR map of arguments (only present for HRPs `deroi`, `detoi`, `deroproof`).
8
+ *
9
+ * The CBOR map keys are `Name + DataType` ASCII strings (e.g. `"VU"` for
10
+ * `RPC_VALUE_TRANSFER` + `DataUint64`). Values are typed CBOR primitives.
11
+ *
12
+ * No new npm dependencies — bech32 + the minimum-needed CBOR subset are hand-rolled
13
+ * (~zero kB install delta for the MCP server, which is published for `npx` use).
14
+ *
15
+ * Verified against the publicly-cited 2022 inflation-claim proof string:
16
+ * embedded `uint64` = 18446743853709551435 = signed -2,200,000.00181 DERO.
17
+ */
18
+ const BECH32_CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
19
+ const BECH32_CHARSET_INDEX = Object.fromEntries(Array.from(BECH32_CHARSET).map((c, i) => [c, i]));
20
+ /** Polymod step from BIP-0173. */
21
+ function bech32Polymod(values) {
22
+ const generators = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
23
+ let chk = 1;
24
+ for (const v of values) {
25
+ const top = chk >>> 25;
26
+ chk = ((chk & 0x1ffffff) << 5) ^ v;
27
+ for (let i = 0; i < 5; i++) {
28
+ if ((top >>> i) & 1)
29
+ chk ^= generators[i];
30
+ }
31
+ }
32
+ return chk;
33
+ }
34
+ function bech32HrpExpand(hrp) {
35
+ const out = [];
36
+ for (let i = 0; i < hrp.length; i++)
37
+ out.push(hrp.charCodeAt(i) >>> 5);
38
+ out.push(0);
39
+ for (let i = 0; i < hrp.length; i++)
40
+ out.push(hrp.charCodeAt(i) & 31);
41
+ return out;
42
+ }
43
+ function bech32VerifyChecksum(hrp, data) {
44
+ return bech32Polymod([...bech32HrpExpand(hrp), ...data]) === 1;
45
+ }
46
+ /**
47
+ * Decode a bech32 string. Throws on invalid input.
48
+ * Returns `{ hrp, data }` where data is the 5-bit values WITHOUT the 6-byte checksum.
49
+ */
50
+ export function bech32Decode(input) {
51
+ if (input.length < 8 || input.length > 1023) {
52
+ throw new Error(`bech32: invalid length ${input.length}`);
53
+ }
54
+ const hasLower = /[a-z]/.test(input);
55
+ const hasUpper = /[A-Z]/.test(input);
56
+ if (hasLower && hasUpper)
57
+ throw new Error('bech32: mixed case not allowed');
58
+ const lower = input.toLowerCase();
59
+ const sep = lower.lastIndexOf('1');
60
+ if (sep < 1 || sep + 7 > lower.length) {
61
+ throw new Error('bech32: separator not found or too close to ends');
62
+ }
63
+ const hrp = lower.slice(0, sep);
64
+ const dataPart = lower.slice(sep + 1);
65
+ const data = [];
66
+ for (const ch of dataPart) {
67
+ const v = BECH32_CHARSET_INDEX[ch];
68
+ if (v === undefined)
69
+ throw new Error(`bech32: invalid char "${ch}"`);
70
+ data.push(v);
71
+ }
72
+ if (!bech32VerifyChecksum(hrp, data)) {
73
+ throw new Error('bech32: invalid checksum');
74
+ }
75
+ return { hrp, data: data.slice(0, -6) };
76
+ }
77
+ /**
78
+ * Repack a bit-stream from `fromBits` to `toBits`. Mirrors DEROHE's `convertbits`
79
+ * (in turn from BIP-0173 reference impl).
80
+ */
81
+ export function convertBits(data, fromBits, toBits, pad) {
82
+ let acc = 0;
83
+ let bits = 0;
84
+ const out = [];
85
+ const maxv = (1 << toBits) - 1;
86
+ for (const value of data) {
87
+ if (value < 0 || value >>> fromBits !== 0) {
88
+ throw new Error(`convertBits: value out of range: ${value}`);
89
+ }
90
+ acc = (acc << fromBits) | value;
91
+ bits += fromBits;
92
+ while (bits >= toBits) {
93
+ bits -= toBits;
94
+ out.push((acc >>> bits) & maxv);
95
+ }
96
+ }
97
+ if (pad) {
98
+ if (bits > 0)
99
+ out.push((acc << (toBits - bits)) & maxv);
100
+ }
101
+ else if (bits >= fromBits || ((acc << (toBits - bits)) & maxv) !== 0) {
102
+ throw new Error('convertBits: non-zero padding bits');
103
+ }
104
+ return out;
105
+ }
106
+ // ─────────────────────────────────────────────────────────────────────────────
107
+ // Minimal CBOR decoder
108
+ //
109
+ // Implements only the subset DEROHE actually serializes for `Arguments`:
110
+ // - major type 0 (unsigned int) → uint64 (bigint when ≥ 2^53)
111
+ // - major type 1 (negative int) → int64 (bigint when needed)
112
+ // - major type 2 (byte string) → Uint8Array
113
+ // - major type 3 (text string) → string
114
+ // - major type 4 (array) → unknown[] (rare here, supported)
115
+ // - major type 5 (map) → Record<string, unknown>
116
+ // - major type 7: float16/32/64, true/false/null/undefined
117
+ //
118
+ // Indefinite-length and tagged values are not supported (DEROHE config forbids
119
+ // indefinite-length and only uses one tag for time, which Arguments doesn't carry
120
+ // through deroproof payloads).
121
+ // ─────────────────────────────────────────────────────────────────────────────
122
+ class CborReader {
123
+ bytes;
124
+ offset = 0;
125
+ constructor(bytes) {
126
+ this.bytes = bytes;
127
+ }
128
+ readByte() {
129
+ if (this.offset >= this.bytes.length)
130
+ throw new Error('cbor: unexpected EOF');
131
+ return this.bytes[this.offset++];
132
+ }
133
+ readUint(extra) {
134
+ if (extra < 24)
135
+ return extra;
136
+ if (extra === 24)
137
+ return this.readByte();
138
+ if (extra === 25)
139
+ return (this.readByte() << 8) | this.readByte();
140
+ if (extra === 26) {
141
+ const a = this.readByte(), b = this.readByte(), c = this.readByte(), d = this.readByte();
142
+ return a * 0x1000000 + ((b << 16) | (c << 8) | d);
143
+ }
144
+ if (extra === 27) {
145
+ let v = 0n;
146
+ for (let i = 0; i < 8; i++)
147
+ v = (v << 8n) | BigInt(this.readByte());
148
+ return v <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(v) : v;
149
+ }
150
+ throw new Error(`cbor: unsupported additional info ${extra}`);
151
+ }
152
+ readBytes(len) {
153
+ if (this.offset + len > this.bytes.length)
154
+ throw new Error('cbor: truncated byte string');
155
+ const out = this.bytes.slice(this.offset, this.offset + len);
156
+ this.offset += len;
157
+ return out;
158
+ }
159
+ read() {
160
+ const initial = this.readByte();
161
+ const major = initial >>> 5;
162
+ const extra = initial & 0x1f;
163
+ switch (major) {
164
+ case 0:
165
+ return this.readUint(extra);
166
+ case 1: {
167
+ const u = this.readUint(extra);
168
+ if (typeof u === 'bigint')
169
+ return -1n - u;
170
+ return -1 - u;
171
+ }
172
+ case 2: {
173
+ const len = this.readUint(extra);
174
+ if (typeof len === 'bigint')
175
+ throw new Error('cbor: byte string too large');
176
+ return this.readBytes(len);
177
+ }
178
+ case 3: {
179
+ const len = this.readUint(extra);
180
+ if (typeof len === 'bigint')
181
+ throw new Error('cbor: text string too large');
182
+ return new TextDecoder('utf-8').decode(this.readBytes(len));
183
+ }
184
+ case 4: {
185
+ const len = this.readUint(extra);
186
+ if (typeof len === 'bigint')
187
+ throw new Error('cbor: array too large');
188
+ const arr = [];
189
+ for (let i = 0; i < len; i++)
190
+ arr.push(this.read());
191
+ return arr;
192
+ }
193
+ case 5: {
194
+ const len = this.readUint(extra);
195
+ if (typeof len === 'bigint')
196
+ throw new Error('cbor: map too large');
197
+ const map = {};
198
+ for (let i = 0; i < len; i++) {
199
+ const k = this.read();
200
+ if (typeof k !== 'string') {
201
+ throw new Error(`cbor: map key must be string for DERO Arguments, got ${typeof k}`);
202
+ }
203
+ map[k] = this.read();
204
+ }
205
+ return map;
206
+ }
207
+ case 7: {
208
+ if (extra === 20)
209
+ return false;
210
+ if (extra === 21)
211
+ return true;
212
+ if (extra === 22)
213
+ return null;
214
+ if (extra === 23)
215
+ return undefined;
216
+ // floats are not used in deroproof arguments — bail explicitly.
217
+ throw new Error(`cbor: unsupported simple/float type (extra=${extra})`);
218
+ }
219
+ default:
220
+ throw new Error(`cbor: unsupported major type ${major}`);
221
+ }
222
+ }
223
+ done() {
224
+ return this.offset >= this.bytes.length;
225
+ }
226
+ }
227
+ export function cborDecode(bytes) {
228
+ const r = new CborReader(bytes);
229
+ const v = r.read();
230
+ // Trailing bytes are not expected in a DERO arguments payload.
231
+ return v;
232
+ }
233
+ const DATA_TYPE_LABEL = {
234
+ I: 'int64',
235
+ U: 'uint64',
236
+ S: 'string',
237
+ H: 'hash (32 bytes)',
238
+ A: 'address (33-byte compressed point)',
239
+ F: 'float64',
240
+ T: 'time',
241
+ };
242
+ /** Known DERO argument name conventions (subset; not exhaustive). */
243
+ const KNOWN_ARGUMENT_NAMES = {
244
+ V: 'RPC_VALUE_TRANSFER',
245
+ S: 'RPC_SOURCE_PORT',
246
+ D: 'RPC_DESTINATION_PORT',
247
+ C: 'RPC_COMMENT',
248
+ N: 'RPC_NEEDED_REPLY_BACK',
249
+ E: 'RPC_EXPIRY',
250
+ R: 'RPC_REPLYBACK_ADDRESS',
251
+ T: 'RPC_TRANSACTION_REASON',
252
+ };
253
+ const UINT64_MAX = (1n << 64n) - 1n;
254
+ const UINT64_SIGN_BIT = 1n << 63n;
255
+ /**
256
+ * Interpret a uint64 transfer value as both unsigned and signed-wraparound.
257
+ *
258
+ * DERO transfer amounts are stored as `uint64` atomic units (1 DERO = 100,000 atoms).
259
+ * A "negative" transfer is the wraparound of a huge unsigned value; this helper
260
+ * surfaces both views without taking a position on which is "correct" — that's
261
+ * what the cited rebuttal docs are for.
262
+ */
263
+ export function interpretValueTransfer(value) {
264
+ if (value < 0n || value > UINT64_MAX) {
265
+ throw new Error(`uint64 out of range: ${value}`);
266
+ }
267
+ const isNegative = (value & UINT64_SIGN_BIT) !== 0n;
268
+ const signedAtoms = isNegative ? value - (1n << 64n) : value;
269
+ // Format signed DERO with 5 fractional digits.
270
+ const ATOMIC = 100000n;
271
+ const abs = signedAtoms < 0n ? -signedAtoms : signedAtoms;
272
+ const whole = abs / ATOMIC;
273
+ const frac = abs % ATOMIC;
274
+ const sign = signedAtoms < 0n ? '-' : '';
275
+ const dero = `${sign}${whole.toString()}.${frac.toString().padStart(5, '0')}`;
276
+ return {
277
+ uint64: value.toString(),
278
+ signed_int64: signedAtoms.toString(),
279
+ is_negative_wraparound: isNegative,
280
+ signed_atoms: signedAtoms.toString(),
281
+ dero,
282
+ };
283
+ }
284
+ function parseArgumentEntry(rawKey, rawValue) {
285
+ if (rawKey.length < 2) {
286
+ throw new Error(`invalid argument key "${rawKey}" (must be ≥2 chars: name + type)`);
287
+ }
288
+ const type = rawKey[rawKey.length - 1];
289
+ const name = rawKey.slice(0, -1);
290
+ const typeLabel = DATA_TYPE_LABEL[type] ?? `unknown(${type})`;
291
+ const semanticName = KNOWN_ARGUMENT_NAMES[name];
292
+ let value;
293
+ switch (type) {
294
+ case 'U': {
295
+ // CBOR yields number or bigint; normalize to bigint so callers don't lose precision.
296
+ if (typeof rawValue === 'bigint')
297
+ value = rawValue;
298
+ else if (typeof rawValue === 'number')
299
+ value = BigInt(rawValue);
300
+ else
301
+ throw new Error(`argument "${rawKey}" expected uint64, got ${typeof rawValue}`);
302
+ break;
303
+ }
304
+ case 'I': {
305
+ if (typeof rawValue === 'bigint')
306
+ value = rawValue;
307
+ else if (typeof rawValue === 'number')
308
+ value = BigInt(rawValue);
309
+ else
310
+ throw new Error(`argument "${rawKey}" expected int64, got ${typeof rawValue}`);
311
+ break;
312
+ }
313
+ case 'S': {
314
+ if (typeof rawValue !== 'string') {
315
+ throw new Error(`argument "${rawKey}" expected string, got ${typeof rawValue}`);
316
+ }
317
+ value = rawValue;
318
+ break;
319
+ }
320
+ case 'H': {
321
+ if (!(rawValue instanceof Uint8Array)) {
322
+ throw new Error(`argument "${rawKey}" expected byte string for hash, got ${typeof rawValue}`);
323
+ }
324
+ value = bytesToHex(rawValue);
325
+ break;
326
+ }
327
+ case 'A': {
328
+ if (!(rawValue instanceof Uint8Array)) {
329
+ throw new Error(`argument "${rawKey}" expected byte string for address, got ${typeof rawValue}`);
330
+ }
331
+ // 33-byte compressed point; surface as hex (re-encoding to bech32 needs network context).
332
+ value = bytesToHex(rawValue);
333
+ break;
334
+ }
335
+ case 'F':
336
+ case 'T':
337
+ default:
338
+ value = rawValue;
339
+ }
340
+ return {
341
+ name,
342
+ type,
343
+ type_label: typeLabel,
344
+ ...(semanticName ? { semantic_name: semanticName } : {}),
345
+ value: typeof value === 'bigint' ? value.toString() : value,
346
+ };
347
+ }
348
+ function bytesToHex(bytes) {
349
+ let hex = '';
350
+ for (const b of bytes)
351
+ hex += b.toString(16).padStart(2, '0');
352
+ return hex;
353
+ }
354
+ /**
355
+ * Decode a full `deroproof…` / `dero…` / `deroi…` / `deto…` / `detoi…` bech32 string.
356
+ *
357
+ * Mirrors `rpc.NewAddress` from DEROHE: validates HRP, runs 5→8 bit repack,
358
+ * checks version byte, splits compressed point + (optional) CBOR arguments.
359
+ */
360
+ export function decodeDeroBech32(input) {
361
+ const { hrp, data } = bech32Decode(input.trim());
362
+ const validHrps = ['dero', 'deto', 'deroi', 'detoi', 'deroproof'];
363
+ if (!validHrps.includes(hrp)) {
364
+ throw new Error(`invalid HRP "${hrp}" (expected one of ${validHrps.join(', ')})`);
365
+ }
366
+ // 5-bit → 8-bit (no pad), per DEROHE.
367
+ const repacked = convertBits(data, 5, 8, false);
368
+ if (repacked.length < 1)
369
+ throw new Error('decoded payload too short for version byte');
370
+ if (repacked[0] !== 1)
371
+ throw new Error(`invalid address version: ${repacked[0]} (expected 1)`);
372
+ const body = repacked.slice(1);
373
+ if (body.length < 33) {
374
+ throw new Error(`decoded payload too short for compressed point: ${body.length} < 33 bytes`);
375
+ }
376
+ const pointBytes = new Uint8Array(body.slice(0, 33));
377
+ const argBytes = new Uint8Array(body.slice(33));
378
+ const publicKeyHex = bytesToHex(pointBytes);
379
+ const mainnet = hrp === 'dero' || hrp === 'deroi' || hrp === 'deroproof';
380
+ const isProof = hrp === 'deroproof';
381
+ // Plain `dero` / `deto` have no arguments. `deroi` / `detoi` / `deroproof` always do.
382
+ const hasArguments = hrp === 'deroi' || hrp === 'detoi' || hrp === 'deroproof';
383
+ const args = [];
384
+ if (hasArguments) {
385
+ if (argBytes.length === 0) {
386
+ // Some integrated addresses can carry zero-length arguments; treat as empty map.
387
+ }
388
+ else {
389
+ const decoded = cborDecode(argBytes);
390
+ if (typeof decoded !== 'object' || decoded === null || Array.isArray(decoded)) {
391
+ throw new Error(`CBOR root must be a map, got ${typeof decoded}`);
392
+ }
393
+ for (const [k, v] of Object.entries(decoded)) {
394
+ args.push(parseArgumentEntry(k, v));
395
+ }
396
+ }
397
+ }
398
+ const valueTransfer = args.find((a) => a.name === 'V' && a.type === 'U');
399
+ return {
400
+ hrp: hrp,
401
+ mainnet,
402
+ is_proof: isProof,
403
+ public_key_hex: publicKeyHex,
404
+ arguments: args,
405
+ ...(valueTransfer ? { value_transfer_uint64: BigInt(valueTransfer.value) } : {}),
406
+ };
407
+ }
408
+ // ─────────────────────────────────────────────────────────────────────────────
409
+ // Encoders — bech32 + deterministic CBOR
410
+ //
411
+ // Inverse of the decoder block above. Two responsibilities:
412
+ // 1. bech32Encode(hrp, 5-bit data) — checksum + charset mapping (BIP-0173).
413
+ // 2. cborEncode(value) — minimal canonical CBOR for what DERO actually
414
+ // serializes in deroproof argument maps. DEROHE uses
415
+ // cbor.SortCoreDeterministic, so we must:
416
+ // - encode every integer in shortest form
417
+ // - sort map keys by encoded-key bytes (length, then lex)
418
+ // ─────────────────────────────────────────────────────────────────────────────
419
+ function bech32CreateChecksum(hrp, data) {
420
+ const values = [...bech32HrpExpand(hrp), ...data, 0, 0, 0, 0, 0, 0];
421
+ const polymod = bech32Polymod(values) ^ 1;
422
+ const out = [];
423
+ for (let i = 0; i < 6; i++)
424
+ out.push((polymod >>> (5 * (5 - i))) & 31);
425
+ return out;
426
+ }
427
+ /** Encode HRP + 5-bit data array to a bech32 string. Inverse of `bech32Decode`. */
428
+ export function bech32Encode(hrp, data) {
429
+ const checksum = bech32CreateChecksum(hrp, data);
430
+ const combined = [...data, ...checksum];
431
+ let out = hrp + '1';
432
+ for (const v of combined) {
433
+ if (v < 0 || v >= 32)
434
+ throw new Error(`bech32Encode: value out of range ${v}`);
435
+ out += BECH32_CHARSET[v];
436
+ }
437
+ return out;
438
+ }
439
+ // ─────────────────────────────────────────────────────────────────────────────
440
+ // CBOR encoder
441
+ // ─────────────────────────────────────────────────────────────────────────────
442
+ /** Encode `value` as CBOR head (major type + length/value). Always shortest form. */
443
+ function cborEncodeHead(major, value) {
444
+ const mt = major << 5;
445
+ if (value < 0n)
446
+ throw new Error(`cborEncodeHead: negative value ${value}`);
447
+ if (value < 24n)
448
+ return new Uint8Array([mt | Number(value)]);
449
+ if (value < 1n << 8n)
450
+ return new Uint8Array([mt | 24, Number(value)]);
451
+ if (value < 1n << 16n) {
452
+ const v = Number(value);
453
+ return new Uint8Array([mt | 25, (v >>> 8) & 0xff, v & 0xff]);
454
+ }
455
+ if (value < 1n << 32n) {
456
+ const v = Number(value);
457
+ return new Uint8Array([mt | 26, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff]);
458
+ }
459
+ if (value < 1n << 64n) {
460
+ const out = new Uint8Array(9);
461
+ out[0] = mt | 27;
462
+ let v = value;
463
+ for (let i = 8; i >= 1; i--) {
464
+ out[i] = Number(v & 0xffn);
465
+ v >>= 8n;
466
+ }
467
+ return out;
468
+ }
469
+ throw new Error(`cborEncodeHead: value out of uint64 range ${value}`);
470
+ }
471
+ function concatBytes(parts) {
472
+ let total = 0;
473
+ for (const p of parts)
474
+ total += p.length;
475
+ const out = new Uint8Array(total);
476
+ let offset = 0;
477
+ for (const p of parts) {
478
+ out.set(p, offset);
479
+ offset += p.length;
480
+ }
481
+ return out;
482
+ }
483
+ /** Compare two byte sequences lexicographically (shorter first, then bytewise). */
484
+ function compareCanonicalKeys(a, b) {
485
+ if (a.length !== b.length)
486
+ return a.length - b.length;
487
+ for (let i = 0; i < a.length; i++) {
488
+ if (a[i] !== b[i])
489
+ return a[i] - b[i];
490
+ }
491
+ return 0;
492
+ }
493
+ /** Deterministic-CBOR encode a value (RFC 8949 core deterministic). */
494
+ export function cborEncode(value) {
495
+ if (value === null)
496
+ return new Uint8Array([0xf6]);
497
+ if (value === true)
498
+ return new Uint8Array([0xf5]);
499
+ if (value === false)
500
+ return new Uint8Array([0xf4]);
501
+ if (typeof value === 'bigint' || typeof value === 'number') {
502
+ const big = typeof value === 'bigint' ? value : BigInt(value);
503
+ if (big < 0n) {
504
+ // major type 1: negative integer, value = -1 - n → encode n.
505
+ const n = -1n - big;
506
+ return cborEncodeHead(1, n);
507
+ }
508
+ return cborEncodeHead(0, big);
509
+ }
510
+ if (typeof value === 'string') {
511
+ const utf8 = new TextEncoder().encode(value);
512
+ return concatBytes([cborEncodeHead(3, BigInt(utf8.length)), utf8]);
513
+ }
514
+ if (value instanceof Uint8Array) {
515
+ return concatBytes([cborEncodeHead(2, BigInt(value.length)), value]);
516
+ }
517
+ if (Array.isArray(value)) {
518
+ const parts = [cborEncodeHead(4, BigInt(value.length))];
519
+ for (const item of value)
520
+ parts.push(cborEncode(item));
521
+ return concatBytes(parts);
522
+ }
523
+ if (typeof value === 'object') {
524
+ const entries = Object.entries(value).map(([k, v]) => [cborEncode(k), cborEncode(v)]);
525
+ entries.sort((a, b) => compareCanonicalKeys(a[0], b[0]));
526
+ const parts = [cborEncodeHead(5, BigInt(entries.length))];
527
+ for (const [k, v] of entries) {
528
+ parts.push(k);
529
+ parts.push(v);
530
+ }
531
+ return concatBytes(parts);
532
+ }
533
+ throw new Error(`cborEncode: unsupported value type ${typeof value}`);
534
+ }
535
+ // ─────────────────────────────────────────────────────────────────────────────
536
+ // High-level deroproof / deroi encoder
537
+ // ─────────────────────────────────────────────────────────────────────────────
538
+ function hexToBytesLocal(hex) {
539
+ if (hex.length % 2 !== 0)
540
+ throw new Error(`hex: odd length ${hex.length}`);
541
+ const out = new Uint8Array(hex.length / 2);
542
+ for (let i = 0; i < out.length; i++) {
543
+ out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
544
+ }
545
+ return out;
546
+ }
547
+ /**
548
+ * Build a `deroproof…` / `deroi…` / `detoi…` bech32 string from a compressed
549
+ * public-key point (the embedded blinder, for proofs) and a typed argument map.
550
+ *
551
+ * Arguments are passed as a plain object whose keys are `Name + DataType`
552
+ * (e.g. `HH` for hash, `VU` for uint64 value transfer). Values are typed:
553
+ * - `U` / `I`: bigint
554
+ * - `H` / `A`: Uint8Array (32 bytes for hash, 33 for address)
555
+ * - `S`: string
556
+ */
557
+ export function encodeDeroBech32(hrp, pointBytes33, args) {
558
+ if (pointBytes33.length !== 33) {
559
+ throw new Error(`encodeDeroBech32: point must be 33 bytes, got ${pointBytes33.length}`);
560
+ }
561
+ const wantsArgs = hrp === 'deroi' || hrp === 'detoi' || hrp === 'deroproof';
562
+ const argBytes = wantsArgs && args ? cborEncode(args) : new Uint8Array(0);
563
+ const body = new Uint8Array(1 + 33 + argBytes.length);
564
+ body[0] = 1; // version
565
+ body.set(pointBytes33, 1);
566
+ body.set(argBytes, 34);
567
+ const data5 = convertBits(Array.from(body), 8, 5, true);
568
+ return bech32Encode(hrp, data5);
569
+ }
570
+ /**
571
+ * Build a deroproof string for a forged amount. Convenience wrapper around
572
+ * `encodeDeroBech32` that handles the canonical `{HH, VU}` arg shape.
573
+ *
574
+ * HH = 32 zero bytes (the docs forge code uses `crypto.Hash{}` here)
575
+ * VU = uint64 amount
576
+ */
577
+ export function encodeForgeProofString(blinderCompressed33, amountUint64, hrp = 'deroproof') {
578
+ if (amountUint64 < 0n || amountUint64 >= 1n << 64n) {
579
+ throw new Error(`encodeForgeProofString: amount out of uint64 range ${amountUint64}`);
580
+ }
581
+ return encodeDeroBech32(hrp, blinderCompressed33, {
582
+ HH: new Uint8Array(32),
583
+ VU: amountUint64,
584
+ });
585
+ }
586
+ // ─────────────────────────────────────────────────────────────────────────────
587
+ // Round-trip self-tests
588
+ // ─────────────────────────────────────────────────────────────────────────────
589
+ /** Citation: the 2022 inflation-claim payload proof. Used by self-tests. */
590
+ export const CITED_2022_PROOF_STRING = 'deroproof1qyyj0cgu3htmkumr79sgca75vwsx8kx7zkrjg0nfez46w36qyx4kwq9zvfyyskpqvdpcfhkhk4m7y9d77ehyj7yhnnrv9z0tjr9m5fqe2yx9t27dwtdxy4j4r0llll7vcmaxwjcl8jzfq';
591
+ /**
592
+ * Decode the cited 2022 proof string, re-encode it with the **same decoded
593
+ * arguments** (the real H hash, not zeros), and confirm byte-equal output.
594
+ *
595
+ * If this fails, the encoder is not faithful to DERO's canonical CBOR + bech32
596
+ * wire format and forging anything else is unsafe to surface.
597
+ *
598
+ * (The forge path defaults H to 32 zero bytes — see `encodeForgeProofString`.
599
+ * That's correct for the docs-page demo but would not reproduce a real
600
+ * wallet-generated proof, which has a real shared-key hash in H.)
601
+ */
602
+ export function verifyProofEncoderRoundtrip() {
603
+ const decoded = decodeDeroBech32(CITED_2022_PROOF_STRING);
604
+ if (decoded.value_transfer_uint64 === undefined) {
605
+ throw new Error('roundtrip: cited 2022 proof missing V — decoder regression');
606
+ }
607
+ const hArg = decoded.arguments.find((a) => a.name === 'H' && a.type === 'H');
608
+ if (!hArg)
609
+ throw new Error('roundtrip: cited 2022 proof missing H — decoder regression');
610
+ const point = hexToBytesLocal(decoded.public_key_hex);
611
+ const reencoded = encodeDeroBech32('deroproof', point, {
612
+ HH: hexToBytesLocal(hArg.value),
613
+ VU: decoded.value_transfer_uint64,
614
+ });
615
+ if (reencoded !== CITED_2022_PROOF_STRING) {
616
+ throw new Error(`roundtrip: cited 2022 proof mismatch\n in: ${CITED_2022_PROOF_STRING}\n out: ${reencoded}`);
617
+ }
618
+ }
619
+ //# sourceMappingURL=proof-decode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-decode.js","sourceRoot":"","sources":["../src/proof-decode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAmNnE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAwiBpE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA2SnE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAs2BpE"}