@silvana-one/mina-utils 1.0.22 → 1.0.24

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 (54) hide show
  1. package/dist/node/commitment/commitment.d.ts +11 -0
  2. package/dist/node/commitment/commitment.js +72 -0
  3. package/dist/node/commitment/commitment.js.map +1 -0
  4. package/dist/node/commitment/constants.d.ts +11 -0
  5. package/dist/node/commitment/constants.js +3125 -0
  6. package/dist/node/commitment/constants.js.map +1 -0
  7. package/dist/node/commitment/exp.d.ts +5 -0
  8. package/dist/node/commitment/exp.js +106 -0
  9. package/dist/node/commitment/exp.js.map +1 -0
  10. package/dist/node/commitment/index.d.ts +5 -0
  11. package/dist/node/commitment/index.js +6 -0
  12. package/dist/node/commitment/index.js.map +1 -0
  13. package/dist/node/commitment/tree.d.ts +6 -0
  14. package/dist/node/commitment/tree.js +17 -0
  15. package/dist/node/commitment/tree.js.map +1 -0
  16. package/dist/node/commitment/witnesses.d.ts +6 -0
  17. package/dist/node/commitment/witnesses.js +3085 -0
  18. package/dist/node/commitment/witnesses.js.map +1 -0
  19. package/dist/node/index.cjs +12518 -2
  20. package/dist/node/index.d.ts +1 -0
  21. package/dist/node/index.js +1 -0
  22. package/dist/node/index.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/dist/tsconfig.web.tsbuildinfo +1 -1
  25. package/dist/web/commitment/commitment.d.ts +11 -0
  26. package/dist/web/commitment/commitment.js +72 -0
  27. package/dist/web/commitment/commitment.js.map +1 -0
  28. package/dist/web/commitment/constants.d.ts +11 -0
  29. package/dist/web/commitment/constants.js +3125 -0
  30. package/dist/web/commitment/constants.js.map +1 -0
  31. package/dist/web/commitment/exp.d.ts +5 -0
  32. package/dist/web/commitment/exp.js +106 -0
  33. package/dist/web/commitment/exp.js.map +1 -0
  34. package/dist/web/commitment/index.d.ts +5 -0
  35. package/dist/web/commitment/index.js +6 -0
  36. package/dist/web/commitment/index.js.map +1 -0
  37. package/dist/web/commitment/tree.d.ts +6 -0
  38. package/dist/web/commitment/tree.js +17 -0
  39. package/dist/web/commitment/tree.js.map +1 -0
  40. package/dist/web/commitment/witnesses.d.ts +6 -0
  41. package/dist/web/commitment/witnesses.js +3085 -0
  42. package/dist/web/commitment/witnesses.js.map +1 -0
  43. package/dist/web/index.d.ts +1 -0
  44. package/dist/web/index.js +1 -0
  45. package/dist/web/index.js.map +1 -1
  46. package/package.json +5 -5
  47. package/src/commitment/README.md +3 -0
  48. package/src/commitment/commitment.ts +149 -0
  49. package/src/commitment/constants.ts +3135 -0
  50. package/src/commitment/exp.ts +139 -0
  51. package/src/commitment/index.ts +5 -0
  52. package/src/commitment/tree.ts +18 -0
  53. package/src/commitment/witnesses.ts +3088 -0
  54. package/src/index.ts +1 -0
