@aztec/simulator 5.0.0-nightly.20260522 → 5.0.0-nightly.20260523
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.
|
@@ -14,4 +14,4 @@ export declare class EcAdd extends Instruction {
|
|
|
14
14
|
constructor(addressingMode: number, p1XOffset: number, p1YOffset: number, p2XOffset: number, p2YOffset: number, dstOffset: number);
|
|
15
15
|
execute(context: AvmContext): Promise<void>;
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNfYWRkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9vcGNvZGVzL2VjX2FkZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxxQkFBYSxLQUFNLFNBQVEsV0FBVztJQWdCbEMsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLFNBQVM7SUFwQm5CLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFXO0lBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxnQkFBZ0I7SUFHdEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBUXZDO0lBRUYsWUFDVSxjQUFjLEVBQUUsTUFBTSxFQUN0QixTQUFTLEVBQUUsTUFBTSxFQUNqQixTQUFTLEVBQUUsTUFBTSxFQUNqQixTQUFTLEVBQUUsTUFBTSxFQUNqQixTQUFTLEVBQUUsTUFBTSxFQUNqQixTQUFTLEVBQUUsTUFBTSxFQUcxQjtJQUVZLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FnRHZEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ec_add.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/ec_add.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,KAAM,SAAQ,WAAW;IAgBlC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IApBnB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAGtC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAQvC;IAEF,YACU,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAG1B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ec_add.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/ec_add.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,KAAM,SAAQ,WAAW;IAgBlC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IApBnB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAGtC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAQvC;IAEF,YACU,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAG1B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDvD;CACF"}
|
|
@@ -42,35 +42,29 @@ export class EcAdd extends Instruction {
|
|
|
42
42
|
memory.checkTags(TypeTag.FIELD, p1XOffset, p1YOffset, p2XOffset, p2YOffset);
|
|
43
43
|
const p1X = memory.get(p1XOffset);
|
|
44
44
|
const p1Y = memory.get(p1YOffset);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
const p1IsInfinite = p1XFr.isZero() && p1YFr.isZero();
|
|
48
|
-
const p1 = new Point(p1XFr, p1YFr, p1IsInfinite);
|
|
49
|
-
if (!p1.isOnGrumpkin()) {
|
|
45
|
+
const p1 = new Point(p1X.toFr(), p1Y.toFr());
|
|
46
|
+
if (!p1.isOnCurve()) {
|
|
50
47
|
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 1, p1);
|
|
51
48
|
}
|
|
52
49
|
const p2X = memory.get(p2XOffset);
|
|
53
50
|
const p2Y = memory.get(p2YOffset);
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const p2IsInfinite = p2XFr.isZero() && p2YFr.isZero();
|
|
57
|
-
const p2 = new Point(p2XFr, p2YFr, p2IsInfinite);
|
|
58
|
-
if (!p2.isOnGrumpkin()) {
|
|
51
|
+
const p2 = new Point(p2X.toFr(), p2Y.toFr());
|
|
52
|
+
if (!p2.isOnCurve()) {
|
|
59
53
|
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 2, p2);
|
|
60
54
|
}
|
|
61
55
|
let dest;
|
|
62
|
-
if (
|
|
63
|
-
dest = Point.
|
|
64
|
-
} else if (
|
|
56
|
+
if (p1.isInfinite && p2.isInfinite) {
|
|
57
|
+
dest = Point.INFINITY;
|
|
58
|
+
} else if (p1.isInfinite) {
|
|
65
59
|
dest = p2;
|
|
66
|
-
} else if (
|
|
60
|
+
} else if (p2.isInfinite) {
|
|
67
61
|
dest = p1;
|
|
68
62
|
} else {
|
|
69
63
|
// TS<>BB ecc add communication is broken for points that add up to infinity.
|
|
70
64
|
// However, here we know that both points are on the curve, and that none is infinity
|
|
71
65
|
// so we can check for the case where you add p + (-p) = infinity.
|
|
72
66
|
if (p1.x.equals(p2.x) && !p1.y.equals(p2.y)) {
|
|
73
|
-
dest = Point.
|
|
67
|
+
dest = Point.INFINITY;
|
|
74
68
|
} else {
|
|
75
69
|
dest = await Grumpkin.add(p1, p2);
|
|
76
70
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "5.0.0-nightly.
|
|
3
|
+
"version": "5.0.0-nightly.20260523",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -64,25 +64,25 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "5.0.0-nightly.
|
|
68
|
-
"@aztec/foundation": "5.0.0-nightly.
|
|
69
|
-
"@aztec/native": "5.0.0-nightly.
|
|
70
|
-
"@aztec/noir-acvm_js": "5.0.0-nightly.
|
|
71
|
-
"@aztec/noir-noirc_abi": "5.0.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.
|
|
73
|
-
"@aztec/noir-types": "5.0.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "5.0.0-nightly.
|
|
75
|
-
"@aztec/stdlib": "5.0.0-nightly.
|
|
76
|
-
"@aztec/telemetry-client": "5.0.0-nightly.
|
|
77
|
-
"@aztec/world-state": "5.0.0-nightly.
|
|
67
|
+
"@aztec/constants": "5.0.0-nightly.20260523",
|
|
68
|
+
"@aztec/foundation": "5.0.0-nightly.20260523",
|
|
69
|
+
"@aztec/native": "5.0.0-nightly.20260523",
|
|
70
|
+
"@aztec/noir-acvm_js": "5.0.0-nightly.20260523",
|
|
71
|
+
"@aztec/noir-noirc_abi": "5.0.0-nightly.20260523",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.20260523",
|
|
73
|
+
"@aztec/noir-types": "5.0.0-nightly.20260523",
|
|
74
|
+
"@aztec/protocol-contracts": "5.0.0-nightly.20260523",
|
|
75
|
+
"@aztec/stdlib": "5.0.0-nightly.20260523",
|
|
76
|
+
"@aztec/telemetry-client": "5.0.0-nightly.20260523",
|
|
77
|
+
"@aztec/world-state": "5.0.0-nightly.20260523",
|
|
78
78
|
"lodash.clonedeep": "^4.5.0",
|
|
79
79
|
"lodash.merge": "^4.6.2",
|
|
80
80
|
"tslib": "^2.4.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@aztec/kv-store": "5.0.0-nightly.
|
|
84
|
-
"@aztec/noir-contracts.js": "5.0.0-nightly.
|
|
85
|
-
"@aztec/noir-test-contracts.js": "5.0.0-nightly.
|
|
83
|
+
"@aztec/kv-store": "5.0.0-nightly.20260523",
|
|
84
|
+
"@aztec/noir-contracts.js": "5.0.0-nightly.20260523",
|
|
85
|
+
"@aztec/noir-test-contracts.js": "5.0.0-nightly.20260523",
|
|
86
86
|
"@jest/globals": "^30.0.0",
|
|
87
87
|
"@types/jest": "^30.0.0",
|
|
88
88
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -49,37 +49,31 @@ export class EcAdd extends Instruction {
|
|
|
49
49
|
|
|
50
50
|
const p1X = memory.get(p1XOffset);
|
|
51
51
|
const p1Y = memory.get(p1YOffset);
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
const p1IsInfinite = p1XFr.isZero() && p1YFr.isZero();
|
|
55
|
-
const p1 = new Point(p1XFr, p1YFr, p1IsInfinite);
|
|
56
|
-
if (!p1.isOnGrumpkin()) {
|
|
52
|
+
const p1 = new Point(p1X.toFr(), p1Y.toFr());
|
|
53
|
+
if (!p1.isOnCurve()) {
|
|
57
54
|
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 1, p1);
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
const p2X = memory.get(p2XOffset);
|
|
61
58
|
const p2Y = memory.get(p2YOffset);
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
const p2IsInfinite = p2XFr.isZero() && p2YFr.isZero();
|
|
65
|
-
const p2 = new Point(p2XFr, p2YFr, p2IsInfinite);
|
|
66
|
-
if (!p2.isOnGrumpkin()) {
|
|
59
|
+
const p2 = new Point(p2X.toFr(), p2Y.toFr());
|
|
60
|
+
if (!p2.isOnCurve()) {
|
|
67
61
|
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 2, p2);
|
|
68
62
|
}
|
|
69
63
|
|
|
70
64
|
let dest;
|
|
71
|
-
if (
|
|
72
|
-
dest = Point.
|
|
73
|
-
} else if (
|
|
65
|
+
if (p1.isInfinite && p2.isInfinite) {
|
|
66
|
+
dest = Point.INFINITY;
|
|
67
|
+
} else if (p1.isInfinite) {
|
|
74
68
|
dest = p2;
|
|
75
|
-
} else if (
|
|
69
|
+
} else if (p2.isInfinite) {
|
|
76
70
|
dest = p1;
|
|
77
71
|
} else {
|
|
78
72
|
// TS<>BB ecc add communication is broken for points that add up to infinity.
|
|
79
73
|
// However, here we know that both points are on the curve, and that none is infinity
|
|
80
74
|
// so we can check for the case where you add p + (-p) = infinity.
|
|
81
75
|
if (p1.x.equals(p2.x) && !p1.y.equals(p2.y)) {
|
|
82
|
-
dest = Point.
|
|
76
|
+
dest = Point.INFINITY;
|
|
83
77
|
} else {
|
|
84
78
|
dest = await Grumpkin.add(p1, p2);
|
|
85
79
|
}
|