@aztec/txe 0.0.1-commit.cd76b27 → 0.0.1-commit.ce4f8c4f2
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/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +88 -54
- package/dest/oracle/interfaces.d.ts +29 -28
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +13 -13
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +12 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts +23 -23
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +52 -37
- package/dest/rpc_translator.d.ts +87 -82
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +273 -151
- package/dest/state_machine/archiver.d.ts +3 -3
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +5 -7
- package/dest/state_machine/dummy_p2p_client.d.ts +2 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +1 -1
- 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 +7 -3
- package/dest/state_machine/mock_epoch_cache.d.ts +17 -3
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +32 -2
- package/dest/state_machine/synchronizer.d.ts +5 -5
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +3 -3
- package/dest/txe_session.d.ts +10 -6
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +28 -19
- package/dest/util/encoding.d.ts +69 -1
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.d.ts +2 -3
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +6 -25
- package/package.json +15 -15
- package/src/index.ts +89 -52
- package/src/oracle/interfaces.ts +32 -31
- package/src/oracle/txe_oracle_public_context.ts +12 -12
- package/src/oracle/txe_oracle_top_level_context.ts +65 -36
- package/src/rpc_translator.ts +305 -173
- package/src/state_machine/archiver.ts +5 -5
- package/src/state_machine/dummy_p2p_client.ts +1 -1
- package/src/state_machine/index.ts +6 -1
- package/src/state_machine/mock_epoch_cache.ts +42 -3
- package/src/state_machine/synchronizer.ts +4 -4
- package/src/txe_session.ts +36 -19
- package/src/util/txe_public_contract_data_source.ts +10 -38
- package/dest/util/txe_contract_store.d.ts +0 -12
- package/dest/util/txe_contract_store.d.ts.map +0 -1
- package/dest/util/txe_contract_store.js +0 -22
- package/src/util/txe_contract_store.ts +0 -36
|
@@ -36,15 +36,15 @@ export class TXEOracleTopLevelContext {
|
|
|
36
36
|
senderAddressBookStore;
|
|
37
37
|
capsuleStore;
|
|
38
38
|
privateEventStore;
|
|
39
|
-
jobId;
|
|
40
39
|
nextBlockTimestamp;
|
|
41
40
|
version;
|
|
42
41
|
chainId;
|
|
43
42
|
authwits;
|
|
43
|
+
contractSyncService;
|
|
44
44
|
isMisc;
|
|
45
45
|
isTxe;
|
|
46
46
|
logger;
|
|
47
|
-
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore,
|
|
47
|
+
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, authwits, contractSyncService){
|
|
48
48
|
this.stateMachine = stateMachine;
|
|
49
49
|
this.contractStore = contractStore;
|
|
50
50
|
this.noteStore = noteStore;
|
|
@@ -56,28 +56,28 @@ export class TXEOracleTopLevelContext {
|
|
|
56
56
|
this.senderAddressBookStore = senderAddressBookStore;
|
|
57
57
|
this.capsuleStore = capsuleStore;
|
|
58
58
|
this.privateEventStore = privateEventStore;
|
|
59
|
-
this.jobId = jobId;
|
|
60
59
|
this.nextBlockTimestamp = nextBlockTimestamp;
|
|
61
60
|
this.version = version;
|
|
62
61
|
this.chainId = chainId;
|
|
63
62
|
this.authwits = authwits;
|
|
63
|
+
this.contractSyncService = contractSyncService;
|
|
64
64
|
this.isMisc = true;
|
|
65
65
|
this.isTxe = true;
|
|
66
66
|
this.logger = createLogger('txe:top_level_context');
|
|
67
67
|
this.logger.debug('Entering Top Level Context');
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
assertCompatibleOracleVersion(version) {
|
|
70
70
|
if (version !== ORACLE_VERSION) {
|
|
71
71
|
throw new Error(`Incompatible oracle version. TXE is using version '${ORACLE_VERSION}', but got a request for '${version}'.`);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
// This is typically only invoked in private contexts, but it is convenient to also have it in top-level for testing
|
|
75
75
|
// setup.
|
|
76
|
-
|
|
76
|
+
getRandomField() {
|
|
77
77
|
return Fr.random();
|
|
78
78
|
}
|
|
79
79
|
// We instruct users to debug contracts via this oracle, so it makes sense that they'd expect it to also work in tests
|
|
80
|
-
|
|
80
|
+
log(level, message, fields) {
|
|
81
81
|
if (!LogLevels[level]) {
|
|
82
82
|
throw new Error(`Invalid log level: ${level}`);
|
|
83
83
|
}
|
|
@@ -87,19 +87,19 @@ export class TXEOracleTopLevelContext {
|
|
|
87
87
|
});
|
|
88
88
|
return Promise.resolve();
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
getDefaultAddress() {
|
|
91
91
|
return DEFAULT_ADDRESS;
|
|
92
92
|
}
|
|
93
|
-
async
|
|
93
|
+
async getNextBlockNumber() {
|
|
94
94
|
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
getNextBlockTimestamp() {
|
|
97
97
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
98
98
|
}
|
|
99
|
-
async
|
|
99
|
+
async getLastBlockTimestamp() {
|
|
100
100
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
101
101
|
}
|
|
102
|
-
async
|
|
102
|
+
async getLastTxEffects() {
|
|
103
103
|
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
104
104
|
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
105
105
|
if (block.body.txEffects.length != 1) {
|
|
@@ -113,7 +113,19 @@ export class TXEOracleTopLevelContext {
|
|
|
113
113
|
nullifiers: txEffects.nullifiers
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
|
-
async
|
|
116
|
+
async syncContractNonOracleMethod(contractAddress, scope, jobId) {
|
|
117
|
+
if (contractAddress.equals(DEFAULT_ADDRESS)) {
|
|
118
|
+
this.logger.debug(`Skipping sync in getPrivateEvents because the events correspond to the default address.`);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
122
|
+
await this.stateMachine.contractSyncService.ensureContractSynced(contractAddress, null, async (call, execScopes)=>{
|
|
123
|
+
await this.executeUtilityCall(call, execScopes, jobId);
|
|
124
|
+
}, blockHeader, jobId, [
|
|
125
|
+
scope
|
|
126
|
+
]);
|
|
127
|
+
}
|
|
128
|
+
async getPrivateEvents(selector, contractAddress, scope) {
|
|
117
129
|
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
118
130
|
contractAddress,
|
|
119
131
|
scopes: [
|
|
@@ -123,17 +135,17 @@ export class TXEOracleTopLevelContext {
|
|
|
123
135
|
toBlock: await this.getLastBlockNumber() + 1
|
|
124
136
|
})).map((e)=>e.packedEvent);
|
|
125
137
|
}
|
|
126
|
-
async
|
|
138
|
+
async advanceBlocksBy(blocks) {
|
|
127
139
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
128
140
|
for(let i = 0; i < blocks; i++){
|
|
129
141
|
await this.mineBlock();
|
|
130
142
|
}
|
|
131
143
|
}
|
|
132
|
-
|
|
144
|
+
advanceTimestampBy(duration) {
|
|
133
145
|
this.logger.debug(`time traveling ${duration} seconds`);
|
|
134
146
|
this.nextBlockTimestamp += duration;
|
|
135
147
|
}
|
|
136
|
-
async
|
|
148
|
+
async deploy(artifact, instance, secret) {
|
|
137
149
|
// Emit deployment nullifier
|
|
138
150
|
await this.mineBlock({
|
|
139
151
|
nullifiers: [
|
|
@@ -141,25 +153,25 @@ export class TXEOracleTopLevelContext {
|
|
|
141
153
|
]
|
|
142
154
|
});
|
|
143
155
|
if (!secret.equals(Fr.ZERO)) {
|
|
144
|
-
await this.
|
|
156
|
+
await this.addAccount(artifact, instance, secret);
|
|
145
157
|
} else {
|
|
146
158
|
await this.contractStore.addContractInstance(instance);
|
|
147
|
-
await this.contractStore.addContractArtifact(
|
|
159
|
+
await this.contractStore.addContractArtifact(artifact);
|
|
148
160
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
149
161
|
}
|
|
150
162
|
}
|
|
151
|
-
async
|
|
163
|
+
async addAccount(artifact, instance, secret) {
|
|
152
164
|
const partialAddress = await computePartialAddress(instance);
|
|
153
165
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
154
166
|
await this.contractStore.addContractInstance(instance);
|
|
155
|
-
await this.contractStore.addContractArtifact(
|
|
167
|
+
await this.contractStore.addContractArtifact(artifact);
|
|
156
168
|
const completeAddress = await this.keyStore.addAccount(secret, partialAddress);
|
|
157
169
|
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
158
170
|
await this.addressStore.addCompleteAddress(completeAddress);
|
|
159
171
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
160
172
|
return completeAddress;
|
|
161
173
|
}
|
|
162
|
-
async
|
|
174
|
+
async createAccount(secret) {
|
|
163
175
|
// This is a foot gun !
|
|
164
176
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
165
177
|
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
@@ -167,7 +179,7 @@ export class TXEOracleTopLevelContext {
|
|
|
167
179
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
168
180
|
return completeAddress;
|
|
169
181
|
}
|
|
170
|
-
async
|
|
182
|
+
async addAuthWitness(address, messageHash) {
|
|
171
183
|
const account = await this.accountStore.getAccount(address);
|
|
172
184
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
173
185
|
const schnorr = new Schnorr();
|
|
@@ -178,7 +190,7 @@ export class TXEOracleTopLevelContext {
|
|
|
178
190
|
this.authwits.set(authWitness.requestHash.toString(), authWitness);
|
|
179
191
|
}
|
|
180
192
|
async mineBlock(options = {}) {
|
|
181
|
-
const blockNumber = await this.
|
|
193
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
182
194
|
const txEffect = TxEffect.empty();
|
|
183
195
|
txEffect.nullifiers = [
|
|
184
196
|
getSingleTxBlockRequestHash(blockNumber),
|
|
@@ -200,7 +212,7 @@ export class TXEOracleTopLevelContext {
|
|
|
200
212
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
201
213
|
await this.stateMachine.handleL2Block(block);
|
|
202
214
|
}
|
|
203
|
-
async
|
|
215
|
+
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false, jobId) {
|
|
204
216
|
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
205
217
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
206
218
|
if (!artifact) {
|
|
@@ -214,11 +226,11 @@ export class TXEOracleTopLevelContext {
|
|
|
214
226
|
];
|
|
215
227
|
// Sync notes before executing private function to discover notes from previous transactions
|
|
216
228
|
const utilityExecutor = async (call, execScopes)=>{
|
|
217
|
-
await this.executeUtilityCall(call, execScopes);
|
|
229
|
+
await this.executeUtilityCall(call, execScopes, jobId);
|
|
218
230
|
};
|
|
219
231
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
220
|
-
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader,
|
|
221
|
-
const blockNumber = await this.
|
|
232
|
+
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, jobId, effectiveScopes);
|
|
233
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
222
234
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
223
235
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
224
236
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
@@ -257,14 +269,15 @@ export class TXEOracleTopLevelContext {
|
|
|
257
269
|
capsuleStore: this.capsuleStore,
|
|
258
270
|
privateEventStore: this.privateEventStore,
|
|
259
271
|
contractSyncService: this.stateMachine.contractSyncService,
|
|
260
|
-
jobId
|
|
272
|
+
jobId,
|
|
261
273
|
totalPublicCalldataCount: 0,
|
|
262
274
|
sideEffectCounter: minRevertibleSideEffectCounter,
|
|
263
275
|
scopes: effectiveScopes,
|
|
264
276
|
// In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
265
277
|
// contract would perform, including setting senderForTags.
|
|
266
278
|
senderForTags: from,
|
|
267
|
-
simulator
|
|
279
|
+
simulator,
|
|
280
|
+
messageContextService: this.stateMachine.messageContextService
|
|
268
281
|
});
|
|
269
282
|
// Note: This is a slight modification of simulator.run without any of the checks. Maybe we should modify simulator.run with a boolean value to skip checks.
|
|
270
283
|
let result;
|
|
@@ -277,7 +290,7 @@ export class TXEOracleTopLevelContext {
|
|
|
277
290
|
r.publicInputs.publicTeardownCallRequest
|
|
278
291
|
]));
|
|
279
292
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
280
|
-
const calldata = await privateExecutionOracle.
|
|
293
|
+
const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
|
|
281
294
|
return new HashedValues(calldata, r.calldataHash);
|
|
282
295
|
}));
|
|
283
296
|
noteCache.finish();
|
|
@@ -357,9 +370,9 @@ export class TXEOracleTopLevelContext {
|
|
|
357
370
|
await forkedWorldTrees.close();
|
|
358
371
|
return executionResult.returnValues ?? [];
|
|
359
372
|
}
|
|
360
|
-
async
|
|
373
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
361
374
|
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
362
|
-
const blockNumber = await this.
|
|
375
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
363
376
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
364
377
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
365
378
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
@@ -451,7 +464,7 @@ export class TXEOracleTopLevelContext {
|
|
|
451
464
|
await forkedWorldTrees.close();
|
|
452
465
|
return returnValues ?? [];
|
|
453
466
|
}
|
|
454
|
-
async
|
|
467
|
+
async executeUtilityFunction(targetContractAddress, functionSelector, args, jobId) {
|
|
455
468
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
456
469
|
if (!artifact) {
|
|
457
470
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
@@ -459,8 +472,8 @@ export class TXEOracleTopLevelContext {
|
|
|
459
472
|
// Sync notes before executing utility function to discover notes from previous transactions
|
|
460
473
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
461
474
|
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, async (call, execScopes)=>{
|
|
462
|
-
await this.executeUtilityCall(call, execScopes);
|
|
463
|
-
}, blockHeader,
|
|
475
|
+
await this.executeUtilityCall(call, execScopes, jobId);
|
|
476
|
+
}, blockHeader, jobId, 'ALL_SCOPES');
|
|
464
477
|
const call = FunctionCall.from({
|
|
465
478
|
name: artifact.name,
|
|
466
479
|
to: targetContractAddress,
|
|
@@ -471,9 +484,9 @@ export class TXEOracleTopLevelContext {
|
|
|
471
484
|
args,
|
|
472
485
|
returnTypes: []
|
|
473
486
|
});
|
|
474
|
-
return this.executeUtilityCall(call, 'ALL_SCOPES');
|
|
487
|
+
return this.executeUtilityCall(call, 'ALL_SCOPES', jobId);
|
|
475
488
|
}
|
|
476
|
-
async executeUtilityCall(call, scopes) {
|
|
489
|
+
async executeUtilityCall(call, scopes, jobId) {
|
|
477
490
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
478
491
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
479
492
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -498,7 +511,9 @@ export class TXEOracleTopLevelContext {
|
|
|
498
511
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
499
512
|
capsuleStore: this.capsuleStore,
|
|
500
513
|
privateEventStore: this.privateEventStore,
|
|
501
|
-
|
|
514
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
515
|
+
contractSyncService: this.contractSyncService,
|
|
516
|
+
jobId,
|
|
502
517
|
scopes
|
|
503
518
|
});
|
|
504
519
|
const acirExecutionResult = await new WASMSimulator().executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
package/dest/rpc_translator.d.ts
CHANGED
|
@@ -25,228 +25,233 @@ export declare class RPCTranslator {
|
|
|
25
25
|
private handlerAsPrivate;
|
|
26
26
|
private handlerAsAvm;
|
|
27
27
|
private handlerAsTxe;
|
|
28
|
-
|
|
28
|
+
aztec_txe_setTopLevelTXEContext(): Promise<{
|
|
29
29
|
values: (string | ForeignCallArray)[];
|
|
30
30
|
}>;
|
|
31
|
-
|
|
31
|
+
aztec_txe_setPrivateTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle, foreignAnchorBlockNumberIsSome: ForeignCallSingle, foreignAnchorBlockNumberValue: ForeignCallSingle): Promise<{
|
|
32
32
|
values: (string | ForeignCallArray)[];
|
|
33
33
|
}>;
|
|
34
|
-
|
|
34
|
+
aztec_txe_setPublicTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
|
|
35
35
|
values: (string | ForeignCallArray)[];
|
|
36
36
|
}>;
|
|
37
|
-
|
|
37
|
+
aztec_txe_setUtilityTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
|
|
38
38
|
values: (string | ForeignCallArray)[];
|
|
39
39
|
}>;
|
|
40
|
-
|
|
40
|
+
aztec_txe_getDefaultAddress(): {
|
|
41
41
|
values: (string | ForeignCallArray)[];
|
|
42
42
|
};
|
|
43
|
-
|
|
43
|
+
aztec_txe_getNextBlockNumber(): Promise<{
|
|
44
44
|
values: (string | ForeignCallArray)[];
|
|
45
45
|
}>;
|
|
46
|
-
|
|
46
|
+
aztec_txe_getNextBlockTimestamp(): Promise<{
|
|
47
47
|
values: (string | ForeignCallArray)[];
|
|
48
48
|
}>;
|
|
49
|
-
|
|
49
|
+
aztec_txe_advanceBlocksBy(foreignBlocks: ForeignCallSingle): Promise<{
|
|
50
50
|
values: (string | ForeignCallArray)[];
|
|
51
51
|
}>;
|
|
52
|
-
|
|
52
|
+
aztec_txe_advanceTimestampBy(foreignDuration: ForeignCallSingle): {
|
|
53
53
|
values: (string | ForeignCallArray)[];
|
|
54
54
|
};
|
|
55
|
-
|
|
55
|
+
aztec_txe_deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: ForeignCallSingle): Promise<{
|
|
56
56
|
values: (string | ForeignCallArray)[];
|
|
57
57
|
}>;
|
|
58
|
-
|
|
58
|
+
aztec_txe_createAccount(foreignSecret: ForeignCallSingle): Promise<{
|
|
59
59
|
values: (string | ForeignCallArray)[];
|
|
60
60
|
}>;
|
|
61
|
-
|
|
61
|
+
aztec_txe_addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: ForeignCallSingle): Promise<{
|
|
62
62
|
values: (string | ForeignCallArray)[];
|
|
63
63
|
}>;
|
|
64
|
-
|
|
64
|
+
aztec_txe_addAuthWitness(foreignAddress: ForeignCallSingle, foreignMessageHash: ForeignCallSingle): Promise<{
|
|
65
65
|
values: (string | ForeignCallArray)[];
|
|
66
66
|
}>;
|
|
67
|
-
|
|
67
|
+
aztec_utl_assertCompatibleOracleVersion(foreignVersion: ForeignCallSingle): {
|
|
68
68
|
values: (string | ForeignCallArray)[];
|
|
69
69
|
};
|
|
70
|
-
|
|
70
|
+
aztec_utl_getRandomField(): {
|
|
71
71
|
values: (string | ForeignCallArray)[];
|
|
72
72
|
};
|
|
73
|
-
|
|
73
|
+
aztec_txe_getLastBlockTimestamp(): Promise<{
|
|
74
74
|
values: (string | ForeignCallArray)[];
|
|
75
75
|
}>;
|
|
76
|
-
|
|
76
|
+
aztec_txe_getLastTxEffects(): Promise<{
|
|
77
77
|
values: (string | ForeignCallArray)[];
|
|
78
78
|
}>;
|
|
79
|
-
|
|
79
|
+
aztec_txe_getPrivateEvents(foreignSelector: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignScope: ForeignCallSingle): Promise<{
|
|
80
80
|
values: (string | ForeignCallArray)[];
|
|
81
81
|
}>;
|
|
82
|
-
|
|
82
|
+
aztec_prv_storeInExecutionCache(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle): {
|
|
83
83
|
values: (string | ForeignCallArray)[];
|
|
84
84
|
};
|
|
85
|
-
|
|
85
|
+
aztec_prv_loadFromExecutionCache(foreignHash: ForeignCallSingle): Promise<{
|
|
86
86
|
values: (string | ForeignCallArray)[];
|
|
87
87
|
}>;
|
|
88
|
-
|
|
88
|
+
aztec_utl_log(foreignLevel: ForeignCallSingle, foreignMessage: ForeignCallArray, _foreignLength: ForeignCallSingle, foreignFields: ForeignCallArray): Promise<{
|
|
89
89
|
values: (string | ForeignCallArray)[];
|
|
90
90
|
}>;
|
|
91
|
-
|
|
91
|
+
aztec_utl_storageRead(foreignBlockHash: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignStartStorageSlot: ForeignCallSingle, foreignNumberOfElements: ForeignCallSingle): Promise<{
|
|
92
92
|
values: (string | ForeignCallArray)[];
|
|
93
93
|
}>;
|
|
94
|
-
|
|
94
|
+
aztec_utl_getPublicDataWitness(foreignBlockHash: ForeignCallSingle, foreignLeafSlot: ForeignCallSingle): Promise<{
|
|
95
95
|
values: (string | ForeignCallArray)[];
|
|
96
96
|
}>;
|
|
97
|
-
|
|
97
|
+
aztec_utl_getNotes(foreignOwnerIsSome: ForeignCallSingle, foreignOwnerValue: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignNumSelects: ForeignCallSingle, foreignSelectByIndexes: ForeignCallArray, foreignSelectByOffsets: ForeignCallArray, foreignSelectByLengths: ForeignCallArray, foreignSelectValues: ForeignCallArray, foreignSelectComparators: ForeignCallArray, foreignSortByIndexes: ForeignCallArray, foreignSortByOffsets: ForeignCallArray, foreignSortByLengths: ForeignCallArray, foreignSortOrder: ForeignCallArray, foreignLimit: ForeignCallSingle, foreignOffset: ForeignCallSingle, foreignStatus: ForeignCallSingle, foreignMaxNotes: ForeignCallSingle, foreignPackedHintedNoteLength: ForeignCallSingle): Promise<{
|
|
98
98
|
values: (string | ForeignCallArray)[];
|
|
99
99
|
}>;
|
|
100
|
-
|
|
100
|
+
aztec_prv_notifyCreatedNote(foreignOwner: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignRandomness: ForeignCallSingle, foreignNoteTypeId: ForeignCallSingle, foreignNote: ForeignCallArray, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): {
|
|
101
101
|
values: (string | ForeignCallArray)[];
|
|
102
102
|
};
|
|
103
|
-
|
|
103
|
+
aztec_prv_notifyNullifiedNote(foreignInnerNullifier: ForeignCallSingle, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): Promise<{
|
|
104
104
|
values: (string | ForeignCallArray)[];
|
|
105
105
|
}>;
|
|
106
|
-
|
|
106
|
+
aztec_prv_notifyCreatedNullifier(foreignInnerNullifier: ForeignCallSingle): Promise<{
|
|
107
107
|
values: (string | ForeignCallArray)[];
|
|
108
108
|
}>;
|
|
109
|
-
|
|
109
|
+
aztec_prv_isNullifierPending(foreignInnerNullifier: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
|
|
110
110
|
values: (string | ForeignCallArray)[];
|
|
111
111
|
}>;
|
|
112
|
-
|
|
112
|
+
aztec_utl_checkNullifierExists(foreignInnerNullifier: ForeignCallSingle): Promise<{
|
|
113
113
|
values: (string | ForeignCallArray)[];
|
|
114
114
|
}>;
|
|
115
|
-
|
|
115
|
+
aztec_utl_getContractInstance(foreignAddress: ForeignCallSingle): Promise<{
|
|
116
116
|
values: (string | ForeignCallArray)[];
|
|
117
117
|
}>;
|
|
118
|
-
|
|
118
|
+
aztec_utl_tryGetPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle): Promise<{
|
|
119
119
|
values: (string | ForeignCallArray)[];
|
|
120
120
|
}>;
|
|
121
|
-
|
|
121
|
+
aztec_utl_getKeyValidationRequest(foreignPkMHash: ForeignCallSingle): Promise<{
|
|
122
122
|
values: (string | ForeignCallArray)[];
|
|
123
123
|
}>;
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
aztec_prv_callPrivateFunction(_foreignTargetContractAddress: ForeignCallSingle, _foreignFunctionSelector: ForeignCallSingle, _foreignArgsHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
|
|
125
|
+
aztec_utl_getNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
126
126
|
values: (string | ForeignCallArray)[];
|
|
127
127
|
}>;
|
|
128
|
-
|
|
128
|
+
aztec_utl_getAuthWitness(foreignMessageHash: ForeignCallSingle): Promise<{
|
|
129
129
|
values: (string | ForeignCallArray)[];
|
|
130
130
|
}>;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
privateIsSideEffectCounterRevertible(foreignSideEffectCounter: ForeignCallSingle): Promise<{
|
|
131
|
+
aztec_prv_validatePublicCalldata(_foreignCalldataHash: ForeignCallSingle): void;
|
|
132
|
+
aztec_prv_notifyRevertiblePhaseStart(_foreignMinRevertibleSideEffectCounter: ForeignCallSingle): void;
|
|
133
|
+
aztec_prv_inRevertiblePhase(foreignSideEffectCounter: ForeignCallSingle): Promise<{
|
|
135
134
|
values: (string | ForeignCallArray)[];
|
|
136
135
|
}>;
|
|
137
|
-
|
|
136
|
+
aztec_utl_getUtilityContext(): {
|
|
138
137
|
values: (string | ForeignCallArray)[];
|
|
139
138
|
};
|
|
140
|
-
|
|
139
|
+
aztec_utl_getBlockHeader(foreignBlockNumber: ForeignCallSingle): Promise<{
|
|
141
140
|
values: (string | ForeignCallArray)[];
|
|
142
141
|
}>;
|
|
143
|
-
|
|
142
|
+
aztec_utl_getNoteHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignNoteHash: ForeignCallSingle): Promise<{
|
|
144
143
|
values: (string | ForeignCallArray)[];
|
|
145
144
|
}>;
|
|
146
|
-
|
|
145
|
+
aztec_utl_getBlockHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignBlockHash: ForeignCallSingle): Promise<{
|
|
147
146
|
values: (string | ForeignCallArray)[];
|
|
148
147
|
}>;
|
|
149
|
-
|
|
148
|
+
aztec_utl_getLowNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
150
149
|
values: (string | ForeignCallArray)[];
|
|
151
150
|
}>;
|
|
152
|
-
|
|
151
|
+
aztec_utl_fetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
153
152
|
values: (string | ForeignCallArray)[];
|
|
154
153
|
}>;
|
|
155
|
-
|
|
154
|
+
aztec_utl_validateAndStoreEnqueuedNotesAndEvents(foreignContractAddress: ForeignCallSingle, foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignMaxNotePackedLen: ForeignCallSingle, foreignMaxEventSerializedLen: ForeignCallSingle): Promise<{
|
|
156
155
|
values: (string | ForeignCallArray)[];
|
|
157
156
|
}>;
|
|
158
|
-
|
|
157
|
+
aztec_utl_bulkRetrieveLogs(foreignContractAddress: ForeignCallSingle, foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle, foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
159
158
|
values: (string | ForeignCallArray)[];
|
|
160
159
|
}>;
|
|
161
|
-
|
|
160
|
+
aztec_utl_utilityResolveMessageContexts(foreignContractAddress: ForeignCallSingle, foreignMessageContextRequestsArrayBaseSlot: ForeignCallSingle, foreignMessageContextResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
162
161
|
values: (string | ForeignCallArray)[];
|
|
163
162
|
}>;
|
|
164
|
-
|
|
163
|
+
aztec_utl_storeCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle, foreignCapsule: ForeignCallArray): Promise<{
|
|
165
164
|
values: (string | ForeignCallArray)[];
|
|
166
165
|
}>;
|
|
167
|
-
|
|
166
|
+
aztec_utl_loadCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle, foreignTSize: ForeignCallSingle): Promise<{
|
|
168
167
|
values: (string | ForeignCallArray)[];
|
|
169
168
|
}>;
|
|
170
|
-
|
|
169
|
+
aztec_utl_deleteCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle): Promise<{
|
|
171
170
|
values: (string | ForeignCallArray)[];
|
|
172
171
|
}>;
|
|
173
|
-
|
|
172
|
+
aztec_utl_copyCapsule(foreignContractAddress: ForeignCallSingle, foreignSrcSlot: ForeignCallSingle, foreignDstSlot: ForeignCallSingle, foreignNumEntries: ForeignCallSingle): Promise<{
|
|
174
173
|
values: (string | ForeignCallArray)[];
|
|
175
174
|
}>;
|
|
176
|
-
|
|
175
|
+
aztec_utl_tryAes128Decrypt(foreignCiphertextBVecStorage: ForeignCallArray, foreignCiphertextLength: ForeignCallSingle, foreignIv: ForeignCallArray, foreignSymKey: ForeignCallArray): Promise<{
|
|
177
176
|
values: (string | ForeignCallArray)[];
|
|
178
177
|
}>;
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
aztec_utl_getSharedSecret(foreignAddress: ForeignCallSingle, foreignEphPKField0: ForeignCallSingle, foreignEphPKField1: ForeignCallSingle, foreignEphPKField2: ForeignCallSingle): Promise<{
|
|
179
|
+
values: (string | ForeignCallArray)[];
|
|
180
|
+
}>;
|
|
181
|
+
aztec_utl_invalidateContractSyncCache(foreignContractAddress: ForeignCallSingle, foreignScopes: ForeignCallArray, foreignScopeCount: ForeignCallSingle): Promise<{
|
|
182
|
+
values: (string | ForeignCallArray)[];
|
|
183
|
+
}>;
|
|
184
|
+
aztec_utl_emitOffchainEffect(_foreignData: ForeignCallArray): void;
|
|
185
|
+
aztec_avm_emitPublicLog(_foreignMessage: ForeignCallArray): {
|
|
181
186
|
values: (string | ForeignCallArray)[];
|
|
182
187
|
};
|
|
183
|
-
|
|
188
|
+
aztec_avm_storageRead(foreignSlot: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
|
|
184
189
|
values: (string | ForeignCallArray)[];
|
|
185
190
|
}>;
|
|
186
|
-
|
|
191
|
+
aztec_avm_storageWrite(foreignSlot: ForeignCallSingle, foreignValue: ForeignCallSingle): Promise<{
|
|
187
192
|
values: (string | ForeignCallArray)[];
|
|
188
193
|
}>;
|
|
189
|
-
|
|
194
|
+
aztec_avm_getContractInstanceDeployer(foreignAddress: ForeignCallSingle): Promise<{
|
|
190
195
|
values: (string | ForeignCallArray)[];
|
|
191
196
|
}>;
|
|
192
|
-
|
|
197
|
+
aztec_avm_getContractInstanceClassId(foreignAddress: ForeignCallSingle): Promise<{
|
|
193
198
|
values: (string | ForeignCallArray)[];
|
|
194
199
|
}>;
|
|
195
|
-
|
|
200
|
+
aztec_avm_getContractInstanceInitializationHash(foreignAddress: ForeignCallSingle): Promise<{
|
|
196
201
|
values: (string | ForeignCallArray)[];
|
|
197
202
|
}>;
|
|
198
|
-
|
|
203
|
+
aztec_avm_sender(): Promise<{
|
|
199
204
|
values: (string | ForeignCallArray)[];
|
|
200
205
|
}>;
|
|
201
|
-
|
|
206
|
+
aztec_avm_emitNullifier(foreignNullifier: ForeignCallSingle): Promise<{
|
|
202
207
|
values: (string | ForeignCallArray)[];
|
|
203
208
|
}>;
|
|
204
|
-
|
|
209
|
+
aztec_avm_emitNoteHash(foreignNoteHash: ForeignCallSingle): Promise<{
|
|
205
210
|
values: (string | ForeignCallArray)[];
|
|
206
211
|
}>;
|
|
207
|
-
|
|
212
|
+
aztec_avm_nullifierExists(foreignSiloedNullifier: ForeignCallSingle): Promise<{
|
|
208
213
|
values: (string | ForeignCallArray)[];
|
|
209
214
|
}>;
|
|
210
|
-
|
|
215
|
+
aztec_avm_address(): Promise<{
|
|
211
216
|
values: (string | ForeignCallArray)[];
|
|
212
217
|
}>;
|
|
213
|
-
|
|
218
|
+
aztec_avm_blockNumber(): Promise<{
|
|
214
219
|
values: (string | ForeignCallArray)[];
|
|
215
220
|
}>;
|
|
216
|
-
|
|
221
|
+
aztec_avm_timestamp(): Promise<{
|
|
217
222
|
values: (string | ForeignCallArray)[];
|
|
218
223
|
}>;
|
|
219
|
-
|
|
224
|
+
aztec_avm_isStaticCall(): Promise<{
|
|
220
225
|
values: (string | ForeignCallArray)[];
|
|
221
226
|
}>;
|
|
222
|
-
|
|
227
|
+
aztec_avm_chainId(): Promise<{
|
|
223
228
|
values: (string | ForeignCallArray)[];
|
|
224
229
|
}>;
|
|
225
|
-
|
|
230
|
+
aztec_avm_version(): Promise<{
|
|
226
231
|
values: (string | ForeignCallArray)[];
|
|
227
232
|
}>;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
aztec_avm_returndataSize(): void;
|
|
234
|
+
aztec_avm_returndataCopy(_foreignRdOffset: ForeignCallSingle, _foreignCopySize: ForeignCallSingle): void;
|
|
235
|
+
aztec_avm_call(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
|
|
236
|
+
aztec_avm_staticCall(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
|
|
237
|
+
aztec_avm_successCopy(): void;
|
|
238
|
+
aztec_txe_privateCallNewFlow(foreignFrom: ForeignCallSingle, foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray, foreignArgsHash: ForeignCallSingle, foreignIsStaticCall: ForeignCallSingle): Promise<{
|
|
234
239
|
values: (string | ForeignCallArray)[];
|
|
235
240
|
}>;
|
|
236
|
-
|
|
241
|
+
aztec_txe_executeUtilityFunction(foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray): Promise<{
|
|
237
242
|
values: (string | ForeignCallArray)[];
|
|
238
243
|
}>;
|
|
239
|
-
|
|
244
|
+
aztec_txe_publicCallNewFlow(foreignFrom: ForeignCallSingle, foreignAddress: ForeignCallSingle, foreignCalldata: ForeignCallArray, foreignIsStaticCall: ForeignCallSingle): Promise<{
|
|
240
245
|
values: (string | ForeignCallArray)[];
|
|
241
246
|
}>;
|
|
242
|
-
|
|
247
|
+
aztec_prv_getSenderForTags(): Promise<{
|
|
243
248
|
values: (string | ForeignCallArray)[];
|
|
244
249
|
}>;
|
|
245
|
-
|
|
250
|
+
aztec_prv_setSenderForTags(foreignSenderForTags: ForeignCallSingle): Promise<{
|
|
246
251
|
values: (string | ForeignCallArray)[];
|
|
247
252
|
}>;
|
|
248
|
-
|
|
253
|
+
aztec_prv_getNextAppTagAsSender(foreignSender: ForeignCallSingle, foreignRecipient: ForeignCallSingle): Promise<{
|
|
249
254
|
values: (string | ForeignCallArray)[];
|
|
250
255
|
}>;
|
|
251
256
|
}
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3RyYW5zbGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ycGNfdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBaUQsTUFBTSxtQkFBbUIsQ0FBQztBQUl6RyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBWXZCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIscUJBQWEsc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBRTdCO0NBQ0Y7QUFFRCxxQkFBYSxhQUFhO0lBV3RCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxhQUFhO0lBWHZCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVSxZQUFZLEVBQUUsc0JBQXNCLEVBQ3BDLGFBQWEsRUFDakIsV0FBVyxHQUNYLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsbUJBQW1CLEdBQ25CLG1CQUFtQixFQUNyQjtJQUtKLE9BQU8sQ0FBQyxhQUFhO0lBUXJCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFReEIsT0FBTyxDQUFDLGdCQUFnQjtJQVF4QixPQUFPLENBQUMsWUFBWTtJQVFwQixPQUFPLENBQUMsWUFBWTtJQVdkLCtCQUErQjs7T0FJcEM7SUFHSyw4QkFBOEIsQ0FDbEMsNEJBQTRCLEVBQUUsaUJBQWlCLEVB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
|