@aztec/simulator 0.22.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/README.md +47 -0
- package/dest/acvm/acvm.d.ts +39 -0
- package/dest/acvm/acvm.d.ts.map +1 -0
- package/dest/acvm/acvm.js +97 -0
- package/dest/acvm/acvm_types.d.ts +10 -0
- package/dest/acvm/acvm_types.d.ts.map +1 -0
- package/dest/acvm/acvm_types.js +2 -0
- package/dest/acvm/deserialize.d.ts +24 -0
- package/dest/acvm/deserialize.d.ts.map +1 -0
- package/dest/acvm/deserialize.js +31 -0
- package/dest/acvm/index.d.ts +6 -0
- package/dest/acvm/index.d.ts.map +1 -0
- package/dest/acvm/index.js +6 -0
- package/dest/acvm/oracle/debug.d.ts +19 -0
- package/dest/acvm/oracle/debug.d.ts.map +1 -0
- package/dest/acvm/oracle/debug.js +95 -0
- package/dest/acvm/oracle/index.d.ts +15 -0
- package/dest/acvm/oracle/index.d.ts.map +1 -0
- package/dest/acvm/oracle/index.js +4 -0
- package/dest/acvm/oracle/oracle.d.ts +38 -0
- package/dest/acvm/oracle/oracle.d.ts.map +1 -0
- package/dest/acvm/oracle/oracle.js +193 -0
- package/dest/acvm/oracle/typed_oracle.d.ts +88 -0
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -0
- package/dest/acvm/oracle/typed_oracle.js +103 -0
- package/dest/acvm/serialize.d.ts +30 -0
- package/dest/acvm/serialize.d.ts.map +1 -0
- package/dest/acvm/serialize.js +67 -0
- package/dest/avm/avm_context.d.ts +49 -0
- package/dest/avm/avm_context.d.ts.map +1 -0
- package/dest/avm/avm_context.js +56 -0
- package/dest/avm/avm_execution_environment.d.ts +28 -0
- package/dest/avm/avm_execution_environment.d.ts.map +1 -0
- package/dest/avm/avm_execution_environment.js +42 -0
- package/dest/avm/avm_machine_state.d.ts +62 -0
- package/dest/avm/avm_machine_state.d.ts.map +1 -0
- package/dest/avm/avm_machine_state.js +69 -0
- package/dest/avm/avm_memory_types.d.ts +113 -0
- package/dest/avm/avm_memory_types.d.ts.map +1 -0
- package/dest/avm/avm_memory_types.js +269 -0
- package/dest/avm/avm_message_call_result.d.ts +16 -0
- package/dest/avm/avm_message_call_result.d.ts.map +1 -0
- package/dest/avm/avm_message_call_result.js +21 -0
- package/dest/avm/avm_simulator.d.ts +22 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -0
- package/dest/avm/avm_simulator.js +74 -0
- package/dest/avm/errors.d.ts +30 -0
- package/dest/avm/errors.d.ts.map +1 -0
- package/dest/avm/errors.js +44 -0
- package/dest/avm/fixtures/index.d.ts +28 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -0
- package/dest/avm/fixtures/index.js +44 -0
- package/dest/avm/journal/host_storage.d.ts +13 -0
- package/dest/avm/journal/host_storage.d.ts.map +1 -0
- package/dest/avm/journal/host_storage.js +13 -0
- package/dest/avm/journal/index.d.ts +3 -0
- package/dest/avm/journal/index.d.ts.map +1 -0
- package/dest/avm/journal/index.js +3 -0
- package/dest/avm/journal/journal.d.ts +95 -0
- package/dest/avm/journal/journal.d.ts.map +1 -0
- package/dest/avm/journal/journal.js +217 -0
- package/dest/avm/opcodes/accrued_substate.d.ts +42 -0
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -0
- package/dest/avm/opcodes/accrued_substate.js +82 -0
- package/dest/avm/opcodes/arithmetic.d.ts +28 -0
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -0
- package/dest/avm/opcodes/arithmetic.js +59 -0
- package/dest/avm/opcodes/bitwise.d.ts +40 -0
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -0
- package/dest/avm/opcodes/bitwise.js +92 -0
- package/dest/avm/opcodes/comparators.d.ts +22 -0
- package/dest/avm/opcodes/comparators.d.ts.map +1 -0
- package/dest/avm/opcodes/comparators.js +51 -0
- package/dest/avm/opcodes/control_flow.d.ts +57 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -0
- package/dest/avm/opcodes/control_flow.js +118 -0
- package/dest/avm/opcodes/environment_getters.d.ts +74 -0
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -0
- package/dest/avm/opcodes/environment_getters.js +151 -0
- package/dest/avm/opcodes/external_calls.d.ts +34 -0
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -0
- package/dest/avm/opcodes/external_calls.js +103 -0
- package/dest/avm/opcodes/index.d.ts +11 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -0
- package/dest/avm/opcodes/index.js +11 -0
- package/dest/avm/opcodes/instruction.d.ts +43 -0
- package/dest/avm/opcodes/instruction.d.ts.map +1 -0
- package/dest/avm/opcodes/instruction.js +44 -0
- package/dest/avm/opcodes/instruction_impl.d.ts +28 -0
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -0
- package/dest/avm/opcodes/instruction_impl.js +47 -0
- package/dest/avm/opcodes/memory.d.ts +55 -0
- package/dest/avm/opcodes/memory.d.ts.map +1 -0
- package/dest/avm/opcodes/memory.js +125 -0
- package/dest/avm/opcodes/storage.d.ts +31 -0
- package/dest/avm/opcodes/storage.d.ts.map +1 -0
- package/dest/avm/opcodes/storage.js +59 -0
- package/dest/avm/serialization/buffer_cursor.d.ts +25 -0
- package/dest/avm/serialization/buffer_cursor.d.ts.map +1 -0
- package/dest/avm/serialization/buffer_cursor.js +94 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts +25 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -0
- package/dest/avm/serialization/bytecode_serialization.js +100 -0
- package/dest/avm/serialization/instruction_serialization.d.ts +91 -0
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -0
- package/dest/avm/serialization/instruction_serialization.js +146 -0
- package/dest/client/client_execution_context.d.ts +188 -0
- package/dest/client/client_execution_context.d.ts.map +1 -0
- package/dest/client/client_execution_context.js +326 -0
- package/dest/client/db_oracle.d.ts +155 -0
- package/dest/client/db_oracle.d.ts.map +1 -0
- package/dest/client/db_oracle.js +17 -0
- package/dest/client/execution_note_cache.d.ts +54 -0
- package/dest/client/execution_note_cache.d.ts.map +1 -0
- package/dest/client/execution_note_cache.js +82 -0
- package/dest/client/execution_result.d.ts +67 -0
- package/dest/client/execution_result.d.ts.map +1 -0
- package/dest/client/execution_result.js +32 -0
- package/dest/client/index.d.ts +4 -0
- package/dest/client/index.d.ts.map +1 -0
- package/dest/client/index.js +4 -0
- package/dest/client/pick_notes.d.ts +80 -0
- package/dest/client/pick_notes.d.ts.map +1 -0
- package/dest/client/pick_notes.js +45 -0
- package/dest/client/private_execution.d.ts +10 -0
- package/dest/client/private_execution.d.ts.map +1 -0
- package/dest/client/private_execution.js +55 -0
- package/dest/client/simulator.d.ts +100 -0
- package/dest/client/simulator.d.ts.map +1 -0
- package/dest/client/simulator.js +171 -0
- package/dest/client/unconstrained_execution.d.ts +10 -0
- package/dest/client/unconstrained_execution.d.ts.map +1 -0
- package/dest/client/unconstrained_execution.js +25 -0
- package/dest/client/view_data_oracle.d.ts +139 -0
- package/dest/client/view_data_oracle.d.ts.map +1 -0
- package/dest/client/view_data_oracle.js +196 -0
- package/dest/common/errors.d.ts +36 -0
- package/dest/common/errors.d.ts.map +1 -0
- package/dest/common/errors.js +57 -0
- package/dest/common/index.d.ts +4 -0
- package/dest/common/index.d.ts.map +1 -0
- package/dest/common/index.js +4 -0
- package/dest/common/packed_args_cache.d.ts +28 -0
- package/dest/common/packed_args_cache.d.ts.map +1 -0
- package/dest/common/packed_args_cache.js +50 -0
- package/dest/common/side_effect_counter.d.ts +9 -0
- package/dest/common/side_effect_counter.d.ts.map +1 -0
- package/dest/common/side_effect_counter.js +14 -0
- package/dest/index.d.ts +4 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +4 -0
- package/dest/public/db.d.ts +77 -0
- package/dest/public/db.d.ts.map +1 -0
- package/dest/public/db.js +2 -0
- package/dest/public/execution.d.ts +62 -0
- package/dest/public/execution.d.ts.map +1 -0
- package/dest/public/execution.js +61 -0
- package/dest/public/executor.d.ts +27 -0
- package/dest/public/executor.d.ts.map +1 -0
- package/dest/public/executor.js +83 -0
- package/dest/public/index.d.ts +4 -0
- package/dest/public/index.d.ts.map +1 -0
- package/dest/public/index.js +4 -0
- package/dest/public/public_execution_context.d.ts +103 -0
- package/dest/public/public_execution_context.d.ts.map +1 -0
- package/dest/public/public_execution_context.js +175 -0
- package/dest/public/state_actions.d.ts +39 -0
- package/dest/public/state_actions.d.ts.map +1 -0
- package/dest/public/state_actions.js +79 -0
- package/dest/test/utils.d.ts +12 -0
- package/dest/test/utils.d.ts.map +1 -0
- package/dest/test/utils.js +23 -0
- package/dest/utils.d.ts +27 -0
- package/dest/utils.d.ts.map +1 -0
- package/dest/utils.js +28 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Simulator
|
|
2
|
+
|
|
3
|
+
## Responsibilities
|
|
4
|
+
|
|
5
|
+
This library package is responsible for simulating function circuits compiled to ACIR / AVM.
|
|
6
|
+
|
|
7
|
+
Simulating a function implies generating the partial witness and the public inputs of the function, as well as collecting all the data (such as created notes or nullifiers, or state changes) that are necessary for components upstream.
|
|
8
|
+
|
|
9
|
+
It's able to simulate three different types of functions:
|
|
10
|
+
|
|
11
|
+
### Private Functions
|
|
12
|
+
|
|
13
|
+
Private functions are simulated and proved client-side, and verified client-side in the private kernel circuit.
|
|
14
|
+
|
|
15
|
+
The public inputs of private functions is defined [here](../circuits.js/src/structs/private_circuit_public_inputs.ts).
|
|
16
|
+
|
|
17
|
+
They are run with the assistance of a DB oracle that provides any private data requested by the function.
|
|
18
|
+
|
|
19
|
+
Private functions can call another private function, and can request to call a public function, but the public function execution will be performed by the sequencer asynchronously, thus having no access to the return values.
|
|
20
|
+
|
|
21
|
+
### Public Functions
|
|
22
|
+
|
|
23
|
+
Public functions are simulated and proved on the sequencer side, and verified by the public kernel circuit.
|
|
24
|
+
|
|
25
|
+
The public inputs of public functions is defined [here](../circuits.js/src/structs/public_circuit_public_inputs.ts).
|
|
26
|
+
|
|
27
|
+
They are run with the assistance of an oracle that provides any value read from the public state tree.
|
|
28
|
+
|
|
29
|
+
Public functions can call other public function, but no private functions.
|
|
30
|
+
|
|
31
|
+
### Unconstrained (view) Functions
|
|
32
|
+
|
|
33
|
+
Unconstrained functions are used to extract useful data for users, such as the user balance. They are not proved, and are simulated client-side.
|
|
34
|
+
|
|
35
|
+
They are run with the assistance of a DB oracle that provides any private data requested by the function.
|
|
36
|
+
|
|
37
|
+
At the moment, unconstrained functions cannot call any other function. It would be possible to allow them to call other unconstrained functions.
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
### Development
|
|
42
|
+
|
|
43
|
+
Same steps as any other library. They are detailed [here](../README.md#development)
|
|
44
|
+
|
|
45
|
+
### Testing
|
|
46
|
+
|
|
47
|
+
Same steps as any other library. They are detailed [here](../README.md#tests)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { NoirCallStack, SourceCodeLocation } from '@aztec/circuit-types';
|
|
3
|
+
import { FunctionDebugMetadata, OpcodeLocation } from '@aztec/foundation/abi';
|
|
4
|
+
import { ExecutionError, ForeignCallInput, ForeignCallOutput, WasmBlackBoxFunctionSolver } from '@noir-lang/acvm_js';
|
|
5
|
+
import { ACVMWitness } from './acvm_types.js';
|
|
6
|
+
import { ORACLE_NAMES } from './oracle/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* The callback interface for the ACIR.
|
|
9
|
+
*/
|
|
10
|
+
type ACIRCallback = Record<ORACLE_NAMES, (...args: ForeignCallInput[]) => ForeignCallOutput | Promise<ForeignCallOutput>>;
|
|
11
|
+
/**
|
|
12
|
+
* The result of executing an ACIR.
|
|
13
|
+
*/
|
|
14
|
+
export interface ACIRExecutionResult {
|
|
15
|
+
/**
|
|
16
|
+
* The partial witness of the execution.
|
|
17
|
+
*/
|
|
18
|
+
partialWitness: ACVMWitness;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extracts the source code locations for an array of opcode locations
|
|
22
|
+
* @param opcodeLocations - The opcode locations that caused the error.
|
|
23
|
+
* @param debug - The debug metadata of the function.
|
|
24
|
+
* @returns The source code locations.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveOpcodeLocations(opcodeLocations: OpcodeLocation[], debug: FunctionDebugMetadata): SourceCodeLocation[];
|
|
27
|
+
/**
|
|
28
|
+
* The function call that executes an ACIR.
|
|
29
|
+
*/
|
|
30
|
+
export declare function acvm(solver: WasmBlackBoxFunctionSolver, acir: Buffer, initialWitness: ACVMWitness, callback: ACIRCallback): Promise<ACIRExecutionResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Extracts the call stack from an thrown by the acvm.
|
|
33
|
+
* @param error - The error to extract from.
|
|
34
|
+
* @param debug - The debug metadata of the function called.
|
|
35
|
+
* @returns The call stack, if available.
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractCallStack(error: Error | ExecutionError, debug?: FunctionDebugMetadata): NoirCallStack | undefined;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=acvm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acvm.d.ts","sourceRoot":"","sources":["../../src/acvm/acvm.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAE3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,KAAK,YAAY,GAAG,MAAM,CACxB,YAAY,EACZ,CAAC,GAAG,IAAI,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAChF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,cAAc,EAAE,WAAW,CAAC;CAC7B;AAmCD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,cAAc,EAAE,EACjC,KAAK,EAAE,qBAAqB,GAC3B,kBAAkB,EAAE,CAEtB;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,MAAM,EAAE,0BAA0B,EAClC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,WAAW,EAC3B,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,GAAG,cAAc,EAC7B,KAAK,CAAC,EAAE,qBAAqB,GAC5B,aAAa,GAAG,SAAS,CAc3B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { executeCircuitWithBlackBoxSolver, } from '@noir-lang/acvm_js';
|
|
3
|
+
import { traverseCauseChain } from '../common/errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* Extracts the call stack from the location of a failing opcode and the debug metadata.
|
|
6
|
+
* One opcode can point to multiple calls due to inlining.
|
|
7
|
+
*/
|
|
8
|
+
function getSourceCodeLocationsFromOpcodeLocation(opcodeLocation, debug) {
|
|
9
|
+
const { debugSymbols, files } = debug;
|
|
10
|
+
const callStack = debugSymbols.locations[opcodeLocation] || [];
|
|
11
|
+
return callStack.map(call => {
|
|
12
|
+
const { file: fileId, span } = call;
|
|
13
|
+
const { path, source } = files[fileId];
|
|
14
|
+
const locationText = source.substring(span.start, span.end);
|
|
15
|
+
const precedingText = source.substring(0, span.start);
|
|
16
|
+
const previousLines = precedingText.split('\n');
|
|
17
|
+
// Lines and columns in stacks are one indexed.
|
|
18
|
+
const line = previousLines.length;
|
|
19
|
+
const column = previousLines[previousLines.length - 1].length + 1;
|
|
20
|
+
return {
|
|
21
|
+
filePath: path,
|
|
22
|
+
line,
|
|
23
|
+
column,
|
|
24
|
+
fileSource: source,
|
|
25
|
+
locationText,
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extracts the source code locations for an array of opcode locations
|
|
31
|
+
* @param opcodeLocations - The opcode locations that caused the error.
|
|
32
|
+
* @param debug - The debug metadata of the function.
|
|
33
|
+
* @returns The source code locations.
|
|
34
|
+
*/
|
|
35
|
+
export function resolveOpcodeLocations(opcodeLocations, debug) {
|
|
36
|
+
return opcodeLocations.flatMap(opcodeLocation => getSourceCodeLocationsFromOpcodeLocation(opcodeLocation, debug));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The function call that executes an ACIR.
|
|
40
|
+
*/
|
|
41
|
+
export async function acvm(solver, acir, initialWitness, callback) {
|
|
42
|
+
const logger = createDebugLogger('aztec:simulator:acvm');
|
|
43
|
+
const partialWitness = await executeCircuitWithBlackBoxSolver(solver, acir, initialWitness, async (name, args) => {
|
|
44
|
+
try {
|
|
45
|
+
logger(`Oracle callback ${name}`);
|
|
46
|
+
const oracleFunction = callback[name];
|
|
47
|
+
if (!oracleFunction) {
|
|
48
|
+
throw new Error(`Oracle callback ${name} not found`);
|
|
49
|
+
}
|
|
50
|
+
const result = await oracleFunction.call(callback, ...args);
|
|
51
|
+
return [result];
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
let typedError;
|
|
55
|
+
if (err instanceof Error) {
|
|
56
|
+
typedError = err;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
typedError = new Error(`Error in oracle callback ${err}`);
|
|
60
|
+
}
|
|
61
|
+
logger.error(`Error in oracle callback ${name}`);
|
|
62
|
+
throw typedError;
|
|
63
|
+
}
|
|
64
|
+
}).catch((err) => {
|
|
65
|
+
// Wasm callbacks act as a boundary for stack traces, so we capture it here and complete the error if it happens.
|
|
66
|
+
const stack = new Error().stack;
|
|
67
|
+
traverseCauseChain(err, cause => {
|
|
68
|
+
if (cause.stack) {
|
|
69
|
+
cause.stack += stack;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
throw err;
|
|
73
|
+
});
|
|
74
|
+
return { partialWitness };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extracts the call stack from an thrown by the acvm.
|
|
78
|
+
* @param error - The error to extract from.
|
|
79
|
+
* @param debug - The debug metadata of the function called.
|
|
80
|
+
* @returns The call stack, if available.
|
|
81
|
+
*/
|
|
82
|
+
export function extractCallStack(error, debug) {
|
|
83
|
+
if (!('callStack' in error) || !error.callStack) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
const { callStack } = error;
|
|
87
|
+
if (!debug) {
|
|
88
|
+
return callStack;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
return resolveOpcodeLocations(callStack, debug);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
return callStack;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN2bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3ZtL2Fjdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUtMLGdDQUFnQyxHQUNqQyxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBc0J6RDs7O0dBR0c7QUFDSCxTQUFTLHdDQUF3QyxDQUMvQyxjQUFzQixFQUN0QixLQUE0QjtJQUU1QixNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV0QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXBDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsK0NBQStDO1FBQy9DLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxN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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acvm_types.d.ts","sourceRoot":"","sources":["../../src/acvm/acvm_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { ACVMField, ACVMWitness } from './acvm_types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Converts an ACVM field to a Fr.
|
|
6
|
+
* @param field - The ACVM field to convert.
|
|
7
|
+
* @returns The Fr.
|
|
8
|
+
*/
|
|
9
|
+
export declare function fromACVMField(field: ACVMField): Fr;
|
|
10
|
+
/**
|
|
11
|
+
* Converts a field to a number.
|
|
12
|
+
* @param fr - The field to convert.
|
|
13
|
+
* @returns The number.
|
|
14
|
+
* TODO(#4102): Nuke this once block number is big int.
|
|
15
|
+
*/
|
|
16
|
+
export declare function frToNumber(fr: Fr): number;
|
|
17
|
+
/**
|
|
18
|
+
* Extracts the return fields of a given partial witness.
|
|
19
|
+
* @param acir - The bytecode of the function.
|
|
20
|
+
* @param partialWitness - The witness to extract from.
|
|
21
|
+
* @returns The return values.
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractReturnWitness(acir: Buffer, partialWitness: ACVMWitness): Fr[];
|
|
24
|
+
//# sourceMappingURL=deserialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../src/acvm/deserialize.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,GAAG,EAAE,EAAE,CAIpF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { getReturnWitness } from '@noir-lang/acvm_js';
|
|
3
|
+
/**
|
|
4
|
+
* Converts an ACVM field to a Fr.
|
|
5
|
+
* @param field - The ACVM field to convert.
|
|
6
|
+
* @returns The Fr.
|
|
7
|
+
*/
|
|
8
|
+
export function fromACVMField(field) {
|
|
9
|
+
return Fr.fromBuffer(Buffer.from(field.slice(2), 'hex'));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Converts a field to a number.
|
|
13
|
+
* @param fr - The field to convert.
|
|
14
|
+
* @returns The number.
|
|
15
|
+
* TODO(#4102): Nuke this once block number is big int.
|
|
16
|
+
*/
|
|
17
|
+
export function frToNumber(fr) {
|
|
18
|
+
return Number(fr.value);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extracts the return fields of a given partial witness.
|
|
22
|
+
* @param acir - The bytecode of the function.
|
|
23
|
+
* @param partialWitness - The witness to extract from.
|
|
24
|
+
* @returns The return values.
|
|
25
|
+
*/
|
|
26
|
+
export function extractReturnWitness(acir, partialWitness) {
|
|
27
|
+
const returnWitness = getReturnWitness(acir, partialWitness);
|
|
28
|
+
const sortedKeys = [...returnWitness.keys()].sort((a, b) => a - b);
|
|
29
|
+
return sortedKeys.map(key => returnWitness.get(key)).map(fromACVMField);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN2bS9kZXNlcmlhbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJdEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBZ0I7SUFDNUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsRUFBTTtJQUMvQixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVksRUFBRSxjQUEyQjtJQUM1RSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNFLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/acvm/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './acvm.js';
|
|
2
|
+
export * from './acvm_types.js';
|
|
3
|
+
export * from './deserialize.js';
|
|
4
|
+
export * from './oracle/index.js';
|
|
5
|
+
export * from './serialize.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN2bS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ForeignCallInput } from '@noir-lang/acvm_js';
|
|
2
|
+
import { ACVMField } from '../acvm_types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Convert an array of ACVMFields to a string.
|
|
5
|
+
*
|
|
6
|
+
* @param msg - array of ACVMFields where each represents a single ascii character
|
|
7
|
+
* @returns string representation of the message
|
|
8
|
+
*/
|
|
9
|
+
export declare function acvmFieldMessageToString(msg: ACVMField[]): string;
|
|
10
|
+
/**
|
|
11
|
+
* Convert an array of ACVMFields from ACVM to a formatted string.
|
|
12
|
+
*
|
|
13
|
+
* @param parameters - either one parameter representing a simple field or array, or two parameters when
|
|
14
|
+
* It's a message without args or three parameters when it's a message with arguments.
|
|
15
|
+
*
|
|
16
|
+
* @returns formatted string
|
|
17
|
+
*/
|
|
18
|
+
export declare function oracleDebugCallToFormattedStr(parameters: ForeignCallInput[]): string;
|
|
19
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAajE;AAyBD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAcpF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an array of ACVMFields to a string.
|
|
3
|
+
*
|
|
4
|
+
* @param msg - array of ACVMFields where each represents a single ascii character
|
|
5
|
+
* @returns string representation of the message
|
|
6
|
+
*/
|
|
7
|
+
export function acvmFieldMessageToString(msg) {
|
|
8
|
+
let msgStr = '';
|
|
9
|
+
for (const msgChar of msg) {
|
|
10
|
+
const asciiCode = Number(msgChar);
|
|
11
|
+
const asciiChar = String.fromCharCode(asciiCode);
|
|
12
|
+
msgStr = msgStr.concat(asciiChar);
|
|
13
|
+
}
|
|
14
|
+
// cut off string in case of preemptive null termination
|
|
15
|
+
const nullCharIndex = msgStr.indexOf('\\0');
|
|
16
|
+
if (nullCharIndex >= 0) {
|
|
17
|
+
msgStr = msgStr.substring(0, nullCharIndex);
|
|
18
|
+
}
|
|
19
|
+
return msgStr.replaceAll('\\n', '\n').replaceAll('\\t', '\t');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Format a debug string for Aztec.nr filling in `'{0}'` entries with their
|
|
23
|
+
* corresponding values from the args array.
|
|
24
|
+
*
|
|
25
|
+
* @param formatStr - str of form `'this is a string with some entries like {0} and {1}'`
|
|
26
|
+
* @param args - array of fields to fill in the string format entries with
|
|
27
|
+
* @returns formatted string
|
|
28
|
+
*/
|
|
29
|
+
function applyStringFormatting(formatStr, args) {
|
|
30
|
+
const matches = formatStr.match(/{\d+}/g);
|
|
31
|
+
if (matches == null) {
|
|
32
|
+
return formatStr;
|
|
33
|
+
}
|
|
34
|
+
// Get the numeric values within the curly braces, convert them to numbers,
|
|
35
|
+
// and find the maximum value.
|
|
36
|
+
const maxIndex = Math.max(...matches.map(match => Number(match.slice(1, -1))));
|
|
37
|
+
const argsPadded = args.concat(Array.from({ length: Math.max(0, maxIndex - args.length) }, () => '0xBAD'));
|
|
38
|
+
return formatStr.replace(/{(\d+)}/g, function (match, index) {
|
|
39
|
+
return typeof args[index] != 'undefined' ? argsPadded[index] : match;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert an array of ACVMFields from ACVM to a formatted string.
|
|
44
|
+
*
|
|
45
|
+
* @param parameters - either one parameter representing a simple field or array, or two parameters when
|
|
46
|
+
* It's a message without args or three parameters when it's a message with arguments.
|
|
47
|
+
*
|
|
48
|
+
* @returns formatted string
|
|
49
|
+
*/
|
|
50
|
+
export function oracleDebugCallToFormattedStr(parameters) {
|
|
51
|
+
if (parameters.length === 1) {
|
|
52
|
+
return processFieldOrArray(parameters[0]);
|
|
53
|
+
}
|
|
54
|
+
let formatArgs = [];
|
|
55
|
+
if (parameters.length > 2) {
|
|
56
|
+
formatArgs = parameters[1];
|
|
57
|
+
}
|
|
58
|
+
const formattedMsg = applyStringFormatting(acvmFieldMessageToString(parameters[0]), formatArgs);
|
|
59
|
+
return formattedMsg;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Processes a field or an array and returns a string representation.
|
|
63
|
+
* @param fieldOrArray - The field or array to be processed.
|
|
64
|
+
* @returns Returns the processed string representation of the field or array.
|
|
65
|
+
*/
|
|
66
|
+
function processFieldOrArray(fieldOrArray) {
|
|
67
|
+
if (fieldOrArray.length === 1) {
|
|
68
|
+
return `${fieldOrArray[0]}`;
|
|
69
|
+
}
|
|
70
|
+
// Check if all the elements start with 63 zero bytes
|
|
71
|
+
// --> if yes, we have an array of bytes and we print as hex
|
|
72
|
+
if (onlyBytes(fieldOrArray)) {
|
|
73
|
+
const decimalArray = fieldOrArray.map(element => parseInt(element, 16));
|
|
74
|
+
return '0x' + Buffer.from(decimalArray).toString('hex');
|
|
75
|
+
}
|
|
76
|
+
return '[' + fieldOrArray.join(', ') + ']';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Checks if all elements in the array are valid byte representations.
|
|
80
|
+
* @param array - The array to be checked.
|
|
81
|
+
* @returns Returns `true` if all elements are valid byte representations, `false` otherwise.
|
|
82
|
+
* @throws Throws an error if any element has an invalid length.
|
|
83
|
+
*/
|
|
84
|
+
function onlyBytes(array) {
|
|
85
|
+
for (const element of array) {
|
|
86
|
+
if (element.length != 66) {
|
|
87
|
+
throw new Error('Invalid element length. Expected 66 chars, got ' + element.length + ' chars.');
|
|
88
|
+
}
|
|
89
|
+
if (!element.startsWith('0x00000000000000000000000000000000000000000000000000000000000000')) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN2bS9vcmFjbGUvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsR0FBZ0I7SUFDdkQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELHdEQUF3RDtJQUN4RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLElBQUksYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLElBQWlCO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELDJFQUEyRTtJQUMzRSw4QkFBOEI7SUFDOUIsTUFBTSxRQUFRLEdB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Oracle } from './oracle.js';
|
|
2
|
+
export * from './debug.js';
|
|
3
|
+
export * from './oracle.js';
|
|
4
|
+
export * from './typed_oracle.js';
|
|
5
|
+
/**
|
|
6
|
+
* A conditional type that takes a type `T` and returns a union of its method names.
|
|
7
|
+
*/
|
|
8
|
+
type MethodNames<T> = {
|
|
9
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
10
|
+
}[keyof T];
|
|
11
|
+
/**
|
|
12
|
+
* Available oracle function names.
|
|
13
|
+
*/
|
|
14
|
+
export type ORACLE_NAMES = MethodNames<Oracle>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './debug.js';
|
|
2
|
+
export * from './oracle.js';
|
|
3
|
+
export * from './typed_oracle.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN2bS9vcmFjbGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQyJ9
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ACVMField } from '../acvm_types.js';
|
|
2
|
+
import { TypedOracle } from './typed_oracle.js';
|
|
3
|
+
/**
|
|
4
|
+
* A data source that has all the apis required by Aztec.nr.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Oracle {
|
|
7
|
+
private typedOracle;
|
|
8
|
+
private log;
|
|
9
|
+
constructor(typedOracle: TypedOracle, log?: import("@aztec/foundation/log").DebugLogger);
|
|
10
|
+
getRandomField(): ACVMField;
|
|
11
|
+
packArguments(args: ACVMField[]): Promise<ACVMField>;
|
|
12
|
+
getNullifierKeyPair([accountAddress]: ACVMField[]): Promise<ACVMField[]>;
|
|
13
|
+
getPublicKeyAndPartialAddress([address]: ACVMField[]): Promise<string[]>;
|
|
14
|
+
getMembershipWitness([blockNumber]: ACVMField[], [treeId]: ACVMField[], [leafValue]: ACVMField[]): Promise<ACVMField[]>;
|
|
15
|
+
getSiblingPath([blockNumber]: ACVMField[], [treeId]: ACVMField[], [leafIndex]: ACVMField[]): Promise<ACVMField[]>;
|
|
16
|
+
getNullifierMembershipWitness([blockNumber]: ACVMField[], [nullifier]: ACVMField[]): Promise<ACVMField[]>;
|
|
17
|
+
getLowNullifierMembershipWitness([blockNumber]: ACVMField[], [nullifier]: ACVMField[]): Promise<ACVMField[]>;
|
|
18
|
+
getPublicDataTreeWitness([blockNumber]: ACVMField[], [leafSlot]: ACVMField[]): Promise<ACVMField[]>;
|
|
19
|
+
getHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]>;
|
|
20
|
+
getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[]>;
|
|
21
|
+
popCapsule(): Promise<ACVMField[]>;
|
|
22
|
+
getNotes([storageSlot]: ACVMField[], [numSelects]: ACVMField[], selectBy: ACVMField[], selectValues: ACVMField[], selectComparators: ACVMField[], sortBy: ACVMField[], sortOrder: ACVMField[], [limit]: ACVMField[], [offset]: ACVMField[], [status]: ACVMField[], [returnSize]: ACVMField[]): Promise<ACVMField[]>;
|
|
23
|
+
notifyCreatedNote([storageSlot]: ACVMField[], note: ACVMField[], [innerNoteHash]: ACVMField[]): ACVMField;
|
|
24
|
+
notifyNullifiedNote([innerNullifier]: ACVMField[], [innerNoteHash]: ACVMField[]): Promise<ACVMField>;
|
|
25
|
+
checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField>;
|
|
26
|
+
getL1ToL2Message([msgKey]: ACVMField[]): Promise<ACVMField[]>;
|
|
27
|
+
getPortalContractAddress([aztecAddress]: ACVMField[]): Promise<ACVMField>;
|
|
28
|
+
storageRead([startStorageSlot]: ACVMField[], [numberOfElements]: ACVMField[]): Promise<ACVMField[]>;
|
|
29
|
+
storageWrite([startStorageSlot]: ACVMField[], values: ACVMField[]): Promise<ACVMField[]>;
|
|
30
|
+
emitEncryptedLog([contractAddress]: ACVMField[], [storageSlot]: ACVMField[], [publicKeyX]: ACVMField[], [publicKeyY]: ACVMField[], log: ACVMField[]): ACVMField;
|
|
31
|
+
emitUnencryptedLog([contractAddress]: ACVMField[], [eventSelector]: ACVMField[], message: ACVMField[]): ACVMField;
|
|
32
|
+
debugLog(...args: ACVMField[][]): ACVMField;
|
|
33
|
+
debugLogWithPrefix(arg0: ACVMField[], ...args: ACVMField[][]): ACVMField;
|
|
34
|
+
callPrivateFunction([contractAddress]: ACVMField[], [functionSelector]: ACVMField[], [argsHash]: ACVMField[], [sideffectCounter]: ACVMField[]): Promise<ACVMField[]>;
|
|
35
|
+
callPublicFunction([contractAddress]: ACVMField[], [functionSelector]: ACVMField[], [argsHash]: ACVMField[]): Promise<ACVMField[]>;
|
|
36
|
+
enqueuePublicFunctionCall([contractAddress]: ACVMField[], [functionSelector]: ACVMField[], [argsHash]: ACVMField[], [sideffectCounter]: ACVMField[]): Promise<string[]>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/oracle.ts"],"names":[],"mappings":"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"}
|