@aztec/pxe 3.0.0-nightly.20251202 → 3.0.0-nightly.20251203
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/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +1 -4
- package/package.json +16 -16
- package/src/private_kernel/private_kernel_execution_prover.ts +0 -4
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts +0 -3
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +0 -48
- package/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +0 -173
|
@@ -41,4 +41,4 @@ export declare class PrivateKernelExecutionProver {
|
|
|
41
41
|
private getVkData;
|
|
42
42
|
private createPrivateCallData;
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9rZXJuZWxfZXhlY3V0aW9uX3Byb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGVfa2VybmVsL3ByaXZhdGVfa2VybmVsX2V4ZWN1dGlvbl9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBUUwsS0FBSyxpQ0FBaUMsRUFLdEMsS0FBSyxvQ0FBb0MsRUFFMUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBRUwsS0FBSyxzQkFBc0IsRUFDM0IsU0FBUyxFQUlWLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVN0RSxNQUFNLFdBQVcsa0NBQWtDO0lBQ2pELFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDbEIsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO0lBQzVCLFdBQVcsRUFBRSxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztDQUM1RDtBQUVEOzs7OztHQUtHO0FBQ0gscUJBQWEsNEJBQTRCO0lBSXJDLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLFVBQVU7SUFMcEIsT0FBTyxDQUFDLEdBQUcsQ0FBdUQ7SUFFbEUsWUFDVSxNQUFNLEVBQUUsbUJBQW1CLEVBQzNCLFlBQVksRUFBRSxtQkFBbUIsRUFDakMsVUFBVSxVQUFRLEVBQ3hCO0lBRUo7Ozs7Ozs7Ozs7T0FVRztJQUNHLGdCQUFnQixDQUNwQixTQUFTLEVBQUUsU0FBUyxFQUNwQixlQUFlLEVBQUUsc0JBQXNCLEVBQ3ZDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxHQUFFLGtDQUk5QyxHQUNBLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBcVJsRjtJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLHVCQUF1QjtZQW9CakIsU0FBUztZQVNULHFCQUFxQjtDQStCcEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_kernel_execution_prover.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_execution_prover.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAQL,KAAK,iCAAiC,EAKtC,KAAK,oCAAoC,EAE1C,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,sBAAsB,EAC3B,SAAS,EAIV,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"private_kernel_execution_prover.d.ts","sourceRoot":"","sources":["../../src/private_kernel/private_kernel_execution_prover.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAQL,KAAK,iCAAiC,EAKtC,KAAK,oCAAoC,EAE1C,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,sBAAsB,EAC3B,SAAS,EAIV,MAAM,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAStE,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;CAC5D;AAED;;;;;GAKG;AACH,qBAAa,4BAA4B;IAIrC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,GAAG,CAAuD;IAElE,YACU,MAAM,EAAE,mBAAmB,EAC3B,YAAY,EAAE,mBAAmB,EACjC,UAAU,UAAQ,EACxB;IAEJ;;;;;;;;;;OAUG;IACG,gBAAgB,CACpB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,sBAAsB,EACvC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAE,kCAI9C,GACA,OAAO,CAAC,iCAAiC,CAAC,oCAAoC,CAAC,CAAC,CAqRlF;IAED;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;YAoBjB,SAAS;YAST,qBAAqB;CA+BpC"}
|
|
@@ -11,7 +11,6 @@ import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
|
11
11
|
import { collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
12
12
|
import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks';
|
|
13
13
|
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
14
|
-
import { computeSideEffectUniquenessHints } from './hints/compute_side_effect_uniqueness_hints.js';
|
|
15
14
|
const NULL_SIMULATE_OUTPUT = {
|
|
16
15
|
publicInputs: PrivateKernelCircuitPublicInputs.empty(),
|
|
17
16
|
verificationKey: VerificationKeyData.empty(),
|
|
@@ -271,7 +270,6 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
271
270
|
const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(currentContractClassId, functionSelector);
|
|
272
271
|
const { artifactHash: contractClassArtifactHash, publicBytecodeCommitment: contractClassPublicBytecodeCommitment } = await this.oracle.getContractClassIdPreimage(currentContractClassId);
|
|
273
272
|
const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
|
|
274
|
-
const sideEffectUniquenessHints = computeSideEffectUniquenessHints(publicInputs);
|
|
275
273
|
return PrivateCallData.from({
|
|
276
274
|
publicInputs,
|
|
277
275
|
vk,
|
|
@@ -282,8 +280,7 @@ const NULL_SIMULATE_OUTPUT = {
|
|
|
282
280
|
saltedInitializationHash,
|
|
283
281
|
functionLeafMembershipWitness,
|
|
284
282
|
updatedClassIdHints
|
|
285
|
-
})
|
|
286
|
-
sideEffectUniquenessHints
|
|
283
|
+
})
|
|
287
284
|
});
|
|
288
285
|
}
|
|
289
286
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/pxe",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251203",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/entrypoints/server/index.js",
|
|
@@ -61,19 +61,19 @@
|
|
|
61
61
|
]
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@aztec/bb-prover": "3.0.0-nightly.
|
|
65
|
-
"@aztec/bb.js": "3.0.0-nightly.
|
|
66
|
-
"@aztec/builder": "3.0.0-nightly.
|
|
67
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
68
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
69
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
70
|
-
"@aztec/key-store": "3.0.0-nightly.
|
|
71
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
73
|
-
"@aztec/noir-types": "3.0.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
75
|
-
"@aztec/simulator": "3.0.0-nightly.
|
|
76
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
64
|
+
"@aztec/bb-prover": "3.0.0-nightly.20251203",
|
|
65
|
+
"@aztec/bb.js": "3.0.0-nightly.20251203",
|
|
66
|
+
"@aztec/builder": "3.0.0-nightly.20251203",
|
|
67
|
+
"@aztec/constants": "3.0.0-nightly.20251203",
|
|
68
|
+
"@aztec/ethereum": "3.0.0-nightly.20251203",
|
|
69
|
+
"@aztec/foundation": "3.0.0-nightly.20251203",
|
|
70
|
+
"@aztec/key-store": "3.0.0-nightly.20251203",
|
|
71
|
+
"@aztec/kv-store": "3.0.0-nightly.20251203",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251203",
|
|
73
|
+
"@aztec/noir-types": "3.0.0-nightly.20251203",
|
|
74
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251203",
|
|
75
|
+
"@aztec/simulator": "3.0.0-nightly.20251203",
|
|
76
|
+
"@aztec/stdlib": "3.0.0-nightly.20251203",
|
|
77
77
|
"koa": "^2.16.1",
|
|
78
78
|
"koa-router": "^13.1.1",
|
|
79
79
|
"lodash.omit": "^4.5.0",
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@aztec/merkle-tree": "3.0.0-nightly.
|
|
86
|
-
"@aztec/noir-test-contracts.js": "3.0.0-nightly.
|
|
85
|
+
"@aztec/merkle-tree": "3.0.0-nightly.20251203",
|
|
86
|
+
"@aztec/noir-test-contracts.js": "3.0.0-nightly.20251203",
|
|
87
87
|
"@jest/globals": "^30.0.0",
|
|
88
88
|
"@types/jest": "^30.0.0",
|
|
89
89
|
"@types/lodash.omit": "^4.5.7",
|
|
@@ -35,7 +35,6 @@ import {
|
|
|
35
35
|
import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks';
|
|
36
36
|
|
|
37
37
|
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
38
|
-
import { computeSideEffectUniquenessHints } from './hints/compute_side_effect_uniqueness_hints.js';
|
|
39
38
|
import type { PrivateKernelOracle } from './private_kernel_oracle.js';
|
|
40
39
|
|
|
41
40
|
const NULL_SIMULATE_OUTPUT: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs> = {
|
|
@@ -417,8 +416,6 @@ export class PrivateKernelExecutionProver {
|
|
|
417
416
|
|
|
418
417
|
const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
|
|
419
418
|
|
|
420
|
-
const sideEffectUniquenessHints = computeSideEffectUniquenessHints(publicInputs);
|
|
421
|
-
|
|
422
419
|
return PrivateCallData.from({
|
|
423
420
|
publicInputs,
|
|
424
421
|
vk,
|
|
@@ -430,7 +427,6 @@ export class PrivateKernelExecutionProver {
|
|
|
430
427
|
functionLeafMembershipWitness,
|
|
431
428
|
updatedClassIdHints,
|
|
432
429
|
}),
|
|
433
|
-
sideEffectUniquenessHints,
|
|
434
430
|
});
|
|
435
431
|
}
|
|
436
432
|
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { type PrivateCircuitPublicInputs, SideEffectUniquenessHints } from '@aztec/stdlib/kernel';
|
|
2
|
-
export declare function computeSideEffectUniquenessHints(publicInputs: PrivateCircuitPublicInputs): SideEffectUniquenessHints;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZV9zaWRlX2VmZmVjdF91bmlxdWVuZXNzX2hpbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpdmF0ZV9rZXJuZWwvaGludHMvY29tcHV0ZV9zaWRlX2VmZmVjdF91bmlxdWVuZXNzX2hpbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxPQUFPLEVBR0wsS0FBSywwQkFBMEIsRUFFL0IseUJBQXlCLEVBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsd0JBQWdCLGdDQUFnQyxDQUFDLFlBQVksRUFBRSwwQkFBMEIsR0FBRyx5QkFBeUIsQ0F3SHBIIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compute_side_effect_uniqueness_hints.d.ts","sourceRoot":"","sources":["../../../src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,0BAA0B,EAE/B,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,0BAA0B,GAAG,yBAAyB,CAwHpH"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, GLOBAL_INDEX_NOTE_HASH_OFFSET, GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, GLOBAL_INDEX_NULLIFIER_OFFSET, GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, GLOBAL_INDEX_PRIVATE_LOG_OFFSET, GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL } from '@aztec/constants';
|
|
2
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
-
import { SideEffectCounterRange, SideEffectUniquenessHints } from '@aztec/stdlib/kernel';
|
|
5
|
-
export function computeSideEffectUniquenessHints(publicInputs) {
|
|
6
|
-
let sideEffectRanges = [];
|
|
7
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.noteHashReadRequests, GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, createRangeFromCountedItem));
|
|
8
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.nullifierReadRequests, GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, createRangeFromCountedItem));
|
|
9
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.noteHashes, GLOBAL_INDEX_NOTE_HASH_OFFSET, createRangeFromCountedItem));
|
|
10
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.nullifiers, GLOBAL_INDEX_NULLIFIER_OFFSET, createRangeFromCountedItem));
|
|
11
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.privateCallRequests, GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, createRangeFromPrivateCallRequest));
|
|
12
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.publicCallRequests, GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, createRangeFromCountedItem));
|
|
13
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.l2ToL1Msgs, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, createRangeFromCountedItem));
|
|
14
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.privateLogs, GLOBAL_INDEX_PRIVATE_LOG_OFFSET, createRangeFromCountedItem));
|
|
15
|
-
sideEffectRanges = sideEffectRanges.concat(createRangesFromClaimedLengthArray(publicInputs.contractClassLogsHashes, GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, createRangeFromCountedItem));
|
|
16
|
-
sideEffectRanges.sort((a, b)=>a.start - b.start);
|
|
17
|
-
const sideEffectRangeIndices = makeTuple(TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, ()=>0);
|
|
18
|
-
for(let i = 0; i < sideEffectRanges.length; i++){
|
|
19
|
-
const range = sideEffectRanges[i];
|
|
20
|
-
sideEffectRangeIndices[range.sideEffectGlobalIndex] = i;
|
|
21
|
-
}
|
|
22
|
-
const hints = SideEffectUniquenessHints.from({
|
|
23
|
-
sideEffectRanges: padArrayEnd(sideEffectRanges, SideEffectCounterRange.empty(), TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL),
|
|
24
|
-
noteHashReadRequestIndices: makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET]),
|
|
25
|
-
nullifierReadRequestIndices: makeTuple(MAX_NULLIFIER_READ_REQUESTS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET]),
|
|
26
|
-
noteHashesIndices: makeTuple(MAX_NOTE_HASHES_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_OFFSET]),
|
|
27
|
-
nullifiersIndices: makeTuple(MAX_NULLIFIERS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_OFFSET]),
|
|
28
|
-
privateCallRequestsIndices: makeTuple(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET]),
|
|
29
|
-
publicCallRequestsIndices: makeTuple(MAX_ENQUEUED_CALLS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET]),
|
|
30
|
-
l2ToL1MsgsIndices: makeTuple(MAX_L2_TO_L1_MSGS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET]),
|
|
31
|
-
privateLogsIndices: makeTuple(MAX_PRIVATE_LOGS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_LOG_OFFSET]),
|
|
32
|
-
contractClassLogsHashesIndices: makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_CALL, (i)=>sideEffectRangeIndices[i + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET])
|
|
33
|
-
});
|
|
34
|
-
return hints;
|
|
35
|
-
}
|
|
36
|
-
function createRangesFromClaimedLengthArray(array, globalIndexOffset, rangeConstructor) {
|
|
37
|
-
const ranges = [];
|
|
38
|
-
for(let i = 0; i < array.claimedLength; i++){
|
|
39
|
-
ranges.push(rangeConstructor(array.array[i], globalIndexOffset + i));
|
|
40
|
-
}
|
|
41
|
-
return ranges;
|
|
42
|
-
}
|
|
43
|
-
function createRangeFromCountedItem(item, globalIndex) {
|
|
44
|
-
return new SideEffectCounterRange(item.counter, item.counter, globalIndex);
|
|
45
|
-
}
|
|
46
|
-
function createRangeFromPrivateCallRequest(item, globalIndex) {
|
|
47
|
-
return new SideEffectCounterRange(item.startSideEffectCounter, item.endSideEffectCounter, globalIndex);
|
|
48
|
-
}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET,
|
|
3
|
-
GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET,
|
|
4
|
-
GLOBAL_INDEX_NOTE_HASH_OFFSET,
|
|
5
|
-
GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET,
|
|
6
|
-
GLOBAL_INDEX_NULLIFIER_OFFSET,
|
|
7
|
-
GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET,
|
|
8
|
-
GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET,
|
|
9
|
-
GLOBAL_INDEX_PRIVATE_LOG_OFFSET,
|
|
10
|
-
GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET,
|
|
11
|
-
MAX_CONTRACT_CLASS_LOGS_PER_CALL,
|
|
12
|
-
MAX_ENQUEUED_CALLS_PER_CALL,
|
|
13
|
-
MAX_L2_TO_L1_MSGS_PER_CALL,
|
|
14
|
-
MAX_NOTE_HASHES_PER_CALL,
|
|
15
|
-
MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,
|
|
16
|
-
MAX_NULLIFIERS_PER_CALL,
|
|
17
|
-
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
18
|
-
MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,
|
|
19
|
-
MAX_PRIVATE_LOGS_PER_CALL,
|
|
20
|
-
TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL,
|
|
21
|
-
} from '@aztec/constants';
|
|
22
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
23
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
24
|
-
import type { Serializable } from '@aztec/foundation/serialize';
|
|
25
|
-
import {
|
|
26
|
-
ClaimedLengthArray,
|
|
27
|
-
PrivateCallRequest,
|
|
28
|
-
type PrivateCircuitPublicInputs,
|
|
29
|
-
SideEffectCounterRange,
|
|
30
|
-
SideEffectUniquenessHints,
|
|
31
|
-
} from '@aztec/stdlib/kernel';
|
|
32
|
-
|
|
33
|
-
export function computeSideEffectUniquenessHints(publicInputs: PrivateCircuitPublicInputs): SideEffectUniquenessHints {
|
|
34
|
-
let sideEffectRanges: SideEffectCounterRange[] = [];
|
|
35
|
-
|
|
36
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
37
|
-
createRangesFromClaimedLengthArray(
|
|
38
|
-
publicInputs.noteHashReadRequests,
|
|
39
|
-
GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET,
|
|
40
|
-
createRangeFromCountedItem,
|
|
41
|
-
),
|
|
42
|
-
);
|
|
43
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
44
|
-
createRangesFromClaimedLengthArray(
|
|
45
|
-
publicInputs.nullifierReadRequests,
|
|
46
|
-
GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET,
|
|
47
|
-
createRangeFromCountedItem,
|
|
48
|
-
),
|
|
49
|
-
);
|
|
50
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
51
|
-
createRangesFromClaimedLengthArray(
|
|
52
|
-
publicInputs.noteHashes,
|
|
53
|
-
GLOBAL_INDEX_NOTE_HASH_OFFSET,
|
|
54
|
-
createRangeFromCountedItem,
|
|
55
|
-
),
|
|
56
|
-
);
|
|
57
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
58
|
-
createRangesFromClaimedLengthArray(
|
|
59
|
-
publicInputs.nullifiers,
|
|
60
|
-
GLOBAL_INDEX_NULLIFIER_OFFSET,
|
|
61
|
-
createRangeFromCountedItem,
|
|
62
|
-
),
|
|
63
|
-
);
|
|
64
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
65
|
-
createRangesFromClaimedLengthArray(
|
|
66
|
-
publicInputs.privateCallRequests,
|
|
67
|
-
GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET,
|
|
68
|
-
createRangeFromPrivateCallRequest,
|
|
69
|
-
),
|
|
70
|
-
);
|
|
71
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
72
|
-
createRangesFromClaimedLengthArray(
|
|
73
|
-
publicInputs.publicCallRequests,
|
|
74
|
-
GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET,
|
|
75
|
-
createRangeFromCountedItem,
|
|
76
|
-
),
|
|
77
|
-
);
|
|
78
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
79
|
-
createRangesFromClaimedLengthArray(
|
|
80
|
-
publicInputs.l2ToL1Msgs,
|
|
81
|
-
GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET,
|
|
82
|
-
createRangeFromCountedItem,
|
|
83
|
-
),
|
|
84
|
-
);
|
|
85
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
86
|
-
createRangesFromClaimedLengthArray(
|
|
87
|
-
publicInputs.privateLogs,
|
|
88
|
-
GLOBAL_INDEX_PRIVATE_LOG_OFFSET,
|
|
89
|
-
createRangeFromCountedItem,
|
|
90
|
-
),
|
|
91
|
-
);
|
|
92
|
-
sideEffectRanges = sideEffectRanges.concat(
|
|
93
|
-
createRangesFromClaimedLengthArray(
|
|
94
|
-
publicInputs.contractClassLogsHashes,
|
|
95
|
-
GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET,
|
|
96
|
-
createRangeFromCountedItem,
|
|
97
|
-
),
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
sideEffectRanges.sort((a, b) => a.start - b.start);
|
|
101
|
-
|
|
102
|
-
const sideEffectRangeIndices = makeTuple(TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, () => 0);
|
|
103
|
-
for (let i = 0; i < sideEffectRanges.length; i++) {
|
|
104
|
-
const range = sideEffectRanges[i];
|
|
105
|
-
sideEffectRangeIndices[range.sideEffectGlobalIndex] = i;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const hints = SideEffectUniquenessHints.from({
|
|
109
|
-
sideEffectRanges: padArrayEnd(
|
|
110
|
-
sideEffectRanges,
|
|
111
|
-
SideEffectCounterRange.empty(),
|
|
112
|
-
TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL,
|
|
113
|
-
),
|
|
114
|
-
noteHashReadRequestIndices: makeTuple(
|
|
115
|
-
MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,
|
|
116
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET],
|
|
117
|
-
),
|
|
118
|
-
nullifierReadRequestIndices: makeTuple(
|
|
119
|
-
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
120
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET],
|
|
121
|
-
),
|
|
122
|
-
noteHashesIndices: makeTuple(
|
|
123
|
-
MAX_NOTE_HASHES_PER_CALL,
|
|
124
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_OFFSET],
|
|
125
|
-
),
|
|
126
|
-
nullifiersIndices: makeTuple(
|
|
127
|
-
MAX_NULLIFIERS_PER_CALL,
|
|
128
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_OFFSET],
|
|
129
|
-
),
|
|
130
|
-
privateCallRequestsIndices: makeTuple(
|
|
131
|
-
MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,
|
|
132
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET],
|
|
133
|
-
),
|
|
134
|
-
publicCallRequestsIndices: makeTuple(
|
|
135
|
-
MAX_ENQUEUED_CALLS_PER_CALL,
|
|
136
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET],
|
|
137
|
-
),
|
|
138
|
-
l2ToL1MsgsIndices: makeTuple(
|
|
139
|
-
MAX_L2_TO_L1_MSGS_PER_CALL,
|
|
140
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET],
|
|
141
|
-
),
|
|
142
|
-
privateLogsIndices: makeTuple(
|
|
143
|
-
MAX_PRIVATE_LOGS_PER_CALL,
|
|
144
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_LOG_OFFSET],
|
|
145
|
-
),
|
|
146
|
-
contractClassLogsHashesIndices: makeTuple(
|
|
147
|
-
MAX_CONTRACT_CLASS_LOGS_PER_CALL,
|
|
148
|
-
i => sideEffectRangeIndices[i + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET],
|
|
149
|
-
),
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
return hints;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
function createRangesFromClaimedLengthArray<T extends Serializable, N extends number>(
|
|
156
|
-
array: ClaimedLengthArray<T, N>,
|
|
157
|
-
globalIndexOffset: number,
|
|
158
|
-
rangeConstructor: (item: T, globalIndex: number) => SideEffectCounterRange,
|
|
159
|
-
): SideEffectCounterRange[] {
|
|
160
|
-
const ranges = [];
|
|
161
|
-
for (let i = 0; i < array.claimedLength; i++) {
|
|
162
|
-
ranges.push(rangeConstructor(array.array[i], globalIndexOffset + i));
|
|
163
|
-
}
|
|
164
|
-
return ranges;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
function createRangeFromCountedItem(item: { counter: number }, globalIndex: number): SideEffectCounterRange {
|
|
168
|
-
return new SideEffectCounterRange(item.counter, item.counter, globalIndex);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function createRangeFromPrivateCallRequest(item: PrivateCallRequest, globalIndex: number): SideEffectCounterRange {
|
|
172
|
-
return new SideEffectCounterRange(item.startSideEffectCounter, item.endSideEffectCounter, globalIndex);
|
|
173
|
-
}
|