@aztec/txe 0.0.1-commit.b6e433891 → 0.0.1-commit.b9865e97
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/ContractClassRegistry-PII7Q556.js +3 -0
- package/dest/ContractClassRegistry-PII7Q556.js.map +7 -0
- package/dest/ContractInstanceRegistry-3MHLGFNZ.js +3 -0
- package/dest/ContractInstanceRegistry-3MHLGFNZ.js.map +7 -0
- package/dest/FeeJuice-TQV5AQK7.js +3 -0
- package/dest/FeeJuice-TQV5AQK7.js.map +7 -0
- package/dest/MultiCallEntrypoint-SBJUIJY7.js +3 -0
- package/dest/MultiCallEntrypoint-SBJUIJY7.js.map +7 -0
- package/dest/SchnorrAccount-MQXPIZ44.js +3 -0
- package/dest/SchnorrAccount-MQXPIZ44.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 +61 -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-CUSVOJA4.js +304 -0
- package/dest/chunk-CUSVOJA4.js.map +7 -0
- package/dest/chunk-OYLIPWI6.js +260 -0
- package/dest/chunk-OYLIPWI6.js.map +7 -0
- package/dest/constants.d.ts +5 -1
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +8 -0
- package/dest/dispatcher_pool.d.ts +67 -0
- package/dest/dispatcher_pool.d.ts.map +1 -0
- package/dest/dispatcher_pool.js +284 -0
- package/dest/index.d.ts +185 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +70 -190
- package/dest/metafile.json +36863 -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 +33 -8
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/test-resolver/fixtures.d.ts +43 -0
- package/dest/oracle/test-resolver/fixtures.d.ts.map +1 -0
- package/dest/oracle/test-resolver/fixtures.js +39 -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 +33 -0
- package/dest/oracle/test-resolver/resolver.d.ts +34 -0
- package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
- package/dest/oracle/test-resolver/resolver.js +114 -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 +43 -1
- package/dest/oracle/txe_oracle_registry.d.ts +147 -0
- package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_registry.js +562 -0
- package/dest/oracle/txe_oracle_top_level_context.d.ts +33 -14
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +149 -60
- 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 +96 -233
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +706 -637
- 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 +26 -15
- package/dest/state_machine/dummy_p2p_client.d.ts +13 -7
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +16 -4
- package/dest/state_machine/global_variable_builder.d.ts +9 -4
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +9 -3
- package/dest/state_machine/index.d.ts +4 -2
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +17 -3
- 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.js +1 -1
- package/dest/txe_session.d.ts +75 -14
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +170 -41
- package/dest/utils/encoding.d.ts +191 -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/{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 +1 -3
- 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 +70 -0
- package/src/bin/index.ts +11 -2
- package/src/bin/oracle_test_server.ts +51 -0
- package/src/constants.ts +10 -0
- package/src/dispatcher_pool.ts +316 -0
- package/src/index.ts +97 -227
- package/src/msgpackr_fr_extension.ts +23 -0
- package/src/oracle/interfaces.ts +29 -7
- package/src/oracle/test-resolver/fixtures.ts +84 -0
- package/src/oracle/test-resolver/index.ts +45 -0
- package/src/oracle/test-resolver/resolver.ts +165 -0
- package/src/oracle/txe_oracle_public_context.ts +60 -0
- package/src/oracle/txe_oracle_registry.ts +401 -0
- package/src/oracle/txe_oracle_top_level_context.ts +180 -67
- 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 +787 -925
- package/src/state_machine/archiver.ts +38 -16
- package/src/state_machine/dummy_p2p_client.ts +31 -11
- package/src/state_machine/global_variable_builder.ts +18 -3
- package/src/state_machine/index.ts +20 -5
- package/src/state_machine/mock_epoch_cache.ts +0 -4
- package/src/state_machine/synchronizer.ts +1 -1
- package/src/txe_session.ts +278 -45
- package/src/{util → utils}/encoding.ts +8 -2
- package/src/utils/txe_artifact_resolver.ts +217 -0
- package/src/{util → utils}/txe_public_contract_data_source.ts +0 -2
- 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/dest/rpc_translator.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX } from '@aztec/constants';
|
|
3
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
-
import { packAsHintedNote } from '@aztec/pxe/simulator';
|
|
5
|
-
import { EventSelector, FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
6
|
-
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import { BlockHash } from '@aztec/stdlib/block';
|
|
8
|
-
import { addressFromSingle, arrayOfArraysToBoundedVecOfArrays, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle } from './util/encoding.js';
|
|
9
|
-
const MAX_EVENT_LEN = 10; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN
|
|
10
|
-
const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
|
|
1
|
+
import { callTxeHandler } from './oracle/txe_oracle_registry.js';
|
|
11
2
|
export class UnavailableOracleError extends Error {
|
|
12
3
|
constructor(oracleName){
|
|
13
4
|
super(`${oracleName} oracles not available with the current handler`);
|
|
@@ -60,754 +51,832 @@ export class RPCTranslator {
|
|
|
60
51
|
}
|
|
61
52
|
return this.oracleHandler;
|
|
62
53
|
}
|
|
54
|
+
// eslint-disable-next-line camelcase
|
|
55
|
+
aztec_txe_assertCompatibleOracleVersion(...inputs) {
|
|
56
|
+
return callTxeHandler({
|
|
57
|
+
oracle: 'aztec_txe_assertCompatibleOracleVersion',
|
|
58
|
+
inputs,
|
|
59
|
+
handler: ([major, minor])=>{
|
|
60
|
+
this.stateHandler.setTxeOracleVersion(major, minor);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
63
64
|
// TXE session state transition functions - these get handled by the state handler
|
|
64
65
|
// eslint-disable-next-line camelcase
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
aztec_txe_setTopLevelTXEContext() {
|
|
67
|
+
return callTxeHandler({
|
|
68
|
+
oracle: 'aztec_txe_setTopLevelTXEContext',
|
|
69
|
+
inputs: [],
|
|
70
|
+
handler: ()=>this.stateHandler.enterTopLevelState()
|
|
71
|
+
});
|
|
68
72
|
}
|
|
69
73
|
// eslint-disable-next-line camelcase
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
aztec_txe_setPrivateTXEContext(...inputs) {
|
|
75
|
+
return callTxeHandler({
|
|
76
|
+
oracle: 'aztec_txe_setPrivateTXEContext',
|
|
77
|
+
inputs,
|
|
78
|
+
handler: ([contractAddress, anchorBlockNumber, gasSettings])=>this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber, gasSettings)
|
|
79
|
+
});
|
|
75
80
|
}
|
|
76
81
|
// eslint-disable-next-line camelcase
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
aztec_txe_setPublicTXEContext(...inputs) {
|
|
83
|
+
return callTxeHandler({
|
|
84
|
+
oracle: 'aztec_txe_setPublicTXEContext',
|
|
85
|
+
inputs,
|
|
86
|
+
handler: ([contractAddress])=>this.stateHandler.enterPublicState(contractAddress)
|
|
87
|
+
});
|
|
81
88
|
}
|
|
82
89
|
// eslint-disable-next-line camelcase
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
aztec_txe_setUtilityTXEContext(...inputs) {
|
|
91
|
+
return callTxeHandler({
|
|
92
|
+
oracle: 'aztec_txe_setUtilityTXEContext',
|
|
93
|
+
inputs,
|
|
94
|
+
handler: ([contractAddress])=>this.stateHandler.enterUtilityState(contractAddress)
|
|
95
|
+
});
|
|
87
96
|
}
|
|
88
97
|
// Other oracles - these get handled by the oracle handler
|
|
89
98
|
// TXE-specific oracles
|
|
90
99
|
// eslint-disable-next-line camelcase
|
|
91
100
|
aztec_txe_getDefaultAddress() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
101
|
+
return callTxeHandler({
|
|
102
|
+
oracle: 'aztec_txe_getDefaultAddress',
|
|
103
|
+
inputs: [],
|
|
104
|
+
handler: ()=>this.handlerAsTxe().getDefaultAddress()
|
|
105
|
+
});
|
|
96
106
|
}
|
|
97
107
|
// eslint-disable-next-line camelcase
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
108
|
+
aztec_txe_getNextBlockNumber() {
|
|
109
|
+
return callTxeHandler({
|
|
110
|
+
oracle: 'aztec_txe_getNextBlockNumber',
|
|
111
|
+
inputs: [],
|
|
112
|
+
handler: ()=>this.handlerAsTxe().getNextBlockNumber()
|
|
113
|
+
});
|
|
103
114
|
}
|
|
104
115
|
// eslint-disable-next-line camelcase
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
aztec_txe_getNextBlockTimestamp() {
|
|
117
|
+
return callTxeHandler({
|
|
118
|
+
oracle: 'aztec_txe_getNextBlockTimestamp',
|
|
119
|
+
inputs: [],
|
|
120
|
+
handler: ()=>this.handlerAsTxe().getNextBlockTimestamp()
|
|
121
|
+
});
|
|
110
122
|
}
|
|
111
123
|
// eslint-disable-next-line camelcase
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
aztec_txe_advanceBlocksBy(...inputs) {
|
|
125
|
+
return callTxeHandler({
|
|
126
|
+
oracle: 'aztec_txe_advanceBlocksBy',
|
|
127
|
+
inputs,
|
|
128
|
+
handler: ([blocks])=>this.handlerAsTxe().advanceBlocksBy(blocks)
|
|
129
|
+
});
|
|
116
130
|
}
|
|
117
131
|
// eslint-disable-next-line camelcase
|
|
118
|
-
aztec_txe_advanceTimestampBy(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
132
|
+
aztec_txe_advanceTimestampBy(...inputs) {
|
|
133
|
+
return callTxeHandler({
|
|
134
|
+
oracle: 'aztec_txe_advanceTimestampBy',
|
|
135
|
+
inputs,
|
|
136
|
+
handler: ([duration])=>this.handlerAsTxe().advanceTimestampBy(duration)
|
|
137
|
+
});
|
|
122
138
|
}
|
|
123
139
|
// eslint-disable-next-line camelcase
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
instance.deployer.toField(),
|
|
131
|
-
instance.currentContractClassId,
|
|
132
|
-
instance.initializationHash,
|
|
133
|
-
...instance.publicKeys.toFields()
|
|
134
|
-
])
|
|
135
|
-
]);
|
|
140
|
+
aztec_txe_deploy(...inputs) {
|
|
141
|
+
return callTxeHandler({
|
|
142
|
+
oracle: 'aztec_txe_deploy',
|
|
143
|
+
inputs,
|
|
144
|
+
handler: ([contractPath, initializer, _, args, secret, salt, deployer])=>this.handlerAsTxe().deploy(contractPath, initializer, args, secret, salt, deployer)
|
|
145
|
+
});
|
|
136
146
|
}
|
|
137
147
|
// eslint-disable-next-line camelcase
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
]);
|
|
148
|
+
aztec_txe_createAccount(...inputs) {
|
|
149
|
+
return callTxeHandler({
|
|
150
|
+
oracle: 'aztec_txe_createAccount',
|
|
151
|
+
inputs,
|
|
152
|
+
handler: ([secret])=>this.handlerAsTxe().createAccount(secret)
|
|
153
|
+
});
|
|
145
154
|
}
|
|
146
155
|
// eslint-disable-next-line camelcase
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
]);
|
|
156
|
+
aztec_txe_addAccount(...inputs) {
|
|
157
|
+
return callTxeHandler({
|
|
158
|
+
oracle: 'aztec_txe_addAccount',
|
|
159
|
+
inputs,
|
|
160
|
+
handler: ([secret])=>this.handlerAsTxe().addAccount(secret)
|
|
161
|
+
});
|
|
154
162
|
}
|
|
155
163
|
// eslint-disable-next-line camelcase
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
164
|
+
aztec_txe_addAuthWitness(...inputs) {
|
|
165
|
+
return callTxeHandler({
|
|
166
|
+
oracle: 'aztec_txe_addAuthWitness',
|
|
167
|
+
inputs,
|
|
168
|
+
handler: ([address, messageHash])=>this.handlerAsTxe().addAuthWitness(address, messageHash)
|
|
169
|
+
});
|
|
161
170
|
}
|
|
162
171
|
// PXE oracles
|
|
163
172
|
// eslint-disable-next-line camelcase
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
173
|
+
aztec_misc_assertCompatibleOracleVersion(...inputs) {
|
|
174
|
+
return callTxeHandler({
|
|
175
|
+
oracle: 'aztec_misc_assertCompatibleOracleVersion',
|
|
176
|
+
inputs,
|
|
177
|
+
handler: ([major, minor])=>this.handlerAsMisc().assertCompatibleOracleVersion(major, minor)
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// eslint-disable-next-line camelcase
|
|
181
|
+
aztec_misc_getRandomField() {
|
|
182
|
+
return callTxeHandler({
|
|
183
|
+
oracle: 'aztec_misc_getRandomField',
|
|
184
|
+
inputs: [],
|
|
185
|
+
handler: ()=>this.handlerAsMisc().getRandomField()
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
// eslint-disable-next-line camelcase
|
|
189
|
+
aztec_txe_getLastBlockTimestamp() {
|
|
190
|
+
return callTxeHandler({
|
|
191
|
+
oracle: 'aztec_txe_getLastBlockTimestamp',
|
|
192
|
+
inputs: [],
|
|
193
|
+
handler: ()=>this.handlerAsTxe().getLastBlockTimestamp()
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// eslint-disable-next-line camelcase
|
|
197
|
+
aztec_txe_getLastTxEffects() {
|
|
198
|
+
return callTxeHandler({
|
|
199
|
+
oracle: 'aztec_txe_getLastTxEffects',
|
|
200
|
+
inputs: [],
|
|
201
|
+
handler: ()=>this.handlerAsTxe().getLastTxEffects()
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// eslint-disable-next-line camelcase
|
|
205
|
+
aztec_txe_getLastCallOffchainEffects() {
|
|
206
|
+
return callTxeHandler({
|
|
207
|
+
oracle: 'aztec_txe_getLastCallOffchainEffects',
|
|
208
|
+
inputs: [],
|
|
209
|
+
handler: ()=>this.stateHandler.getLastCallOffchainEffects()
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
// eslint-disable-next-line camelcase
|
|
213
|
+
aztec_txe_getLastCallContext() {
|
|
214
|
+
return callTxeHandler({
|
|
215
|
+
oracle: 'aztec_txe_getLastCallContext',
|
|
216
|
+
inputs: [],
|
|
217
|
+
handler: ()=>this.stateHandler.getLastCallContext()
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
// eslint-disable-next-line camelcase
|
|
221
|
+
aztec_txe_getPrivateEvents(...inputs) {
|
|
222
|
+
return callTxeHandler({
|
|
223
|
+
oracle: 'aztec_txe_getPrivateEvents',
|
|
224
|
+
inputs,
|
|
225
|
+
handler: async ([selector, contractAddress, scope])=>{
|
|
226
|
+
// TODO(F-335): Avoid doing the following 2 calls here.
|
|
227
|
+
{
|
|
228
|
+
await this.handlerAsTxe().syncContractNonOracleMethod(contractAddress, scope, this.stateHandler.getCurrentJob());
|
|
229
|
+
// We cycle job to commit the stores after the contract sync.
|
|
230
|
+
await this.stateHandler.cycleJob();
|
|
231
|
+
}
|
|
232
|
+
return this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// eslint-disable-next-line camelcase
|
|
237
|
+
aztec_prv_setHashPreimage(...inputs) {
|
|
238
|
+
return callTxeHandler({
|
|
239
|
+
oracle: 'aztec_prv_setHashPreimage',
|
|
240
|
+
inputs,
|
|
241
|
+
handler: ([values, hash])=>this.handlerAsPrivate().setHashPreimage(values, hash)
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// eslint-disable-next-line camelcase
|
|
245
|
+
aztec_prv_getHashPreimage(...inputs) {
|
|
246
|
+
return callTxeHandler({
|
|
247
|
+
oracle: 'aztec_prv_getHashPreimage',
|
|
248
|
+
inputs,
|
|
249
|
+
handler: ([hash])=>this.handlerAsPrivate().getHashPreimage(hash)
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// eslint-disable-next-line camelcase
|
|
253
|
+
aztec_misc_log(...inputs) {
|
|
254
|
+
return callTxeHandler({
|
|
255
|
+
oracle: 'aztec_misc_log',
|
|
256
|
+
inputs,
|
|
257
|
+
handler: ([level, message, fieldsSize, fields])=>this.handlerAsMisc().log(level, message, fieldsSize, fields)
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// eslint-disable-next-line camelcase
|
|
261
|
+
aztec_utl_getFromPublicStorage(...inputs) {
|
|
262
|
+
return callTxeHandler({
|
|
263
|
+
oracle: 'aztec_utl_getFromPublicStorage',
|
|
264
|
+
inputs,
|
|
265
|
+
handler: ([blockHash, contractAddress, startStorageSlot, numberOfElements])=>this.handlerAsUtility().getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements)
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
// eslint-disable-next-line camelcase
|
|
269
|
+
aztec_utl_getPublicDataWitness(...inputs) {
|
|
270
|
+
return callTxeHandler({
|
|
271
|
+
oracle: 'aztec_utl_getPublicDataWitness',
|
|
272
|
+
inputs,
|
|
273
|
+
handler: ([blockHash, leafSlot])=>this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot)
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
// eslint-disable-next-line camelcase
|
|
277
|
+
aztec_utl_getNotes(...inputs) {
|
|
278
|
+
return callTxeHandler({
|
|
279
|
+
oracle: 'aztec_utl_getNotes',
|
|
280
|
+
inputs,
|
|
281
|
+
handler: ([owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status, maxNotes, packedHintedNoteLength])=>this.handlerAsUtility().getNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status, maxNotes, packedHintedNoteLength)
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
// eslint-disable-next-line camelcase
|
|
285
|
+
aztec_prv_notifyCreatedNote(...inputs) {
|
|
286
|
+
return callTxeHandler({
|
|
287
|
+
oracle: 'aztec_prv_notifyCreatedNote',
|
|
288
|
+
inputs,
|
|
289
|
+
handler: ([owner, storageSlot, randomness, noteTypeId, note, noteHash, counter])=>this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter)
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
// eslint-disable-next-line camelcase
|
|
293
|
+
aztec_prv_notifyNullifiedNote(...inputs) {
|
|
294
|
+
return callTxeHandler({
|
|
295
|
+
oracle: 'aztec_prv_notifyNullifiedNote',
|
|
296
|
+
inputs,
|
|
297
|
+
handler: ([innerNullifier, noteHash, counter])=>this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter)
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
// eslint-disable-next-line camelcase
|
|
301
|
+
aztec_prv_notifyCreatedNullifier(...inputs) {
|
|
302
|
+
return callTxeHandler({
|
|
303
|
+
oracle: 'aztec_prv_notifyCreatedNullifier',
|
|
304
|
+
inputs,
|
|
305
|
+
handler: ([innerNullifier])=>this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier)
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
// eslint-disable-next-line camelcase
|
|
309
|
+
aztec_prv_isNullifierPending(...inputs) {
|
|
310
|
+
return callTxeHandler({
|
|
311
|
+
oracle: 'aztec_prv_isNullifierPending',
|
|
312
|
+
inputs,
|
|
313
|
+
handler: ([innerNullifier, contractAddress])=>this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress)
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
// eslint-disable-next-line camelcase
|
|
317
|
+
aztec_utl_doesNullifierExist(...inputs) {
|
|
318
|
+
return callTxeHandler({
|
|
319
|
+
oracle: 'aztec_utl_doesNullifierExist',
|
|
320
|
+
inputs,
|
|
321
|
+
handler: ([innerNullifier])=>this.handlerAsUtility().doesNullifierExist(innerNullifier)
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
// eslint-disable-next-line camelcase
|
|
325
|
+
aztec_utl_getContractInstance(...inputs) {
|
|
326
|
+
return callTxeHandler({
|
|
327
|
+
oracle: 'aztec_utl_getContractInstance',
|
|
328
|
+
inputs,
|
|
329
|
+
handler: ([address])=>this.handlerAsUtility().getContractInstance(address)
|
|
330
|
+
});
|
|
168
331
|
}
|
|
169
332
|
// eslint-disable-next-line camelcase
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
333
|
+
aztec_utl_getPublicKeysAndPartialAddress(...inputs) {
|
|
334
|
+
return callTxeHandler({
|
|
335
|
+
oracle: 'aztec_utl_getPublicKeysAndPartialAddress',
|
|
336
|
+
inputs,
|
|
337
|
+
handler: ([address])=>this.handlerAsUtility().getPublicKeysAndPartialAddress(address)
|
|
338
|
+
});
|
|
175
339
|
}
|
|
176
340
|
// eslint-disable-next-line camelcase
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
341
|
+
aztec_utl_getKeyValidationRequest(...inputs) {
|
|
342
|
+
return callTxeHandler({
|
|
343
|
+
oracle: 'aztec_utl_getKeyValidationRequest',
|
|
344
|
+
inputs,
|
|
345
|
+
handler: ([pkMHash])=>this.handlerAsUtility().getKeyValidationRequest(pkMHash)
|
|
346
|
+
});
|
|
182
347
|
}
|
|
183
348
|
// eslint-disable-next-line camelcase
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
]);
|
|
349
|
+
aztec_prv_callPrivateFunction(...inputs) {
|
|
350
|
+
return callTxeHandler({
|
|
351
|
+
oracle: 'aztec_prv_callPrivateFunction',
|
|
352
|
+
inputs,
|
|
353
|
+
handler: ([contractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall])=>this.handlerAsPrivate().callPrivateFunction(contractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall)
|
|
354
|
+
});
|
|
191
355
|
}
|
|
192
356
|
// eslint-disable-next-line camelcase
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
await this.handlerAsTxe().syncContractNonOracleMethod(contractAddress, scope, this.stateHandler.getCurrentJob());
|
|
200
|
-
// We cycle job to commit the stores after the contract sync.
|
|
201
|
-
await this.stateHandler.cycleJob();
|
|
202
|
-
}
|
|
203
|
-
const events = await this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
|
|
204
|
-
if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
|
|
205
|
-
throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
|
|
206
|
-
}
|
|
207
|
-
if (events.some((e)=>e.length > MAX_EVENT_LEN)) {
|
|
208
|
-
throw new Error(`Some private event has length larger than maxLen ${MAX_EVENT_LEN}`);
|
|
209
|
-
}
|
|
210
|
-
// This is a workaround as Noir does not currently let us return nested structs with arrays. We instead return a raw
|
|
211
|
-
// multidimensional array in get_private_events_oracle and create the BoundedVecs here.
|
|
212
|
-
const rawArrayStorage = events.map((e)=>e.concat(Array(MAX_EVENT_LEN - e.length).fill(new Fr(0)))).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(Array(MAX_EVENT_LEN).fill(new Fr(0)))).flat();
|
|
213
|
-
const eventLengths = events.map((e)=>new Fr(e.length)).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(new Fr(0)));
|
|
214
|
-
const queryLength = new Fr(events.length);
|
|
215
|
-
return toForeignCallResult([
|
|
216
|
-
toArray(rawArrayStorage),
|
|
217
|
-
toArray(eventLengths),
|
|
218
|
-
toSingle(queryLength)
|
|
219
|
-
]);
|
|
220
|
-
}
|
|
221
|
-
// eslint-disable-next-line camelcase
|
|
222
|
-
aztec_prv_storeInExecutionCache(foreignValues, foreignHash) {
|
|
223
|
-
const values = fromArray(foreignValues);
|
|
224
|
-
const hash = fromSingle(foreignHash);
|
|
225
|
-
this.handlerAsPrivate().storeInExecutionCache(values, hash);
|
|
226
|
-
return toForeignCallResult([]);
|
|
227
|
-
}
|
|
228
|
-
// eslint-disable-next-line camelcase
|
|
229
|
-
async aztec_prv_loadFromExecutionCache(foreignHash) {
|
|
230
|
-
const hash = fromSingle(foreignHash);
|
|
231
|
-
const returns = await this.handlerAsPrivate().loadFromExecutionCache(hash);
|
|
232
|
-
return toForeignCallResult([
|
|
233
|
-
toArray(returns)
|
|
234
|
-
]);
|
|
235
|
-
}
|
|
236
|
-
// When the argument is a slice, noir automatically adds a length field to oracle call.
|
|
237
|
-
// When the argument is an array, we add the field length manually to the signature.
|
|
238
|
-
// eslint-disable-next-line camelcase
|
|
239
|
-
async aztec_utl_log(foreignLevel, foreignMessage, _foreignLength, foreignFields) {
|
|
240
|
-
const level = fromSingle(foreignLevel).toNumber();
|
|
241
|
-
const message = fromArray(foreignMessage).map((field)=>String.fromCharCode(field.toNumber())).join('');
|
|
242
|
-
const fields = fromArray(foreignFields);
|
|
243
|
-
await this.handlerAsMisc().log(level, message, fields);
|
|
244
|
-
return toForeignCallResult([]);
|
|
245
|
-
}
|
|
246
|
-
// eslint-disable-next-line camelcase
|
|
247
|
-
async aztec_utl_storageRead(foreignBlockHash, foreignContractAddress, foreignStartStorageSlot, foreignNumberOfElements) {
|
|
248
|
-
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
249
|
-
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
250
|
-
const startStorageSlot = fromSingle(foreignStartStorageSlot);
|
|
251
|
-
const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
|
|
252
|
-
const values = await this.handlerAsUtility().storageRead(blockHash, contractAddress, startStorageSlot, numberOfElements);
|
|
253
|
-
return toForeignCallResult([
|
|
254
|
-
toArray(values)
|
|
255
|
-
]);
|
|
256
|
-
}
|
|
257
|
-
// eslint-disable-next-line camelcase
|
|
258
|
-
async aztec_utl_getPublicDataWitness(foreignBlockHash, foreignLeafSlot) {
|
|
259
|
-
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
260
|
-
const leafSlot = fromSingle(foreignLeafSlot);
|
|
261
|
-
const witness = await this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot);
|
|
262
|
-
if (!witness) {
|
|
263
|
-
throw new Error(`Public data witness not found for slot ${leafSlot} at block ${blockHash.toString()}.`);
|
|
264
|
-
}
|
|
265
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
266
|
-
}
|
|
267
|
-
// eslint-disable-next-line camelcase
|
|
268
|
-
async aztec_utl_getNotes(foreignOwnerIsSome, foreignOwnerValue, foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedHintedNoteLength) {
|
|
269
|
-
// Parse Option<AztecAddress>: ownerIsSome is 0 for None, 1 for Some
|
|
270
|
-
const owner = fromSingle(foreignOwnerIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignOwnerValue)) : undefined;
|
|
271
|
-
const storageSlot = fromSingle(foreignStorageSlot);
|
|
272
|
-
const numSelects = fromSingle(foreignNumSelects).toNumber();
|
|
273
|
-
const selectByIndexes = fromArray(foreignSelectByIndexes).map((fr)=>fr.toNumber());
|
|
274
|
-
const selectByOffsets = fromArray(foreignSelectByOffsets).map((fr)=>fr.toNumber());
|
|
275
|
-
const selectByLengths = fromArray(foreignSelectByLengths).map((fr)=>fr.toNumber());
|
|
276
|
-
const selectValues = fromArray(foreignSelectValues);
|
|
277
|
-
const selectComparators = fromArray(foreignSelectComparators).map((fr)=>fr.toNumber());
|
|
278
|
-
const sortByIndexes = fromArray(foreignSortByIndexes).map((fr)=>fr.toNumber());
|
|
279
|
-
const sortByOffsets = fromArray(foreignSortByOffsets).map((fr)=>fr.toNumber());
|
|
280
|
-
const sortByLengths = fromArray(foreignSortByLengths).map((fr)=>fr.toNumber());
|
|
281
|
-
const sortOrder = fromArray(foreignSortOrder).map((fr)=>fr.toNumber());
|
|
282
|
-
const limit = fromSingle(foreignLimit).toNumber();
|
|
283
|
-
const offset = fromSingle(foreignOffset).toNumber();
|
|
284
|
-
const status = fromSingle(foreignStatus).toNumber();
|
|
285
|
-
const maxNotes = fromSingle(foreignMaxNotes).toNumber();
|
|
286
|
-
const packedHintedNoteLength = fromSingle(foreignPackedHintedNoteLength).toNumber();
|
|
287
|
-
const noteDatas = await this.handlerAsUtility().getNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
|
|
288
|
-
const returnDataAsArrayOfArrays = noteDatas.map((noteData)=>packAsHintedNote({
|
|
289
|
-
contractAddress: noteData.contractAddress,
|
|
290
|
-
owner: noteData.owner,
|
|
291
|
-
randomness: noteData.randomness,
|
|
292
|
-
storageSlot: noteData.storageSlot,
|
|
293
|
-
noteNonce: noteData.noteNonce,
|
|
294
|
-
isPending: noteData.isPending,
|
|
295
|
-
note: noteData.note
|
|
296
|
-
}));
|
|
297
|
-
// Now we convert each sub-array to an array of ForeignCallSingles
|
|
298
|
-
const returnDataAsArrayOfForeignCallSingleArrays = returnDataAsArrayOfArrays.map((subArray)=>subArray.map(toSingle));
|
|
299
|
-
// At last we convert the array of arrays to a bounded vec of arrays
|
|
300
|
-
return toForeignCallResult(arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes, packedHintedNoteLength));
|
|
301
|
-
}
|
|
302
|
-
// eslint-disable-next-line camelcase
|
|
303
|
-
aztec_prv_notifyCreatedNote(foreignOwner, foreignStorageSlot, foreignRandomness, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
|
|
304
|
-
const owner = addressFromSingle(foreignOwner);
|
|
305
|
-
const storageSlot = fromSingle(foreignStorageSlot);
|
|
306
|
-
const randomness = fromSingle(foreignRandomness);
|
|
307
|
-
const noteTypeId = NoteSelector.fromField(fromSingle(foreignNoteTypeId));
|
|
308
|
-
const note = fromArray(foreignNote);
|
|
309
|
-
const noteHash = fromSingle(foreignNoteHash);
|
|
310
|
-
const counter = fromSingle(foreignCounter).toNumber();
|
|
311
|
-
this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
|
|
312
|
-
return toForeignCallResult([]);
|
|
313
|
-
}
|
|
314
|
-
// eslint-disable-next-line camelcase
|
|
315
|
-
async aztec_prv_notifyNullifiedNote(foreignInnerNullifier, foreignNoteHash, foreignCounter) {
|
|
316
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
317
|
-
const noteHash = fromSingle(foreignNoteHash);
|
|
318
|
-
const counter = fromSingle(foreignCounter).toNumber();
|
|
319
|
-
await this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter);
|
|
320
|
-
return toForeignCallResult([]);
|
|
321
|
-
}
|
|
322
|
-
// eslint-disable-next-line camelcase
|
|
323
|
-
async aztec_prv_notifyCreatedNullifier(foreignInnerNullifier) {
|
|
324
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
325
|
-
await this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier);
|
|
326
|
-
return toForeignCallResult([]);
|
|
327
|
-
}
|
|
328
|
-
// eslint-disable-next-line camelcase
|
|
329
|
-
async aztec_prv_isNullifierPending(foreignInnerNullifier, foreignContractAddress) {
|
|
330
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
331
|
-
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
332
|
-
const isPending = await this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress);
|
|
333
|
-
return toForeignCallResult([
|
|
334
|
-
toSingle(new Fr(isPending))
|
|
335
|
-
]);
|
|
336
|
-
}
|
|
337
|
-
// eslint-disable-next-line camelcase
|
|
338
|
-
async aztec_utl_checkNullifierExists(foreignInnerNullifier) {
|
|
339
|
-
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
340
|
-
const exists = await this.handlerAsUtility().checkNullifierExists(innerNullifier);
|
|
341
|
-
return toForeignCallResult([
|
|
342
|
-
toSingle(new Fr(exists))
|
|
343
|
-
]);
|
|
344
|
-
}
|
|
345
|
-
// eslint-disable-next-line camelcase
|
|
346
|
-
async aztec_utl_getContractInstance(foreignAddress) {
|
|
347
|
-
const address = addressFromSingle(foreignAddress);
|
|
348
|
-
const instance = await this.handlerAsUtility().getContractInstance(address);
|
|
349
|
-
return toForeignCallResult([
|
|
350
|
-
instance.salt,
|
|
351
|
-
instance.deployer.toField(),
|
|
352
|
-
instance.currentContractClassId,
|
|
353
|
-
instance.initializationHash,
|
|
354
|
-
...instance.publicKeys.toFields()
|
|
355
|
-
].map(toSingle));
|
|
356
|
-
}
|
|
357
|
-
// eslint-disable-next-line camelcase
|
|
358
|
-
async aztec_utl_tryGetPublicKeysAndPartialAddress(foreignAddress) {
|
|
359
|
-
const address = addressFromSingle(foreignAddress);
|
|
360
|
-
const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(address);
|
|
361
|
-
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
362
|
-
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
363
|
-
if (result === undefined) {
|
|
364
|
-
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
365
|
-
return toForeignCallResult([
|
|
366
|
-
toSingle(new Fr(0)),
|
|
367
|
-
toArray(Array(13).fill(new Fr(0)))
|
|
368
|
-
]);
|
|
369
|
-
} else {
|
|
370
|
-
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
371
|
-
return toForeignCallResult([
|
|
372
|
-
toSingle(new Fr(1)),
|
|
373
|
-
toArray([
|
|
374
|
-
...result.publicKeys.toFields(),
|
|
375
|
-
result.partialAddress
|
|
376
|
-
])
|
|
377
|
-
]);
|
|
378
|
-
}
|
|
357
|
+
aztec_utl_getNullifierMembershipWitness(...inputs) {
|
|
358
|
+
return callTxeHandler({
|
|
359
|
+
oracle: 'aztec_utl_getNullifierMembershipWitness',
|
|
360
|
+
inputs,
|
|
361
|
+
handler: ([blockHash, nullifier])=>this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier)
|
|
362
|
+
});
|
|
379
363
|
}
|
|
380
364
|
// eslint-disable-next-line camelcase
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
365
|
+
aztec_utl_getAuthWitness(...inputs) {
|
|
366
|
+
return callTxeHandler({
|
|
367
|
+
oracle: 'aztec_utl_getAuthWitness',
|
|
368
|
+
inputs,
|
|
369
|
+
handler: ([messageHash])=>this.handlerAsUtility().getAuthWitness(messageHash)
|
|
370
|
+
});
|
|
385
371
|
}
|
|
386
372
|
// eslint-disable-next-line camelcase
|
|
387
|
-
|
|
388
|
-
|
|
373
|
+
aztec_prv_assertValidPublicCalldata(...inputs) {
|
|
374
|
+
return callTxeHandler({
|
|
375
|
+
oracle: 'aztec_prv_assertValidPublicCalldata',
|
|
376
|
+
inputs,
|
|
377
|
+
handler: ([calldataHash])=>this.handlerAsPrivate().assertValidPublicCalldata(calldataHash)
|
|
378
|
+
});
|
|
389
379
|
}
|
|
390
380
|
// eslint-disable-next-line camelcase
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
}
|
|
398
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
381
|
+
aztec_prv_notifyRevertiblePhaseStart(...inputs) {
|
|
382
|
+
return callTxeHandler({
|
|
383
|
+
oracle: 'aztec_prv_notifyRevertiblePhaseStart',
|
|
384
|
+
inputs,
|
|
385
|
+
handler: ([minRevertibleSideEffectCounter])=>this.handlerAsPrivate().notifyRevertiblePhaseStart(minRevertibleSideEffectCounter)
|
|
386
|
+
});
|
|
399
387
|
}
|
|
400
388
|
// eslint-disable-next-line camelcase
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
}
|
|
407
|
-
return toForeignCallResult([
|
|
408
|
-
toArray(authWitness)
|
|
409
|
-
]);
|
|
389
|
+
aztec_prv_isExecutionInRevertiblePhase(...inputs) {
|
|
390
|
+
return callTxeHandler({
|
|
391
|
+
oracle: 'aztec_prv_isExecutionInRevertiblePhase',
|
|
392
|
+
inputs,
|
|
393
|
+
handler: ([sideEffectCounter])=>this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter)
|
|
394
|
+
});
|
|
410
395
|
}
|
|
411
396
|
// eslint-disable-next-line camelcase
|
|
412
|
-
|
|
413
|
-
|
|
397
|
+
aztec_utl_getUtilityContext() {
|
|
398
|
+
return callTxeHandler({
|
|
399
|
+
oracle: 'aztec_utl_getUtilityContext',
|
|
400
|
+
inputs: [],
|
|
401
|
+
handler: ()=>this.handlerAsUtility().getUtilityContext()
|
|
402
|
+
});
|
|
414
403
|
}
|
|
415
404
|
// eslint-disable-next-line camelcase
|
|
416
|
-
|
|
417
|
-
|
|
405
|
+
aztec_utl_getBlockHeader(...inputs) {
|
|
406
|
+
return callTxeHandler({
|
|
407
|
+
oracle: 'aztec_utl_getBlockHeader',
|
|
408
|
+
inputs,
|
|
409
|
+
handler: ([blockNumber])=>this.handlerAsUtility().getBlockHeader(blockNumber)
|
|
410
|
+
});
|
|
418
411
|
}
|
|
419
412
|
// eslint-disable-next-line camelcase
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
413
|
+
aztec_utl_getNoteHashMembershipWitness(...inputs) {
|
|
414
|
+
return callTxeHandler({
|
|
415
|
+
oracle: 'aztec_utl_getNoteHashMembershipWitness',
|
|
416
|
+
inputs,
|
|
417
|
+
handler: ([blockHash, noteHash])=>this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash)
|
|
418
|
+
});
|
|
426
419
|
}
|
|
427
420
|
// eslint-disable-next-line camelcase
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
421
|
+
aztec_utl_getBlockHashMembershipWitness(...inputs) {
|
|
422
|
+
return callTxeHandler({
|
|
423
|
+
oracle: 'aztec_utl_getBlockHashMembershipWitness',
|
|
424
|
+
inputs,
|
|
425
|
+
handler: ([anchorBlockHash, blockHash])=>this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash)
|
|
426
|
+
});
|
|
431
427
|
}
|
|
432
428
|
// eslint-disable-next-line camelcase
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
}
|
|
439
|
-
return toForeignCallResult(header.toFields().map(toSingle));
|
|
429
|
+
aztec_utl_getLowNullifierMembershipWitness(...inputs) {
|
|
430
|
+
return callTxeHandler({
|
|
431
|
+
oracle: 'aztec_utl_getLowNullifierMembershipWitness',
|
|
432
|
+
inputs,
|
|
433
|
+
handler: ([blockHash, nullifier])=>this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier)
|
|
434
|
+
});
|
|
440
435
|
}
|
|
441
436
|
// eslint-disable-next-line camelcase
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}
|
|
449
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
437
|
+
aztec_utl_getPendingTaggedLogs(...inputs) {
|
|
438
|
+
return callTxeHandler({
|
|
439
|
+
oracle: 'aztec_utl_getPendingTaggedLogs',
|
|
440
|
+
inputs,
|
|
441
|
+
handler: ([scope, providedSecrets])=>this.handlerAsUtility().getPendingTaggedLogs(scope, providedSecrets)
|
|
442
|
+
});
|
|
450
443
|
}
|
|
451
444
|
// eslint-disable-next-line camelcase
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
}
|
|
459
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
445
|
+
aztec_utl_validateAndStoreEnqueuedNotesAndEvents(...inputs) {
|
|
446
|
+
return callTxeHandler({
|
|
447
|
+
oracle: 'aztec_utl_validateAndStoreEnqueuedNotesAndEvents',
|
|
448
|
+
inputs,
|
|
449
|
+
handler: ([noteValidationRequests, eventValidationRequests, scope])=>this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(noteValidationRequests, eventValidationRequests, scope)
|
|
450
|
+
});
|
|
460
451
|
}
|
|
461
452
|
// eslint-disable-next-line camelcase
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
return toForeignCallResult(witness.toNoirRepresentation());
|
|
470
|
-
}
|
|
471
|
-
// eslint-disable-next-line camelcase
|
|
472
|
-
async aztec_utl_fetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot) {
|
|
473
|
-
const pendingTaggedLogArrayBaseSlot = fromSingle(foreignPendingTaggedLogArrayBaseSlot);
|
|
474
|
-
await this.handlerAsUtility().fetchTaggedLogs(pendingTaggedLogArrayBaseSlot);
|
|
475
|
-
return toForeignCallResult([]);
|
|
476
|
-
}
|
|
477
|
-
// eslint-disable-next-line camelcase
|
|
478
|
-
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(foreignContractAddress, foreignNoteValidationRequestsArrayBaseSlot, foreignEventValidationRequestsArrayBaseSlot, foreignMaxNotePackedLen, foreignMaxEventSerializedLen) {
|
|
479
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
480
|
-
const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
|
|
481
|
-
const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
|
|
482
|
-
const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
|
|
483
|
-
const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
|
|
484
|
-
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot, maxNotePackedLen, maxEventSerializedLen);
|
|
485
|
-
return toForeignCallResult([]);
|
|
486
|
-
}
|
|
487
|
-
// eslint-disable-next-line camelcase
|
|
488
|
-
async aztec_utl_bulkRetrieveLogs(foreignContractAddress, foreignLogRetrievalRequestsArrayBaseSlot, foreignLogRetrievalResponsesArrayBaseSlot) {
|
|
489
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
490
|
-
const logRetrievalRequestsArrayBaseSlot = fromSingle(foreignLogRetrievalRequestsArrayBaseSlot);
|
|
491
|
-
const logRetrievalResponsesArrayBaseSlot = fromSingle(foreignLogRetrievalResponsesArrayBaseSlot);
|
|
492
|
-
await this.handlerAsUtility().bulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot);
|
|
493
|
-
return toForeignCallResult([]);
|
|
494
|
-
}
|
|
495
|
-
// eslint-disable-next-line camelcase
|
|
496
|
-
async aztec_utl_utilityResolveMessageContexts(foreignContractAddress, foreignMessageContextRequestsArrayBaseSlot, foreignMessageContextResponsesArrayBaseSlot) {
|
|
497
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
498
|
-
const messageContextRequestsArrayBaseSlot = fromSingle(foreignMessageContextRequestsArrayBaseSlot);
|
|
499
|
-
const messageContextResponsesArrayBaseSlot = fromSingle(foreignMessageContextResponsesArrayBaseSlot);
|
|
500
|
-
await this.handlerAsUtility().utilityResolveMessageContexts(contractAddress, messageContextRequestsArrayBaseSlot, messageContextResponsesArrayBaseSlot);
|
|
501
|
-
return toForeignCallResult([]);
|
|
502
|
-
}
|
|
503
|
-
// eslint-disable-next-line camelcase
|
|
504
|
-
async aztec_utl_storeCapsule(foreignContractAddress, foreignSlot, foreignCapsule) {
|
|
505
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
506
|
-
const slot = fromSingle(foreignSlot);
|
|
507
|
-
const capsule = fromArray(foreignCapsule);
|
|
508
|
-
await this.handlerAsUtility().storeCapsule(contractAddress, slot, capsule);
|
|
509
|
-
return toForeignCallResult([]);
|
|
510
|
-
}
|
|
511
|
-
// eslint-disable-next-line camelcase
|
|
512
|
-
async aztec_utl_loadCapsule(foreignContractAddress, foreignSlot, foreignTSize) {
|
|
513
|
-
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
514
|
-
const slot = fromSingle(foreignSlot);
|
|
515
|
-
const tSize = fromSingle(foreignTSize).toNumber();
|
|
516
|
-
const values = await this.handlerAsUtility().loadCapsule(contractAddress, slot);
|
|
517
|
-
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
518
|
-
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
519
|
-
if (values === null) {
|
|
520
|
-
// No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
|
|
521
|
-
return toForeignCallResult([
|
|
522
|
-
toSingle(new Fr(0)),
|
|
523
|
-
toArray(Array(tSize).fill(new Fr(0)))
|
|
524
|
-
]);
|
|
525
|
-
} else {
|
|
526
|
-
// Data was found so we set `some` to 1 and return it along with `value`.
|
|
527
|
-
return toForeignCallResult([
|
|
528
|
-
toSingle(new Fr(1)),
|
|
529
|
-
toArray(values)
|
|
530
|
-
]);
|
|
531
|
-
}
|
|
453
|
+
aztec_utl_getLogsByTag(...inputs) {
|
|
454
|
+
return callTxeHandler({
|
|
455
|
+
oracle: 'aztec_utl_getLogsByTag',
|
|
456
|
+
inputs,
|
|
457
|
+
handler: ([requestArrayBaseSlot])=>this.handlerAsUtility().getLogsByTag(requestArrayBaseSlot)
|
|
458
|
+
});
|
|
532
459
|
}
|
|
533
460
|
// eslint-disable-next-line camelcase
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
461
|
+
aztec_utl_getMessageContextsByTxHash(...inputs) {
|
|
462
|
+
return callTxeHandler({
|
|
463
|
+
oracle: 'aztec_utl_getMessageContextsByTxHash',
|
|
464
|
+
inputs,
|
|
465
|
+
handler: ([requestArrayBaseSlot])=>this.handlerAsUtility().getMessageContextsByTxHash(requestArrayBaseSlot)
|
|
466
|
+
});
|
|
539
467
|
}
|
|
540
468
|
// eslint-disable-next-line camelcase
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
return toForeignCallResult([]);
|
|
469
|
+
aztec_utl_setCapsule(...inputs) {
|
|
470
|
+
return callTxeHandler({
|
|
471
|
+
oracle: 'aztec_utl_setCapsule',
|
|
472
|
+
inputs,
|
|
473
|
+
handler: ([contractAddress, slot, capsule, scope])=>this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope)
|
|
474
|
+
});
|
|
548
475
|
}
|
|
549
|
-
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
550
|
-
// The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
|
|
551
|
-
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
552
|
-
// existence of a txe_oracle method?
|
|
553
476
|
// eslint-disable-next-line camelcase
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
const plaintextBuffer = await this.handlerAsUtility().aes128Decrypt(ciphertext, iv, symKey);
|
|
561
|
-
const [storage, length] = arrayToBoundedVec(bufferToU8Array(plaintextBuffer), foreignCiphertextBVecStorage.length);
|
|
562
|
-
return toForeignCallResult([
|
|
563
|
-
toSingle(new Fr(1)),
|
|
564
|
-
storage,
|
|
565
|
-
length
|
|
566
|
-
]);
|
|
567
|
-
} catch {
|
|
568
|
-
const zeroStorage = toArray(Array(foreignCiphertextBVecStorage.length).fill(new Fr(0)));
|
|
569
|
-
return toForeignCallResult([
|
|
570
|
-
toSingle(new Fr(0)),
|
|
571
|
-
zeroStorage,
|
|
572
|
-
toSingle(new Fr(0))
|
|
573
|
-
]);
|
|
574
|
-
}
|
|
477
|
+
aztec_utl_getCapsule(...inputs) {
|
|
478
|
+
return callTxeHandler({
|
|
479
|
+
oracle: 'aztec_utl_getCapsule',
|
|
480
|
+
inputs,
|
|
481
|
+
handler: ([contractAddress, slot, tSize, scope])=>this.handlerAsUtility().getCapsule(contractAddress, slot, tSize, scope)
|
|
482
|
+
});
|
|
575
483
|
}
|
|
576
484
|
// eslint-disable-next-line camelcase
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
]);
|
|
584
|
-
const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK);
|
|
585
|
-
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
485
|
+
aztec_utl_deleteCapsule(...inputs) {
|
|
486
|
+
return callTxeHandler({
|
|
487
|
+
oracle: 'aztec_utl_deleteCapsule',
|
|
488
|
+
inputs,
|
|
489
|
+
handler: ([contractAddress, slot, scope])=>this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope)
|
|
490
|
+
});
|
|
586
491
|
}
|
|
587
492
|
// eslint-disable-next-line camelcase
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
493
|
+
aztec_utl_copyCapsule(...inputs) {
|
|
494
|
+
return callTxeHandler({
|
|
495
|
+
oracle: 'aztec_utl_copyCapsule',
|
|
496
|
+
inputs,
|
|
497
|
+
handler: ([contractAddress, srcSlot, dstSlot, numEntries, scope])=>this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope)
|
|
498
|
+
});
|
|
594
499
|
}
|
|
595
500
|
// eslint-disable-next-line camelcase
|
|
596
|
-
|
|
597
|
-
|
|
501
|
+
aztec_utl_pushEphemeral(...inputs) {
|
|
502
|
+
return callTxeHandler({
|
|
503
|
+
oracle: 'aztec_utl_pushEphemeral',
|
|
504
|
+
inputs,
|
|
505
|
+
handler: ([slot, elements])=>this.handlerAsUtility().pushEphemeral(slot, elements)
|
|
506
|
+
});
|
|
598
507
|
}
|
|
599
|
-
// AVM opcodes
|
|
600
508
|
// eslint-disable-next-line camelcase
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
509
|
+
aztec_utl_popEphemeral(...inputs) {
|
|
510
|
+
return callTxeHandler({
|
|
511
|
+
oracle: 'aztec_utl_popEphemeral',
|
|
512
|
+
inputs,
|
|
513
|
+
handler: ([slot])=>this.handlerAsUtility().popEphemeral(slot)
|
|
514
|
+
});
|
|
604
515
|
}
|
|
605
516
|
// eslint-disable-next-line camelcase
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
]);
|
|
517
|
+
aztec_utl_getEphemeral(...inputs) {
|
|
518
|
+
return callTxeHandler({
|
|
519
|
+
oracle: 'aztec_utl_getEphemeral',
|
|
520
|
+
inputs,
|
|
521
|
+
handler: ([slot, index])=>this.handlerAsUtility().getEphemeral(slot, index)
|
|
522
|
+
});
|
|
613
523
|
}
|
|
614
524
|
// eslint-disable-next-line camelcase
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
525
|
+
aztec_utl_setEphemeral(...inputs) {
|
|
526
|
+
return callTxeHandler({
|
|
527
|
+
oracle: 'aztec_utl_setEphemeral',
|
|
528
|
+
inputs,
|
|
529
|
+
handler: ([slot, index, elements])=>this.handlerAsUtility().setEphemeral(slot, index, elements)
|
|
530
|
+
});
|
|
620
531
|
}
|
|
621
532
|
// eslint-disable-next-line camelcase
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
toSingle(new Fr(1))
|
|
629
|
-
]);
|
|
533
|
+
aztec_utl_getEphemeralLen(...inputs) {
|
|
534
|
+
return callTxeHandler({
|
|
535
|
+
oracle: 'aztec_utl_getEphemeralLen',
|
|
536
|
+
inputs,
|
|
537
|
+
handler: ([slot])=>this.handlerAsUtility().getEphemeralLen(slot)
|
|
538
|
+
});
|
|
630
539
|
}
|
|
631
540
|
// eslint-disable-next-line camelcase
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
toSingle(new Fr(1))
|
|
639
|
-
]);
|
|
541
|
+
aztec_utl_removeEphemeral(...inputs) {
|
|
542
|
+
return callTxeHandler({
|
|
543
|
+
oracle: 'aztec_utl_removeEphemeral',
|
|
544
|
+
inputs,
|
|
545
|
+
handler: ([slot, index])=>this.handlerAsUtility().removeEphemeral(slot, index)
|
|
546
|
+
});
|
|
640
547
|
}
|
|
641
548
|
// eslint-disable-next-line camelcase
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
toSingle(new Fr(1))
|
|
649
|
-
]);
|
|
549
|
+
aztec_utl_clearEphemeral(...inputs) {
|
|
550
|
+
return callTxeHandler({
|
|
551
|
+
oracle: 'aztec_utl_clearEphemeral',
|
|
552
|
+
inputs,
|
|
553
|
+
handler: ([slot])=>this.handlerAsUtility().clearEphemeral(slot)
|
|
554
|
+
});
|
|
650
555
|
}
|
|
556
|
+
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
557
|
+
// The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
|
|
558
|
+
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
559
|
+
// existence of a txe_oracle method?
|
|
651
560
|
// eslint-disable-next-line camelcase
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
561
|
+
aztec_utl_decryptAes128(...inputs) {
|
|
562
|
+
return callTxeHandler({
|
|
563
|
+
oracle: 'aztec_utl_decryptAes128',
|
|
564
|
+
inputs,
|
|
565
|
+
handler: ([ciphertext, iv, symKey])=>this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey)
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
// eslint-disable-next-line camelcase
|
|
569
|
+
aztec_utl_getSharedSecrets(...inputs) {
|
|
570
|
+
return callTxeHandler({
|
|
571
|
+
oracle: 'aztec_utl_getSharedSecrets',
|
|
572
|
+
inputs,
|
|
573
|
+
handler: ([address, ephPksSlot, contractAddress])=>this.handlerAsUtility().getSharedSecrets(address, ephPksSlot, contractAddress)
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
// eslint-disable-next-line camelcase
|
|
577
|
+
aztec_utl_setContractSyncCacheInvalid(...inputs) {
|
|
578
|
+
return callTxeHandler({
|
|
579
|
+
oracle: 'aztec_utl_setContractSyncCacheInvalid',
|
|
580
|
+
inputs,
|
|
581
|
+
handler: ([contractAddress, scopes])=>this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes)
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
// eslint-disable-next-line camelcase
|
|
585
|
+
aztec_utl_emitOffchainEffect(...inputs) {
|
|
586
|
+
return callTxeHandler({
|
|
587
|
+
oracle: 'aztec_utl_emitOffchainEffect',
|
|
588
|
+
inputs,
|
|
589
|
+
handler: ([data])=>{
|
|
590
|
+
// Record the raw payload against the currently-executing top-level call. The Noir side
|
|
591
|
+
// (via `env.offchain_messages()`) is responsible for decoding the protocol-reserved prefix
|
|
592
|
+
// (`OFFCHAIN_MESSAGE_IDENTIFIER`, recipient) and turning each payload into an `OffchainMessage` struct suitable
|
|
593
|
+
// for `offchain_receive`.
|
|
594
|
+
this.stateHandler.recordOffchainEffect(data);
|
|
595
|
+
}
|
|
596
|
+
});
|
|
657
597
|
}
|
|
598
|
+
// AVM opcodes
|
|
658
599
|
// eslint-disable-next-line camelcase
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
600
|
+
aztec_avm_emitPublicLog() {
|
|
601
|
+
return callTxeHandler({
|
|
602
|
+
oracle: 'aztec_avm_emitPublicLog',
|
|
603
|
+
inputs: [],
|
|
604
|
+
// TODO(#8811): Implement
|
|
605
|
+
handler: ()=>{}
|
|
606
|
+
});
|
|
663
607
|
}
|
|
664
608
|
// eslint-disable-next-line camelcase
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
609
|
+
aztec_avm_storageRead(...inputs) {
|
|
610
|
+
return callTxeHandler({
|
|
611
|
+
oracle: 'aztec_avm_storageRead',
|
|
612
|
+
inputs,
|
|
613
|
+
handler: ([slot, contractAddress])=>this.handlerAsAvm().storageRead(slot, contractAddress)
|
|
614
|
+
});
|
|
669
615
|
}
|
|
670
616
|
// eslint-disable-next-line camelcase
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
617
|
+
aztec_avm_storageWrite(...inputs) {
|
|
618
|
+
return callTxeHandler({
|
|
619
|
+
oracle: 'aztec_avm_storageWrite',
|
|
620
|
+
inputs,
|
|
621
|
+
handler: ([slot, value])=>this.handlerAsAvm().storageWrite(slot, value)
|
|
622
|
+
});
|
|
677
623
|
}
|
|
678
624
|
// eslint-disable-next-line camelcase
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
625
|
+
aztec_avm_getContractInstanceDeployer(...inputs) {
|
|
626
|
+
return callTxeHandler({
|
|
627
|
+
oracle: 'aztec_avm_getContractInstanceDeployer',
|
|
628
|
+
inputs,
|
|
629
|
+
handler: ([address])=>this.handlerAsAvm().getContractInstanceDeployer(address)
|
|
630
|
+
});
|
|
684
631
|
}
|
|
685
632
|
// eslint-disable-next-line camelcase
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
633
|
+
aztec_avm_getContractInstanceClassId(...inputs) {
|
|
634
|
+
return callTxeHandler({
|
|
635
|
+
oracle: 'aztec_avm_getContractInstanceClassId',
|
|
636
|
+
inputs,
|
|
637
|
+
handler: ([address])=>this.handlerAsAvm().getContractInstanceClassId(address)
|
|
638
|
+
});
|
|
691
639
|
}
|
|
692
640
|
// eslint-disable-next-line camelcase
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
641
|
+
aztec_avm_getContractInstanceInitializationHash(...inputs) {
|
|
642
|
+
return callTxeHandler({
|
|
643
|
+
oracle: 'aztec_avm_getContractInstanceInitializationHash',
|
|
644
|
+
inputs,
|
|
645
|
+
handler: ([address])=>this.handlerAsAvm().getContractInstanceInitializationHash(address)
|
|
646
|
+
});
|
|
698
647
|
}
|
|
699
648
|
// eslint-disable-next-line camelcase
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
649
|
+
aztec_avm_getContractInstanceImmutablesHash(...inputs) {
|
|
650
|
+
return callTxeHandler({
|
|
651
|
+
oracle: 'aztec_avm_getContractInstanceImmutablesHash',
|
|
652
|
+
inputs,
|
|
653
|
+
handler: ([address])=>this.handlerAsAvm().getContractInstanceImmutablesHash(address)
|
|
654
|
+
});
|
|
705
655
|
}
|
|
706
656
|
// eslint-disable-next-line camelcase
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
657
|
+
aztec_avm_sender() {
|
|
658
|
+
return callTxeHandler({
|
|
659
|
+
oracle: 'aztec_avm_sender',
|
|
660
|
+
inputs: [],
|
|
661
|
+
handler: ()=>this.handlerAsAvm().sender()
|
|
662
|
+
});
|
|
712
663
|
}
|
|
713
664
|
// eslint-disable-next-line camelcase
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
665
|
+
aztec_avm_emitNullifier(...inputs) {
|
|
666
|
+
return callTxeHandler({
|
|
667
|
+
oracle: 'aztec_avm_emitNullifier',
|
|
668
|
+
inputs,
|
|
669
|
+
handler: ([nullifier])=>this.handlerAsAvm().emitNullifier(nullifier)
|
|
670
|
+
});
|
|
719
671
|
}
|
|
720
672
|
// eslint-disable-next-line camelcase
|
|
721
|
-
|
|
722
|
-
|
|
673
|
+
aztec_avm_emitNoteHash(...inputs) {
|
|
674
|
+
return callTxeHandler({
|
|
675
|
+
oracle: 'aztec_avm_emitNoteHash',
|
|
676
|
+
inputs,
|
|
677
|
+
handler: ([noteHash])=>this.handlerAsAvm().emitNoteHash(noteHash)
|
|
678
|
+
});
|
|
723
679
|
}
|
|
724
680
|
// eslint-disable-next-line camelcase
|
|
725
|
-
|
|
726
|
-
|
|
681
|
+
aztec_avm_nullifierExists(...inputs) {
|
|
682
|
+
return callTxeHandler({
|
|
683
|
+
oracle: 'aztec_avm_nullifierExists',
|
|
684
|
+
inputs,
|
|
685
|
+
handler: ([siloedNullifier])=>this.handlerAsAvm().nullifierExists(siloedNullifier)
|
|
686
|
+
});
|
|
727
687
|
}
|
|
728
688
|
// eslint-disable-next-line camelcase
|
|
729
|
-
|
|
730
|
-
|
|
689
|
+
aztec_avm_address() {
|
|
690
|
+
return callTxeHandler({
|
|
691
|
+
oracle: 'aztec_avm_address',
|
|
692
|
+
inputs: [],
|
|
693
|
+
handler: ()=>this.handlerAsAvm().address()
|
|
694
|
+
});
|
|
731
695
|
}
|
|
732
696
|
// eslint-disable-next-line camelcase
|
|
733
|
-
|
|
734
|
-
|
|
697
|
+
aztec_avm_blockNumber() {
|
|
698
|
+
return callTxeHandler({
|
|
699
|
+
oracle: 'aztec_avm_blockNumber',
|
|
700
|
+
inputs: [],
|
|
701
|
+
handler: ()=>this.handlerAsAvm().blockNumber()
|
|
702
|
+
});
|
|
735
703
|
}
|
|
736
704
|
// eslint-disable-next-line camelcase
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
await this.stateHandler.cycleJob();
|
|
776
|
-
return toForeignCallResult([
|
|
777
|
-
toArray(returnValues)
|
|
778
|
-
]);
|
|
779
|
-
}
|
|
780
|
-
// eslint-disable-next-line camelcase
|
|
781
|
-
async aztec_prv_getSenderForTags() {
|
|
782
|
-
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
783
|
-
// Return a Noir Option struct with `some` and `value` fields
|
|
784
|
-
if (sender === undefined) {
|
|
785
|
-
// No sender found, return Option with some=0 and value=0
|
|
786
|
-
return toForeignCallResult([
|
|
787
|
-
toSingle(0),
|
|
788
|
-
toSingle(0)
|
|
789
|
-
]);
|
|
790
|
-
} else {
|
|
791
|
-
// Sender found, return Option with some=1 and value=sender address
|
|
792
|
-
return toForeignCallResult([
|
|
793
|
-
toSingle(1),
|
|
794
|
-
toSingle(sender)
|
|
795
|
-
]);
|
|
796
|
-
}
|
|
705
|
+
aztec_avm_timestamp() {
|
|
706
|
+
return callTxeHandler({
|
|
707
|
+
oracle: 'aztec_avm_timestamp',
|
|
708
|
+
inputs: [],
|
|
709
|
+
handler: ()=>this.handlerAsAvm().timestamp()
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
// eslint-disable-next-line camelcase
|
|
713
|
+
aztec_avm_isStaticCall() {
|
|
714
|
+
return callTxeHandler({
|
|
715
|
+
oracle: 'aztec_avm_isStaticCall',
|
|
716
|
+
inputs: [],
|
|
717
|
+
handler: ()=>this.handlerAsAvm().isStaticCall()
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
// eslint-disable-next-line camelcase
|
|
721
|
+
aztec_avm_chainId() {
|
|
722
|
+
return callTxeHandler({
|
|
723
|
+
oracle: 'aztec_avm_chainId',
|
|
724
|
+
inputs: [],
|
|
725
|
+
handler: ()=>this.handlerAsAvm().chainId()
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
// eslint-disable-next-line camelcase
|
|
729
|
+
aztec_avm_version() {
|
|
730
|
+
return callTxeHandler({
|
|
731
|
+
oracle: 'aztec_avm_version',
|
|
732
|
+
inputs: [],
|
|
733
|
+
handler: ()=>this.handlerAsAvm().version()
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
// eslint-disable-next-line camelcase
|
|
737
|
+
aztec_avm_returndataSize() {
|
|
738
|
+
return callTxeHandler({
|
|
739
|
+
oracle: 'aztec_avm_returndataSize',
|
|
740
|
+
inputs: [],
|
|
741
|
+
handler: ()=>this.handlerAsAvm().returndataSize()
|
|
742
|
+
});
|
|
797
743
|
}
|
|
798
744
|
// eslint-disable-next-line camelcase
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
745
|
+
aztec_avm_returndataCopy(...inputs) {
|
|
746
|
+
return callTxeHandler({
|
|
747
|
+
oracle: 'aztec_avm_returndataCopy',
|
|
748
|
+
inputs,
|
|
749
|
+
handler: ([rdOffset, copySize])=>this.handlerAsAvm().returndataCopy(rdOffset, copySize)
|
|
750
|
+
});
|
|
803
751
|
}
|
|
804
752
|
// eslint-disable-next-line camelcase
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
753
|
+
aztec_avm_call(...inputs) {
|
|
754
|
+
return callTxeHandler({
|
|
755
|
+
oracle: 'aztec_avm_call',
|
|
756
|
+
inputs,
|
|
757
|
+
handler: ([l2Gas, daGas, address, argsLength, args])=>this.handlerAsAvm().call(l2Gas, daGas, address, argsLength, args)
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
// eslint-disable-next-line camelcase
|
|
761
|
+
aztec_avm_staticCall(...inputs) {
|
|
762
|
+
return callTxeHandler({
|
|
763
|
+
oracle: 'aztec_avm_staticCall',
|
|
764
|
+
inputs,
|
|
765
|
+
handler: ([l2Gas, daGas, address, argsLength, args])=>this.handlerAsAvm().staticCall(l2Gas, daGas, address, argsLength, args)
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
// eslint-disable-next-line camelcase
|
|
769
|
+
aztec_avm_successCopy() {
|
|
770
|
+
return callTxeHandler({
|
|
771
|
+
oracle: 'aztec_avm_successCopy',
|
|
772
|
+
inputs: [],
|
|
773
|
+
handler: ()=>this.handlerAsAvm().successCopy()
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
777
|
+
// eslint-disable-next-line camelcase
|
|
778
|
+
aztec_txe_privateCallNewFlow(...inputs) {
|
|
779
|
+
return callTxeHandler({
|
|
780
|
+
oracle: 'aztec_txe_privateCallNewFlow',
|
|
781
|
+
inputs,
|
|
782
|
+
handler: async ([from, targetContractAddress, functionSelector, args, argsHash, isStaticCall, additionalScopes, authorizedUtilityCallTargets, gasSettings])=>{
|
|
783
|
+
const returnValues = await this.stateHandler.withTopLevelCallTracking(async ()=>{
|
|
784
|
+
const { returnValues, offchainEffects } = await this.handlerAsTxe().privateCallNewFlow(from?.value, targetContractAddress, functionSelector, args, argsHash, isStaticCall, additionalScopes, this.stateHandler.getCurrentJob(), authorizedUtilityCallTargets, gasSettings);
|
|
785
|
+
// Private execution collects offchain effects inside PXE's PrivateExecutionOracle rather than
|
|
786
|
+
// round-tripping them through `aztec_utl_emitOffchainEffect`, so the session buffer is empty
|
|
787
|
+
// at this point. Drain the effects from the execution tree into the session buffer so the
|
|
788
|
+
// next `env.offchain_messages()` call in the test sees them.
|
|
789
|
+
for (const data of offchainEffects){
|
|
790
|
+
this.stateHandler.recordOffchainEffect(data);
|
|
791
|
+
}
|
|
792
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
793
|
+
await this.stateHandler.cycleJob();
|
|
794
|
+
if (isStaticCall) {
|
|
795
|
+
// Static calls revert their checkpoint and mine no block, so there is no tx hash to tag
|
|
796
|
+
// offchain effects with. Querying `getLastTxEffects()` here would return an unrelated
|
|
797
|
+
// predecessor tx.
|
|
798
|
+
return {
|
|
799
|
+
result: returnValues
|
|
800
|
+
};
|
|
801
|
+
}
|
|
802
|
+
const { txHash } = await this.handlerAsTxe().getLastTxEffects();
|
|
803
|
+
return {
|
|
804
|
+
result: returnValues,
|
|
805
|
+
txHash: txHash.hash
|
|
806
|
+
};
|
|
807
|
+
});
|
|
808
|
+
return returnValues;
|
|
809
|
+
}
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
813
|
+
// eslint-disable-next-line camelcase
|
|
814
|
+
aztec_txe_executeUtilityFunction(...inputs) {
|
|
815
|
+
return callTxeHandler({
|
|
816
|
+
oracle: 'aztec_txe_executeUtilityFunction',
|
|
817
|
+
inputs,
|
|
818
|
+
handler: async ([targetContractAddress, functionSelector, args, authorizedUtilityCallTargets])=>{
|
|
819
|
+
const returnValues = await this.stateHandler.withTopLevelCallTracking(async ()=>{
|
|
820
|
+
const returnValues = await this.handlerAsTxe().executeUtilityFunction(targetContractAddress, functionSelector, args, this.stateHandler.getCurrentJob(), authorizedUtilityCallTargets);
|
|
821
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
822
|
+
await this.stateHandler.cycleJob();
|
|
823
|
+
return {
|
|
824
|
+
result: returnValues
|
|
825
|
+
};
|
|
826
|
+
});
|
|
827
|
+
return returnValues;
|
|
828
|
+
}
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
832
|
+
// eslint-disable-next-line camelcase
|
|
833
|
+
aztec_txe_publicCallNewFlow(...inputs) {
|
|
834
|
+
return callTxeHandler({
|
|
835
|
+
oracle: 'aztec_txe_publicCallNewFlow',
|
|
836
|
+
inputs,
|
|
837
|
+
handler: async ([from, address, calldata, isStaticCall, gasSettings])=>{
|
|
838
|
+
const returnValues = await this.stateHandler.withTopLevelCallTracking(async ()=>{
|
|
839
|
+
const returnValues = await this.handlerAsTxe().publicCallNewFlow(from?.value, address, calldata, isStaticCall, gasSettings);
|
|
840
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
841
|
+
await this.stateHandler.cycleJob();
|
|
842
|
+
if (isStaticCall) {
|
|
843
|
+
// See equivalent branch in `aztec_txe_privateCallNewFlow`.
|
|
844
|
+
return {
|
|
845
|
+
result: returnValues
|
|
846
|
+
};
|
|
847
|
+
}
|
|
848
|
+
const { txHash } = await this.handlerAsTxe().getLastTxEffects();
|
|
849
|
+
return {
|
|
850
|
+
result: returnValues,
|
|
851
|
+
txHash: txHash.hash
|
|
852
|
+
};
|
|
853
|
+
});
|
|
854
|
+
return returnValues;
|
|
855
|
+
}
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
// eslint-disable-next-line camelcase
|
|
859
|
+
aztec_prv_getSenderForTags() {
|
|
860
|
+
return callTxeHandler({
|
|
861
|
+
oracle: 'aztec_prv_getSenderForTags',
|
|
862
|
+
inputs: [],
|
|
863
|
+
handler: ()=>this.handlerAsPrivate().getSenderForTags()
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
// eslint-disable-next-line camelcase
|
|
867
|
+
aztec_prv_getAppTaggingSecret(...inputs) {
|
|
868
|
+
return callTxeHandler({
|
|
869
|
+
oracle: 'aztec_prv_getAppTaggingSecret',
|
|
870
|
+
inputs,
|
|
871
|
+
handler: ([sender, recipient])=>this.handlerAsPrivate().getAppTaggingSecret(sender, recipient)
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
// eslint-disable-next-line camelcase
|
|
875
|
+
aztec_prv_getNextTaggingIndex(...inputs) {
|
|
876
|
+
return callTxeHandler({
|
|
877
|
+
oracle: 'aztec_prv_getNextTaggingIndex',
|
|
878
|
+
inputs,
|
|
879
|
+
handler: ([secret, deliveryMode])=>this.handlerAsPrivate().getNextTaggingIndex(secret, deliveryMode)
|
|
880
|
+
});
|
|
812
881
|
}
|
|
813
882
|
}
|