o1js-pack 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.cjs +1 -1
- package/CHANGELOG.md +5 -0
- package/build/src/lib/PackingPlant.d.ts +8 -0
- package/build/src/lib/PackingPlant.js +14 -0
- package/build/src/lib/PackingPlant.js.map +1 -1
- package/build/src/lib/packed-types/PackedBool.d.ts +6 -0
- package/build/src/lib/packed-types/PackedString.d.ts +12 -0
- package/build/src/lib/packed-types/PackedString.js +3 -3
- package/build/src/lib/packed-types/PackedString.js.map +1 -1
- package/build/src/lib/packed-types/PackedString.test.js +25 -6
- package/build/src/lib/packed-types/PackedString.test.js.map +1 -1
- package/build/src/lib/packed-types/PackedUInt32.d.ts +6 -0
- package/package.json +1 -1
- package/tests/provable/example_packed_string_circuit.ts +3 -3
package/.eslintrc.cjs
CHANGED
package/CHANGELOG.md
ADDED
@@ -1,5 +1,9 @@
|
|
1
1
|
import { Field, InferProvable } from 'o1js';
|
2
2
|
export declare function PackingPlant<A, T extends InferProvable<A> = InferProvable<A>>(elementType: A, l: number, bitSize: bigint): (abstract new (packed: Field) => {
|
3
|
+
/**
|
4
|
+
* @returns array of single Field element which constitute the packed object
|
5
|
+
*/
|
6
|
+
toFields(): Array<Field>;
|
3
7
|
assertEquals(other: any): void;
|
4
8
|
packed: import("o1js/dist/node/lib/field").Field;
|
5
9
|
}) & {
|
@@ -66,6 +70,10 @@ export declare function PackingPlant<A, T extends InferProvable<A> = InferProvab
|
|
66
70
|
};
|
67
71
|
};
|
68
72
|
export declare function MultiPackingPlant<A, T extends InferProvable<A> = InferProvable<A>>(elementType: A, l: number, bitSize: bigint): (abstract new (packed: Array<Field>) => {
|
73
|
+
/**
|
74
|
+
* @returns array of Field elements which constitute the multi-packed object
|
75
|
+
*/
|
76
|
+
toFields(): Array<Field>;
|
69
77
|
assertEquals(other: any): void;
|
70
78
|
packed: import("o1js/dist/node/lib/field").Field[];
|
71
79
|
}) & {
|
@@ -67,6 +67,13 @@ export function PackingPlant(elementType, l, bitSize) {
|
|
67
67
|
}
|
68
68
|
return unpacked;
|
69
69
|
}
|
70
|
+
// NOTE: adding to fields here breaks the proof generation. Probably not overriding it correctly
|
71
|
+
/**
|
72
|
+
* @returns array of single Field element which constitute the packed object
|
73
|
+
*/
|
74
|
+
toFields() {
|
75
|
+
return [this.packed];
|
76
|
+
}
|
70
77
|
assertEquals(other) {
|
71
78
|
this.packed.assertEquals(other.packed);
|
72
79
|
}
|
@@ -176,6 +183,13 @@ export function MultiPackingPlant(elementType, l, bitSize) {
|
|
176
183
|
}
|
177
184
|
return uints_;
|
178
185
|
}
|
186
|
+
// NOTE: adding to fields here breaks the proof generation. Probably not overriding it correctly
|
187
|
+
/**
|
188
|
+
* @returns array of Field elements which constitute the multi-packed object
|
189
|
+
*/
|
190
|
+
toFields() {
|
191
|
+
return this.packed;
|
192
|
+
}
|
179
193
|
assertEquals(other) {
|
180
194
|
for (let x = 0; x < n; x++) {
|
181
195
|
this.packed[x].assertEquals(other.packed[x]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PackingPlant.js","sourceRoot":"","sources":["../../../src/lib/PackingPlant.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"PackingPlant.js","sourceRoot":"","sources":["../../../src/lib/PackingPlant.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EAEN,QAAQ,EAER,QAAQ,GACT,MAAM,MAAM,CAAC;AAEd,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,MAAM,UAAU,YAAY,CAC1B,WAAc,EACd,CAAS,EACT,OAAe;IAEf,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB,EAAE;QAC5C,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;KACH;IACD,MAAe,OAAQ,SAAQ,MAAM,CAAC;QACpC,MAAM,EAAE,KAAK;KACd,CAAC;QAKA,YAAY,MAAa;YACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,MAAM,CAAC,YAAY,CAAC,KAAQ;YAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,UAAU;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAQ;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM;QAEN;;;;WAIG;QACH,MAAM,CAAC,SAAS,CAAC,QAAkB;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,KAAK,CACb,iBAAiB,QAAQ,CAAC,MAAM,oCAAoC,CAAC,EAAE,CACxE,CAAC;aACH;QACH,CAAC;QAED;;;;WAIG;QACH,MAAM,CAAC,IAAI,CAAC,QAAkB;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAClD;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED;;;;WAIG;QACH,MAAM,CAAC,eAAe,CAAC,CAAQ;YAC7B,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC,EAAE;gBACL,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;aACxB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;aAC7C;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzD,OAAO,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;aAC/B;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iGAAiG;QACjG;;WAEG;QACH,QAAQ;YACN,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,YAAY,CAAC,KAAc;YACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;;IAhFM,YAAI,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,SAAC,GAAW,CAAC,CAAC;IACd,eAAO,GAAW,OAAO,CAAC;IAgFnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAG/B,WAAc,EAAE,CAAS,EAAE,OAAe;IAC1C,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,kBAAkB,EAAE;QACjD,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;KACH;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAe,OAAQ,SAAQ,MAAM,CAAC;QACpC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;KACjC,CAAC;QAMA,YAAY,MAAoB;YAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,MAAM,CAAC,YAAY,CAAC,KAAoB;YACtC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,UAAU;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,gBAAgB;YACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAoB;YAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM;QAEN;;;;WAIG;QACH,MAAM,CAAC,SAAS,CAAC,QAAkB;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE;gBAC5B,MAAM,IAAI,KAAK,CACb,iBAAiB,QAAQ,CAAC,MAAM,oCAAoC,CAAC,EAAE,CACxE,CAAC;aACH;QACH,CAAC;QAED;;;;;;;WAOG;QACH,MAAM,CAAC,IAAI,CAAC,QAAkB;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,CAAC,EAAE;oBACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;iBAC5C;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtB,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,KAAK,EAAE;wBACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;qBAC5C;oBACD,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxD,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzB;gBACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED;;;;WAIG;QACH,MAAM,CAAC,eAAe,CAAC,MAAoB;YACzC,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kEAAkE;YAClG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;oBACb,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBAC1B;aACF;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;aACrE;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;aACpD;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;oBAChD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;oBACvD,OAAO,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;iBAC/B;aACF;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,iGAAiG;QACjG;;WAEG;QACH,QAAQ;YACN,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,YAAY,CAAC,KAAc;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;QACH,CAAC;;IApHM,YAAI,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,SAAC,GAAW,CAAC,CAAC;IACd,SAAC,GAAW,CAAC,CAAC;IACd,eAAO,GAAW,OAAO,CAAC;IAmHnC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
@@ -2,7 +2,9 @@ import { Field, Bool } from 'o1js';
|
|
2
2
|
export declare function PackedBoolFactory(l?: number): {
|
3
3
|
new (packed: import("o1js/dist/node/lib/field.js").Field): {
|
4
4
|
toBooleans(): Array<boolean>;
|
5
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
5
6
|
assertEquals(other: {
|
7
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
6
8
|
assertEquals(other: any): void;
|
7
9
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
8
10
|
}): void;
|
@@ -23,7 +25,9 @@ export declare function PackedBoolFactory(l?: number): {
|
|
23
25
|
*/
|
24
26
|
fromBools(bools: Array<Bool>): {
|
25
27
|
toBooleans(): Array<boolean>;
|
28
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
26
29
|
assertEquals(other: {
|
30
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
27
31
|
assertEquals(other: any): void;
|
28
32
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
29
33
|
}): void;
|
@@ -36,7 +40,9 @@ export declare function PackedBoolFactory(l?: number): {
|
|
36
40
|
*/
|
37
41
|
fromBooleans(booleans: Array<boolean>): {
|
38
42
|
toBooleans(): Array<boolean>;
|
43
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
39
44
|
assertEquals(other: {
|
45
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
40
46
|
assertEquals(other: any): void;
|
41
47
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
42
48
|
}): void;
|
@@ -2,7 +2,9 @@ import { Field, Character } from 'o1js';
|
|
2
2
|
export declare function PackedStringFactory(l?: number): {
|
3
3
|
new (packed: import("o1js/dist/node/lib/field.js").Field): {
|
4
4
|
toString(): string;
|
5
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
5
6
|
assertEquals(other: {
|
7
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
6
8
|
assertEquals(other: any): void;
|
7
9
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
8
10
|
}): void;
|
@@ -23,7 +25,9 @@ export declare function PackedStringFactory(l?: number): {
|
|
23
25
|
*/
|
24
26
|
fromCharacters(input: Array<Character>): {
|
25
27
|
toString(): string;
|
28
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
26
29
|
assertEquals(other: {
|
30
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
27
31
|
assertEquals(other: any): void;
|
28
32
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
29
33
|
}): void;
|
@@ -36,7 +40,9 @@ export declare function PackedStringFactory(l?: number): {
|
|
36
40
|
*/
|
37
41
|
fromString(str: string): {
|
38
42
|
toString(): string;
|
43
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
39
44
|
assertEquals(other: {
|
45
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
40
46
|
assertEquals(other: any): void;
|
41
47
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
42
48
|
}): void;
|
@@ -99,7 +105,9 @@ export declare function PackedStringFactory(l?: number): {
|
|
99
105
|
export declare function MultiPackedStringFactory(n?: number): {
|
100
106
|
new (packed: import("o1js/dist/node/lib/field.js").Field[]): {
|
101
107
|
toString(): string;
|
108
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
102
109
|
assertEquals(other: {
|
110
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
103
111
|
assertEquals(other: any): void;
|
104
112
|
packed: import("o1js/dist/node/lib/field.js").Field[];
|
105
113
|
}): void;
|
@@ -121,7 +129,9 @@ export declare function MultiPackedStringFactory(n?: number): {
|
|
121
129
|
*/
|
122
130
|
fromCharacters(input: Array<Character>): {
|
123
131
|
toString(): string;
|
132
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
124
133
|
assertEquals(other: {
|
134
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
125
135
|
assertEquals(other: any): void;
|
126
136
|
packed: import("o1js/dist/node/lib/field.js").Field[];
|
127
137
|
}): void;
|
@@ -134,7 +144,9 @@ export declare function MultiPackedStringFactory(n?: number): {
|
|
134
144
|
*/
|
135
145
|
fromString(str: string): {
|
136
146
|
toString(): string;
|
147
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
137
148
|
assertEquals(other: {
|
149
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
138
150
|
assertEquals(other: any): void;
|
139
151
|
packed: import("o1js/dist/node/lib/field.js").Field[];
|
140
152
|
}): void;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { Field, Provable, Character, Poseidon } from 'o1js';
|
2
2
|
import { PackingPlant, MultiPackingPlant } from '../PackingPlant.js';
|
3
|
-
const SIZE_IN_BITS =
|
4
|
-
const L =
|
5
|
-
const CHARS_PER_FIELD =
|
3
|
+
const SIZE_IN_BITS = 8n;
|
4
|
+
const L = 31; // Default to one-field worth of characters
|
5
|
+
const CHARS_PER_FIELD = 31;
|
6
6
|
export function PackedStringFactory(l = L) {
|
7
7
|
class PackedString_ extends PackingPlant(Character, l, SIZE_IN_BITS) {
|
8
8
|
static extractField(input) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PackedString.js","sourceRoot":"","sources":["../../../../src/lib/packed-types/PackedString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,YAAY,GAAG,
|
1
|
+
{"version":3,"file":"PackedString.js","sourceRoot":"","sources":["../../../../src/lib/packed-types/PackedString.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import { Character, Provable } from 'o1js';
|
1
|
+
import { Character, Field, Provable } from 'o1js';
|
2
2
|
import { PackedStringFactory, MultiPackedStringFactory } from './PackedString';
|
3
3
|
describe('PackedString', () => {
|
4
4
|
describe('Outside of the Circuit', () => {
|
5
5
|
const vitalik_dot_eth = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
|
6
|
-
class EthAddressString extends MultiPackedStringFactory(
|
6
|
+
class EthAddressString extends MultiPackedStringFactory(2) {
|
7
7
|
}
|
8
8
|
let characters = [];
|
9
9
|
beforeEach(() => {
|
@@ -23,15 +23,34 @@ describe('PackedString', () => {
|
|
23
23
|
it('#pack and #unPack', () => {
|
24
24
|
const unpacked = EthAddressString.unpack(EthAddressString.fromCharacters(characters).packed);
|
25
25
|
const packed = EthAddressString.pack(unpacked);
|
26
|
-
expect(packed.length).toBe(Math.ceil(vitalik_dot_eth.length /
|
26
|
+
expect(packed.length).toBe(Math.ceil(vitalik_dot_eth.length / 31));
|
27
27
|
expect(unpacked.length).toBe(EthAddressString.l);
|
28
|
-
expect(unpacked.length).toBe(
|
28
|
+
expect(unpacked.length).toBe(62);
|
29
29
|
expect(unpacked.slice(0, characters.length).toString()).toBe(characters.toString());
|
30
30
|
});
|
31
|
+
it('#toFields', () => {
|
32
|
+
class Single extends PackedStringFactory() {
|
33
|
+
}
|
34
|
+
class Double extends MultiPackedStringFactory(2) {
|
35
|
+
}
|
36
|
+
const abbaPacked = '1633837665';
|
37
|
+
expect(Single.fromString('abba').toFields().toString()).toBe([Single.fromString('abba').packed].toString());
|
38
|
+
expect(Single.fromString('abba').toFields().toString()).toBe(abbaPacked);
|
39
|
+
expect(Single.unpack(Field(abbaPacked)).slice(0, 4).join('').toString()).toBe('abba');
|
40
|
+
const abbaAlot = 'abba'.repeat(10);
|
41
|
+
const abbaAlotPacked1 = '173830008860859097861870638220020642754739197069143560335286125952244015713';
|
42
|
+
const abbaAlotPacked2 = '1796423510984151425377';
|
43
|
+
expect(Double.fromString(abbaAlot).toFields().toString()).toBe([Double.fromString(abbaAlot).packed].toString());
|
44
|
+
expect(Double.fromString(abbaAlot).toFields().toString()).toBe(abbaAlotPacked1 + ',' + abbaAlotPacked2);
|
45
|
+
expect(Double.unpack([Field(abbaAlotPacked1), Field(abbaAlotPacked2)])
|
46
|
+
.slice(0, 40)
|
47
|
+
.join('')
|
48
|
+
.toString()).toBe(abbaAlot);
|
49
|
+
});
|
31
50
|
});
|
32
51
|
describe('Provable Properties', () => {
|
33
52
|
it('#sizeInFields', () => {
|
34
|
-
class one extends PackedStringFactory(
|
53
|
+
class one extends PackedStringFactory(31) {
|
35
54
|
}
|
36
55
|
class two extends MultiPackedStringFactory(2) {
|
37
56
|
}
|
@@ -59,7 +78,7 @@ describe('PackedString', () => {
|
|
59
78
|
}).toThrow();
|
60
79
|
});
|
61
80
|
it('Exceeds maximum size string', () => {
|
62
|
-
const tooLong = 'too long!'.repeat(
|
81
|
+
const tooLong = 'too long!'.repeat(50);
|
63
82
|
class MaxString extends MultiPackedStringFactory(8) {
|
64
83
|
}
|
65
84
|
expect(() => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PackedString.test.js","sourceRoot":"","sources":["../../../../src/lib/packed-types/PackedString.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
1
|
+
{"version":3,"file":"PackedString.test.js","sourceRoot":"","sources":["../../../../src/lib/packed-types/PackedString.test.ts"],"names":[],"mappings":"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"}
|
@@ -2,7 +2,9 @@ import { Field, UInt32 } from 'o1js';
|
|
2
2
|
export declare function PackedUInt32Factory(l?: number): {
|
3
3
|
new (packed: import("o1js/dist/node/lib/field.js").Field): {
|
4
4
|
toBigInts(): Array<bigint>;
|
5
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
5
6
|
assertEquals(other: {
|
7
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
6
8
|
assertEquals(other: any): void;
|
7
9
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
8
10
|
}): void;
|
@@ -23,7 +25,9 @@ export declare function PackedUInt32Factory(l?: number): {
|
|
23
25
|
*/
|
24
26
|
fromUInt32s(uint32s: Array<UInt32>): {
|
25
27
|
toBigInts(): Array<bigint>;
|
28
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
26
29
|
assertEquals(other: {
|
30
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
27
31
|
assertEquals(other: any): void;
|
28
32
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
29
33
|
}): void;
|
@@ -36,7 +40,9 @@ export declare function PackedUInt32Factory(l?: number): {
|
|
36
40
|
*/
|
37
41
|
fromBigInts(bigints: Array<bigint>): {
|
38
42
|
toBigInts(): Array<bigint>;
|
43
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
39
44
|
assertEquals(other: {
|
45
|
+
toFields(): import("o1js/dist/node/lib/field.js").Field[];
|
40
46
|
assertEquals(other: any): void;
|
41
47
|
packed: import("o1js/dist/node/lib/field.js").Field;
|
42
48
|
}): void;
|
package/package.json
CHANGED
@@ -6,9 +6,9 @@ import {
|
|
6
6
|
Provable,
|
7
7
|
Field,
|
8
8
|
} from 'o1js';
|
9
|
-
import {
|
9
|
+
import { PackedStringFactory } from '../../src/lib/packed-types/PackedString';
|
10
10
|
|
11
|
-
export class TextInput extends
|
11
|
+
export class TextInput extends PackedStringFactory() {}
|
12
12
|
|
13
13
|
export const TextInputProgram = ZkProgram({
|
14
14
|
name: 'TextInputProgram',
|
@@ -23,7 +23,7 @@ export const TextInputProgram = ZkProgram({
|
|
23
23
|
},
|
24
24
|
},
|
25
25
|
changeFirstLetter: {
|
26
|
-
privateInputs: [SelfProof, Provable.Array(Character,
|
26
|
+
privateInputs: [SelfProof, Provable.Array(Character, 31), Character],
|
27
27
|
method(
|
28
28
|
newState: TextInput,
|
29
29
|
oldProof: SelfProof<TextInput, TextInput>,
|