@aztec/simulator 0.81.0 → 0.82.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.
- package/dest/common/db_interfaces.d.ts +6 -12
- package/dest/common/db_interfaces.d.ts.map +1 -1
- package/dest/common/db_interfaces.js +1 -1
- package/dest/common/message_load_oracle_inputs.d.ts +4 -0
- package/dest/common/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/common/message_load_oracle_inputs.js +9 -0
- package/dest/private/acvm/acvm.d.ts +6 -1
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +7 -13
- package/dest/private/acvm/deserialize.d.ts +0 -18
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +3 -24
- package/dest/private/acvm/oracle/oracle.d.ts +34 -34
- package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/oracle.js +119 -79
- package/dest/private/acvm/oracle/typed_oracle.d.ts +1 -1
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/typed_oracle.js +2 -2
- package/dest/private/execution_data_provider.d.ts +3 -9
- package/dest/private/execution_data_provider.d.ts.map +1 -1
- package/dest/private/private_execution.d.ts +2 -2
- package/dest/private/private_execution.d.ts.map +1 -1
- package/dest/private/private_execution.js +4 -5
- package/dest/private/providers/acvm_native.d.ts +6 -4
- package/dest/private/providers/acvm_native.d.ts.map +1 -1
- package/dest/private/providers/acvm_native.js +6 -3
- package/dest/private/providers/acvm_wasm.d.ts +6 -7
- package/dest/private/providers/acvm_wasm.d.ts.map +1 -1
- package/dest/private/providers/acvm_wasm.js +13 -15
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +5 -5
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -1
- package/dest/private/providers/acvm_wasm_with_blobs.js +7 -9
- package/dest/private/providers/circuit_recording/circuit_recorder.d.ts +90 -0
- package/dest/private/providers/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/providers/circuit_recording/circuit_recorder.js +246 -0
- package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.d.ts +18 -0
- package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/providers/circuit_recording/simulation_provider_recorder_wrapper.js +39 -0
- package/dest/private/providers/simulation_provider.d.ts +21 -7
- package/dest/private/providers/simulation_provider.d.ts.map +1 -1
- package/dest/private/simulator.d.ts +3 -2
- package/dest/private/simulator.d.ts.map +1 -1
- package/dest/private/simulator.js +2 -2
- package/dest/private/unconstrained_execution.d.ts +2 -2
- package/dest/private/unconstrained_execution.d.ts.map +1 -1
- package/dest/private/unconstrained_execution.js +1 -2
- package/dest/private/unconstrained_execution_oracle.d.ts +1 -1
- package/dest/private/unconstrained_execution_oracle.d.ts.map +1 -1
- package/dest/private/unconstrained_execution_oracle.js +3 -3
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +0 -2
- package/dest/public/avm/journal/journal.js +1 -1
- package/dest/public/avm/test_utils.js +1 -1
- package/dest/public/public_db_sources.d.ts +1 -1
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +3 -3
- package/dest/testing.d.ts +2 -0
- package/dest/testing.d.ts.map +1 -0
- package/dest/testing.js +1 -0
- package/package.json +15 -14
- package/src/common/db_interfaces.ts +6 -13
- package/src/common/message_load_oracle_inputs.ts +8 -0
- package/src/private/acvm/acvm.ts +8 -24
- package/src/private/acvm/deserialize.ts +3 -30
- package/src/private/acvm/oracle/oracle.ts +144 -136
- package/src/private/acvm/oracle/typed_oracle.ts +2 -2
- package/src/private/execution_data_provider.ts +6 -10
- package/src/private/private_execution.ts +11 -7
- package/src/private/providers/acvm_native.ts +17 -6
- package/src/private/providers/acvm_wasm.ts +27 -20
- package/src/private/providers/acvm_wasm_with_blobs.ts +15 -12
- package/src/private/providers/circuit_recording/circuit_recorder.ts +283 -0
- package/src/private/providers/circuit_recording/simulation_provider_recorder_wrapper.ts +82 -0
- package/src/private/providers/simulation_provider.ts +30 -5
- package/src/private/simulator.ts +5 -3
- package/src/private/unconstrained_execution.ts +8 -4
- package/src/private/unconstrained_execution_oracle.ts +3 -6
- package/src/public/avm/avm_simulator.ts +0 -2
- package/src/public/avm/journal/journal.ts +1 -1
- package/src/public/avm/test_utils.ts +1 -1
- package/src/public/public_db_sources.ts +3 -3
- package/src/testing.ts +1 -0
- package/dest/public/avm/bytecode_utils.d.ts +0 -5
- package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/public/avm/bytecode_utils.js +0 -17
- package/src/public/avm/bytecode_utils.ts +0 -17
|
@@ -60,13 +60,13 @@ import { UnconstrainedExecutionOracle } from './unconstrained_execution_oracle.j
|
|
|
60
60
|
* @param entryPointArtifact - The artifact of the entry point function.
|
|
61
61
|
* @param contractAddress - The address of the contract.
|
|
62
62
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
63
|
-
*/ async runUnconstrained(request, contractAddress, selector, scopes) {
|
|
63
|
+
*/ async runUnconstrained(request, contractAddress, selector, authwits, scopes) {
|
|
64
64
|
await verifyCurrentClassId(contractAddress, this.executionDataProvider);
|
|
65
65
|
const entryPointArtifact = await this.executionDataProvider.getFunctionArtifact(contractAddress, selector);
|
|
66
66
|
if (entryPointArtifact.functionType !== FunctionType.UNCONSTRAINED) {
|
|
67
67
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as unconstrained`);
|
|
68
68
|
}
|
|
69
|
-
const context = new UnconstrainedExecutionOracle(contractAddress,
|
|
69
|
+
const context = new UnconstrainedExecutionOracle(contractAddress, authwits, [], this.executionDataProvider, undefined, scopes);
|
|
70
70
|
try {
|
|
71
71
|
return await executeUnconstrainedFunction(this.simulationProvider, context, entryPointArtifact, contractAddress, request.selector, request.args);
|
|
72
72
|
} catch (err) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { type AbiDecoded, type
|
|
2
|
+
import { type AbiDecoded, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { SimulationProvider } from './providers/simulation_provider.js';
|
|
5
5
|
import type { UnconstrainedExecutionOracle } from './unconstrained_execution_oracle.js';
|
|
6
6
|
/**
|
|
7
7
|
* Execute an unconstrained function and return the decoded values.
|
|
8
8
|
*/
|
|
9
|
-
export declare function executeUnconstrainedFunction(simulatorProvider: SimulationProvider, oracle: UnconstrainedExecutionOracle, artifact:
|
|
9
|
+
export declare function executeUnconstrainedFunction(simulatorProvider: SimulationProvider, oracle: UnconstrainedExecutionOracle, artifact: FunctionArtifactWithContractName, contractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], log?: import("@aztec/foundation/log").Logger): Promise<AbiDecoded>;
|
|
10
10
|
//# sourceMappingURL=unconstrained_execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unconstrained_execution.d.ts","sourceRoot":"","sources":["../../src/private/unconstrained_execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"unconstrained_execution.d.ts","sourceRoot":"","sources":["../../src/private/unconstrained_execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAGxF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,4BAA4B,EACpC,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EAAE,EACV,GAAG,yCAAoD,GACtD,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
@@ -11,9 +11,8 @@ import { Oracle, extractCallStack, toACVMWitness } from './acvm/index.js';
|
|
|
11
11
|
contract: contractAddress,
|
|
12
12
|
selector: functionSelector
|
|
13
13
|
});
|
|
14
|
-
const acir = artifact.bytecode;
|
|
15
14
|
const initialWitness = toACVMWitness(0, args);
|
|
16
|
-
const acirExecutionResult = await simulatorProvider.executeUserCircuit(
|
|
15
|
+
const acirExecutionResult = await simulatorProvider.executeUserCircuit(initialWitness, artifact, new Oracle(oracle)).catch((err)=>{
|
|
17
16
|
err.message = resolveAssertionMessageFromError(err, artifact);
|
|
18
17
|
throw new ExecutionError(err.message, {
|
|
19
18
|
contractAddress,
|
|
@@ -68,7 +68,7 @@ export declare class UnconstrainedExecutionOracle extends TypedOracle {
|
|
|
68
68
|
* @param leafSlot - The slot of the public data tree to get the witness for.
|
|
69
69
|
* @returns - The witness
|
|
70
70
|
*/
|
|
71
|
-
|
|
71
|
+
getPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
72
72
|
/**
|
|
73
73
|
* Fetches a block header of a given block.
|
|
74
74
|
* @param blockNumber - The number of a block of which to get the block header.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unconstrained_execution_oracle.d.ts","sourceRoot":"","sources":["../../src/private/unconstrained_execution_oracle.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,WAAW;IAEzD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY;IAChD,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;IACtC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IAC/D,SAAS,CAAC,GAAG;IACb,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;gBANP,eAAe,EAAE,YAAY;IAChD,yEAAyE;IACtD,aAAa,EAAE,WAAW,EAAE,EAC5B,QAAQ,EAAE,OAAO,EAAE,EAAE,4CAA4C;IACjE,qBAAqB,EAAE,qBAAqB,EACrD,GAAG,yCAAgD,EAC1C,MAAM,CAAC,4BAAgB;IAK5B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC;IAI3C,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC;IAIzC;;;;;OAKG;IACa,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInF;;;;;;OAMG;IACa,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAI7G;;;;;OAKG;IACmB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAIlD;;;;;;;;OAQG;IACmB,gCAAgC,CACpD,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAIlD;;;;;OAKG;IACmB,
|
|
1
|
+
{"version":3,"file":"unconstrained_execution_oracle.d.ts","sourceRoot":"","sources":["../../src/private/unconstrained_execution_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,8 +70,8 @@ import { pickNotes } from './pick_notes.js';
|
|
|
70
70
|
* @param blockNumber - The block number at which to get the index.
|
|
71
71
|
* @param leafSlot - The slot of the public data tree to get the witness for.
|
|
72
72
|
* @returns - The witness
|
|
73
|
-
*/ async
|
|
74
|
-
return await this.executionDataProvider.
|
|
73
|
+
*/ async getPublicDataWitness(blockNumber, leafSlot) {
|
|
74
|
+
return await this.executionDataProvider.getPublicDataWitness(blockNumber, leafSlot);
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* Fetches a block header of a given block.
|
|
@@ -105,7 +105,7 @@ import { pickNotes } from './pick_notes.js';
|
|
|
105
105
|
* @param messageHash - Hash of the message to authenticate.
|
|
106
106
|
* @returns Authentication witness for the requested message hash.
|
|
107
107
|
*/ getAuthWitness(messageHash) {
|
|
108
|
-
return Promise.resolve(this.authWitnesses.find((w)=>w.requestHash.equals(messageHash))?.witness
|
|
108
|
+
return Promise.resolve(this.authWitnesses.find((w)=>w.requestHash.equals(messageHash))?.witness);
|
|
109
109
|
}
|
|
110
110
|
/**
|
|
111
111
|
* Gets some notes for a contract address and storage slot.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AASxC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAOnD,qBAAa,YAAY;IAarB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAbxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,6BAA6B,CAAiD;IAEtF,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA+B;gBAKrD,OAAO,EAAE,UAAU,EACnB,cAAc,GAAE,cAAgC,EACxD,cAAc,UAAQ;WAmBJ,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;WAQjD,MAAM,CACxB,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG;IAiBnB;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAuBtD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA0GhE,+BAA+B;IAoB7C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;CAS3B"}
|
|
@@ -7,7 +7,6 @@ import { AvmContext } from './avm_context.js';
|
|
|
7
7
|
import { AvmContractCallResult } from './avm_contract_call_result.js';
|
|
8
8
|
import { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
9
9
|
import { AvmMachineState } from './avm_machine_state.js';
|
|
10
|
-
import { isAvmBytecode } from './bytecode_utils.js';
|
|
11
10
|
import { AvmExecutionError, AvmRevertReason, InvalidProgramCounterError, revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert } from './errors.js';
|
|
12
11
|
import { INSTRUCTION_SET, decodeInstructionFromBytecode } from './serialization/bytecode_serialization.js';
|
|
13
12
|
export class AvmSimulator {
|
|
@@ -82,7 +81,6 @@ export class AvmSimulator {
|
|
|
82
81
|
* This method is useful for testing and debugging.
|
|
83
82
|
*/ async executeBytecode(bytecode) {
|
|
84
83
|
const startTotalTime = performance.now();
|
|
85
|
-
assert(isAvmBytecode(bytecode), "AVM simulator can't execute non-AVM bytecode");
|
|
86
84
|
assert(bytecode.length > 0, "AVM simulator can't execute empty bytecode");
|
|
87
85
|
this.bytecode = bytecode;
|
|
88
86
|
const { machineState } = this.context;
|
|
@@ -137,7 +137,7 @@ import { PublicStorage } from './public_storage.js';
|
|
|
137
137
|
* @param leafIndex - the leaf index being checked
|
|
138
138
|
* @returns true if the note hash exists at the given leaf index, false otherwise
|
|
139
139
|
*/ async checkNoteHashExists(contractAddress, noteHash, leafIndex) {
|
|
140
|
-
const gotLeafValue = await this.treesDB.
|
|
140
|
+
const gotLeafValue = await this.treesDB.getNoteHash(leafIndex.toBigInt()) ?? Fr.ZERO;
|
|
141
141
|
const exists = gotLeafValue.equals(noteHash);
|
|
142
142
|
this.log.trace(`noteHashes(${contractAddress})@${noteHash} ?? leafIndex: ${leafIndex} | gotLeafValue: ${gotLeafValue}, exists: ${exists}.`);
|
|
143
143
|
return Promise.resolve(exists);
|
|
@@ -13,7 +13,7 @@ export function mockStorageReadWithMap(worldStateDB, mockedStorage) {
|
|
|
13
13
|
worldStateDB.storageRead.mockImplementation((_address, slot)=>Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO));
|
|
14
14
|
}
|
|
15
15
|
export function mockNoteHashExists(worldStateDB, _leafIndex, value) {
|
|
16
|
-
worldStateDB.
|
|
16
|
+
worldStateDB.getNoteHash.mockImplementation((index)=>{
|
|
17
17
|
if (index == _leafIndex.toBigInt()) {
|
|
18
18
|
return Promise.resolve(value);
|
|
19
19
|
} else {
|
|
@@ -145,7 +145,7 @@ export declare class PublicTreesDB extends ForwardMerkleTree implements PublicSt
|
|
|
145
145
|
*/
|
|
146
146
|
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
|
|
147
147
|
getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
|
|
148
|
-
|
|
148
|
+
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
149
149
|
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
150
150
|
}
|
|
151
151
|
export declare function readPublicState(db: MerkleTreeReadOperations, contract: AztecAddress, slot: Fr): Promise<Fr>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGrG;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,0BAA0B;IAgBtD,OAAO,CAAC,UAAU;IAR9B,OAAO,CAAC,2BAA2B,CAAyB;IAC5D,OAAO,CAAC,wBAAwB,CAAyB;IACzD,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,uBAAuB,CAAyB;IAExD,OAAO,CAAC,GAAG,CAAmD;gBAE1C,UAAU,EAAE,kBAAkB;IAElD;;;OAGG;IACU,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;;OAGG;IACU,4BAA4B,CAAC,EAAE,EAAE,EAAE;IAKhD;;;OAGG;IACU,yBAAyB,CAAC,EAAE,EAAE,EAAE;IAK7C;;;;OAIG;YACW,+BAA+B;IAW7C;;;;OAIG;YACW,4BAA4B;IAW1C;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAQzC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IAQtC;;;;;OAKG;YACW,0BAA0B;IAoBxC;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAcpC;;OAEG;IACI,mBAAmB;IAM1B;;;OAGG;IACI,oBAAoB,CAAC,kBAAkB,GAAE,OAAe;IAqBlD,mBAAmB,CAC9B,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAUtC,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAU/E,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAyBnE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGlH;AAED;;;;;;GAMG;AACH,cAAM,iBAAkB,YAAW,yBAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,yBAAyB;IAElE,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C,gBAAgB,IAAI,WAAW;IAI/B,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI9F,qBAAqB,CAAC,EAAE,SAAS,aAAa,EAC5C,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CACZ;IAID,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAIlH,eAAe,CAAC,EAAE,SAAS,YAAY,EACrC,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAC/B,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,oBAAoB,CAAC,EAAE,SAAS,YAAY,EAC1C,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,YAAY,CAAC,EAAE,SAAS,YAAY,EAClC,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,OAAO,MAAM,CAAC,GAAG,SAAS,CAAC;IAIzD,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACnD,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAIlC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACtG,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAItE,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAClE,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAIjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAkB,YAAW,sBAAsB;IAGjE,EAAE,EAAE,yBAAyB;IAFhD,OAAO,CAAC,MAAM,CAA6C;gBAExC,EAAE,EAAE,yBAAyB;IAIhD;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAIvE;;;;;;OAMG;IACU,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAW9D,
|
|
1
|
+
{"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -285,13 +285,13 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
285
285
|
});
|
|
286
286
|
return leafValue;
|
|
287
287
|
}
|
|
288
|
-
async
|
|
288
|
+
async getNoteHash(leafIndex) {
|
|
289
289
|
const timer = new Timer();
|
|
290
290
|
const leafValue = await this.db.getLeafValue(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
|
|
291
|
-
this.logger.debug(`[DB] Fetched
|
|
291
|
+
this.logger.debug(`[DB] Fetched note hash leaf value`, {
|
|
292
292
|
eventName: 'public-db-access',
|
|
293
293
|
duration: timer.ms(),
|
|
294
|
-
operation: 'get-
|
|
294
|
+
operation: 'get-note-hash'
|
|
295
295
|
});
|
|
296
296
|
return leafValue;
|
|
297
297
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,+EAA+E,CAAC"}
|
package/dest/testing.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SimulationProviderRecorderWrapper } from './private/providers/circuit_recording/simulation_provider_recorder_wrapper.js';
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.82.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
7
7
|
"./client": "./dest/client.js",
|
|
8
|
+
"./testing": "./dest/testing.js",
|
|
8
9
|
"./public/fixtures": "./dest/public/fixtures/index.js"
|
|
9
10
|
},
|
|
10
11
|
"typedocOptions": {
|
|
@@ -59,16 +60,16 @@
|
|
|
59
60
|
]
|
|
60
61
|
},
|
|
61
62
|
"dependencies": {
|
|
62
|
-
"@aztec/constants": "0.
|
|
63
|
-
"@aztec/foundation": "0.
|
|
64
|
-
"@aztec/noir-acvm_js": "0.
|
|
65
|
-
"@aztec/noir-noirc_abi": "0.
|
|
66
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
67
|
-
"@aztec/noir-types": "0.
|
|
68
|
-
"@aztec/protocol-contracts": "0.
|
|
69
|
-
"@aztec/stdlib": "0.
|
|
70
|
-
"@aztec/telemetry-client": "0.
|
|
71
|
-
"@aztec/world-state": "0.
|
|
63
|
+
"@aztec/constants": "0.82.0",
|
|
64
|
+
"@aztec/foundation": "0.82.0",
|
|
65
|
+
"@aztec/noir-acvm_js": "0.82.0",
|
|
66
|
+
"@aztec/noir-noirc_abi": "0.82.0",
|
|
67
|
+
"@aztec/noir-protocol-circuits-types": "0.82.0",
|
|
68
|
+
"@aztec/noir-types": "0.82.0",
|
|
69
|
+
"@aztec/protocol-contracts": "0.82.0",
|
|
70
|
+
"@aztec/stdlib": "0.82.0",
|
|
71
|
+
"@aztec/telemetry-client": "0.82.0",
|
|
72
|
+
"@aztec/world-state": "0.82.0",
|
|
72
73
|
"levelup": "^5.1.1",
|
|
73
74
|
"lodash.clonedeep": "^4.5.0",
|
|
74
75
|
"lodash.merge": "^4.6.2",
|
|
@@ -76,9 +77,9 @@
|
|
|
76
77
|
"tslib": "^2.4.0"
|
|
77
78
|
},
|
|
78
79
|
"devDependencies": {
|
|
79
|
-
"@aztec/kv-store": "0.
|
|
80
|
-
"@aztec/merkle-tree": "0.
|
|
81
|
-
"@aztec/noir-contracts.js": "0.
|
|
80
|
+
"@aztec/kv-store": "0.82.0",
|
|
81
|
+
"@aztec/merkle-tree": "0.82.0",
|
|
82
|
+
"@aztec/noir-contracts.js": "0.82.0",
|
|
82
83
|
"@jest/globals": "^29.5.0",
|
|
83
84
|
"@types/jest": "^29.5.0",
|
|
84
85
|
"@types/levelup": "^5.1.3",
|
|
@@ -63,7 +63,7 @@ export interface PublicContractsDBInterface {
|
|
|
63
63
|
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
/** Database interface for providing access to
|
|
66
|
+
/** Database interface for providing access to note hash tree, l1 to l2 message tree, and nullifier tree. */
|
|
67
67
|
export interface CommitmentsDBInterface {
|
|
68
68
|
/**
|
|
69
69
|
* Fetches a message from the db, given its key.
|
|
@@ -81,23 +81,16 @@ export interface CommitmentsDBInterface {
|
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
83
|
* @param leafIndex the leaf to look up
|
|
84
|
-
* @returns The l1 to l2 leaf
|
|
84
|
+
* @returns The l1 to l2 leaf message hash or undefined if not found.
|
|
85
85
|
*/
|
|
86
|
-
|
|
86
|
+
getL1ToL2MessageHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
|
-
* Gets
|
|
90
|
-
* @param commitment - The commitment.
|
|
91
|
-
* @returns - The index of the commitment. Undefined if it does not exist in the tree.
|
|
92
|
-
*/
|
|
93
|
-
getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Gets commitment in the note hash tree given a leaf index.
|
|
89
|
+
* Gets note hash in the note hash tree at the given leaf index.
|
|
97
90
|
* @param leafIndex - the leaf to look up.
|
|
98
|
-
* @returns - The
|
|
91
|
+
* @returns - The note hash at that index. Undefined if leaf index is not found.
|
|
99
92
|
*/
|
|
100
|
-
|
|
93
|
+
getNoteHash(leafIndex: bigint): Promise<Fr | undefined>;
|
|
101
94
|
|
|
102
95
|
/**
|
|
103
96
|
* Gets the index of a nullifier in the nullifier tree.
|
|
@@ -12,4 +12,12 @@ export class MessageLoadOracleInputs<N extends number> {
|
|
|
12
12
|
toFields(): Fr[] {
|
|
13
13
|
return [new Fr(this.index), ...this.siblingPath.toFields()];
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Returns a representation of the public data witness as expected by intrinsic Noir deserialization.
|
|
18
|
+
*/
|
|
19
|
+
public toNoirRepresentation(): (string | string[])[] {
|
|
20
|
+
// TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
|
|
21
|
+
return [new Fr(this.index).toString() as string, this.siblingPath.toFields().map(fr => fr.toString()) as string[]];
|
|
22
|
+
}
|
|
15
23
|
}
|
package/src/private/acvm/acvm.ts
CHANGED
|
@@ -15,18 +15,7 @@ import type { ORACLE_NAMES } from './oracle/index.js';
|
|
|
15
15
|
/**
|
|
16
16
|
* The callback interface for the ACIR.
|
|
17
17
|
*/
|
|
18
|
-
export type ACIRCallback = Record<
|
|
19
|
-
ORACLE_NAMES,
|
|
20
|
-
(
|
|
21
|
-
...args: ForeignCallInput[]
|
|
22
|
-
) =>
|
|
23
|
-
| void
|
|
24
|
-
| Promise<void>
|
|
25
|
-
| ForeignCallOutput
|
|
26
|
-
| ForeignCallOutput[]
|
|
27
|
-
| Promise<ForeignCallOutput>
|
|
28
|
-
| Promise<ForeignCallOutput[]>
|
|
29
|
-
>;
|
|
18
|
+
export type ACIRCallback = Record<ORACLE_NAMES, (...args: ForeignCallInput[]) => Promise<ForeignCallOutput[]>>;
|
|
30
19
|
|
|
31
20
|
/**
|
|
32
21
|
* The result of executing an ACIR.
|
|
@@ -43,6 +32,11 @@ export interface ACIRExecutionResult {
|
|
|
43
32
|
|
|
44
33
|
/**
|
|
45
34
|
* The function call that executes an ACIR.
|
|
35
|
+
* @param acir - The ACIR circuit bytecode to execute.
|
|
36
|
+
* @param initialWitness - The initial witness map defining all of the inputs to `circuit`.
|
|
37
|
+
* @param callback - A callback to process any foreign calls from the circuit.
|
|
38
|
+
* @returns The solved witness calculated by executing the circuit on the provided inputs, as well as the return
|
|
39
|
+
* witness indices as specified by the circuit.
|
|
46
40
|
*/
|
|
47
41
|
export async function acvm(
|
|
48
42
|
acir: Buffer,
|
|
@@ -54,7 +48,7 @@ export async function acvm(
|
|
|
54
48
|
const solvedAndReturnWitness = await executeCircuitWithReturnWitness(
|
|
55
49
|
acir,
|
|
56
50
|
initialWitness,
|
|
57
|
-
|
|
51
|
+
(name: string, args: ForeignCallInput[]) => {
|
|
58
52
|
try {
|
|
59
53
|
logger.debug(`Oracle callback ${name}`);
|
|
60
54
|
const oracleFunction = callback[name as ORACLE_NAMES];
|
|
@@ -62,17 +56,7 @@ export async function acvm(
|
|
|
62
56
|
throw new Error(`Oracle callback ${name} not found`);
|
|
63
57
|
}
|
|
64
58
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (typeof result === 'undefined') {
|
|
68
|
-
return [];
|
|
69
|
-
} else if (result instanceof Array && !result.every(item => typeof item === 'string')) {
|
|
70
|
-
// We are dealing with a nested array which means that we do not need it wrap it in another array as to have
|
|
71
|
-
// the nested array structure it is already "wrapped".
|
|
72
|
-
return result;
|
|
73
|
-
} else {
|
|
74
|
-
return [result] as ForeignCallOutput[];
|
|
75
|
-
}
|
|
59
|
+
return oracleFunction.call(callback, ...args);
|
|
76
60
|
} catch (err) {
|
|
77
61
|
let typedError: Error;
|
|
78
62
|
if (err instanceof Error) {
|
|
@@ -3,33 +3,6 @@ import { hexToBuffer } from '@aztec/foundation/string';
|
|
|
3
3
|
|
|
4
4
|
import type { ACVMField, ACVMWitness } from './acvm_types.js';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Converts an ACVM field to a Fr.
|
|
8
|
-
* @param field - The ACVM field to convert.
|
|
9
|
-
* @returns The Fr.
|
|
10
|
-
*/
|
|
11
|
-
export function fromACVMField(field: ACVMField): Fr {
|
|
12
|
-
return Fr.fromBuffer(Buffer.from(field.slice(2), 'hex'));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Converts a field to a number.
|
|
17
|
-
* @param fr - The field to convert.
|
|
18
|
-
* @returns The number.
|
|
19
|
-
* TODO(#4102): Nuke this once block number is big int.
|
|
20
|
-
*/
|
|
21
|
-
export function frToNumber(fr: Fr): number {
|
|
22
|
-
return Number(fr.value);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Converts a field to a boolean.
|
|
27
|
-
* @param fr - The field to convert.
|
|
28
|
-
*/
|
|
29
|
-
export function frToBoolean(fr: Fr): boolean {
|
|
30
|
-
return fr.toBigInt() === BigInt(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
6
|
/**
|
|
34
7
|
* Converts a Noir BoundedVec of Fields into an Fr array. Note that BoundedVecs are structs, and therefore translated as
|
|
35
8
|
* two separate ACVMField values (an array and a single field).
|
|
@@ -39,7 +12,7 @@ export function frToBoolean(fr: Fr): boolean {
|
|
|
39
12
|
* @returns An array with the same content as the Noir version. Elements past the length are discarded.
|
|
40
13
|
*/
|
|
41
14
|
export function fromBoundedVec(storage: ACVMField[], length: ACVMField): Fr[] {
|
|
42
|
-
return storage.slice(0,
|
|
15
|
+
return storage.slice(0, Fr.fromString(length).toNumber()).map(Fr.fromString);
|
|
43
16
|
}
|
|
44
17
|
|
|
45
18
|
/**
|
|
@@ -56,7 +29,7 @@ export function fromUintBoundedVec(storage: ACVMField[], length: ACVMField, uint
|
|
|
56
29
|
throw new Error(`u${uintBitSize} is not a supported type in Noir`);
|
|
57
30
|
}
|
|
58
31
|
const uintByteSize = uintBitSize / 8;
|
|
59
|
-
const boundedStorage = storage.slice(0,
|
|
32
|
+
const boundedStorage = storage.slice(0, Fr.fromString(length).toNumber());
|
|
60
33
|
return Buffer.concat(boundedStorage.map(str => hexToBuffer(str).subarray(-uintByteSize)));
|
|
61
34
|
}
|
|
62
35
|
|
|
@@ -67,7 +40,7 @@ export function fromUintBoundedVec(storage: ACVMField[], length: ACVMField, uint
|
|
|
67
40
|
*/
|
|
68
41
|
export function witnessMapToFields(witness: ACVMWitness): Fr[] {
|
|
69
42
|
const sortedKeys = [...witness.keys()].sort((a, b) => a - b);
|
|
70
|
-
return sortedKeys.map(key => witness.get(key)!).map(
|
|
43
|
+
return sortedKeys.map(key => witness.get(key)!).map(Fr.fromString);
|
|
71
44
|
}
|
|
72
45
|
|
|
73
46
|
/**
|