@@ -0,0 +1,11 @@
1
+ import { Field, UInt32 } from "o1js";
2
+ import { Fr } from "./constants.js";
3
+ export type CanonicalElement = InstanceType<typeof Fr.Canonical>;
4
+ export type AlmostReducedElement = InstanceType<typeof Fr.AlmostReduced>;
5
+ export declare const R: CanonicalElement;
6
+ export declare const S: CanonicalElement;
7
+ export declare function scalar(n: bigint): CanonicalElement;
8
+ export declare function blsCommitment(element: CanonicalElement): Field;
9
+ export declare function digestStruct(fields: CanonicalElement[]): AlmostReducedElement;
10
+ export declare function commit(table: AlmostReducedElement[]): AlmostReducedElement;
11
+ export declare function update(oldTableCommitment: AlmostReducedElement, oldStructDigest: AlmostReducedElement, newStructDigest: AlmostReducedElement, index: UInt32): AlmostReducedElement;
@@ -0,0 +1,72 @@
1
+ import { Field } from "o1js";
2
+ import { getR, Fr } from "./constants.js";
3
+ import { rScalarPowProvable } from "./exp.js";
4
+ // Create R constant for ZkProgram use (needs to be available at module level for provable code)
5
+ export const R = getR();
6
+ // ----- constants taken from Move code (big‑endian hex) -----
7
+ export const S = Fr.from(0x1582695da6689f26db7bb3eb32907ecd0ac3af032aefad31a069352705f0d459n);
8
+ const P = Field(20359658106300430391853594957854653514501797417378649347544016260949017072120n);
9
+ const P2 = P.mul(P);
10
+ // ----- helpers -----
11
+ export function scalar(n) {
12
+ return Fr.from(n);
13
+ }
14
+ export function blsCommitment(element) {
15
+ return element.value[0]
16
+ .add(element.value[1].mul(P))
17
+ .add(element.value[1].mul(P2));
18
+ }
19
+ // inner: digest one struct
20
+ export function digestStruct(fields) {
21
+ let d = Fr.from(0n).assertAlmostReduced();
22
+ for (const f of fields) {
23
+ const prod = d.mul(S); // returns Unreduced
24
+ d = prod.add(f).assertAlmostReduced(); // reduce for next iteration
25
+ }
26
+ return d;
27
+ }
28
+ // outer: commit whole table (vector of digests)
29
+ export function commit(table) {
30
+ let acc = Fr.from(0n).assertAlmostReduced();
31
+ const r = getR(); // Get R once, not in every iteration
32
+ // Iterate in reverse order so that table[i] gets coefficient R^i
33
+ for (let i = table.length - 1; i >= 0; i--) {
34
+ const prod = acc.mul(r); // returns Unreduced
35
+ acc = prod.add(table[i]).assertAlmostReduced(); // reduce for next iteration
36
+ }
37
+ return acc;
38
+ }
39
+ // constant‑time single‑field update using struct digest recalculation (non-provable version)
40
+ // export function update(
41
+ // oldTableCommitment: AlmostReducedElement,
42
+ // oldStructDigest: AlmostReducedElement,
43
+ // newStructDigest: AlmostReducedElement,
44
+ // index: number
45
+ // ): AlmostReducedElement {
46
+ // // The table commitment formula in commit() now produces:
47
+ // // table[0]*R^0 + table[1]*R^1 + table[2]*R^2 + ... + table[i]*R^i
48
+ // // So position i has coefficient R^i
49
+ // // Position i has coefficient R^i - use optimized lookup table exponentiation
50
+ // const rPowI = rScalarPow(index).assertCanonical();
51
+ // // Calculate the change: new_commitment = old_commitment + (new_struct - old_struct) * R^i
52
+ // const structDelta = newStructDigest
53
+ // .sub(oldStructDigest)
54
+ // .assertAlmostReduced();
55
+ // const tableDelta = structDelta.mul(rPowI).assertAlmostReduced();
56
+ // return oldTableCommitment.add(tableDelta).assertAlmostReduced();
57
+ // }
58
+ // constant‑time single‑field update using struct digest recalculation (provable version)
59
+ export function update(oldTableCommitment, oldStructDigest, newStructDigest, index) {
60
+ // The table commitment formula in commit() now produces:
61
+ // table[0]*R^0 + table[1]*R^1 + table[2]*R^2 + ... + table[i]*R^i
62
+ // So position i has coefficient R^i
63
+ // Position i has coefficient R^i - use provable lookup table exponentiation
64
+ const rPowI = rScalarPowProvable(index).assertCanonical();
65
+ // Calculate the change: new_commitment = old_commitment + (new_struct - old_struct) * R^i
66
+ const structDelta = newStructDigest
67
+ .sub(oldStructDigest)
68
+ .assertAlmostReduced();
69
+ const tableDelta = structDelta.mul(rPowI).assertAlmostReduced();
70
+ return oldTableCommitment.add(tableDelta).assertAlmostReduced();
71
+ }
72
+ //# sourceMappingURL=commitment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../src/commitment/commitment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { Fr, BLS_FR, TABLE0, TABLE1, TABLE2 };
2
+ declare const BLS_FR = 52435875175126190479447740508185965837690552500527637822603658699938581184513n;
3
+ declare const Fr: typeof import("node_modules/o1js/dist/node/lib/provable/foreign-field.js").UnreducedForeignField;
4
+ type CanonicalElement = InstanceType<typeof Fr.Canonical>;
5
+ export declare function getR(): CanonicalElement;
6
+ export declare function getTable0Entry(index: number): CanonicalElement;
7
+ export declare function getTable1Entry(index: number): CanonicalElement;
8
+ export declare function getTable2Entry(index: number): CanonicalElement;
9
+ declare const TABLE0: readonly bigint[];
10
+ declare const TABLE1: readonly bigint[];
11
+ declare const TABLE2: readonly bigint[];