@aztec/txe 0.0.1-commit.f504929 → 0.0.1-commit.f5a9928
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/AuthRegistry-56AMRLSQ.js +3 -0
- package/dest/AuthRegistry-56AMRLSQ.js.map +7 -0
- package/dest/ContractClassRegistry-CRN27URB.js +3 -0
- package/dest/ContractClassRegistry-CRN27URB.js.map +7 -0
- package/dest/ContractInstanceRegistry-GRGL26IC.js +3 -0
- package/dest/ContractInstanceRegistry-GRGL26IC.js.map +7 -0
- package/dest/FeeJuice-J23RVHLW.js +3 -0
- package/dest/FeeJuice-J23RVHLW.js.map +7 -0
- package/dest/HandshakeRegistry-5.0.1-PEFCLEGP.js +3 -0
- package/dest/HandshakeRegistry-5.0.1-PEFCLEGP.js.map +7 -0
- package/dest/HandshakeRegistry-GNFACTEE.js +3 -0
- package/dest/HandshakeRegistry-GNFACTEE.js.map +7 -0
- package/dest/MultiCallEntrypoint-MIDICLQB.js +3 -0
- package/dest/MultiCallEntrypoint-MIDICLQB.js.map +7 -0
- package/dest/SchnorrAccount-ZRENHSMV.js +3 -0
- package/dest/SchnorrAccount-ZRENHSMV.js.map +7 -0
- package/dest/SchnorrInitializerlessAccount-L56LOFSV.js +3 -0
- package/dest/SchnorrInitializerlessAccount-L56LOFSV.js.map +7 -0
- package/dest/bin/check_txe_oracle_version.d.ts +2 -0
- package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
- package/dest/bin/check_txe_oracle_version.js +53 -0
- package/dest/bin/index.js +3 -30
- package/dest/bin/index.js.map +7 -0
- package/dest/bin/oracle_test_server.d.ts +3 -0
- package/dest/bin/oracle_test_server.d.ts.map +1 -0
- package/dest/bin/oracle_test_server.js +41 -0
- package/dest/chunk-BJVAAXNA.js +3 -0
- package/dest/chunk-BJVAAXNA.js.map +7 -0
- package/dest/chunk-C2WBKKGS.js +266 -0
- package/dest/chunk-C2WBKKGS.js.map +7 -0
- package/dest/chunk-OFS2CI6U.js +304 -0
- package/dest/chunk-OFS2CI6U.js.map +7 -0
- package/dest/constants.d.ts +5 -1
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +9 -1
- package/dest/dispatcher_pool.d.ts +67 -0
- package/dest/dispatcher_pool.d.ts.map +1 -0
- package/dest/dispatcher_pool.js +286 -0
- package/dest/index.d.ts +51 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +72 -190
- package/dest/metafile.json +40416 -0
- package/dest/msgpackr_fr_extension.d.ts +2 -0
- package/dest/msgpackr_fr_extension.d.ts.map +1 -0
- package/dest/msgpackr_fr_extension.js +21 -0
- package/dest/oracle/interfaces.d.ts +47 -9
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
- package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
- package/dest/oracle/tagging_secret_strategy.js +12 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
- package/dest/oracle/test-resolver/default_fixtures.js +200 -0
- package/dest/oracle/test-resolver/index.d.ts +9 -0
- package/dest/oracle/test-resolver/index.d.ts.map +1 -0
- package/dest/oracle/test-resolver/index.js +32 -0
- package/dest/oracle/test-resolver/resolver.d.ts +48 -0
- package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
- package/dest/oracle/test-resolver/resolver.js +181 -0
- package/dest/oracle/txe_oracle_public_context.d.ts +26 -2
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +49 -1
- package/dest/oracle/txe_oracle_registry.d.ts +172 -0
- package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_registry.js +767 -0
- package/dest/oracle/txe_oracle_top_level_context.d.ts +58 -17
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +259 -88
- package/dest/oracle/txe_oracle_version.d.ts +17 -0
- package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_version.js +14 -0
- package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
- package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
- package/dest/oracle/txe_private_execution_oracle.js +15 -0
- package/dest/rpc_server.d.ts +14 -0
- package/dest/rpc_server.d.ts.map +1 -0
- package/dest/rpc_server.js +78 -0
- package/dest/rpc_translator.d.ts +115 -228
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +791 -607
- package/dest/server.bundle.js +3 -0
- package/dest/server.bundle.js.map +7 -0
- package/dest/state_machine/archiver.d.ts +6 -5
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +28 -20
- package/dest/state_machine/dummy_p2p_client.d.ts +18 -8
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +31 -4
- package/dest/state_machine/global_variable_builder.d.ts +10 -6
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +8 -5
- package/dest/state_machine/index.d.ts +11 -5
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +50 -10
- package/dest/state_machine/mock_epoch_cache.d.ts +16 -3
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +29 -2
- package/dest/state_machine/synchronizer.d.ts +9 -6
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +10 -6
- package/dest/txe_session.d.ts +90 -19
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +315 -61
- package/dest/utils/block_creation.d.ts +2 -2
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +2 -2
- package/dest/utils/encoding.d.ts +192 -0
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/{util → utils}/encoding.js +7 -2
- package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
- package/dest/utils/expected_failure_error.d.ts.map +1 -0
- package/dest/utils/tx_effect_creation.d.ts +1 -1
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +0 -1
- package/dest/{util → utils}/txe_account_store.d.ts +1 -1
- package/dest/utils/txe_account_store.d.ts.map +1 -0
- package/dest/utils/txe_artifact_resolver.d.ts +37 -0
- package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
- package/dest/utils/txe_artifact_resolver.js +161 -0
- package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
- package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
- package/dest/{util → utils}/txe_public_contract_data_source.js +8 -7
- package/dest/worker.bundle.js +3 -0
- package/dest/worker.bundle.js.map +7 -0
- package/dest/worker.d.ts +2 -0
- package/dest/worker.d.ts.map +1 -0
- package/dest/worker.js +92 -0
- package/package.json +38 -21
- package/src/bin/check_txe_oracle_version.ts +67 -0
- package/src/bin/index.ts +11 -2
- package/src/bin/oracle_test_server.ts +51 -0
- package/src/constants.ts +11 -1
- package/src/dispatcher_pool.ts +317 -0
- package/src/index.ts +99 -227
- package/src/msgpackr_fr_extension.ts +23 -0
- package/src/oracle/interfaces.ts +47 -8
- package/src/oracle/tagging_secret_strategy.ts +25 -0
- package/src/oracle/test-resolver/default_fixtures.ts +271 -0
- package/src/oracle/test-resolver/index.ts +44 -0
- package/src/oracle/test-resolver/resolver.ts +245 -0
- package/src/oracle/txe_oracle_public_context.ts +62 -0
- package/src/oracle/txe_oracle_registry.ts +556 -0
- package/src/oracle/txe_oracle_top_level_context.ts +342 -97
- package/src/oracle/txe_oracle_version.ts +17 -0
- package/src/oracle/txe_private_execution_oracle.ts +30 -0
- package/src/rpc_server.ts +87 -0
- package/src/rpc_translator.ts +882 -870
- package/src/state_machine/archiver.ts +41 -20
- package/src/state_machine/dummy_p2p_client.ts +49 -12
- package/src/state_machine/global_variable_builder.ts +12 -11
- package/src/state_machine/index.ts +63 -28
- package/src/state_machine/mock_epoch_cache.ts +38 -3
- package/src/state_machine/synchronizer.ts +13 -7
- package/src/txe_session.ts +552 -75
- package/src/utils/block_creation.ts +2 -1
- package/src/{util → utils}/encoding.ts +8 -2
- package/src/utils/tx_effect_creation.ts +0 -2
- package/src/utils/txe_artifact_resolver.ts +217 -0
- package/src/{util → utils}/txe_public_contract_data_source.ts +6 -6
- package/src/worker.ts +98 -0
- package/dest/util/encoding.d.ts +0 -720
- package/dest/util/encoding.d.ts.map +0 -1
- package/dest/util/expected_failure_error.d.ts.map +0 -1
- package/dest/util/txe_account_store.d.ts.map +0 -1
- package/dest/util/txe_public_contract_data_source.d.ts +0 -20
- package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
- /package/dest/{util → utils}/expected_failure_error.js +0 -0
- /package/dest/{util → utils}/txe_account_store.js +0 -0
- /package/src/{util → utils}/expected_failure_error.ts +0 -0
- /package/src/{util → utils}/txe_account_store.ts +0 -0
package/src/rpc_translator.ts
CHANGED
|
@@ -1,37 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { Fr, Point } from '@aztec/aztec.js/fields';
|
|
3
|
-
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX } from '@aztec/constants';
|
|
4
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
5
|
-
import {
|
|
6
|
-
type IMiscOracle,
|
|
7
|
-
type IPrivateExecutionOracle,
|
|
8
|
-
type IUtilityExecutionOracle,
|
|
9
|
-
packAsHintedNote,
|
|
10
|
-
} from '@aztec/pxe/simulator';
|
|
11
|
-
import { type ContractArtifact, EventSelector, FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
12
|
-
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
13
|
-
import { BlockHash } from '@aztec/stdlib/block';
|
|
1
|
+
import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from '@aztec/pxe/simulator';
|
|
14
2
|
|
|
15
3
|
import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfaces.js';
|
|
4
|
+
import { callTxeHandler } from './oracle/txe_oracle_registry.js';
|
|
16
5
|
import type { TXESessionStateHandler } from './txe_session.js';
|
|
17
|
-
import {
|
|
18
|
-
type ForeignCallArray,
|
|
19
|
-
type ForeignCallSingle,
|
|
20
|
-
addressFromSingle,
|
|
21
|
-
arrayOfArraysToBoundedVecOfArrays,
|
|
22
|
-
arrayToBoundedVec,
|
|
23
|
-
bufferToU8Array,
|
|
24
|
-
fromArray,
|
|
25
|
-
fromSingle,
|
|
26
|
-
fromUintArray,
|
|
27
|
-
fromUintBoundedVec,
|
|
28
|
-
toArray,
|
|
29
|
-
toForeignCallResult,
|
|
30
|
-
toSingle,
|
|
31
|
-
} from './util/encoding.js';
|
|
32
|
-
|
|
33
|
-
const MAX_EVENT_LEN = 10; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN
|
|
34
|
-
const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
|
|
6
|
+
import type { ForeignCallArgs } from './utils/encoding.js';
|
|
35
7
|
|
|
36
8
|
export class UnavailableOracleError extends Error {
|
|
37
9
|
constructor(oracleName: string) {
|
|
@@ -102,61 +74,54 @@ export class RPCTranslator {
|
|
|
102
74
|
return this.oracleHandler;
|
|
103
75
|
}
|
|
104
76
|
|
|
77
|
+
// eslint-disable-next-line camelcase
|
|
78
|
+
aztec_txe_assertCompatibleOracleVersion(...inputs: ForeignCallArgs) {
|
|
79
|
+
return callTxeHandler({
|
|
80
|
+
oracle: 'aztec_txe_assertCompatibleOracleVersion',
|
|
81
|
+
inputs,
|
|
82
|
+
handler: ([major, minor]) => {
|
|
83
|
+
this.stateHandler.setTxeOracleVersion(major, minor);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
105
88
|
// TXE session state transition functions - these get handled by the state handler
|
|
106
89
|
|
|
107
90
|
// eslint-disable-next-line camelcase
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
91
|
+
aztec_txe_setTopLevelTXEContext() {
|
|
92
|
+
return callTxeHandler({
|
|
93
|
+
oracle: 'aztec_txe_setTopLevelTXEContext',
|
|
94
|
+
inputs: [],
|
|
95
|
+
handler: () => this.stateHandler.enterTopLevelState(),
|
|
96
|
+
});
|
|
112
97
|
}
|
|
113
98
|
|
|
114
99
|
// eslint-disable-next-line camelcase
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
? AztecAddress.fromField(fromSingle(foreignContractAddressValue))
|
|
123
|
-
: undefined;
|
|
124
|
-
|
|
125
|
-
const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool()
|
|
126
|
-
? BlockNumber(fromSingle(foreignAnchorBlockNumberValue).toNumber())
|
|
127
|
-
: undefined;
|
|
128
|
-
|
|
129
|
-
const privateContextInputs = await this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber);
|
|
130
|
-
|
|
131
|
-
return toForeignCallResult(privateContextInputs.toFields().map(toSingle));
|
|
100
|
+
aztec_txe_setPrivateTXEContext(...inputs: ForeignCallArgs) {
|
|
101
|
+
return callTxeHandler({
|
|
102
|
+
oracle: 'aztec_txe_setPrivateTXEContext',
|
|
103
|
+
inputs,
|
|
104
|
+
handler: ([contractAddress, anchorBlockNumber, gasSettings]) =>
|
|
105
|
+
this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber, gasSettings),
|
|
106
|
+
});
|
|
132
107
|
}
|
|
133
108
|
|
|
134
109
|
// eslint-disable-next-line camelcase
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
: undefined;
|
|
142
|
-
|
|
143
|
-
await this.stateHandler.enterPublicState(contractAddress);
|
|
144
|
-
|
|
145
|
-
return toForeignCallResult([]);
|
|
110
|
+
aztec_txe_setPublicTXEContext(...inputs: ForeignCallArgs) {
|
|
111
|
+
return callTxeHandler({
|
|
112
|
+
oracle: 'aztec_txe_setPublicTXEContext',
|
|
113
|
+
inputs,
|
|
114
|
+
handler: ([contractAddress]) => this.stateHandler.enterPublicState(contractAddress),
|
|
115
|
+
});
|
|
146
116
|
}
|
|
147
117
|
|
|
148
118
|
// eslint-disable-next-line camelcase
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
: undefined;
|
|
156
|
-
|
|
157
|
-
await this.stateHandler.enterUtilityState(contractAddress);
|
|
158
|
-
|
|
159
|
-
return toForeignCallResult([]);
|
|
119
|
+
aztec_txe_setUtilityTXEContext(...inputs: ForeignCallArgs) {
|
|
120
|
+
return callTxeHandler({
|
|
121
|
+
oracle: 'aztec_txe_setUtilityTXEContext',
|
|
122
|
+
inputs,
|
|
123
|
+
handler: ([contractAddress]) => this.stateHandler.enterUtilityState(contractAddress),
|
|
124
|
+
});
|
|
160
125
|
}
|
|
161
126
|
|
|
162
127
|
// Other oracles - these get handled by the oracle handler
|
|
@@ -165,703 +130,690 @@ export class RPCTranslator {
|
|
|
165
130
|
|
|
166
131
|
// eslint-disable-next-line camelcase
|
|
167
132
|
aztec_txe_getDefaultAddress() {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
133
|
+
return callTxeHandler({
|
|
134
|
+
oracle: 'aztec_txe_getDefaultAddress',
|
|
135
|
+
inputs: [],
|
|
136
|
+
handler: () => this.handlerAsTxe().getDefaultAddress(),
|
|
137
|
+
});
|
|
171
138
|
}
|
|
172
139
|
|
|
173
140
|
// eslint-disable-next-line camelcase
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
141
|
+
aztec_txe_getNextBlockNumber() {
|
|
142
|
+
return callTxeHandler({
|
|
143
|
+
oracle: 'aztec_txe_getNextBlockNumber',
|
|
144
|
+
inputs: [],
|
|
145
|
+
handler: () => this.handlerAsTxe().getNextBlockNumber(),
|
|
146
|
+
});
|
|
178
147
|
}
|
|
179
148
|
|
|
180
149
|
// eslint-disable-next-line camelcase
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
150
|
+
aztec_txe_getNextBlockTimestamp() {
|
|
151
|
+
return callTxeHandler({
|
|
152
|
+
oracle: 'aztec_txe_getNextBlockTimestamp',
|
|
153
|
+
inputs: [],
|
|
154
|
+
handler: () => this.handlerAsTxe().getNextBlockTimestamp(),
|
|
155
|
+
});
|
|
185
156
|
}
|
|
186
157
|
|
|
187
158
|
// eslint-disable-next-line camelcase
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
159
|
+
aztec_txe_advanceBlocksBy(...inputs: ForeignCallArgs) {
|
|
160
|
+
return callTxeHandler({
|
|
161
|
+
oracle: 'aztec_txe_advanceBlocksBy',
|
|
162
|
+
inputs,
|
|
163
|
+
handler: ([blocks]) => this.handlerAsTxe().advanceBlocksBy(blocks),
|
|
164
|
+
});
|
|
194
165
|
}
|
|
195
166
|
|
|
196
167
|
// eslint-disable-next-line camelcase
|
|
197
|
-
aztec_txe_advanceTimestampBy(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
168
|
+
aztec_txe_advanceTimestampBy(...inputs: ForeignCallArgs) {
|
|
169
|
+
return callTxeHandler({
|
|
170
|
+
oracle: 'aztec_txe_advanceTimestampBy',
|
|
171
|
+
inputs,
|
|
172
|
+
handler: ([duration]) => this.handlerAsTxe().advanceTimestampBy(duration),
|
|
173
|
+
});
|
|
203
174
|
}
|
|
204
175
|
|
|
205
176
|
// eslint-disable-next-line camelcase
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
await this.handlerAsTxe().deploy(artifact, instance, secret);
|
|
214
|
-
|
|
215
|
-
return toForeignCallResult([
|
|
216
|
-
toArray([
|
|
217
|
-
instance.salt,
|
|
218
|
-
instance.deployer.toField(),
|
|
219
|
-
instance.currentContractClassId,
|
|
220
|
-
instance.initializationHash,
|
|
221
|
-
...instance.publicKeys.toFields(),
|
|
222
|
-
]),
|
|
223
|
-
]);
|
|
177
|
+
aztec_txe_deploy(...inputs: ForeignCallArgs) {
|
|
178
|
+
return callTxeHandler({
|
|
179
|
+
oracle: 'aztec_txe_deploy',
|
|
180
|
+
inputs,
|
|
181
|
+
handler: ([contractPath, initializer, _, args, secret, salt, deployer]) =>
|
|
182
|
+
this.handlerAsTxe().deploy(contractPath, initializer, args, secret, salt, deployer),
|
|
183
|
+
});
|
|
224
184
|
}
|
|
225
185
|
|
|
226
186
|
// eslint-disable-next-line camelcase
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
toSingle(completeAddress.address),
|
|
234
|
-
...completeAddress.publicKeys.toFields().map(toSingle),
|
|
235
|
-
]);
|
|
187
|
+
aztec_txe_createAccount(...inputs: ForeignCallArgs) {
|
|
188
|
+
return callTxeHandler({
|
|
189
|
+
oracle: 'aztec_txe_createAccount',
|
|
190
|
+
inputs,
|
|
191
|
+
handler: ([secret, partialAddress]) => this.handlerAsTxe().createAccount(secret, partialAddress),
|
|
192
|
+
});
|
|
236
193
|
}
|
|
237
194
|
|
|
238
195
|
// eslint-disable-next-line camelcase
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
const completeAddress = await this.handlerAsTxe().addAccount(artifact, instance, secret);
|
|
196
|
+
aztec_txe_addAccount(...inputs: ForeignCallArgs) {
|
|
197
|
+
return callTxeHandler({
|
|
198
|
+
oracle: 'aztec_txe_addAccount',
|
|
199
|
+
inputs,
|
|
200
|
+
handler: ([secret]) => this.handlerAsTxe().addAccount(secret),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
247
203
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
204
|
+
// eslint-disable-next-line camelcase
|
|
205
|
+
aztec_txe_addAuthWitness(...inputs: ForeignCallArgs) {
|
|
206
|
+
return callTxeHandler({
|
|
207
|
+
oracle: 'aztec_txe_addAuthWitness',
|
|
208
|
+
inputs,
|
|
209
|
+
handler: ([address, messageHash]) => this.handlerAsTxe().addAuthWitness(address, messageHash),
|
|
210
|
+
});
|
|
252
211
|
}
|
|
253
212
|
|
|
254
213
|
// eslint-disable-next-line camelcase
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
214
|
+
aztec_txe_sendL1ToL2Message(...inputs: ForeignCallArgs) {
|
|
215
|
+
return callTxeHandler({
|
|
216
|
+
oracle: 'aztec_txe_sendL1ToL2Message',
|
|
217
|
+
inputs,
|
|
218
|
+
handler: ([content, secretHash, sender, recipient]) =>
|
|
219
|
+
this.handlerAsTxe().sendL1ToL2Message(content, secretHash, sender, recipient),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
258
222
|
|
|
259
|
-
|
|
223
|
+
// eslint-disable-next-line camelcase
|
|
224
|
+
aztec_txe_setTaggingSecretStrategies(...inputs: ForeignCallArgs) {
|
|
225
|
+
return callTxeHandler({
|
|
226
|
+
oracle: 'aztec_txe_setTaggingSecretStrategies',
|
|
227
|
+
inputs,
|
|
228
|
+
handler: ([unconstrainedStrategy, constrainedStrategy]) =>
|
|
229
|
+
this.handlerAsTxe().setTaggingSecretStrategies(unconstrainedStrategy, constrainedStrategy),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
260
232
|
|
|
261
|
-
|
|
233
|
+
// eslint-disable-next-line camelcase
|
|
234
|
+
aztec_txe_setAuthorizeAllUtilityCallTargets(...inputs: ForeignCallArgs) {
|
|
235
|
+
return callTxeHandler({
|
|
236
|
+
oracle: 'aztec_txe_setAuthorizeAllUtilityCallTargets',
|
|
237
|
+
inputs,
|
|
238
|
+
handler: ([authorizeAll]) => this.handlerAsTxe().setAuthorizeAllUtilityCallTargets(authorizeAll),
|
|
239
|
+
});
|
|
262
240
|
}
|
|
263
241
|
|
|
264
242
|
// PXE oracles
|
|
265
243
|
|
|
266
244
|
// eslint-disable-next-line camelcase
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
245
|
+
aztec_misc_assertCompatibleOracleVersion(...inputs: ForeignCallArgs) {
|
|
246
|
+
return callTxeHandler({
|
|
247
|
+
oracle: 'aztec_misc_assertCompatibleOracleVersion',
|
|
248
|
+
inputs,
|
|
249
|
+
handler: ([major, minor]) => this.handlerAsMisc().assertCompatibleOracleVersion(major, minor),
|
|
250
|
+
});
|
|
273
251
|
}
|
|
274
252
|
|
|
275
253
|
// eslint-disable-next-line camelcase
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
254
|
+
aztec_misc_getRandomField() {
|
|
255
|
+
return callTxeHandler({
|
|
256
|
+
oracle: 'aztec_misc_getRandomField',
|
|
257
|
+
inputs: [],
|
|
258
|
+
handler: () => this.handlerAsMisc().getRandomField(),
|
|
259
|
+
});
|
|
280
260
|
}
|
|
281
261
|
|
|
282
262
|
// eslint-disable-next-line camelcase
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
263
|
+
aztec_txe_getLastBlockTimestamp() {
|
|
264
|
+
return callTxeHandler({
|
|
265
|
+
oracle: 'aztec_txe_getLastBlockTimestamp',
|
|
266
|
+
inputs: [],
|
|
267
|
+
handler: () => this.handlerAsTxe().getLastBlockTimestamp(),
|
|
268
|
+
});
|
|
287
269
|
}
|
|
288
270
|
|
|
289
271
|
// eslint-disable-next-line camelcase
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
...arrayToBoundedVec(toArray(nullifiers), MAX_NULLIFIERS_PER_TX),
|
|
297
|
-
]);
|
|
272
|
+
aztec_txe_getLastTxEffects() {
|
|
273
|
+
return callTxeHandler({
|
|
274
|
+
oracle: 'aztec_txe_getLastTxEffects',
|
|
275
|
+
inputs: [],
|
|
276
|
+
handler: () => this.handlerAsTxe().getLastTxEffects(),
|
|
277
|
+
});
|
|
298
278
|
}
|
|
299
279
|
|
|
300
280
|
// eslint-disable-next-line camelcase
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
308
|
-
const scope = addressFromSingle(foreignScope);
|
|
309
|
-
|
|
310
|
-
// TODO(F-335): Avoid doing the following 2 calls here.
|
|
311
|
-
{
|
|
312
|
-
await this.handlerAsTxe().syncContractNonOracleMethod(contractAddress, scope, this.stateHandler.getCurrentJob());
|
|
313
|
-
// We cycle job to commit the stores after the contract sync.
|
|
314
|
-
await this.stateHandler.cycleJob();
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
const events = await this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
|
|
318
|
-
|
|
319
|
-
if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
|
|
320
|
-
throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
if (events.some(e => e.length > MAX_EVENT_LEN)) {
|
|
324
|
-
throw new Error(`Some private event has length larger than maxLen ${MAX_EVENT_LEN}`);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// This is a workaround as Noir does not currently let us return nested structs with arrays. We instead return a raw
|
|
328
|
-
// multidimensional array in get_private_events_oracle and create the BoundedVecs here.
|
|
329
|
-
const rawArrayStorage = events
|
|
330
|
-
.map(e => e.concat(Array(MAX_EVENT_LEN - e.length).fill(new Fr(0))))
|
|
331
|
-
.concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(Array(MAX_EVENT_LEN).fill(new Fr(0))))
|
|
332
|
-
.flat();
|
|
333
|
-
const eventLengths = events
|
|
334
|
-
.map(e => new Fr(e.length))
|
|
335
|
-
.concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(new Fr(0)));
|
|
336
|
-
const queryLength = new Fr(events.length);
|
|
337
|
-
|
|
338
|
-
return toForeignCallResult([toArray(rawArrayStorage), toArray(eventLengths), toSingle(queryLength)]);
|
|
281
|
+
aztec_txe_getLastCallOffchainEffects() {
|
|
282
|
+
return callTxeHandler({
|
|
283
|
+
oracle: 'aztec_txe_getLastCallOffchainEffects',
|
|
284
|
+
inputs: [],
|
|
285
|
+
handler: () => this.stateHandler.getLastCallOffchainEffects(),
|
|
286
|
+
});
|
|
339
287
|
}
|
|
340
288
|
|
|
341
289
|
// eslint-disable-next-line camelcase
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
return toForeignCallResult([]);
|
|
290
|
+
aztec_txe_getLastCallContext() {
|
|
291
|
+
return callTxeHandler({
|
|
292
|
+
oracle: 'aztec_txe_getLastCallContext',
|
|
293
|
+
inputs: [],
|
|
294
|
+
handler: () => this.stateHandler.getLastCallContext(),
|
|
295
|
+
});
|
|
349
296
|
}
|
|
350
297
|
|
|
351
298
|
// eslint-disable-next-line camelcase
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
299
|
+
aztec_txe_getPrivateEvents(...inputs: ForeignCallArgs) {
|
|
300
|
+
return callTxeHandler({
|
|
301
|
+
oracle: 'aztec_txe_getPrivateEvents',
|
|
302
|
+
inputs,
|
|
303
|
+
handler: ([selector, contractAddress, scope]) =>
|
|
304
|
+
this.stateHandler.getPrivateEvents(selector, contractAddress, scope),
|
|
305
|
+
});
|
|
358
306
|
}
|
|
359
307
|
|
|
360
|
-
// When the argument is a slice, noir automatically adds a length field to oracle call.
|
|
361
|
-
// When the argument is an array, we add the field length manually to the signature.
|
|
362
308
|
// eslint-disable-next-line camelcase
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
const level = fromSingle(foreignLevel).toNumber();
|
|
370
|
-
const message = fromArray(foreignMessage)
|
|
371
|
-
.map(field => String.fromCharCode(field.toNumber()))
|
|
372
|
-
.join('');
|
|
373
|
-
const fields = fromArray(foreignFields);
|
|
374
|
-
|
|
375
|
-
await this.handlerAsMisc().log(level, message, fields);
|
|
376
|
-
|
|
377
|
-
return toForeignCallResult([]);
|
|
309
|
+
aztec_prv_setHashPreimage(...inputs: ForeignCallArgs) {
|
|
310
|
+
return callTxeHandler({
|
|
311
|
+
oracle: 'aztec_prv_setHashPreimage',
|
|
312
|
+
inputs,
|
|
313
|
+
handler: ([values, hash]) => this.handlerAsPrivate().setHashPreimage(values, hash),
|
|
314
|
+
});
|
|
378
315
|
}
|
|
379
316
|
|
|
380
317
|
// eslint-disable-next-line camelcase
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
388
|
-
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
389
|
-
const startStorageSlot = fromSingle(foreignStartStorageSlot);
|
|
390
|
-
const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
|
|
391
|
-
|
|
392
|
-
const values = await this.handlerAsUtility().storageRead(
|
|
393
|
-
blockHash,
|
|
394
|
-
contractAddress,
|
|
395
|
-
startStorageSlot,
|
|
396
|
-
numberOfElements,
|
|
397
|
-
);
|
|
398
|
-
|
|
399
|
-
return toForeignCallResult([toArray(values)]);
|
|
318
|
+
aztec_prv_getHashPreimage(...inputs: ForeignCallArgs) {
|
|
319
|
+
return callTxeHandler({
|
|
320
|
+
oracle: 'aztec_prv_getHashPreimage',
|
|
321
|
+
inputs,
|
|
322
|
+
handler: ([hash]) => this.handlerAsPrivate().getHashPreimage(hash),
|
|
323
|
+
});
|
|
400
324
|
}
|
|
401
325
|
|
|
402
326
|
// eslint-disable-next-line camelcase
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
if (!witness) {
|
|
410
|
-
throw new Error(`Public data witness not found for slot ${leafSlot} at block ${blockHash.toString()}.`);
|
|
411
|
-
}
|
|
412
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
// eslint-disable-next-line camelcase
|
|
416
|
-
async aztec_utl_getNotes(
|
|
417
|
-
foreignOwnerIsSome: ForeignCallSingle,
|
|
418
|
-
foreignOwnerValue: ForeignCallSingle,
|
|
419
|
-
foreignStorageSlot: ForeignCallSingle,
|
|
420
|
-
foreignNumSelects: ForeignCallSingle,
|
|
421
|
-
foreignSelectByIndexes: ForeignCallArray,
|
|
422
|
-
foreignSelectByOffsets: ForeignCallArray,
|
|
423
|
-
foreignSelectByLengths: ForeignCallArray,
|
|
424
|
-
foreignSelectValues: ForeignCallArray,
|
|
425
|
-
foreignSelectComparators: ForeignCallArray,
|
|
426
|
-
foreignSortByIndexes: ForeignCallArray,
|
|
427
|
-
foreignSortByOffsets: ForeignCallArray,
|
|
428
|
-
foreignSortByLengths: ForeignCallArray,
|
|
429
|
-
foreignSortOrder: ForeignCallArray,
|
|
430
|
-
foreignLimit: ForeignCallSingle,
|
|
431
|
-
foreignOffset: ForeignCallSingle,
|
|
432
|
-
foreignStatus: ForeignCallSingle,
|
|
433
|
-
foreignMaxNotes: ForeignCallSingle,
|
|
434
|
-
foreignPackedHintedNoteLength: ForeignCallSingle,
|
|
435
|
-
) {
|
|
436
|
-
// Parse Option<AztecAddress>: ownerIsSome is 0 for None, 1 for Some
|
|
437
|
-
const owner = fromSingle(foreignOwnerIsSome).toBool()
|
|
438
|
-
? AztecAddress.fromField(fromSingle(foreignOwnerValue))
|
|
439
|
-
: undefined;
|
|
440
|
-
const storageSlot = fromSingle(foreignStorageSlot);
|
|
441
|
-
const numSelects = fromSingle(foreignNumSelects).toNumber();
|
|
442
|
-
const selectByIndexes = fromArray(foreignSelectByIndexes).map(fr => fr.toNumber());
|
|
443
|
-
const selectByOffsets = fromArray(foreignSelectByOffsets).map(fr => fr.toNumber());
|
|
444
|
-
const selectByLengths = fromArray(foreignSelectByLengths).map(fr => fr.toNumber());
|
|
445
|
-
const selectValues = fromArray(foreignSelectValues);
|
|
446
|
-
const selectComparators = fromArray(foreignSelectComparators).map(fr => fr.toNumber());
|
|
447
|
-
const sortByIndexes = fromArray(foreignSortByIndexes).map(fr => fr.toNumber());
|
|
448
|
-
const sortByOffsets = fromArray(foreignSortByOffsets).map(fr => fr.toNumber());
|
|
449
|
-
const sortByLengths = fromArray(foreignSortByLengths).map(fr => fr.toNumber());
|
|
450
|
-
const sortOrder = fromArray(foreignSortOrder).map(fr => fr.toNumber());
|
|
451
|
-
const limit = fromSingle(foreignLimit).toNumber();
|
|
452
|
-
const offset = fromSingle(foreignOffset).toNumber();
|
|
453
|
-
const status = fromSingle(foreignStatus).toNumber();
|
|
454
|
-
const maxNotes = fromSingle(foreignMaxNotes).toNumber();
|
|
455
|
-
const packedHintedNoteLength = fromSingle(foreignPackedHintedNoteLength).toNumber();
|
|
456
|
-
|
|
457
|
-
const noteDatas = await this.handlerAsUtility().getNotes(
|
|
458
|
-
owner,
|
|
459
|
-
storageSlot,
|
|
460
|
-
numSelects,
|
|
461
|
-
selectByIndexes,
|
|
462
|
-
selectByOffsets,
|
|
463
|
-
selectByLengths,
|
|
464
|
-
selectValues,
|
|
465
|
-
selectComparators,
|
|
466
|
-
sortByIndexes,
|
|
467
|
-
sortByOffsets,
|
|
468
|
-
sortByLengths,
|
|
469
|
-
sortOrder,
|
|
470
|
-
limit,
|
|
471
|
-
offset,
|
|
472
|
-
status,
|
|
473
|
-
);
|
|
474
|
-
|
|
475
|
-
const returnDataAsArrayOfArrays = noteDatas.map(noteData =>
|
|
476
|
-
packAsHintedNote({
|
|
477
|
-
contractAddress: noteData.contractAddress,
|
|
478
|
-
owner: noteData.owner,
|
|
479
|
-
randomness: noteData.randomness,
|
|
480
|
-
storageSlot: noteData.storageSlot,
|
|
481
|
-
noteNonce: noteData.noteNonce,
|
|
482
|
-
isPending: noteData.isPending,
|
|
483
|
-
note: noteData.note,
|
|
484
|
-
}),
|
|
485
|
-
);
|
|
486
|
-
|
|
487
|
-
// Now we convert each sub-array to an array of ForeignCallSingles
|
|
488
|
-
const returnDataAsArrayOfForeignCallSingleArrays = returnDataAsArrayOfArrays.map(subArray =>
|
|
489
|
-
subArray.map(toSingle),
|
|
490
|
-
);
|
|
491
|
-
|
|
492
|
-
// At last we convert the array of arrays to a bounded vec of arrays
|
|
493
|
-
return toForeignCallResult(
|
|
494
|
-
arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes, packedHintedNoteLength),
|
|
495
|
-
);
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
// eslint-disable-next-line camelcase
|
|
499
|
-
aztec_prv_notifyCreatedNote(
|
|
500
|
-
foreignOwner: ForeignCallSingle,
|
|
501
|
-
foreignStorageSlot: ForeignCallSingle,
|
|
502
|
-
foreignRandomness: ForeignCallSingle,
|
|
503
|
-
foreignNoteTypeId: ForeignCallSingle,
|
|
504
|
-
foreignNote: ForeignCallArray,
|
|
505
|
-
foreignNoteHash: ForeignCallSingle,
|
|
506
|
-
foreignCounter: ForeignCallSingle,
|
|
507
|
-
) {
|
|
508
|
-
const owner = addressFromSingle(foreignOwner);
|
|
509
|
-
const storageSlot = fromSingle(foreignStorageSlot);
|
|
510
|
-
const randomness = fromSingle(foreignRandomness);
|
|
511
|
-
const noteTypeId = NoteSelector.fromField(fromSingle(foreignNoteTypeId));
|
|
512
|
-
const note = fromArray(foreignNote);
|
|
513
|
-
const noteHash = fromSingle(foreignNoteHash);
|
|
514
|
-
const counter = fromSingle(foreignCounter).toNumber();
|
|
515
|
-
|
|
516
|
-
this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
|
|
517
|
-
|
|
518
|
-
return toForeignCallResult([]);
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
// eslint-disable-next-line camelcase
|
|
522
|
-
async aztec_prv_notifyNullifiedNote(
|
|
523
|
-
foreignInnerNullifier: ForeignCallSingle,
|
|
524
|
-
foreignNoteHash: ForeignCallSingle,
|
|
525
|
-
foreignCounter: ForeignCallSingle,
|
|
526
|
-
) {
|
|
527
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
528
|
-
const noteHash = fromSingle(foreignNoteHash);
|
|
529
|
-
const counter = fromSingle(foreignCounter).toNumber();
|
|
530
|
-
|
|
531
|
-
await this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter);
|
|
532
|
-
|
|
533
|
-
return toForeignCallResult([]);
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
// eslint-disable-next-line camelcase
|
|
537
|
-
async aztec_prv_notifyCreatedNullifier(foreignInnerNullifier: ForeignCallSingle) {
|
|
538
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
539
|
-
|
|
540
|
-
await this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier);
|
|
541
|
-
|
|
542
|
-
return toForeignCallResult([]);
|
|
327
|
+
aztec_misc_log(...inputs: ForeignCallArgs) {
|
|
328
|
+
return callTxeHandler({
|
|
329
|
+
oracle: 'aztec_misc_log',
|
|
330
|
+
inputs,
|
|
331
|
+
handler: ([level, message, fieldsSize, fields]) => this.handlerAsMisc().log(level, message, fieldsSize, fields),
|
|
332
|
+
});
|
|
543
333
|
}
|
|
544
334
|
|
|
545
335
|
// eslint-disable-next-line camelcase
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
const isPending = await this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress);
|
|
554
|
-
|
|
555
|
-
return toForeignCallResult([toSingle(new Fr(isPending))]);
|
|
336
|
+
aztec_utl_getFromPublicStorage(...inputs: ForeignCallArgs) {
|
|
337
|
+
return callTxeHandler({
|
|
338
|
+
oracle: 'aztec_utl_getFromPublicStorage',
|
|
339
|
+
inputs,
|
|
340
|
+
handler: ([blockHash, contractAddress, startStorageSlot, numberOfElements]) =>
|
|
341
|
+
this.handlerAsUtility().getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements),
|
|
342
|
+
});
|
|
556
343
|
}
|
|
557
344
|
|
|
558
345
|
// eslint-disable-next-line camelcase
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
346
|
+
aztec_utl_getPublicDataWitness(...inputs: ForeignCallArgs) {
|
|
347
|
+
return callTxeHandler({
|
|
348
|
+
oracle: 'aztec_utl_getPublicDataWitness',
|
|
349
|
+
inputs,
|
|
350
|
+
handler: ([blockHash, leafSlot]) => this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot),
|
|
351
|
+
});
|
|
565
352
|
}
|
|
566
353
|
|
|
567
354
|
// eslint-disable-next-line camelcase
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
355
|
+
aztec_utl_getNotes(...inputs: ForeignCallArgs) {
|
|
356
|
+
return callTxeHandler({
|
|
357
|
+
oracle: 'aztec_utl_getNotes',
|
|
358
|
+
inputs,
|
|
359
|
+
handler: ([
|
|
360
|
+
owner,
|
|
361
|
+
storageSlot,
|
|
362
|
+
numSelects,
|
|
363
|
+
selectByIndexes,
|
|
364
|
+
selectByOffsets,
|
|
365
|
+
selectByLengths,
|
|
366
|
+
selectValues,
|
|
367
|
+
selectComparators,
|
|
368
|
+
sortByIndexes,
|
|
369
|
+
sortByOffsets,
|
|
370
|
+
sortByLengths,
|
|
371
|
+
sortOrder,
|
|
372
|
+
limit,
|
|
373
|
+
offset,
|
|
374
|
+
status,
|
|
375
|
+
maxNotes,
|
|
376
|
+
packedHintedNoteLength,
|
|
377
|
+
]) =>
|
|
378
|
+
this.handlerAsUtility().getNotes(
|
|
379
|
+
owner,
|
|
380
|
+
storageSlot,
|
|
381
|
+
numSelects,
|
|
382
|
+
selectByIndexes,
|
|
383
|
+
selectByOffsets,
|
|
384
|
+
selectByLengths,
|
|
385
|
+
selectValues,
|
|
386
|
+
selectComparators,
|
|
387
|
+
sortByIndexes,
|
|
388
|
+
sortByOffsets,
|
|
389
|
+
sortByLengths,
|
|
390
|
+
sortOrder,
|
|
391
|
+
limit,
|
|
392
|
+
offset,
|
|
393
|
+
status,
|
|
394
|
+
maxNotes,
|
|
395
|
+
packedHintedNoteLength,
|
|
396
|
+
),
|
|
397
|
+
});
|
|
582
398
|
}
|
|
583
399
|
|
|
584
400
|
// eslint-disable-next-line camelcase
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
if (result === undefined) {
|
|
593
|
-
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
594
|
-
return toForeignCallResult([toSingle(new Fr(0)), toArray(Array(13).fill(new Fr(0)))]);
|
|
595
|
-
} else {
|
|
596
|
-
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
597
|
-
return toForeignCallResult([
|
|
598
|
-
toSingle(new Fr(1)),
|
|
599
|
-
toArray([...result.publicKeys.toFields(), result.partialAddress]),
|
|
600
|
-
]);
|
|
601
|
-
}
|
|
401
|
+
aztec_prv_notifyCreatedNote(...inputs: ForeignCallArgs) {
|
|
402
|
+
return callTxeHandler({
|
|
403
|
+
oracle: 'aztec_prv_notifyCreatedNote',
|
|
404
|
+
inputs,
|
|
405
|
+
handler: ([owner, storageSlot, randomness, noteTypeId, note, noteHash, counter]) =>
|
|
406
|
+
this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter),
|
|
407
|
+
});
|
|
602
408
|
}
|
|
603
409
|
|
|
604
410
|
// eslint-disable-next-line camelcase
|
|
605
|
-
|
|
606
|
-
|
|
411
|
+
aztec_prv_notifyNullifiedNote(...inputs: ForeignCallArgs) {
|
|
412
|
+
return callTxeHandler({
|
|
413
|
+
oracle: 'aztec_prv_notifyNullifiedNote',
|
|
414
|
+
inputs,
|
|
415
|
+
handler: ([innerNullifier, noteHash, counter]) =>
|
|
416
|
+
this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter),
|
|
417
|
+
});
|
|
418
|
+
}
|
|
607
419
|
|
|
608
|
-
|
|
420
|
+
// eslint-disable-next-line camelcase
|
|
421
|
+
aztec_prv_notifyCreatedNullifier(...inputs: ForeignCallArgs) {
|
|
422
|
+
return callTxeHandler({
|
|
423
|
+
oracle: 'aztec_prv_notifyCreatedNullifier',
|
|
424
|
+
inputs,
|
|
425
|
+
handler: ([innerNullifier]) => this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier),
|
|
426
|
+
});
|
|
427
|
+
}
|
|
609
428
|
|
|
610
|
-
|
|
429
|
+
// eslint-disable-next-line camelcase
|
|
430
|
+
aztec_prv_isNullifierPending(...inputs: ForeignCallArgs) {
|
|
431
|
+
return callTxeHandler({
|
|
432
|
+
oracle: 'aztec_prv_isNullifierPending',
|
|
433
|
+
inputs,
|
|
434
|
+
handler: ([innerNullifier, contractAddress]) =>
|
|
435
|
+
this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress),
|
|
436
|
+
});
|
|
611
437
|
}
|
|
612
438
|
|
|
613
439
|
// eslint-disable-next-line camelcase
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
) {
|
|
621
|
-
throw new Error(
|
|
622
|
-
'Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead',
|
|
623
|
-
);
|
|
440
|
+
aztec_utl_doesNullifierExist(...inputs: ForeignCallArgs) {
|
|
441
|
+
return callTxeHandler({
|
|
442
|
+
oracle: 'aztec_utl_doesNullifierExist',
|
|
443
|
+
inputs,
|
|
444
|
+
handler: ([innerNullifier]) => this.handlerAsUtility().doesNullifierExist(innerNullifier),
|
|
445
|
+
});
|
|
624
446
|
}
|
|
625
447
|
|
|
626
448
|
// eslint-disable-next-line camelcase
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
449
|
+
aztec_utl_getContractInstance(...inputs: ForeignCallArgs) {
|
|
450
|
+
return callTxeHandler({
|
|
451
|
+
oracle: 'aztec_utl_getContractInstance',
|
|
452
|
+
inputs,
|
|
453
|
+
handler: ([address]) => this.handlerAsUtility().getContractInstance(address),
|
|
454
|
+
});
|
|
455
|
+
}
|
|
633
456
|
|
|
634
|
-
|
|
457
|
+
// eslint-disable-next-line camelcase
|
|
458
|
+
aztec_utl_getPublicKeysAndPartialAddress(...inputs: ForeignCallArgs) {
|
|
459
|
+
return callTxeHandler({
|
|
460
|
+
oracle: 'aztec_utl_getPublicKeysAndPartialAddress',
|
|
461
|
+
inputs,
|
|
462
|
+
handler: ([address]) => this.handlerAsUtility().getPublicKeysAndPartialAddress(address),
|
|
463
|
+
});
|
|
464
|
+
}
|
|
635
465
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
466
|
+
// eslint-disable-next-line camelcase
|
|
467
|
+
aztec_utl_getKeyValidationRequest(...inputs: ForeignCallArgs) {
|
|
468
|
+
return callTxeHandler({
|
|
469
|
+
oracle: 'aztec_utl_getKeyValidationRequest',
|
|
470
|
+
inputs,
|
|
471
|
+
handler: ([pkMHash, keyIndex]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash, keyIndex),
|
|
472
|
+
});
|
|
640
473
|
}
|
|
641
474
|
|
|
642
475
|
// eslint-disable-next-line camelcase
|
|
643
|
-
|
|
644
|
-
|
|
476
|
+
aztec_prv_callPrivateFunction(...inputs: ForeignCallArgs) {
|
|
477
|
+
return callTxeHandler({
|
|
478
|
+
oracle: 'aztec_prv_callPrivateFunction',
|
|
479
|
+
inputs,
|
|
480
|
+
handler: ([contractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall]) =>
|
|
481
|
+
this.handlerAsPrivate().callPrivateFunction(
|
|
482
|
+
contractAddress,
|
|
483
|
+
functionSelector,
|
|
484
|
+
argsHash,
|
|
485
|
+
sideEffectCounter,
|
|
486
|
+
isStaticCall,
|
|
487
|
+
),
|
|
488
|
+
});
|
|
489
|
+
}
|
|
645
490
|
|
|
646
|
-
|
|
491
|
+
// eslint-disable-next-line camelcase
|
|
492
|
+
aztec_utl_getNullifierMembershipWitness(...inputs: ForeignCallArgs) {
|
|
493
|
+
return callTxeHandler({
|
|
494
|
+
oracle: 'aztec_utl_getNullifierMembershipWitness',
|
|
495
|
+
inputs,
|
|
496
|
+
handler: ([blockHash, nullifier]) => this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier),
|
|
497
|
+
});
|
|
498
|
+
}
|
|
647
499
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
500
|
+
// eslint-disable-next-line camelcase
|
|
501
|
+
aztec_utl_getL1ToL2MembershipWitnessV2(...inputs: ForeignCallArgs) {
|
|
502
|
+
return callTxeHandler({
|
|
503
|
+
oracle: 'aztec_utl_getL1ToL2MembershipWitnessV2',
|
|
504
|
+
inputs,
|
|
505
|
+
handler: ([messageHash, nullifier]) =>
|
|
506
|
+
this.handlerAsUtility().getL1ToL2MembershipWitnessV2(messageHash, nullifier),
|
|
507
|
+
});
|
|
652
508
|
}
|
|
653
509
|
|
|
654
510
|
// eslint-disable-next-line camelcase
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
511
|
+
aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
|
|
512
|
+
return callTxeHandler({
|
|
513
|
+
oracle: 'aztec_utl_getAuthWitness',
|
|
514
|
+
inputs,
|
|
515
|
+
handler: ([messageHash]) => this.handlerAsUtility().getAuthWitness(messageHash),
|
|
516
|
+
});
|
|
662
517
|
}
|
|
663
518
|
|
|
664
519
|
// eslint-disable-next-line camelcase
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
520
|
+
aztec_prv_assertValidPublicCalldata(...inputs: ForeignCallArgs) {
|
|
521
|
+
return callTxeHandler({
|
|
522
|
+
oracle: 'aztec_prv_assertValidPublicCalldata',
|
|
523
|
+
inputs,
|
|
524
|
+
handler: ([calldataHash]) => this.handlerAsPrivate().assertValidPublicCalldata(calldataHash),
|
|
525
|
+
});
|
|
672
526
|
}
|
|
673
527
|
|
|
674
528
|
// eslint-disable-next-line camelcase
|
|
675
|
-
|
|
676
|
-
|
|
529
|
+
aztec_prv_notifyRevertiblePhaseStart(...inputs: ForeignCallArgs) {
|
|
530
|
+
return callTxeHandler({
|
|
531
|
+
oracle: 'aztec_prv_notifyRevertiblePhaseStart',
|
|
532
|
+
inputs,
|
|
533
|
+
handler: ([minRevertibleSideEffectCounter]) =>
|
|
534
|
+
this.handlerAsPrivate().notifyRevertiblePhaseStart(minRevertibleSideEffectCounter),
|
|
535
|
+
});
|
|
677
536
|
}
|
|
678
537
|
|
|
679
538
|
// eslint-disable-next-line camelcase
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
539
|
+
aztec_prv_isExecutionInRevertiblePhase(...inputs: ForeignCallArgs) {
|
|
540
|
+
return callTxeHandler({
|
|
541
|
+
oracle: 'aztec_prv_isExecutionInRevertiblePhase',
|
|
542
|
+
inputs,
|
|
543
|
+
handler: ([sideEffectCounter]) => this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter),
|
|
544
|
+
});
|
|
684
545
|
}
|
|
685
546
|
|
|
686
547
|
// eslint-disable-next-line camelcase
|
|
687
548
|
aztec_utl_getUtilityContext() {
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
549
|
+
return callTxeHandler({
|
|
550
|
+
oracle: 'aztec_utl_getUtilityContext',
|
|
551
|
+
inputs: [],
|
|
552
|
+
handler: () => this.handlerAsUtility().getUtilityContext(),
|
|
553
|
+
});
|
|
691
554
|
}
|
|
692
555
|
|
|
693
556
|
// eslint-disable-next-line camelcase
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
throw new Error(`Block header not found for block ${blockNumber}.`);
|
|
701
|
-
}
|
|
702
|
-
return toForeignCallResult(header.toFields().map(toSingle));
|
|
557
|
+
aztec_utl_getBlockHeader(...inputs: ForeignCallArgs) {
|
|
558
|
+
return callTxeHandler({
|
|
559
|
+
oracle: 'aztec_utl_getBlockHeader',
|
|
560
|
+
inputs,
|
|
561
|
+
handler: ([blockNumber]) => this.handlerAsUtility().getBlockHeader(blockNumber),
|
|
562
|
+
});
|
|
703
563
|
}
|
|
704
564
|
|
|
705
565
|
// eslint-disable-next-line camelcase
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash);
|
|
714
|
-
|
|
715
|
-
if (!witness) {
|
|
716
|
-
throw new Error(`Note hash ${noteHash} not found in the note hash tree at block ${blockHash.toString()}.`);
|
|
717
|
-
}
|
|
718
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
566
|
+
aztec_utl_getNoteHashMembershipWitness(...inputs: ForeignCallArgs) {
|
|
567
|
+
return callTxeHandler({
|
|
568
|
+
oracle: 'aztec_utl_getNoteHashMembershipWitness',
|
|
569
|
+
inputs,
|
|
570
|
+
handler: ([blockHash, noteHash]) => this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash),
|
|
571
|
+
});
|
|
719
572
|
}
|
|
720
573
|
|
|
721
574
|
// eslint-disable-next-line camelcase
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
575
|
+
aztec_utl_getBlockHashMembershipWitness(...inputs: ForeignCallArgs) {
|
|
576
|
+
return callTxeHandler({
|
|
577
|
+
oracle: 'aztec_utl_getBlockHashMembershipWitness',
|
|
578
|
+
inputs,
|
|
579
|
+
handler: ([anchorBlockHash, blockHash]) =>
|
|
580
|
+
this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash),
|
|
581
|
+
});
|
|
582
|
+
}
|
|
730
583
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
584
|
+
// eslint-disable-next-line camelcase
|
|
585
|
+
aztec_utl_areBlockHashesInArchive(...inputs: ForeignCallArgs) {
|
|
586
|
+
return callTxeHandler({
|
|
587
|
+
oracle: 'aztec_utl_areBlockHashesInArchive',
|
|
588
|
+
inputs,
|
|
589
|
+
handler: ([anchorBlockHash, blockHashes]) =>
|
|
590
|
+
this.handlerAsUtility().areBlockHashesInArchive(anchorBlockHash, blockHashes),
|
|
591
|
+
});
|
|
737
592
|
}
|
|
738
593
|
|
|
739
594
|
// eslint-disable-next-line camelcase
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
595
|
+
aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs) {
|
|
596
|
+
return callTxeHandler({
|
|
597
|
+
oracle: 'aztec_utl_getLowNullifierMembershipWitness',
|
|
598
|
+
inputs,
|
|
599
|
+
handler: ([blockHash, nullifier]) =>
|
|
600
|
+
this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier),
|
|
601
|
+
});
|
|
602
|
+
}
|
|
746
603
|
|
|
747
|
-
|
|
604
|
+
// eslint-disable-next-line camelcase
|
|
605
|
+
aztec_utl_getPendingTaggedLogsV2(...inputs: ForeignCallArgs) {
|
|
606
|
+
return callTxeHandler({
|
|
607
|
+
oracle: 'aztec_utl_getPendingTaggedLogsV2',
|
|
608
|
+
inputs,
|
|
609
|
+
handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogsV2(scope, providedSecrets),
|
|
610
|
+
});
|
|
611
|
+
}
|
|
748
612
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
613
|
+
// eslint-disable-next-line camelcase
|
|
614
|
+
aztec_utl_validateAndStoreEnqueuedNotesAndEvents(...inputs: ForeignCallArgs) {
|
|
615
|
+
return callTxeHandler({
|
|
616
|
+
oracle: 'aztec_utl_validateAndStoreEnqueuedNotesAndEvents',
|
|
617
|
+
inputs,
|
|
618
|
+
handler: ([noteValidationRequests, eventValidationRequests, scope]) =>
|
|
619
|
+
this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
|
|
620
|
+
noteValidationRequests,
|
|
621
|
+
eventValidationRequests,
|
|
622
|
+
scope,
|
|
623
|
+
),
|
|
624
|
+
});
|
|
753
625
|
}
|
|
754
626
|
|
|
755
627
|
// eslint-disable-next-line camelcase
|
|
756
|
-
|
|
757
|
-
|
|
628
|
+
aztec_utl_getLogsByTagV2(...inputs: ForeignCallArgs) {
|
|
629
|
+
return callTxeHandler({
|
|
630
|
+
oracle: 'aztec_utl_getLogsByTagV2',
|
|
631
|
+
inputs,
|
|
632
|
+
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot),
|
|
633
|
+
});
|
|
634
|
+
}
|
|
758
635
|
|
|
759
|
-
|
|
636
|
+
// eslint-disable-next-line camelcase
|
|
637
|
+
aztec_utl_getResolvedTxs(...inputs: ForeignCallArgs) {
|
|
638
|
+
return callTxeHandler({
|
|
639
|
+
oracle: 'aztec_utl_getResolvedTxs',
|
|
640
|
+
inputs,
|
|
641
|
+
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getResolvedTxs(requestArrayBaseSlot),
|
|
642
|
+
});
|
|
643
|
+
}
|
|
760
644
|
|
|
761
|
-
|
|
645
|
+
// eslint-disable-next-line camelcase
|
|
646
|
+
aztec_utl_getTxEffects(...inputs: ForeignCallArgs) {
|
|
647
|
+
return callTxeHandler({
|
|
648
|
+
oracle: 'aztec_utl_getTxEffects',
|
|
649
|
+
inputs,
|
|
650
|
+
handler: ([txHashes]) => this.handlerAsUtility().getTxEffects(txHashes),
|
|
651
|
+
});
|
|
762
652
|
}
|
|
763
653
|
|
|
764
654
|
// eslint-disable-next-line camelcase
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
655
|
+
aztec_utl_setCapsule(...inputs: ForeignCallArgs) {
|
|
656
|
+
return callTxeHandler({
|
|
657
|
+
oracle: 'aztec_utl_setCapsule',
|
|
658
|
+
inputs,
|
|
659
|
+
handler: ([contractAddress, slot, capsule, scope]) =>
|
|
660
|
+
this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope),
|
|
661
|
+
});
|
|
662
|
+
}
|
|
773
663
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
664
|
+
// eslint-disable-next-line camelcase
|
|
665
|
+
aztec_utl_getCapsule(...inputs: ForeignCallArgs) {
|
|
666
|
+
return callTxeHandler({
|
|
667
|
+
oracle: 'aztec_utl_getCapsule',
|
|
668
|
+
inputs,
|
|
669
|
+
handler: ([contractAddress, slot, tSize, scope]) =>
|
|
670
|
+
this.handlerAsUtility().getCapsule(contractAddress, slot, tSize, scope),
|
|
671
|
+
});
|
|
672
|
+
}
|
|
779
673
|
|
|
780
|
-
|
|
674
|
+
// eslint-disable-next-line camelcase
|
|
675
|
+
aztec_utl_deleteCapsule(...inputs: ForeignCallArgs) {
|
|
676
|
+
return callTxeHandler({
|
|
677
|
+
oracle: 'aztec_utl_deleteCapsule',
|
|
678
|
+
inputs,
|
|
679
|
+
handler: ([contractAddress, slot, scope]) => this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope),
|
|
680
|
+
});
|
|
781
681
|
}
|
|
782
682
|
|
|
783
683
|
// eslint-disable-next-line camelcase
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
684
|
+
aztec_utl_copyCapsule(...inputs: ForeignCallArgs) {
|
|
685
|
+
return callTxeHandler({
|
|
686
|
+
oracle: 'aztec_utl_copyCapsule',
|
|
687
|
+
inputs,
|
|
688
|
+
handler: ([contractAddress, srcSlot, dstSlot, numEntries, scope]) =>
|
|
689
|
+
this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope),
|
|
690
|
+
});
|
|
691
|
+
}
|
|
792
692
|
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
693
|
+
// eslint-disable-next-line camelcase
|
|
694
|
+
aztec_utl_pushEphemeral(...inputs: ForeignCallArgs) {
|
|
695
|
+
return callTxeHandler({
|
|
696
|
+
oracle: 'aztec_utl_pushEphemeral',
|
|
697
|
+
inputs,
|
|
698
|
+
handler: ([slot, elements]) => this.handlerAsUtility().pushEphemeral(slot, elements),
|
|
699
|
+
});
|
|
700
|
+
}
|
|
798
701
|
|
|
799
|
-
|
|
702
|
+
// eslint-disable-next-line camelcase
|
|
703
|
+
aztec_utl_popEphemeral(...inputs: ForeignCallArgs) {
|
|
704
|
+
return callTxeHandler({
|
|
705
|
+
oracle: 'aztec_utl_popEphemeral',
|
|
706
|
+
inputs,
|
|
707
|
+
handler: ([slot]) => this.handlerAsUtility().popEphemeral(slot),
|
|
708
|
+
});
|
|
800
709
|
}
|
|
801
710
|
|
|
802
711
|
// eslint-disable-next-line camelcase
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
const capsule = fromArray(foreignCapsule);
|
|
712
|
+
aztec_utl_getEphemeral(...inputs: ForeignCallArgs) {
|
|
713
|
+
return callTxeHandler({
|
|
714
|
+
oracle: 'aztec_utl_getEphemeral',
|
|
715
|
+
inputs,
|
|
716
|
+
handler: ([slot, index]) => this.handlerAsUtility().getEphemeral(slot, index),
|
|
717
|
+
});
|
|
718
|
+
}
|
|
811
719
|
|
|
812
|
-
|
|
720
|
+
// eslint-disable-next-line camelcase
|
|
721
|
+
aztec_utl_setEphemeral(...inputs: ForeignCallArgs) {
|
|
722
|
+
return callTxeHandler({
|
|
723
|
+
oracle: 'aztec_utl_setEphemeral',
|
|
724
|
+
inputs,
|
|
725
|
+
handler: ([slot, index, elements]) => this.handlerAsUtility().setEphemeral(slot, index, elements),
|
|
726
|
+
});
|
|
727
|
+
}
|
|
813
728
|
|
|
814
|
-
|
|
729
|
+
// eslint-disable-next-line camelcase
|
|
730
|
+
aztec_utl_getEphemeralLen(...inputs: ForeignCallArgs) {
|
|
731
|
+
return callTxeHandler({
|
|
732
|
+
oracle: 'aztec_utl_getEphemeralLen',
|
|
733
|
+
inputs,
|
|
734
|
+
handler: ([slot]) => this.handlerAsUtility().getEphemeralLen(slot),
|
|
735
|
+
});
|
|
815
736
|
}
|
|
816
737
|
|
|
817
738
|
// eslint-disable-next-line camelcase
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
const tSize = fromSingle(foreignTSize).toNumber();
|
|
739
|
+
aztec_utl_removeEphemeral(...inputs: ForeignCallArgs) {
|
|
740
|
+
return callTxeHandler({
|
|
741
|
+
oracle: 'aztec_utl_removeEphemeral',
|
|
742
|
+
inputs,
|
|
743
|
+
handler: ([slot, index]) => this.handlerAsUtility().removeEphemeral(slot, index),
|
|
744
|
+
});
|
|
745
|
+
}
|
|
826
746
|
|
|
827
|
-
|
|
747
|
+
// eslint-disable-next-line camelcase
|
|
748
|
+
aztec_utl_clearEphemeral(...inputs: ForeignCallArgs) {
|
|
749
|
+
return callTxeHandler({
|
|
750
|
+
oracle: 'aztec_utl_clearEphemeral',
|
|
751
|
+
inputs,
|
|
752
|
+
handler: ([slot]) => this.handlerAsUtility().clearEphemeral(slot),
|
|
753
|
+
});
|
|
754
|
+
}
|
|
828
755
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
return toForeignCallResult([toSingle(new Fr(1)), toArray(values)]);
|
|
837
|
-
}
|
|
756
|
+
// eslint-disable-next-line camelcase
|
|
757
|
+
aztec_utl_pushTransient(...inputs: ForeignCallArgs) {
|
|
758
|
+
return callTxeHandler({
|
|
759
|
+
oracle: 'aztec_utl_pushTransient',
|
|
760
|
+
inputs,
|
|
761
|
+
handler: ([slot, elements]) => this.handlerAsUtility().pushTransient(slot, elements),
|
|
762
|
+
});
|
|
838
763
|
}
|
|
839
764
|
|
|
840
765
|
// eslint-disable-next-line camelcase
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
766
|
+
aztec_utl_popTransient(...inputs: ForeignCallArgs) {
|
|
767
|
+
return callTxeHandler({
|
|
768
|
+
oracle: 'aztec_utl_popTransient',
|
|
769
|
+
inputs,
|
|
770
|
+
handler: ([slot]) => this.handlerAsUtility().popTransient(slot),
|
|
771
|
+
});
|
|
772
|
+
}
|
|
844
773
|
|
|
845
|
-
|
|
774
|
+
// eslint-disable-next-line camelcase
|
|
775
|
+
aztec_utl_getTransient(...inputs: ForeignCallArgs) {
|
|
776
|
+
return callTxeHandler({
|
|
777
|
+
oracle: 'aztec_utl_getTransient',
|
|
778
|
+
inputs,
|
|
779
|
+
handler: ([slot, index]) => this.handlerAsUtility().getTransient(slot, index),
|
|
780
|
+
});
|
|
781
|
+
}
|
|
846
782
|
|
|
847
|
-
|
|
783
|
+
// eslint-disable-next-line camelcase
|
|
784
|
+
aztec_utl_setTransient(...inputs: ForeignCallArgs) {
|
|
785
|
+
return callTxeHandler({
|
|
786
|
+
oracle: 'aztec_utl_setTransient',
|
|
787
|
+
inputs,
|
|
788
|
+
handler: ([slot, index, elements]) => this.handlerAsUtility().setTransient(slot, index, elements),
|
|
789
|
+
});
|
|
848
790
|
}
|
|
849
791
|
|
|
850
792
|
// eslint-disable-next-line camelcase
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
const srcSlot = fromSingle(foreignSrcSlot);
|
|
859
|
-
const dstSlot = fromSingle(foreignDstSlot);
|
|
860
|
-
const numEntries = fromSingle(foreignNumEntries).toNumber();
|
|
793
|
+
aztec_utl_getTransientLen(...inputs: ForeignCallArgs) {
|
|
794
|
+
return callTxeHandler({
|
|
795
|
+
oracle: 'aztec_utl_getTransientLen',
|
|
796
|
+
inputs,
|
|
797
|
+
handler: ([slot]) => this.handlerAsUtility().getTransientLen(slot),
|
|
798
|
+
});
|
|
799
|
+
}
|
|
861
800
|
|
|
862
|
-
|
|
801
|
+
// eslint-disable-next-line camelcase
|
|
802
|
+
aztec_utl_removeTransient(...inputs: ForeignCallArgs) {
|
|
803
|
+
return callTxeHandler({
|
|
804
|
+
oracle: 'aztec_utl_removeTransient',
|
|
805
|
+
inputs,
|
|
806
|
+
handler: ([slot, index]) => this.handlerAsUtility().removeTransient(slot, index),
|
|
807
|
+
});
|
|
808
|
+
}
|
|
863
809
|
|
|
864
|
-
|
|
810
|
+
// eslint-disable-next-line camelcase
|
|
811
|
+
aztec_utl_clearTransient(...inputs: ForeignCallArgs) {
|
|
812
|
+
return callTxeHandler({
|
|
813
|
+
oracle: 'aztec_utl_clearTransient',
|
|
814
|
+
inputs,
|
|
815
|
+
handler: ([slot]) => this.handlerAsUtility().clearTransient(slot),
|
|
816
|
+
});
|
|
865
817
|
}
|
|
866
818
|
|
|
867
819
|
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
@@ -869,339 +821,399 @@ export class RPCTranslator {
|
|
|
869
821
|
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
870
822
|
// existence of a txe_oracle method?
|
|
871
823
|
// eslint-disable-next-line camelcase
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
const ciphertext = fromUintBoundedVec(foreignCiphertextBVecStorage, foreignCiphertextLength, 8);
|
|
879
|
-
const iv = fromUintArray(foreignIv, 8);
|
|
880
|
-
const symKey = fromUintArray(foreignSymKey, 8);
|
|
881
|
-
|
|
882
|
-
const plaintextBuffer = await this.handlerAsUtility().aes128Decrypt(ciphertext, iv, symKey);
|
|
883
|
-
|
|
884
|
-
return toForeignCallResult(
|
|
885
|
-
arrayToBoundedVec(bufferToU8Array(plaintextBuffer), foreignCiphertextBVecStorage.length),
|
|
886
|
-
);
|
|
824
|
+
aztec_utl_decryptAes128(...inputs: ForeignCallArgs) {
|
|
825
|
+
return callTxeHandler({
|
|
826
|
+
oracle: 'aztec_utl_decryptAes128',
|
|
827
|
+
inputs,
|
|
828
|
+
handler: ([ciphertext, iv, symKey]) => this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey),
|
|
829
|
+
});
|
|
887
830
|
}
|
|
888
831
|
|
|
889
832
|
// eslint-disable-next-line camelcase
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
const ephPK = Point.fromFields([
|
|
898
|
-
fromSingle(foreignEphPKField0),
|
|
899
|
-
fromSingle(foreignEphPKField1),
|
|
900
|
-
fromSingle(foreignEphPKField2),
|
|
901
|
-
]);
|
|
902
|
-
|
|
903
|
-
const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK);
|
|
904
|
-
|
|
905
|
-
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
833
|
+
aztec_utl_getSharedSecrets(...inputs: ForeignCallArgs) {
|
|
834
|
+
return callTxeHandler({
|
|
835
|
+
oracle: 'aztec_utl_getSharedSecrets',
|
|
836
|
+
inputs,
|
|
837
|
+
handler: ([address, ephPksSlot, contractAddress]) =>
|
|
838
|
+
this.handlerAsUtility().getSharedSecrets(address, ephPksSlot, contractAddress),
|
|
839
|
+
});
|
|
906
840
|
}
|
|
907
841
|
|
|
908
842
|
// eslint-disable-next-line camelcase
|
|
909
|
-
|
|
910
|
-
|
|
843
|
+
aztec_utl_setContractSyncCacheInvalid(...inputs: ForeignCallArgs) {
|
|
844
|
+
return callTxeHandler({
|
|
845
|
+
oracle: 'aztec_utl_setContractSyncCacheInvalid',
|
|
846
|
+
inputs,
|
|
847
|
+
handler: ([contractAddress, scopes]) =>
|
|
848
|
+
this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes),
|
|
849
|
+
});
|
|
911
850
|
}
|
|
912
851
|
|
|
913
|
-
// AVM opcodes
|
|
914
|
-
|
|
915
852
|
// eslint-disable-next-line camelcase
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
853
|
+
aztec_utl_emitOffchainEffect(...inputs: ForeignCallArgs) {
|
|
854
|
+
return callTxeHandler({
|
|
855
|
+
oracle: 'aztec_utl_emitOffchainEffect',
|
|
856
|
+
inputs,
|
|
857
|
+
handler: ([data]) => {
|
|
858
|
+
// Record the raw payload against the currently-executing top-level call. The Noir side
|
|
859
|
+
// (via `env.offchain_messages()`) is responsible for decoding the protocol-reserved prefix
|
|
860
|
+
// (`OFFCHAIN_MESSAGE_IDENTIFIER`, recipient) and turning each payload into an `OffchainMessage` struct suitable
|
|
861
|
+
// for `offchain_receive`.
|
|
862
|
+
this.stateHandler.recordOffchainEffect(data);
|
|
863
|
+
},
|
|
864
|
+
});
|
|
919
865
|
}
|
|
920
866
|
|
|
921
867
|
// eslint-disable-next-line camelcase
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
868
|
+
aztec_utl_recordFact(...inputs: ForeignCallArgs) {
|
|
869
|
+
return callTxeHandler({
|
|
870
|
+
oracle: 'aztec_utl_recordFact',
|
|
871
|
+
inputs,
|
|
872
|
+
handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId, factTypeId, payload, originBlock]) =>
|
|
873
|
+
this.handlerAsUtility().recordFact(
|
|
874
|
+
contractAddress,
|
|
875
|
+
scope,
|
|
876
|
+
factCollectionTypeId,
|
|
877
|
+
factCollectionId,
|
|
878
|
+
factTypeId,
|
|
879
|
+
payload,
|
|
880
|
+
originBlock,
|
|
881
|
+
),
|
|
882
|
+
});
|
|
929
883
|
}
|
|
930
884
|
|
|
931
885
|
// eslint-disable-next-line camelcase
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
886
|
+
aztec_utl_deleteFactCollection(...inputs: ForeignCallArgs) {
|
|
887
|
+
return callTxeHandler({
|
|
888
|
+
oracle: 'aztec_utl_deleteFactCollection',
|
|
889
|
+
inputs,
|
|
890
|
+
handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
|
|
891
|
+
this.handlerAsUtility().deleteFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
|
|
892
|
+
});
|
|
939
893
|
}
|
|
940
894
|
|
|
941
895
|
// eslint-disable-next-line camelcase
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
// AVM requires an extra boolean indicating the instance was found
|
|
950
|
-
toSingle(new Fr(1)),
|
|
951
|
-
]);
|
|
896
|
+
aztec_utl_getFactCollection(...inputs: ForeignCallArgs) {
|
|
897
|
+
return callTxeHandler({
|
|
898
|
+
oracle: 'aztec_utl_getFactCollection',
|
|
899
|
+
inputs,
|
|
900
|
+
handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
|
|
901
|
+
this.handlerAsUtility().getFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
|
|
902
|
+
});
|
|
952
903
|
}
|
|
953
904
|
|
|
954
905
|
// eslint-disable-next-line camelcase
|
|
955
|
-
|
|
956
|
-
|
|
906
|
+
aztec_utl_getFactCollectionsByType(...inputs: ForeignCallArgs) {
|
|
907
|
+
return callTxeHandler({
|
|
908
|
+
oracle: 'aztec_utl_getFactCollectionsByType',
|
|
909
|
+
inputs,
|
|
910
|
+
handler: ([contractAddress, scope, factCollectionTypeId]) =>
|
|
911
|
+
this.handlerAsUtility().getFactCollectionsByType(contractAddress, scope, factCollectionTypeId),
|
|
912
|
+
});
|
|
913
|
+
}
|
|
957
914
|
|
|
958
|
-
|
|
915
|
+
// AVM opcodes
|
|
959
916
|
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
917
|
+
// eslint-disable-next-line camelcase
|
|
918
|
+
aztec_avm_emitPublicLog() {
|
|
919
|
+
return callTxeHandler({
|
|
920
|
+
oracle: 'aztec_avm_emitPublicLog',
|
|
921
|
+
inputs: [],
|
|
922
|
+
// TODO(#8811): Implement
|
|
923
|
+
handler: () => {},
|
|
924
|
+
});
|
|
965
925
|
}
|
|
966
926
|
|
|
967
927
|
// eslint-disable-next-line camelcase
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
toSingle(instance.initializationHash),
|
|
975
|
-
// AVM requires an extra boolean indicating the instance was found
|
|
976
|
-
toSingle(new Fr(1)),
|
|
977
|
-
]);
|
|
928
|
+
aztec_avm_storageRead(...inputs: ForeignCallArgs) {
|
|
929
|
+
return callTxeHandler({
|
|
930
|
+
oracle: 'aztec_avm_storageRead',
|
|
931
|
+
inputs,
|
|
932
|
+
handler: ([slot, contractAddress]) => this.handlerAsAvm().storageRead(slot, contractAddress),
|
|
933
|
+
});
|
|
978
934
|
}
|
|
979
935
|
|
|
980
936
|
// eslint-disable-next-line camelcase
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
937
|
+
aztec_avm_storageWrite(...inputs: ForeignCallArgs) {
|
|
938
|
+
return callTxeHandler({
|
|
939
|
+
oracle: 'aztec_avm_storageWrite',
|
|
940
|
+
inputs,
|
|
941
|
+
handler: ([slot, value]) => this.handlerAsAvm().storageWrite(slot, value),
|
|
942
|
+
});
|
|
985
943
|
}
|
|
986
944
|
|
|
987
945
|
// eslint-disable-next-line camelcase
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
946
|
+
aztec_avm_getContractInstanceDeployer(...inputs: ForeignCallArgs) {
|
|
947
|
+
return callTxeHandler({
|
|
948
|
+
oracle: 'aztec_avm_getContractInstanceDeployer',
|
|
949
|
+
inputs,
|
|
950
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceDeployer(address),
|
|
951
|
+
});
|
|
994
952
|
}
|
|
995
953
|
|
|
996
954
|
// eslint-disable-next-line camelcase
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
955
|
+
aztec_avm_getContractInstanceClassId(...inputs: ForeignCallArgs) {
|
|
956
|
+
return callTxeHandler({
|
|
957
|
+
oracle: 'aztec_avm_getContractInstanceClassId',
|
|
958
|
+
inputs,
|
|
959
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceClassId(address),
|
|
960
|
+
});
|
|
1003
961
|
}
|
|
1004
962
|
|
|
1005
963
|
// eslint-disable-next-line camelcase
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
964
|
+
aztec_avm_getContractInstanceInitializationHash(...inputs: ForeignCallArgs) {
|
|
965
|
+
return callTxeHandler({
|
|
966
|
+
oracle: 'aztec_avm_getContractInstanceInitializationHash',
|
|
967
|
+
inputs,
|
|
968
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceInitializationHash(address),
|
|
969
|
+
});
|
|
1012
970
|
}
|
|
1013
971
|
|
|
1014
972
|
// eslint-disable-next-line camelcase
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
973
|
+
aztec_avm_getContractInstanceImmutablesHash(...inputs: ForeignCallArgs) {
|
|
974
|
+
return callTxeHandler({
|
|
975
|
+
oracle: 'aztec_avm_getContractInstanceImmutablesHash',
|
|
976
|
+
inputs,
|
|
977
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceImmutablesHash(address),
|
|
978
|
+
});
|
|
1019
979
|
}
|
|
1020
980
|
|
|
1021
981
|
// eslint-disable-next-line camelcase
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
982
|
+
aztec_avm_sender() {
|
|
983
|
+
return callTxeHandler({
|
|
984
|
+
oracle: 'aztec_avm_sender',
|
|
985
|
+
inputs: [],
|
|
986
|
+
handler: () => this.handlerAsAvm().sender(),
|
|
987
|
+
});
|
|
1026
988
|
}
|
|
1027
989
|
|
|
1028
990
|
// eslint-disable-next-line camelcase
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
991
|
+
aztec_avm_emitNullifier(...inputs: ForeignCallArgs) {
|
|
992
|
+
return callTxeHandler({
|
|
993
|
+
oracle: 'aztec_avm_emitNullifier',
|
|
994
|
+
inputs,
|
|
995
|
+
handler: ([nullifier]) => this.handlerAsAvm().emitNullifier(nullifier),
|
|
996
|
+
});
|
|
1033
997
|
}
|
|
1034
998
|
|
|
1035
999
|
// eslint-disable-next-line camelcase
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1000
|
+
aztec_avm_emitNoteHash(...inputs: ForeignCallArgs) {
|
|
1001
|
+
return callTxeHandler({
|
|
1002
|
+
oracle: 'aztec_avm_emitNoteHash',
|
|
1003
|
+
inputs,
|
|
1004
|
+
handler: ([noteHash]) => this.handlerAsAvm().emitNoteHash(noteHash),
|
|
1005
|
+
});
|
|
1040
1006
|
}
|
|
1041
1007
|
|
|
1042
1008
|
// eslint-disable-next-line camelcase
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1009
|
+
aztec_avm_nullifierExists(...inputs: ForeignCallArgs) {
|
|
1010
|
+
return callTxeHandler({
|
|
1011
|
+
oracle: 'aztec_avm_nullifierExists',
|
|
1012
|
+
inputs,
|
|
1013
|
+
handler: ([siloedNullifier]) => this.handlerAsAvm().nullifierExists(siloedNullifier),
|
|
1014
|
+
});
|
|
1047
1015
|
}
|
|
1048
1016
|
|
|
1049
1017
|
// eslint-disable-next-line camelcase
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1018
|
+
aztec_avm_address() {
|
|
1019
|
+
return callTxeHandler({
|
|
1020
|
+
oracle: 'aztec_avm_address',
|
|
1021
|
+
inputs: [],
|
|
1022
|
+
handler: () => this.handlerAsAvm().address(),
|
|
1023
|
+
});
|
|
1054
1024
|
}
|
|
1055
1025
|
|
|
1056
1026
|
// eslint-disable-next-line camelcase
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1027
|
+
aztec_avm_blockNumber() {
|
|
1028
|
+
return callTxeHandler({
|
|
1029
|
+
oracle: 'aztec_avm_blockNumber',
|
|
1030
|
+
inputs: [],
|
|
1031
|
+
handler: () => this.handlerAsAvm().blockNumber(),
|
|
1032
|
+
});
|
|
1061
1033
|
}
|
|
1062
1034
|
|
|
1063
1035
|
// eslint-disable-next-line camelcase
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1036
|
+
aztec_avm_timestamp() {
|
|
1037
|
+
return callTxeHandler({
|
|
1038
|
+
oracle: 'aztec_avm_timestamp',
|
|
1039
|
+
inputs: [],
|
|
1040
|
+
handler: () => this.handlerAsAvm().timestamp(),
|
|
1041
|
+
});
|
|
1068
1042
|
}
|
|
1069
1043
|
|
|
1070
1044
|
// eslint-disable-next-line camelcase
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
) {
|
|
1078
|
-
throw new Error(
|
|
1079
|
-
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
1080
|
-
);
|
|
1045
|
+
aztec_avm_isStaticCall() {
|
|
1046
|
+
return callTxeHandler({
|
|
1047
|
+
oracle: 'aztec_avm_isStaticCall',
|
|
1048
|
+
inputs: [],
|
|
1049
|
+
handler: () => this.handlerAsAvm().isStaticCall(),
|
|
1050
|
+
});
|
|
1081
1051
|
}
|
|
1082
1052
|
|
|
1083
1053
|
// eslint-disable-next-line camelcase
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
) {
|
|
1091
|
-
throw new Error(
|
|
1092
|
-
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
1093
|
-
);
|
|
1054
|
+
aztec_avm_chainId() {
|
|
1055
|
+
return callTxeHandler({
|
|
1056
|
+
oracle: 'aztec_avm_chainId',
|
|
1057
|
+
inputs: [],
|
|
1058
|
+
handler: () => this.handlerAsAvm().chainId(),
|
|
1059
|
+
});
|
|
1094
1060
|
}
|
|
1095
1061
|
|
|
1096
1062
|
// eslint-disable-next-line camelcase
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
// eslint-disable-next-line camelcase
|
|
1104
|
-
async aztec_txe_privateCallNewFlow(
|
|
1105
|
-
foreignFrom: ForeignCallSingle,
|
|
1106
|
-
foreignTargetContractAddress: ForeignCallSingle,
|
|
1107
|
-
foreignFunctionSelector: ForeignCallSingle,
|
|
1108
|
-
foreignArgs: ForeignCallArray,
|
|
1109
|
-
foreignArgsHash: ForeignCallSingle,
|
|
1110
|
-
foreignIsStaticCall: ForeignCallSingle,
|
|
1111
|
-
) {
|
|
1112
|
-
const from = addressFromSingle(foreignFrom);
|
|
1113
|
-
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
1114
|
-
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
1115
|
-
const args = fromArray(foreignArgs);
|
|
1116
|
-
const argsHash = fromSingle(foreignArgsHash);
|
|
1117
|
-
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1118
|
-
|
|
1119
|
-
const returnValues = await this.handlerAsTxe().privateCallNewFlow(
|
|
1120
|
-
from,
|
|
1121
|
-
targetContractAddress,
|
|
1122
|
-
functionSelector,
|
|
1123
|
-
args,
|
|
1124
|
-
argsHash,
|
|
1125
|
-
isStaticCall,
|
|
1126
|
-
this.stateHandler.getCurrentJob(),
|
|
1127
|
-
);
|
|
1128
|
-
|
|
1129
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1130
|
-
await this.stateHandler.cycleJob();
|
|
1131
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1132
|
-
}
|
|
1133
|
-
|
|
1134
|
-
// eslint-disable-next-line camelcase
|
|
1135
|
-
async aztec_txe_executeUtilityFunction(
|
|
1136
|
-
foreignTargetContractAddress: ForeignCallSingle,
|
|
1137
|
-
foreignFunctionSelector: ForeignCallSingle,
|
|
1138
|
-
foreignArgs: ForeignCallArray,
|
|
1139
|
-
) {
|
|
1140
|
-
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
1141
|
-
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
1142
|
-
const args = fromArray(foreignArgs);
|
|
1143
|
-
|
|
1144
|
-
const returnValues = await this.handlerAsTxe().executeUtilityFunction(
|
|
1145
|
-
targetContractAddress,
|
|
1146
|
-
functionSelector,
|
|
1147
|
-
args,
|
|
1148
|
-
this.stateHandler.getCurrentJob(),
|
|
1149
|
-
);
|
|
1150
|
-
|
|
1151
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1152
|
-
await this.stateHandler.cycleJob();
|
|
1153
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
// eslint-disable-next-line camelcase
|
|
1157
|
-
async aztec_txe_publicCallNewFlow(
|
|
1158
|
-
foreignFrom: ForeignCallSingle,
|
|
1159
|
-
foreignAddress: ForeignCallSingle,
|
|
1160
|
-
foreignCalldata: ForeignCallArray,
|
|
1161
|
-
foreignIsStaticCall: ForeignCallSingle,
|
|
1162
|
-
) {
|
|
1163
|
-
const from = addressFromSingle(foreignFrom);
|
|
1164
|
-
const address = addressFromSingle(foreignAddress);
|
|
1165
|
-
const calldata = fromArray(foreignCalldata);
|
|
1166
|
-
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1167
|
-
|
|
1168
|
-
const returnValues = await this.handlerAsTxe().publicCallNewFlow(from, address, calldata, isStaticCall);
|
|
1169
|
-
|
|
1170
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1171
|
-
await this.stateHandler.cycleJob();
|
|
1172
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1173
|
-
}
|
|
1174
|
-
|
|
1175
|
-
// eslint-disable-next-line camelcase
|
|
1176
|
-
async aztec_prv_getSenderForTags() {
|
|
1177
|
-
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
1178
|
-
|
|
1179
|
-
// Return a Noir Option struct with `some` and `value` fields
|
|
1180
|
-
if (sender === undefined) {
|
|
1181
|
-
// No sender found, return Option with some=0 and value=0
|
|
1182
|
-
return toForeignCallResult([toSingle(0), toSingle(0)]);
|
|
1183
|
-
} else {
|
|
1184
|
-
// Sender found, return Option with some=1 and value=sender address
|
|
1185
|
-
return toForeignCallResult([toSingle(1), toSingle(sender)]);
|
|
1186
|
-
}
|
|
1063
|
+
aztec_avm_version() {
|
|
1064
|
+
return callTxeHandler({
|
|
1065
|
+
oracle: 'aztec_avm_version',
|
|
1066
|
+
inputs: [],
|
|
1067
|
+
handler: () => this.handlerAsAvm().version(),
|
|
1068
|
+
});
|
|
1187
1069
|
}
|
|
1188
1070
|
|
|
1189
1071
|
// eslint-disable-next-line camelcase
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1072
|
+
aztec_avm_returndataSize() {
|
|
1073
|
+
return callTxeHandler({
|
|
1074
|
+
oracle: 'aztec_avm_returndataSize',
|
|
1075
|
+
inputs: [],
|
|
1076
|
+
handler: () => this.handlerAsAvm().returndataSize(),
|
|
1077
|
+
});
|
|
1078
|
+
}
|
|
1194
1079
|
|
|
1195
|
-
|
|
1080
|
+
// eslint-disable-next-line camelcase
|
|
1081
|
+
aztec_avm_returndataCopy(...inputs: ForeignCallArgs) {
|
|
1082
|
+
return callTxeHandler({
|
|
1083
|
+
oracle: 'aztec_avm_returndataCopy',
|
|
1084
|
+
inputs,
|
|
1085
|
+
handler: ([rdOffset, copySize]) => this.handlerAsAvm().returndataCopy(rdOffset, copySize),
|
|
1086
|
+
});
|
|
1196
1087
|
}
|
|
1197
1088
|
|
|
1198
1089
|
// eslint-disable-next-line camelcase
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1090
|
+
aztec_avm_call(...inputs: ForeignCallArgs) {
|
|
1091
|
+
return callTxeHandler({
|
|
1092
|
+
oracle: 'aztec_avm_call',
|
|
1093
|
+
inputs,
|
|
1094
|
+
handler: ([l2Gas, daGas, address, argsLength, args]) =>
|
|
1095
|
+
this.handlerAsAvm().call(l2Gas, daGas, address, argsLength, args),
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1202
1098
|
|
|
1203
|
-
|
|
1099
|
+
// eslint-disable-next-line camelcase
|
|
1100
|
+
aztec_avm_staticCall(...inputs: ForeignCallArgs) {
|
|
1101
|
+
return callTxeHandler({
|
|
1102
|
+
oracle: 'aztec_avm_staticCall',
|
|
1103
|
+
inputs,
|
|
1104
|
+
handler: ([l2Gas, daGas, address, argsLength, args]) =>
|
|
1105
|
+
this.handlerAsAvm().staticCall(l2Gas, daGas, address, argsLength, args),
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1204
1108
|
|
|
1205
|
-
|
|
1109
|
+
// eslint-disable-next-line camelcase
|
|
1110
|
+
aztec_avm_successCopy() {
|
|
1111
|
+
return callTxeHandler({
|
|
1112
|
+
oracle: 'aztec_avm_successCopy',
|
|
1113
|
+
inputs: [],
|
|
1114
|
+
handler: () => this.handlerAsAvm().successCopy(),
|
|
1115
|
+
});
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
// eslint-disable-next-line camelcase
|
|
1119
|
+
aztec_txe_privateCallNewFlow(...inputs: ForeignCallArgs) {
|
|
1120
|
+
return callTxeHandler({
|
|
1121
|
+
oracle: 'aztec_txe_privateCallNewFlow',
|
|
1122
|
+
inputs,
|
|
1123
|
+
handler: ([
|
|
1124
|
+
from,
|
|
1125
|
+
targetContractAddress,
|
|
1126
|
+
functionSelector,
|
|
1127
|
+
args,
|
|
1128
|
+
argsHash,
|
|
1129
|
+
isStaticCall,
|
|
1130
|
+
additionalScopes,
|
|
1131
|
+
authorizedUtilityCallTargets,
|
|
1132
|
+
gasSettings,
|
|
1133
|
+
]) =>
|
|
1134
|
+
this.stateHandler.executePrivateCall(
|
|
1135
|
+
from,
|
|
1136
|
+
targetContractAddress,
|
|
1137
|
+
functionSelector,
|
|
1138
|
+
args,
|
|
1139
|
+
argsHash,
|
|
1140
|
+
isStaticCall,
|
|
1141
|
+
additionalScopes,
|
|
1142
|
+
authorizedUtilityCallTargets,
|
|
1143
|
+
gasSettings,
|
|
1144
|
+
),
|
|
1145
|
+
});
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
// eslint-disable-next-line camelcase
|
|
1149
|
+
aztec_txe_executeUtilityFunction(...inputs: ForeignCallArgs) {
|
|
1150
|
+
return callTxeHandler({
|
|
1151
|
+
oracle: 'aztec_txe_executeUtilityFunction',
|
|
1152
|
+
inputs,
|
|
1153
|
+
handler: ([from, targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) =>
|
|
1154
|
+
this.stateHandler.executeUtilityFunction(
|
|
1155
|
+
from,
|
|
1156
|
+
targetContractAddress,
|
|
1157
|
+
functionSelector,
|
|
1158
|
+
args,
|
|
1159
|
+
authorizedUtilityCallTargets,
|
|
1160
|
+
),
|
|
1161
|
+
});
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
// eslint-disable-next-line camelcase
|
|
1165
|
+
aztec_txe_publicCallNewFlow(...inputs: ForeignCallArgs) {
|
|
1166
|
+
return callTxeHandler({
|
|
1167
|
+
oracle: 'aztec_txe_publicCallNewFlow',
|
|
1168
|
+
inputs,
|
|
1169
|
+
handler: ([from, address, calldata, isStaticCall, gasSettings]) =>
|
|
1170
|
+
this.stateHandler.executePublicCall(from, address, calldata, isStaticCall, gasSettings),
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
// eslint-disable-next-line camelcase
|
|
1175
|
+
aztec_prv_getSenderForTags() {
|
|
1176
|
+
return callTxeHandler({
|
|
1177
|
+
oracle: 'aztec_prv_getSenderForTags',
|
|
1178
|
+
inputs: [],
|
|
1179
|
+
handler: () => this.handlerAsPrivate().getSenderForTags(),
|
|
1180
|
+
});
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
// eslint-disable-next-line camelcase
|
|
1184
|
+
aztec_prv_resolveTaggingStrategy(...inputs: ForeignCallArgs) {
|
|
1185
|
+
return callTxeHandler({
|
|
1186
|
+
oracle: 'aztec_prv_resolveTaggingStrategy',
|
|
1187
|
+
inputs,
|
|
1188
|
+
handler: ([sender, recipient, deliveryMode]) =>
|
|
1189
|
+
this.handlerAsPrivate().resolveTaggingStrategy(sender, recipient, deliveryMode),
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
// eslint-disable-next-line camelcase
|
|
1194
|
+
aztec_prv_resolveCustomRequest(...inputs: ForeignCallArgs) {
|
|
1195
|
+
return callTxeHandler({
|
|
1196
|
+
oracle: 'aztec_prv_resolveCustomRequest',
|
|
1197
|
+
inputs,
|
|
1198
|
+
handler: ([kind, payload]) => this.handlerAsPrivate().resolveCustomRequest(kind, payload),
|
|
1199
|
+
});
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
// eslint-disable-next-line camelcase
|
|
1203
|
+
aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs) {
|
|
1204
|
+
return callTxeHandler({
|
|
1205
|
+
oracle: 'aztec_prv_getAppTaggingSecret',
|
|
1206
|
+
inputs,
|
|
1207
|
+
handler: ([sender, recipient]) => this.handlerAsPrivate().getAppTaggingSecret(sender, recipient),
|
|
1208
|
+
});
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
// eslint-disable-next-line camelcase
|
|
1212
|
+
aztec_prv_getNextTaggingIndex(...inputs: ForeignCallArgs) {
|
|
1213
|
+
return callTxeHandler({
|
|
1214
|
+
oracle: 'aztec_prv_getNextTaggingIndex',
|
|
1215
|
+
inputs,
|
|
1216
|
+
handler: ([secret, deliveryMode]) => this.handlerAsPrivate().getNextTaggingIndex(secret, deliveryMode),
|
|
1217
|
+
});
|
|
1206
1218
|
}
|
|
1207
1219
|
}
|