@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
|
@@ -3,7 +3,7 @@ import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { ContractClassLog, LogWithTxData } from '@aztec/stdlib/logs';
|
|
5
5
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
6
|
-
import {
|
|
6
|
+
import { fromBoundedVec, fromUintArray, fromUintBoundedVec } from '../deserialize.js';
|
|
7
7
|
import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../serialize.js';
|
|
8
8
|
/**
|
|
9
9
|
* A data source that has all the apis required by Aztec.nr.
|
|
@@ -14,40 +14,49 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
14
14
|
}
|
|
15
15
|
getRandomField() {
|
|
16
16
|
const val = this.typedOracle.getRandomField();
|
|
17
|
-
return
|
|
17
|
+
return Promise.resolve([
|
|
18
|
+
toACVMField(val)
|
|
19
|
+
]);
|
|
18
20
|
}
|
|
19
21
|
// Since the argument is a slice, noir automatically adds a length field to oracle call.
|
|
20
22
|
async storeInExecutionCache(_length, values) {
|
|
21
|
-
const hash = await this.typedOracle.storeInExecutionCache(values.map(
|
|
22
|
-
return
|
|
23
|
+
const hash = await this.typedOracle.storeInExecutionCache(values.map(Fr.fromString));
|
|
24
|
+
return [
|
|
25
|
+
toACVMField(hash)
|
|
26
|
+
];
|
|
23
27
|
}
|
|
24
28
|
async loadFromExecutionCache([returnsHash]) {
|
|
25
|
-
const values = await this.typedOracle.loadFromExecutionCache(
|
|
26
|
-
return
|
|
29
|
+
const values = await this.typedOracle.loadFromExecutionCache(Fr.fromString(returnsHash));
|
|
30
|
+
return [
|
|
31
|
+
values.map(toACVMField)
|
|
32
|
+
];
|
|
27
33
|
}
|
|
28
34
|
async getBlockNumber() {
|
|
29
|
-
return
|
|
35
|
+
return [
|
|
36
|
+
toACVMField(await this.typedOracle.getBlockNumber())
|
|
37
|
+
];
|
|
30
38
|
}
|
|
31
39
|
async getContractAddress() {
|
|
32
|
-
return
|
|
40
|
+
return [
|
|
41
|
+
toACVMField(await this.typedOracle.getContractAddress())
|
|
42
|
+
];
|
|
33
43
|
}
|
|
34
44
|
async getVersion() {
|
|
35
|
-
return
|
|
45
|
+
return [
|
|
46
|
+
toACVMField(await this.typedOracle.getVersion())
|
|
47
|
+
];
|
|
36
48
|
}
|
|
37
49
|
async getChainId() {
|
|
38
|
-
return toACVMField(await this.typedOracle.getChainId());
|
|
39
|
-
}
|
|
40
|
-
async getKeyValidationRequest([pkMHash]) {
|
|
41
|
-
const { pkM, skApp } = await this.typedOracle.getKeyValidationRequest(fromACVMField(pkMHash));
|
|
42
50
|
return [
|
|
43
|
-
toACVMField(
|
|
44
|
-
toACVMField(pkM.y),
|
|
45
|
-
toACVMField(pkM.isInfinite),
|
|
46
|
-
toACVMField(skApp)
|
|
51
|
+
toACVMField(await this.typedOracle.getChainId())
|
|
47
52
|
];
|
|
48
53
|
}
|
|
54
|
+
async getKeyValidationRequest([pkMHash]) {
|
|
55
|
+
const keyValidationRequest = await this.typedOracle.getKeyValidationRequest(Fr.fromString(pkMHash));
|
|
56
|
+
return keyValidationRequest.toFields().map(toACVMField);
|
|
57
|
+
}
|
|
49
58
|
async getContractInstance([address]) {
|
|
50
|
-
const instance = await this.typedOracle.getContractInstance(AztecAddress.fromField(
|
|
59
|
+
const instance = await this.typedOracle.getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
|
|
51
60
|
return [
|
|
52
61
|
instance.salt,
|
|
53
62
|
instance.deployer,
|
|
@@ -57,44 +66,47 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
57
66
|
].map(toACVMField);
|
|
58
67
|
}
|
|
59
68
|
async getMembershipWitness([blockNumber], [treeId], [leafValue]) {
|
|
60
|
-
const parsedBlockNumber =
|
|
61
|
-
const parsedTreeId =
|
|
62
|
-
const parsedLeafValue =
|
|
69
|
+
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
70
|
+
const parsedTreeId = Fr.fromString(treeId).toNumber();
|
|
71
|
+
const parsedLeafValue = Fr.fromString(leafValue);
|
|
63
72
|
const witness = await this.typedOracle.getMembershipWitness(parsedBlockNumber, parsedTreeId, parsedLeafValue);
|
|
64
73
|
if (!witness) {
|
|
65
74
|
throw new Error(`Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block ${parsedBlockNumber}.`);
|
|
66
75
|
}
|
|
67
|
-
return
|
|
76
|
+
return [
|
|
77
|
+
toACVMField(witness[0]),
|
|
78
|
+
witness.slice(1).map(toACVMField)
|
|
79
|
+
];
|
|
68
80
|
}
|
|
69
81
|
async getNullifierMembershipWitness([blockNumber], [nullifier]) {
|
|
70
|
-
const parsedBlockNumber =
|
|
71
|
-
const parsedNullifier =
|
|
82
|
+
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
83
|
+
const parsedNullifier = Fr.fromString(nullifier);
|
|
72
84
|
const witness = await this.typedOracle.getNullifierMembershipWitness(parsedBlockNumber, parsedNullifier);
|
|
73
85
|
if (!witness) {
|
|
74
86
|
throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
|
|
75
87
|
}
|
|
76
|
-
return witness.
|
|
88
|
+
return witness.toNoirRepresentation();
|
|
77
89
|
}
|
|
78
90
|
async getLowNullifierMembershipWitness([blockNumber], [nullifier]) {
|
|
79
|
-
const parsedBlockNumber =
|
|
80
|
-
const parsedNullifier =
|
|
91
|
+
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
92
|
+
const parsedNullifier = Fr.fromString(nullifier);
|
|
81
93
|
const witness = await this.typedOracle.getLowNullifierMembershipWitness(parsedBlockNumber, parsedNullifier);
|
|
82
94
|
if (!witness) {
|
|
83
95
|
throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
|
|
84
96
|
}
|
|
85
|
-
return witness.
|
|
97
|
+
return witness.toNoirRepresentation();
|
|
86
98
|
}
|
|
87
|
-
async
|
|
88
|
-
const parsedBlockNumber =
|
|
89
|
-
const parsedLeafSlot =
|
|
90
|
-
const witness = await this.typedOracle.
|
|
99
|
+
async getPublicDataWitness([blockNumber], [leafSlot]) {
|
|
100
|
+
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
101
|
+
const parsedLeafSlot = Fr.fromString(leafSlot);
|
|
102
|
+
const witness = await this.typedOracle.getPublicDataWitness(parsedBlockNumber, parsedLeafSlot);
|
|
91
103
|
if (!witness) {
|
|
92
104
|
throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
|
|
93
105
|
}
|
|
94
|
-
return witness.
|
|
106
|
+
return witness.toNoirRepresentation();
|
|
95
107
|
}
|
|
96
108
|
async getBlockHeader([blockNumber]) {
|
|
97
|
-
const parsedBlockNumber =
|
|
109
|
+
const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
|
|
98
110
|
const header = await this.typedOracle.getBlockHeader(parsedBlockNumber);
|
|
99
111
|
if (!header) {
|
|
100
112
|
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
@@ -102,23 +114,27 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
102
114
|
return header.toFields().map(toACVMField);
|
|
103
115
|
}
|
|
104
116
|
async getAuthWitness([messageHash]) {
|
|
105
|
-
const messageHashField =
|
|
117
|
+
const messageHashField = Fr.fromString(messageHash);
|
|
106
118
|
const witness = await this.typedOracle.getAuthWitness(messageHashField);
|
|
107
119
|
if (!witness) {
|
|
108
120
|
throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
|
|
109
121
|
}
|
|
110
|
-
return
|
|
122
|
+
return [
|
|
123
|
+
witness.map(toACVMField)
|
|
124
|
+
];
|
|
111
125
|
}
|
|
112
126
|
async getPublicKeysAndPartialAddress([address]) {
|
|
113
|
-
const parsedAddress = AztecAddress.fromField(
|
|
127
|
+
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
114
128
|
const { publicKeys, partialAddress } = await this.typedOracle.getCompleteAddress(parsedAddress);
|
|
115
129
|
return [
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
[
|
|
131
|
+
...publicKeys.toFields(),
|
|
132
|
+
partialAddress
|
|
133
|
+
].map(toACVMField)
|
|
134
|
+
];
|
|
119
135
|
}
|
|
120
136
|
async getNotes([storageSlot], [numSelects], selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, [limit], [offset], [status], [returnSize]) {
|
|
121
|
-
const noteDatas = await this.typedOracle.getNotes(
|
|
137
|
+
const noteDatas = await this.typedOracle.getNotes(Fr.fromString(storageSlot), +numSelects, selectByIndexes.map((s)=>+s), selectByOffsets.map((s)=>+s), selectByLengths.map((s)=>+s), selectValues.map(Fr.fromString), selectComparators.map((s)=>+s), sortByIndexes.map((s)=>+s), sortByOffsets.map((s)=>+s), sortByLengths.map((s)=>+s), sortOrder.map((s)=>+s), +limit, +offset, +status);
|
|
122
138
|
const noteLength = noteDatas?.[0]?.note.items.length ?? 0;
|
|
123
139
|
if (!noteDatas.every(({ note })=>noteLength === note.items.length)) {
|
|
124
140
|
throw new Error('Notes should all be the same length.');
|
|
@@ -144,83 +160,104 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
144
160
|
throw new Error(`Return data size too big. Maximum ${returnFieldSize} fields. Got ${flattenData.length}.`);
|
|
145
161
|
}
|
|
146
162
|
const paddedZeros = Array(returnFieldSize - returnData.length).fill(toACVMField(0));
|
|
147
|
-
return
|
|
163
|
+
return [
|
|
164
|
+
returnData.concat(paddedZeros)
|
|
165
|
+
];
|
|
148
166
|
}
|
|
149
167
|
notifyCreatedNote([storageSlot], [noteTypeId], note, [noteHash], [counter]) {
|
|
150
|
-
this.typedOracle.notifyCreatedNote(
|
|
151
|
-
return
|
|
168
|
+
this.typedOracle.notifyCreatedNote(Fr.fromString(storageSlot), NoteSelector.fromField(Fr.fromString(noteTypeId)), note.map(Fr.fromString), Fr.fromString(noteHash), +counter);
|
|
169
|
+
return Promise.resolve([]);
|
|
152
170
|
}
|
|
153
171
|
async notifyNullifiedNote([innerNullifier], [noteHash], [counter]) {
|
|
154
|
-
await this.typedOracle.notifyNullifiedNote(
|
|
155
|
-
return
|
|
172
|
+
await this.typedOracle.notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
|
|
173
|
+
return [];
|
|
156
174
|
}
|
|
157
175
|
async notifyCreatedNullifier([innerNullifier]) {
|
|
158
|
-
await this.typedOracle.notifyCreatedNullifier(
|
|
159
|
-
return
|
|
176
|
+
await this.typedOracle.notifyCreatedNullifier(Fr.fromString(innerNullifier));
|
|
177
|
+
return [];
|
|
160
178
|
}
|
|
161
179
|
async checkNullifierExists([innerNullifier]) {
|
|
162
|
-
const exists = await this.typedOracle.checkNullifierExists(
|
|
163
|
-
return
|
|
180
|
+
const exists = await this.typedOracle.checkNullifierExists(Fr.fromString(innerNullifier));
|
|
181
|
+
return [
|
|
182
|
+
toACVMField(exists)
|
|
183
|
+
];
|
|
164
184
|
}
|
|
165
185
|
async getL1ToL2MembershipWitness([contractAddress], [messageHash], [secret]) {
|
|
166
|
-
const message = await this.typedOracle.getL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress),
|
|
167
|
-
return message.
|
|
186
|
+
const message = await this.typedOracle.getL1ToL2MembershipWitness(AztecAddress.fromString(contractAddress), Fr.fromString(messageHash), Fr.fromString(secret));
|
|
187
|
+
return message.toNoirRepresentation();
|
|
168
188
|
}
|
|
169
189
|
async storageRead([contractAddress], [startStorageSlot], [blockNumber], [numberOfElements]) {
|
|
170
|
-
const values = await this.typedOracle.storageRead(new AztecAddress(
|
|
171
|
-
return
|
|
190
|
+
const values = await this.typedOracle.storageRead(new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +blockNumber, +numberOfElements);
|
|
191
|
+
return [
|
|
192
|
+
values.map(toACVMField)
|
|
193
|
+
];
|
|
172
194
|
}
|
|
173
195
|
async storageWrite([startStorageSlot], values) {
|
|
174
|
-
const newValues = await this.typedOracle.storageWrite(
|
|
196
|
+
const newValues = await this.typedOracle.storageWrite(Fr.fromString(startStorageSlot), values.map(Fr.fromString));
|
|
175
197
|
return newValues.map(toACVMField);
|
|
176
198
|
}
|
|
177
199
|
notifyCreatedContractClassLog([contractAddress], message, [counter]) {
|
|
178
|
-
const logPayload = message.map(
|
|
179
|
-
const log = new ContractClassLog(new AztecAddress(
|
|
200
|
+
const logPayload = message.map(Fr.fromString);
|
|
201
|
+
const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logPayload);
|
|
180
202
|
this.typedOracle.notifyCreatedContractClassLog(log, +counter);
|
|
203
|
+
return Promise.resolve([]);
|
|
181
204
|
}
|
|
182
205
|
debugLog(message, _ignoredFieldsSize, fields) {
|
|
183
|
-
const messageStr = message.map((acvmField)=>String.fromCharCode(
|
|
184
|
-
const fieldsFr = fields.map(
|
|
206
|
+
const messageStr = message.map((acvmField)=>String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
207
|
+
const fieldsFr = fields.map(Fr.fromString);
|
|
185
208
|
this.typedOracle.debugLog(messageStr, fieldsFr);
|
|
209
|
+
return Promise.resolve([]);
|
|
186
210
|
}
|
|
187
211
|
async callPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
|
|
188
|
-
const { endSideEffectCounter, returnsHash } = await this.typedOracle.callPrivateFunction(AztecAddress.fromField(
|
|
212
|
+
const { endSideEffectCounter, returnsHash } = await this.typedOracle.callPrivateFunction(AztecAddress.fromField(Fr.fromString(contractAddress)), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
|
|
189
213
|
return [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
214
|
+
[
|
|
215
|
+
endSideEffectCounter,
|
|
216
|
+
returnsHash
|
|
217
|
+
].map(toACVMField)
|
|
218
|
+
];
|
|
193
219
|
}
|
|
194
220
|
async enqueuePublicFunctionCall([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
|
|
195
|
-
const newArgsHash = await this.typedOracle.enqueuePublicFunctionCall(AztecAddress.fromString(contractAddress), FunctionSelector.fromField(
|
|
196
|
-
return
|
|
221
|
+
const newArgsHash = await this.typedOracle.enqueuePublicFunctionCall(AztecAddress.fromString(contractAddress), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
|
|
222
|
+
return [
|
|
223
|
+
toACVMField(newArgsHash)
|
|
224
|
+
];
|
|
197
225
|
}
|
|
198
226
|
async setPublicTeardownFunctionCall([contractAddress], [functionSelector], [argsHash], [sideEffectCounter], [isStaticCall]) {
|
|
199
|
-
const newArgsHash = await this.typedOracle.setPublicTeardownFunctionCall(AztecAddress.fromString(contractAddress), FunctionSelector.fromField(
|
|
200
|
-
return
|
|
227
|
+
const newArgsHash = await this.typedOracle.setPublicTeardownFunctionCall(AztecAddress.fromString(contractAddress), FunctionSelector.fromField(Fr.fromString(functionSelector)), Fr.fromString(argsHash), Fr.fromString(sideEffectCounter).toNumber(), Fr.fromString(isStaticCall).toBool());
|
|
228
|
+
return [
|
|
229
|
+
toACVMField(newArgsHash)
|
|
230
|
+
];
|
|
201
231
|
}
|
|
202
232
|
notifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]) {
|
|
203
|
-
this.typedOracle.notifySetMinRevertibleSideEffectCounter(
|
|
233
|
+
this.typedOracle.notifySetMinRevertibleSideEffectCounter(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
234
|
+
return Promise.resolve([]);
|
|
204
235
|
}
|
|
205
236
|
async getIndexedTaggingSecretAsSender([sender], [recipient]) {
|
|
206
237
|
const taggingSecret = await this.typedOracle.getIndexedTaggingSecretAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
|
|
207
|
-
return
|
|
238
|
+
return [
|
|
239
|
+
taggingSecret.toFields().map(toACVMField)
|
|
240
|
+
];
|
|
208
241
|
}
|
|
209
242
|
async incrementAppTaggingSecretIndexAsSender([sender], [recipient]) {
|
|
210
243
|
await this.typedOracle.incrementAppTaggingSecretIndexAsSender(AztecAddress.fromString(sender), AztecAddress.fromString(recipient));
|
|
244
|
+
return [];
|
|
211
245
|
}
|
|
212
246
|
async syncNotes() {
|
|
213
247
|
await this.typedOracle.syncNotes();
|
|
248
|
+
return [];
|
|
214
249
|
}
|
|
215
250
|
async deliverNote([contractAddress], [storageSlot], [nonce], content, [contentLength], [noteHash], [nullifier], [txHash], [recipient]) {
|
|
216
251
|
// TODO(#10728): try-catch this block and return false if we get an exception so that the contract can decide what
|
|
217
252
|
// to do if a note fails delivery (e.g. not increment the tagging index, or add it to some pending work list).
|
|
218
253
|
// Delivery might fail due to temporary issues, such as poor node connectivity.
|
|
219
|
-
await this.typedOracle.deliverNote(AztecAddress.fromString(contractAddress),
|
|
220
|
-
return
|
|
254
|
+
await this.typedOracle.deliverNote(AztecAddress.fromString(contractAddress), Fr.fromString(storageSlot), Fr.fromString(nonce), fromBoundedVec(content, contentLength), Fr.fromString(noteHash), Fr.fromString(nullifier), Fr.fromString(txHash), AztecAddress.fromString(recipient));
|
|
255
|
+
return [
|
|
256
|
+
toACVMField(true)
|
|
257
|
+
];
|
|
221
258
|
}
|
|
222
259
|
async getLogByTag([tag]) {
|
|
223
|
-
const log = await this.typedOracle.getLogByTag(
|
|
260
|
+
const log = await this.typedOracle.getLogByTag(Fr.fromString(tag));
|
|
224
261
|
if (log == null) {
|
|
225
262
|
return [
|
|
226
263
|
toACVMField(0),
|
|
@@ -234,17 +271,18 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
234
271
|
}
|
|
235
272
|
}
|
|
236
273
|
async storeCapsule([contractAddress], [slot], capsule) {
|
|
237
|
-
await this.typedOracle.storeCapsule(AztecAddress.fromField(
|
|
274
|
+
await this.typedOracle.storeCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString));
|
|
275
|
+
return [];
|
|
238
276
|
}
|
|
239
277
|
async loadCapsule([contractAddress], [slot], [tSize]) {
|
|
240
|
-
const values = await this.typedOracle.loadCapsule(AztecAddress.fromField(
|
|
278
|
+
const values = await this.typedOracle.loadCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
|
|
241
279
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
242
280
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
243
281
|
if (values === null) {
|
|
244
282
|
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
245
283
|
return [
|
|
246
284
|
toACVMField(0),
|
|
247
|
-
Array(
|
|
285
|
+
Array(Fr.fromString(tSize).toNumber()).fill(toACVMField(0))
|
|
248
286
|
];
|
|
249
287
|
} else {
|
|
250
288
|
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
@@ -255,10 +293,12 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
255
293
|
}
|
|
256
294
|
}
|
|
257
295
|
async deleteCapsule([contractAddress], [slot]) {
|
|
258
|
-
await this.typedOracle.deleteCapsule(AztecAddress.fromField(
|
|
296
|
+
await this.typedOracle.deleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot));
|
|
297
|
+
return [];
|
|
259
298
|
}
|
|
260
299
|
async copyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
|
|
261
|
-
await this.typedOracle.copyCapsule(AztecAddress.fromField(
|
|
300
|
+
await this.typedOracle.copyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
|
|
301
|
+
return [];
|
|
262
302
|
}
|
|
263
303
|
async aes128Decrypt(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
|
|
264
304
|
const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
|
|
@@ -268,11 +308,11 @@ import { bufferToBoundedVec, toACVMField, toACVMFieldSingleOrArray } from '../se
|
|
|
268
308
|
return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
|
|
269
309
|
}
|
|
270
310
|
async getSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
|
|
271
|
-
const secret = await this.typedOracle.getSharedSecret(AztecAddress.fromField(
|
|
311
|
+
const secret = await this.typedOracle.getSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
|
|
272
312
|
ephPKField0,
|
|
273
313
|
ephPKField1,
|
|
274
314
|
ephPKField2
|
|
275
|
-
].map(
|
|
315
|
+
].map(Fr.fromString)));
|
|
276
316
|
return secret.toFields().map(toACVMField);
|
|
277
317
|
}
|
|
278
318
|
}
|
|
@@ -47,7 +47,7 @@ export declare abstract class TypedOracle {
|
|
|
47
47
|
getContractInstance(_address: AztecAddress): Promise<ContractInstance>;
|
|
48
48
|
getMembershipWitness(_blockNumber: number, _treeId: MerkleTreeId, _leafValue: Fr): Promise<Fr[] | undefined>;
|
|
49
49
|
getNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
50
|
-
|
|
50
|
+
getPublicDataWitness(_blockNumber: number, _leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
51
51
|
getLowNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
52
52
|
getBlockHeader(_blockNumber: number): Promise<BlockHeader | undefined>;
|
|
53
53
|
getCompleteAddress(_account: AztecAddress): Promise<CompleteAddress>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../../src/private/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,wCAAwC;IACxC,eAAe,EAAE,YAAY,CAAC;IAC9B,oCAAoC;IACpC,WAAW,EAAE,EAAE,CAAC;IAChB,6BAA6B;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,0BAA0B;IAC1B,QAAQ,EAAE,EAAE,CAAC;IACb,4EAA4E;IAC5E,eAAe,CAAC,EAAE,EAAE,CAAC;IACrB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;;GAIG;AACH,8BAAsB,WAAW;IAC/B,cAAc,IAAI,EAAE;IAIpB,qBAAqB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAIjD,sBAAsB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIhD,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;IAIzB,uBAAuB,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpE,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IAI5G,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAIpH,
|
|
1
|
+
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../../src/private/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,8 @@ class OracleMethodNotAvailableError extends Error {
|
|
|
42
42
|
getNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
43
43
|
return Promise.reject(new OracleMethodNotAvailableError('getNullifierMembershipWitness'));
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
return Promise.reject(new OracleMethodNotAvailableError('
|
|
45
|
+
getPublicDataWitness(_blockNumber, _leafSlot) {
|
|
46
|
+
return Promise.reject(new OracleMethodNotAvailableError('getPublicDataWitness'));
|
|
47
47
|
}
|
|
48
48
|
getLowNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
49
49
|
return Promise.reject(new OracleMethodNotAvailableError('getLowNullifierMembershipWitness'));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Fr, Point } from '@aztec/foundation/fields';
|
|
2
|
-
import type { FunctionArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
2
|
+
import type { FunctionArtifact, FunctionArtifactWithContractName, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { L2Block } from '@aztec/stdlib/block';
|
|
5
5
|
import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
|
|
@@ -39,12 +39,6 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
39
39
|
* @throws An error if the account is not registered in the database.
|
|
40
40
|
*/
|
|
41
41
|
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress>;
|
|
42
|
-
/**
|
|
43
|
-
* Retrieve the auth witness for a given message hash.
|
|
44
|
-
* @param messageHash - The message hash.
|
|
45
|
-
* @returns A Promise that resolves to an array of field elements representing the auth witness.
|
|
46
|
-
*/
|
|
47
|
-
getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
|
|
48
42
|
/**
|
|
49
43
|
* Retrieve keys associated with a specific master public key and app address.
|
|
50
44
|
* @param pkMHash - The master public key hash.
|
|
@@ -72,7 +66,7 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
72
66
|
* @param selector - The corresponding function selector.
|
|
73
67
|
* @returns A Promise that resolves to a FunctionArtifact object.
|
|
74
68
|
*/
|
|
75
|
-
getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise<
|
|
69
|
+
getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionArtifactWithContractName>;
|
|
76
70
|
/**
|
|
77
71
|
* Generates a stable function name for debug purposes.
|
|
78
72
|
* @param contractAddress - The contract address.
|
|
@@ -131,7 +125,7 @@ export interface ExecutionDataProvider extends CommitmentsDBInterface {
|
|
|
131
125
|
* @param blockNumber - The block number at which to get the witness.
|
|
132
126
|
* @param leafSlot - The slot of the public data in the public data tree.
|
|
133
127
|
*/
|
|
134
|
-
|
|
128
|
+
getPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
135
129
|
/**
|
|
136
130
|
* Gets the storage value at the given contract storage slot.
|
|
137
131
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_data_provider.d.ts","sourceRoot":"","sources":["../../src/private/execution_data_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution_data_provider.d.ts","sourceRoot":"","sources":["../../src/private/execution_data_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { type FunctionArtifact, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
2
|
+
import { type FunctionArtifact, type FunctionArtifactWithContractName, type FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
5
5
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
@@ -12,7 +12,7 @@ import type { SimulationProvider } from './providers/simulation_provider.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Execute a private function and return the execution result.
|
|
14
14
|
*/
|
|
15
|
-
export declare function executePrivateFunction(simulator: SimulationProvider, privateExecutionOracle: PrivateExecutionOracle, artifact:
|
|
15
|
+
export declare function executePrivateFunction(simulator: SimulationProvider, privateExecutionOracle: PrivateExecutionOracle, artifact: FunctionArtifactWithContractName, contractAddress: AztecAddress, functionSelector: FunctionSelector, log?: import("@aztec/foundation/log").Logger): Promise<PrivateCallExecutionResult>;
|
|
16
16
|
/**
|
|
17
17
|
* Get the private circuit public inputs from the partial witness.
|
|
18
18
|
* @param artifact - The function artifact
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../src/private/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,
|
|
1
|
+
{"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../src/private/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,kBAAkB,EAC7B,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,gCAAgC,EAC1C,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA8DrC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B;AAED,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,EACxD,WAAW,EAAE,MAAM,eAWpB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,YAAY,EAC7B,qBAAqB,EAAE,qBAAqB,EAC5C,WAAW,CAAC,EAAE,MAAM,iBAUrB"}
|
|
@@ -8,7 +8,7 @@ import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
|
8
8
|
import { SharedMutableValues, SharedMutableValuesWithHash } from '@aztec/stdlib/shared-mutable';
|
|
9
9
|
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
10
10
|
import { ExecutionError, resolveAssertionMessageFromError } from '../common/errors.js';
|
|
11
|
-
import {
|
|
11
|
+
import { witnessMapToFields } from './acvm/deserialize.js';
|
|
12
12
|
import { Oracle, extractCallStack } from './acvm/index.js';
|
|
13
13
|
/**
|
|
14
14
|
* Execute a private function and return the execution result.
|
|
@@ -17,11 +17,10 @@ import { Oracle, extractCallStack } from './acvm/index.js';
|
|
|
17
17
|
log.verbose(`Executing private function ${functionName}`, {
|
|
18
18
|
contract: contractAddress
|
|
19
19
|
});
|
|
20
|
-
const acir = artifact.bytecode;
|
|
21
20
|
const initialWitness = privateExecutionOracle.getInitialWitness(artifact);
|
|
22
21
|
const acvmCallback = new Oracle(privateExecutionOracle);
|
|
23
22
|
const timer = new Timer();
|
|
24
|
-
const acirExecutionResult = await simulator.executeUserCircuit(
|
|
23
|
+
const acirExecutionResult = await simulator.executeUserCircuit(initialWitness, artifact, acvmCallback).catch((err)=>{
|
|
25
24
|
err.message = resolveAssertionMessageFromError(err, artifact);
|
|
26
25
|
throw new ExecutionError(err.message, {
|
|
27
26
|
contractAddress,
|
|
@@ -52,7 +51,7 @@ import { Oracle, extractCallStack } from './acvm/index.js';
|
|
|
52
51
|
const enqueuedPublicFunctionCalls = privateExecutionOracle.getEnqueuedPublicFunctionCalls();
|
|
53
52
|
const publicTeardownFunctionCall = privateExecutionOracle.getPublicTeardownFunctionCall();
|
|
54
53
|
log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
|
|
55
|
-
return new PrivateCallExecutionResult(
|
|
54
|
+
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, noteHashLeafIndexMap, newNotes, noteHashNullifierCounterMap, rawReturnValues, nestedExecutions, enqueuedPublicFunctionCalls, publicTeardownFunctionCall, contractClassLogs);
|
|
56
55
|
}
|
|
57
56
|
/**
|
|
58
57
|
* Get the private circuit public inputs from the partial witness.
|
|
@@ -69,7 +68,7 @@ import { Oracle, extractCallStack } from './acvm/index.js';
|
|
|
69
68
|
if (returnedField === undefined) {
|
|
70
69
|
throw new Error(`Missing return value for index ${i}`);
|
|
71
70
|
}
|
|
72
|
-
returnData.push(
|
|
71
|
+
returnData.push(Fr.fromString(returnedField));
|
|
73
72
|
}
|
|
74
73
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
75
74
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import type { WitnessMap } from '@aztec/noir-
|
|
4
|
-
import type {
|
|
3
|
+
import type { WitnessMap } from '@aztec/noir-acvm_js';
|
|
4
|
+
import type { ForeignCallHandler } from '@aztec/noir-protocol-circuits-types/types';
|
|
5
|
+
import type { FunctionArtifactWithContractName } from '@aztec/stdlib/abi';
|
|
6
|
+
import type { NoirCompiledCircuitWithName } from '@aztec/stdlib/noir';
|
|
5
7
|
import type { ACIRCallback, ACIRExecutionResult } from '../acvm/acvm.js';
|
|
6
8
|
import type { ACVMWitness } from '../acvm/acvm_types.js';
|
|
7
9
|
import type { SimulationProvider } from './simulation_provider.js';
|
|
@@ -34,7 +36,7 @@ export declare class NativeACVMSimulator implements SimulationProvider {
|
|
|
34
36
|
private pathToAcvm;
|
|
35
37
|
private witnessFilename?;
|
|
36
38
|
constructor(workingDirectory: string, pathToAcvm: string, witnessFilename?: string | undefined);
|
|
37
|
-
executeProtocolCircuit(input:
|
|
38
|
-
executeUserCircuit(
|
|
39
|
+
executeProtocolCircuit(input: ACVMWitness, artifact: NoirCompiledCircuitWithName, callback: ForeignCallHandler | undefined): Promise<ACVMWitness>;
|
|
40
|
+
executeUserCircuit(_input: ACVMWitness, _artifact: FunctionArtifactWithContractName, _callback: ACIRCallback): Promise<ACIRExecutionResult>;
|
|
39
41
|
}
|
|
40
42
|
//# sourceMappingURL=acvm_native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acvm_native.d.ts","sourceRoot":"","sources":["../../../src/private/providers/acvm_native.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"acvm_native.d.ts","sourceRoot":"","sources":["../../../src/private/providers/acvm_native.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAKtE,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAInE,oBAAY,WAAW;IACrB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AAmBnD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,UAAU,EACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAqErB;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,OAAO,CAAC,gBAAgB;IAAU,OAAO,CAAC,UAAU;IAAU,OAAO,CAAC,eAAe,CAAC;gBAA9E,gBAAgB,EAAE,MAAM,EAAU,UAAU,EAAE,MAAM,EAAU,eAAe,CAAC,oBAAQ;IAEpG,sBAAsB,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,2BAA2B,EACrC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GACvC,OAAO,CAAC,WAAW,CAAC;IA6BvB,kBAAkB,CAChB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,gCAAgC,EAC3C,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,mBAAmB,CAAC;CAGhC"}
|
|
@@ -119,11 +119,14 @@ export class NativeACVMSimulator {
|
|
|
119
119
|
this.pathToAcvm = pathToAcvm;
|
|
120
120
|
this.witnessFilename = witnessFilename;
|
|
121
121
|
}
|
|
122
|
-
async executeProtocolCircuit(input,
|
|
122
|
+
async executeProtocolCircuit(input, artifact, callback) {
|
|
123
123
|
// Execute the circuit on those initial witness values
|
|
124
|
+
if (callback) {
|
|
125
|
+
throw new Error('Native ACVM simulator does not support foreign calls. Ignoring callback.');
|
|
126
|
+
}
|
|
124
127
|
const operation = async (directory)=>{
|
|
125
128
|
// Decode the bytecode from base64 since the acvm does not know about base64 encoding
|
|
126
|
-
const decodedBytecode = Buffer.from(
|
|
129
|
+
const decodedBytecode = Buffer.from(artifact.bytecode, 'base64');
|
|
127
130
|
// Execute the circuit
|
|
128
131
|
const result = await executeNativeCircuit(input, decodedBytecode, directory, this.pathToAcvm, this.witnessFilename);
|
|
129
132
|
if (result.status == 1) {
|
|
@@ -133,7 +136,7 @@ export class NativeACVMSimulator {
|
|
|
133
136
|
};
|
|
134
137
|
return await runInDirectory(this.workingDirectory, operation, false, logger);
|
|
135
138
|
}
|
|
136
|
-
executeUserCircuit(
|
|
139
|
+
executeUserCircuit(_input, _artifact, _callback) {
|
|
137
140
|
throw new Error('Not implemented');
|
|
138
141
|
}
|
|
139
142
|
}
|