@aztec/txe 0.0.1-commit.3fd054f6 → 0.0.1-commit.431c48d
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-LVLJKGGH.js +266 -0
- package/dest/chunk-LVLJKGGH.js.map +7 -0
- package/dest/chunk-OVMCQ5A6.js +304 -0
- package/dest/chunk-OVMCQ5A6.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 +40494 -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 -18
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +288 -98
- 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 -233
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +791 -636
- package/dest/server.bundle.js +3 -0
- package/dest/server.bundle.js.map +7 -0
- package/dest/state_machine/archiver.d.ts +4 -3
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +24 -14
- 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 -7
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +52 -14
- package/dest/state_machine/mock_epoch_cache.d.ts +1 -2
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +0 -3
- package/dest/state_machine/synchronizer.d.ts +5 -2
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +7 -3
- package/dest/txe_session.d.ts +90 -20
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +319 -73
- 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 +7 -4
- 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 +364 -121
- 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 +880 -902
- package/src/state_machine/archiver.ts +37 -16
- 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 -32
- package/src/state_machine/mock_epoch_cache.ts +0 -4
- package/src/state_machine/synchronizer.ts +9 -3
- package/src/txe_session.ts +554 -89
- 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 -4
- package/src/worker.ts +98 -0
- package/dest/util/encoding.d.ts +0 -788
- 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,713 +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
|
-
|
|
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
|
+
});
|
|
408
|
+
}
|
|
589
409
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
toSingle(new Fr(1)),
|
|
599
|
-
toArray([...result.publicKeys.toFields(), result.partialAddress]),
|
|
600
|
-
]);
|
|
601
|
-
}
|
|
410
|
+
// eslint-disable-next-line camelcase
|
|
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
|
+
});
|
|
602
418
|
}
|
|
603
419
|
|
|
604
420
|
// eslint-disable-next-line camelcase
|
|
605
|
-
|
|
606
|
-
|
|
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
|
+
}
|
|
607
428
|
|
|
608
|
-
|
|
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
|
+
});
|
|
437
|
+
}
|
|
609
438
|
|
|
610
|
-
|
|
439
|
+
// eslint-disable-next-line camelcase
|
|
440
|
+
aztec_utl_doesNullifierExist(...inputs: ForeignCallArgs) {
|
|
441
|
+
return callTxeHandler({
|
|
442
|
+
oracle: 'aztec_utl_doesNullifierExist',
|
|
443
|
+
inputs,
|
|
444
|
+
handler: ([innerNullifier]) => this.handlerAsUtility().doesNullifierExist(innerNullifier),
|
|
445
|
+
});
|
|
611
446
|
}
|
|
612
447
|
|
|
613
448
|
// 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
|
-
);
|
|
449
|
+
aztec_utl_getContractInstance(...inputs: ForeignCallArgs) {
|
|
450
|
+
return callTxeHandler({
|
|
451
|
+
oracle: 'aztec_utl_getContractInstance',
|
|
452
|
+
inputs,
|
|
453
|
+
handler: ([address]) => this.handlerAsUtility().getContractInstance(address),
|
|
454
|
+
});
|
|
624
455
|
}
|
|
625
456
|
|
|
626
457
|
// eslint-disable-next-line camelcase
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
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
|
+
}
|
|
633
465
|
|
|
634
|
-
|
|
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
|
+
});
|
|
473
|
+
}
|
|
635
474
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
475
|
+
// eslint-disable-next-line camelcase
|
|
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
|
+
});
|
|
640
489
|
}
|
|
641
490
|
|
|
642
491
|
// eslint-disable-next-line camelcase
|
|
643
|
-
|
|
644
|
-
|
|
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
|
+
}
|
|
645
499
|
|
|
646
|
-
|
|
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
|
+
});
|
|
508
|
+
}
|
|
647
509
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
510
|
+
// eslint-disable-next-line camelcase
|
|
511
|
+
aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
|
|
512
|
+
return callTxeHandler({
|
|
513
|
+
oracle: 'aztec_utl_getAuthWitness',
|
|
514
|
+
inputs,
|
|
515
|
+
handler: ([messageHash]) => this.handlerAsUtility().getAuthWitness(messageHash),
|
|
516
|
+
});
|
|
652
517
|
}
|
|
653
518
|
|
|
654
519
|
// eslint-disable-next-line camelcase
|
|
655
|
-
|
|
656
|
-
|
|
520
|
+
aztec_prv_assertValidPublicCalldata(...inputs: ForeignCallArgs) {
|
|
521
|
+
return callTxeHandler({
|
|
522
|
+
oracle: 'aztec_prv_assertValidPublicCalldata',
|
|
523
|
+
inputs,
|
|
524
|
+
handler: ([calldataHash]) => this.handlerAsPrivate().assertValidPublicCalldata(calldataHash),
|
|
525
|
+
});
|
|
657
526
|
}
|
|
658
527
|
|
|
659
528
|
// eslint-disable-next-line camelcase
|
|
660
|
-
|
|
661
|
-
|
|
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
|
+
});
|
|
662
536
|
}
|
|
663
537
|
|
|
664
538
|
// eslint-disable-next-line camelcase
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
539
|
+
aztec_prv_isExecutionInRevertiblePhase(...inputs: ForeignCallArgs) {
|
|
540
|
+
return callTxeHandler({
|
|
541
|
+
oracle: 'aztec_prv_isExecutionInRevertiblePhase',
|
|
542
|
+
inputs,
|
|
543
|
+
handler: ([sideEffectCounter]) => this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter),
|
|
544
|
+
});
|
|
669
545
|
}
|
|
670
546
|
|
|
671
547
|
// eslint-disable-next-line camelcase
|
|
672
548
|
aztec_utl_getUtilityContext() {
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
549
|
+
return callTxeHandler({
|
|
550
|
+
oracle: 'aztec_utl_getUtilityContext',
|
|
551
|
+
inputs: [],
|
|
552
|
+
handler: () => this.handlerAsUtility().getUtilityContext(),
|
|
553
|
+
});
|
|
676
554
|
}
|
|
677
555
|
|
|
678
556
|
// eslint-disable-next-line camelcase
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
throw new Error(`Block header not found for block ${blockNumber}.`);
|
|
686
|
-
}
|
|
687
|
-
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
|
+
});
|
|
688
563
|
}
|
|
689
564
|
|
|
690
565
|
// eslint-disable-next-line camelcase
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash);
|
|
699
|
-
|
|
700
|
-
if (!witness) {
|
|
701
|
-
throw new Error(`Note hash ${noteHash} not found in the note hash tree at block ${blockHash.toString()}.`);
|
|
702
|
-
}
|
|
703
|
-
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
|
+
});
|
|
704
572
|
}
|
|
705
573
|
|
|
706
574
|
// eslint-disable-next-line camelcase
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash);
|
|
715
|
-
|
|
716
|
-
if (!witness) {
|
|
717
|
-
throw new Error(
|
|
718
|
-
`Block hash ${blockHash.toString()} not found in the archive tree at anchor block ${anchorBlockHash.toString()}.`,
|
|
719
|
-
);
|
|
720
|
-
}
|
|
721
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
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
|
+
});
|
|
722
582
|
}
|
|
723
583
|
|
|
724
584
|
// eslint-disable-next-line camelcase
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier);
|
|
733
|
-
|
|
734
|
-
if (!witness) {
|
|
735
|
-
throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${blockHash}.`);
|
|
736
|
-
}
|
|
737
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
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
|
+
});
|
|
738
592
|
}
|
|
739
593
|
|
|
740
594
|
// eslint-disable-next-line camelcase
|
|
741
|
-
|
|
742
|
-
|
|
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
|
+
}
|
|
743
603
|
|
|
744
|
-
|
|
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
|
+
}
|
|
745
612
|
|
|
746
|
-
|
|
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
|
+
});
|
|
747
625
|
}
|
|
748
626
|
|
|
749
627
|
// eslint-disable-next-line camelcase
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
758
|
-
const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
|
|
759
|
-
const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
|
|
760
|
-
const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
|
|
761
|
-
const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
|
|
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
|
+
}
|
|
762
635
|
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
);
|
|
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
|
+
}
|
|
770
644
|
|
|
771
|
-
|
|
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
|
+
});
|
|
772
652
|
}
|
|
773
653
|
|
|
774
654
|
// eslint-disable-next-line camelcase
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
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
|
+
}
|
|
783
663
|
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
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
|
+
}
|
|
789
673
|
|
|
790
|
-
|
|
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
|
+
});
|
|
791
681
|
}
|
|
792
682
|
|
|
793
683
|
// eslint-disable-next-line camelcase
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
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
|
+
}
|
|
802
692
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
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
|
+
}
|
|
808
701
|
|
|
809
|
-
|
|
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
|
+
});
|
|
810
709
|
}
|
|
811
710
|
|
|
812
711
|
// eslint-disable-next-line camelcase
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
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
|
+
}
|
|
821
719
|
|
|
822
|
-
|
|
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
|
+
}
|
|
823
728
|
|
|
824
|
-
|
|
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
|
+
});
|
|
825
736
|
}
|
|
826
737
|
|
|
827
738
|
// eslint-disable-next-line camelcase
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
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
|
+
}
|
|
836
746
|
|
|
837
|
-
|
|
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
|
+
}
|
|
838
755
|
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
return toForeignCallResult([toSingle(new Fr(1)), toArray(values)]);
|
|
847
|
-
}
|
|
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
|
+
});
|
|
848
763
|
}
|
|
849
764
|
|
|
850
765
|
// eslint-disable-next-line camelcase
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
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
|
+
}
|
|
854
773
|
|
|
855
|
-
|
|
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
|
+
}
|
|
856
782
|
|
|
857
|
-
|
|
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
|
+
});
|
|
858
790
|
}
|
|
859
791
|
|
|
860
792
|
// eslint-disable-next-line camelcase
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
const srcSlot = fromSingle(foreignSrcSlot);
|
|
869
|
-
const dstSlot = fromSingle(foreignDstSlot);
|
|
870
|
-
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
|
+
}
|
|
871
800
|
|
|
872
|
-
|
|
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
|
+
}
|
|
873
809
|
|
|
874
|
-
|
|
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
|
+
});
|
|
875
817
|
}
|
|
876
818
|
|
|
877
819
|
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
@@ -879,363 +821,399 @@ export class RPCTranslator {
|
|
|
879
821
|
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
880
822
|
// existence of a txe_oracle method?
|
|
881
823
|
// eslint-disable-next-line camelcase
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
const ciphertext = fromUintBoundedVec(foreignCiphertextBVecStorage, foreignCiphertextLength, 8);
|
|
889
|
-
const iv = fromUintArray(foreignIv, 8);
|
|
890
|
-
const symKey = fromUintArray(foreignSymKey, 8);
|
|
891
|
-
|
|
892
|
-
// Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
|
|
893
|
-
try {
|
|
894
|
-
const plaintextBuffer = await this.handlerAsUtility().aes128Decrypt(ciphertext, iv, symKey);
|
|
895
|
-
const [storage, length] = arrayToBoundedVec(
|
|
896
|
-
bufferToU8Array(plaintextBuffer),
|
|
897
|
-
foreignCiphertextBVecStorage.length,
|
|
898
|
-
);
|
|
899
|
-
return toForeignCallResult([toSingle(new Fr(1)), storage, length]);
|
|
900
|
-
} catch {
|
|
901
|
-
const zeroStorage = toArray(Array(foreignCiphertextBVecStorage.length).fill(new Fr(0)));
|
|
902
|
-
return toForeignCallResult([toSingle(new Fr(0)), zeroStorage, toSingle(new Fr(0))]);
|
|
903
|
-
}
|
|
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
|
+
});
|
|
904
830
|
}
|
|
905
831
|
|
|
906
832
|
// eslint-disable-next-line camelcase
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
const ephPK = Point.fromFields([
|
|
915
|
-
fromSingle(foreignEphPKField0),
|
|
916
|
-
fromSingle(foreignEphPKField1),
|
|
917
|
-
fromSingle(foreignEphPKField2),
|
|
918
|
-
]);
|
|
919
|
-
|
|
920
|
-
const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK);
|
|
921
|
-
|
|
922
|
-
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
|
+
});
|
|
923
840
|
}
|
|
924
841
|
|
|
925
842
|
// eslint-disable-next-line camelcase
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
const scopes = fromArray(foreignScopes)
|
|
934
|
-
.slice(0, count)
|
|
935
|
-
.map(f => new AztecAddress(f));
|
|
936
|
-
|
|
937
|
-
this.handlerAsUtility().invalidateContractSyncCache(contractAddress, scopes);
|
|
938
|
-
|
|
939
|
-
return Promise.resolve(toForeignCallResult([]));
|
|
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
|
+
});
|
|
940
850
|
}
|
|
941
851
|
|
|
942
852
|
// eslint-disable-next-line camelcase
|
|
943
|
-
aztec_utl_emitOffchainEffect(
|
|
944
|
-
|
|
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
|
+
});
|
|
945
865
|
}
|
|
946
866
|
|
|
947
|
-
// AVM opcodes
|
|
948
|
-
|
|
949
867
|
// eslint-disable-next-line camelcase
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
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
|
+
});
|
|
953
883
|
}
|
|
954
884
|
|
|
955
885
|
// eslint-disable-next-line camelcase
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
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
|
+
});
|
|
963
893
|
}
|
|
964
894
|
|
|
965
895
|
// eslint-disable-next-line camelcase
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
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
|
+
});
|
|
973
903
|
}
|
|
974
904
|
|
|
975
905
|
// eslint-disable-next-line camelcase
|
|
976
|
-
|
|
977
|
-
|
|
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
|
+
}
|
|
978
914
|
|
|
979
|
-
|
|
915
|
+
// AVM opcodes
|
|
980
916
|
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
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
|
+
});
|
|
986
925
|
}
|
|
987
926
|
|
|
988
927
|
// eslint-disable-next-line camelcase
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
toSingle(instance.currentContractClassId),
|
|
996
|
-
// AVM requires an extra boolean indicating the instance was found
|
|
997
|
-
toSingle(new Fr(1)),
|
|
998
|
-
]);
|
|
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
|
+
});
|
|
999
934
|
}
|
|
1000
935
|
|
|
1001
936
|
// eslint-disable-next-line camelcase
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
toSingle(instance.initializationHash),
|
|
1009
|
-
// AVM requires an extra boolean indicating the instance was found
|
|
1010
|
-
toSingle(new Fr(1)),
|
|
1011
|
-
]);
|
|
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
|
+
});
|
|
1012
943
|
}
|
|
1013
944
|
|
|
1014
945
|
// eslint-disable-next-line camelcase
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
946
|
+
aztec_avm_getContractInstanceDeployer(...inputs: ForeignCallArgs) {
|
|
947
|
+
return callTxeHandler({
|
|
948
|
+
oracle: 'aztec_avm_getContractInstanceDeployer',
|
|
949
|
+
inputs,
|
|
950
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceDeployer(address),
|
|
951
|
+
});
|
|
1019
952
|
}
|
|
1020
953
|
|
|
1021
954
|
// eslint-disable-next-line camelcase
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
955
|
+
aztec_avm_getContractInstanceClassId(...inputs: ForeignCallArgs) {
|
|
956
|
+
return callTxeHandler({
|
|
957
|
+
oracle: 'aztec_avm_getContractInstanceClassId',
|
|
958
|
+
inputs,
|
|
959
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceClassId(address),
|
|
960
|
+
});
|
|
1028
961
|
}
|
|
1029
962
|
|
|
1030
963
|
// eslint-disable-next-line camelcase
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
964
|
+
aztec_avm_getContractInstanceInitializationHash(...inputs: ForeignCallArgs) {
|
|
965
|
+
return callTxeHandler({
|
|
966
|
+
oracle: 'aztec_avm_getContractInstanceInitializationHash',
|
|
967
|
+
inputs,
|
|
968
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceInitializationHash(address),
|
|
969
|
+
});
|
|
1037
970
|
}
|
|
1038
971
|
|
|
1039
972
|
// eslint-disable-next-line camelcase
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
973
|
+
aztec_avm_getContractInstanceImmutablesHash(...inputs: ForeignCallArgs) {
|
|
974
|
+
return callTxeHandler({
|
|
975
|
+
oracle: 'aztec_avm_getContractInstanceImmutablesHash',
|
|
976
|
+
inputs,
|
|
977
|
+
handler: ([address]) => this.handlerAsAvm().getContractInstanceImmutablesHash(address),
|
|
978
|
+
});
|
|
1046
979
|
}
|
|
1047
980
|
|
|
1048
981
|
// eslint-disable-next-line camelcase
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
982
|
+
aztec_avm_sender() {
|
|
983
|
+
return callTxeHandler({
|
|
984
|
+
oracle: 'aztec_avm_sender',
|
|
985
|
+
inputs: [],
|
|
986
|
+
handler: () => this.handlerAsAvm().sender(),
|
|
987
|
+
});
|
|
1053
988
|
}
|
|
1054
989
|
|
|
1055
990
|
// eslint-disable-next-line camelcase
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
991
|
+
aztec_avm_emitNullifier(...inputs: ForeignCallArgs) {
|
|
992
|
+
return callTxeHandler({
|
|
993
|
+
oracle: 'aztec_avm_emitNullifier',
|
|
994
|
+
inputs,
|
|
995
|
+
handler: ([nullifier]) => this.handlerAsAvm().emitNullifier(nullifier),
|
|
996
|
+
});
|
|
1060
997
|
}
|
|
1061
998
|
|
|
1062
999
|
// eslint-disable-next-line camelcase
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1000
|
+
aztec_avm_emitNoteHash(...inputs: ForeignCallArgs) {
|
|
1001
|
+
return callTxeHandler({
|
|
1002
|
+
oracle: 'aztec_avm_emitNoteHash',
|
|
1003
|
+
inputs,
|
|
1004
|
+
handler: ([noteHash]) => this.handlerAsAvm().emitNoteHash(noteHash),
|
|
1005
|
+
});
|
|
1067
1006
|
}
|
|
1068
1007
|
|
|
1069
1008
|
// eslint-disable-next-line camelcase
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1009
|
+
aztec_avm_nullifierExists(...inputs: ForeignCallArgs) {
|
|
1010
|
+
return callTxeHandler({
|
|
1011
|
+
oracle: 'aztec_avm_nullifierExists',
|
|
1012
|
+
inputs,
|
|
1013
|
+
handler: ([siloedNullifier]) => this.handlerAsAvm().nullifierExists(siloedNullifier),
|
|
1014
|
+
});
|
|
1074
1015
|
}
|
|
1075
1016
|
|
|
1076
1017
|
// eslint-disable-next-line camelcase
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1018
|
+
aztec_avm_address() {
|
|
1019
|
+
return callTxeHandler({
|
|
1020
|
+
oracle: 'aztec_avm_address',
|
|
1021
|
+
inputs: [],
|
|
1022
|
+
handler: () => this.handlerAsAvm().address(),
|
|
1023
|
+
});
|
|
1081
1024
|
}
|
|
1082
1025
|
|
|
1083
1026
|
// eslint-disable-next-line camelcase
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1027
|
+
aztec_avm_blockNumber() {
|
|
1028
|
+
return callTxeHandler({
|
|
1029
|
+
oracle: 'aztec_avm_blockNumber',
|
|
1030
|
+
inputs: [],
|
|
1031
|
+
handler: () => this.handlerAsAvm().blockNumber(),
|
|
1032
|
+
});
|
|
1088
1033
|
}
|
|
1089
1034
|
|
|
1090
1035
|
// eslint-disable-next-line camelcase
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1036
|
+
aztec_avm_timestamp() {
|
|
1037
|
+
return callTxeHandler({
|
|
1038
|
+
oracle: 'aztec_avm_timestamp',
|
|
1039
|
+
inputs: [],
|
|
1040
|
+
handler: () => this.handlerAsAvm().timestamp(),
|
|
1041
|
+
});
|
|
1095
1042
|
}
|
|
1096
1043
|
|
|
1097
1044
|
// eslint-disable-next-line camelcase
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1045
|
+
aztec_avm_isStaticCall() {
|
|
1046
|
+
return callTxeHandler({
|
|
1047
|
+
oracle: 'aztec_avm_isStaticCall',
|
|
1048
|
+
inputs: [],
|
|
1049
|
+
handler: () => this.handlerAsAvm().isStaticCall(),
|
|
1050
|
+
});
|
|
1102
1051
|
}
|
|
1103
1052
|
|
|
1104
1053
|
// eslint-disable-next-line camelcase
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
) {
|
|
1112
|
-
throw new Error(
|
|
1113
|
-
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
1114
|
-
);
|
|
1054
|
+
aztec_avm_chainId() {
|
|
1055
|
+
return callTxeHandler({
|
|
1056
|
+
oracle: 'aztec_avm_chainId',
|
|
1057
|
+
inputs: [],
|
|
1058
|
+
handler: () => this.handlerAsAvm().chainId(),
|
|
1059
|
+
});
|
|
1115
1060
|
}
|
|
1116
1061
|
|
|
1117
1062
|
// eslint-disable-next-line camelcase
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
) {
|
|
1125
|
-
throw new Error(
|
|
1126
|
-
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
1127
|
-
);
|
|
1063
|
+
aztec_avm_version() {
|
|
1064
|
+
return callTxeHandler({
|
|
1065
|
+
oracle: 'aztec_avm_version',
|
|
1066
|
+
inputs: [],
|
|
1067
|
+
handler: () => this.handlerAsAvm().version(),
|
|
1068
|
+
});
|
|
1128
1069
|
}
|
|
1129
1070
|
|
|
1130
1071
|
// eslint-disable-next-line camelcase
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
// eslint-disable-next-line camelcase
|
|
1138
|
-
async aztec_txe_privateCallNewFlow(
|
|
1139
|
-
foreignFrom: ForeignCallSingle,
|
|
1140
|
-
foreignTargetContractAddress: ForeignCallSingle,
|
|
1141
|
-
foreignFunctionSelector: ForeignCallSingle,
|
|
1142
|
-
foreignArgs: ForeignCallArray,
|
|
1143
|
-
foreignArgsHash: ForeignCallSingle,
|
|
1144
|
-
foreignIsStaticCall: ForeignCallSingle,
|
|
1145
|
-
) {
|
|
1146
|
-
const from = addressFromSingle(foreignFrom);
|
|
1147
|
-
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
1148
|
-
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
1149
|
-
const args = fromArray(foreignArgs);
|
|
1150
|
-
const argsHash = fromSingle(foreignArgsHash);
|
|
1151
|
-
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1152
|
-
|
|
1153
|
-
const returnValues = await this.handlerAsTxe().privateCallNewFlow(
|
|
1154
|
-
from,
|
|
1155
|
-
targetContractAddress,
|
|
1156
|
-
functionSelector,
|
|
1157
|
-
args,
|
|
1158
|
-
argsHash,
|
|
1159
|
-
isStaticCall,
|
|
1160
|
-
this.stateHandler.getCurrentJob(),
|
|
1161
|
-
);
|
|
1162
|
-
|
|
1163
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1164
|
-
await this.stateHandler.cycleJob();
|
|
1165
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
// eslint-disable-next-line camelcase
|
|
1169
|
-
async aztec_txe_executeUtilityFunction(
|
|
1170
|
-
foreignTargetContractAddress: ForeignCallSingle,
|
|
1171
|
-
foreignFunctionSelector: ForeignCallSingle,
|
|
1172
|
-
foreignArgs: ForeignCallArray,
|
|
1173
|
-
) {
|
|
1174
|
-
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
1175
|
-
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
1176
|
-
const args = fromArray(foreignArgs);
|
|
1177
|
-
|
|
1178
|
-
const returnValues = await this.handlerAsTxe().executeUtilityFunction(
|
|
1179
|
-
targetContractAddress,
|
|
1180
|
-
functionSelector,
|
|
1181
|
-
args,
|
|
1182
|
-
this.stateHandler.getCurrentJob(),
|
|
1183
|
-
);
|
|
1184
|
-
|
|
1185
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1186
|
-
await this.stateHandler.cycleJob();
|
|
1187
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1188
|
-
}
|
|
1189
|
-
|
|
1190
|
-
// eslint-disable-next-line camelcase
|
|
1191
|
-
async aztec_txe_publicCallNewFlow(
|
|
1192
|
-
foreignFrom: ForeignCallSingle,
|
|
1193
|
-
foreignAddress: ForeignCallSingle,
|
|
1194
|
-
foreignCalldata: ForeignCallArray,
|
|
1195
|
-
foreignIsStaticCall: ForeignCallSingle,
|
|
1196
|
-
) {
|
|
1197
|
-
const from = addressFromSingle(foreignFrom);
|
|
1198
|
-
const address = addressFromSingle(foreignAddress);
|
|
1199
|
-
const calldata = fromArray(foreignCalldata);
|
|
1200
|
-
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1201
|
-
|
|
1202
|
-
const returnValues = await this.handlerAsTxe().publicCallNewFlow(from, address, calldata, isStaticCall);
|
|
1203
|
-
|
|
1204
|
-
// TODO(F-335): Avoid doing the following call here.
|
|
1205
|
-
await this.stateHandler.cycleJob();
|
|
1206
|
-
return toForeignCallResult([toArray(returnValues)]);
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
// eslint-disable-next-line camelcase
|
|
1210
|
-
async aztec_prv_getSenderForTags() {
|
|
1211
|
-
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
1212
|
-
|
|
1213
|
-
// Return a Noir Option struct with `some` and `value` fields
|
|
1214
|
-
if (sender === undefined) {
|
|
1215
|
-
// No sender found, return Option with some=0 and value=0
|
|
1216
|
-
return toForeignCallResult([toSingle(0), toSingle(0)]);
|
|
1217
|
-
} else {
|
|
1218
|
-
// Sender found, return Option with some=1 and value=sender address
|
|
1219
|
-
return toForeignCallResult([toSingle(1), toSingle(sender)]);
|
|
1220
|
-
}
|
|
1072
|
+
aztec_avm_returndataSize() {
|
|
1073
|
+
return callTxeHandler({
|
|
1074
|
+
oracle: 'aztec_avm_returndataSize',
|
|
1075
|
+
inputs: [],
|
|
1076
|
+
handler: () => this.handlerAsAvm().returndataSize(),
|
|
1077
|
+
});
|
|
1221
1078
|
}
|
|
1222
1079
|
|
|
1223
1080
|
// eslint-disable-next-line camelcase
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
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
|
+
});
|
|
1230
1087
|
}
|
|
1231
1088
|
|
|
1232
1089
|
// eslint-disable-next-line camelcase
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
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
|
+
}
|
|
1236
1098
|
|
|
1237
|
-
|
|
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
|
+
}
|
|
1238
1108
|
|
|
1239
|
-
|
|
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
|
+
});
|
|
1240
1218
|
}
|
|
1241
1219
|
}
|