@aztec/txe 0.0.1-commit.24de95ac → 0.0.1-commit.3469e52
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/bin/index.d.ts +1 -1
- package/dest/constants.d.ts +3 -0
- package/dest/constants.d.ts.map +1 -0
- package/dest/constants.js +2 -0
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -2
- package/dest/oracle/interfaces.d.ts +9 -6
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +6 -6
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +4 -6
- package/dest/oracle/txe_oracle_top_level_context.d.ts +22 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +124 -78
- package/dest/rpc_translator.d.ts +22 -13
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +87 -37
- package/dest/state_machine/archiver.d.ts +21 -51
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +62 -94
- package/dest/state_machine/dummy_p2p_client.d.ts +9 -6
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +16 -8
- package/dest/state_machine/global_variable_builder.d.ts +6 -4
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +13 -1
- package/dest/state_machine/index.d.ts +6 -6
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +22 -19
- package/dest/state_machine/mock_epoch_cache.d.ts +9 -9
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +15 -12
- package/dest/state_machine/synchronizer.d.ts +5 -4
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +5 -4
- package/dest/txe_session.d.ts +21 -13
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +96 -48
- package/dest/util/encoding.d.ts +615 -16
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/encoding.js +1 -1
- package/dest/util/expected_failure_error.d.ts +1 -1
- package/dest/util/expected_failure_error.d.ts.map +1 -1
- package/dest/util/txe_account_store.d.ts +10 -0
- package/dest/util/txe_account_store.d.ts.map +1 -0
- package/dest/util/{txe_account_data_provider.js → txe_account_store.js} +1 -1
- package/dest/util/txe_contract_store.d.ts +12 -0
- package/dest/util/txe_contract_store.d.ts.map +1 -0
- package/dest/util/{txe_contract_data_provider.js → txe_contract_store.js} +3 -3
- package/dest/util/txe_public_contract_data_source.d.ts +7 -6
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +11 -11
- package/dest/utils/block_creation.d.ts +21 -6
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +36 -4
- package/dest/utils/tx_effect_creation.d.ts +3 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +4 -7
- package/package.json +18 -17
- package/src/constants.ts +3 -0
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +8 -5
- package/src/oracle/txe_oracle_public_context.ts +7 -12
- package/src/oracle/txe_oracle_top_level_context.ts +174 -105
- package/src/rpc_translator.ts +109 -45
- package/src/state_machine/archiver.ts +65 -117
- package/src/state_machine/dummy_p2p_client.ts +22 -10
- package/src/state_machine/global_variable_builder.ts +22 -4
- package/src/state_machine/index.ts +28 -19
- package/src/state_machine/mock_epoch_cache.ts +18 -19
- package/src/state_machine/synchronizer.ts +8 -7
- package/src/txe_session.ts +187 -82
- package/src/util/encoding.ts +1 -1
- package/src/util/{txe_account_data_provider.ts → txe_account_store.ts} +1 -1
- package/src/util/{txe_contract_data_provider.ts → txe_contract_store.ts} +3 -3
- package/src/util/txe_public_contract_data_source.ts +13 -12
- package/src/utils/block_creation.ts +47 -14
- package/src/utils/tx_effect_creation.ts +5 -12
- package/dest/util/txe_account_data_provider.d.ts +0 -10
- package/dest/util/txe_account_data_provider.d.ts.map +0 -1
- package/dest/util/txe_contract_data_provider.d.ts +0 -12
- package/dest/util/txe_contract_data_provider.d.ts.map +0 -1
package/dest/rpc_translator.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Fr, Point } from '@aztec/aztec.js/fields';
|
|
2
2
|
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX } from '@aztec/constants';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { packAsHintedNote } from '@aztec/pxe/simulator';
|
|
5
|
+
import { EventSelector, FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
6
8
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
9
|
import { addressFromSingle, arrayOfArraysToBoundedVecOfArrays, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle } from './util/encoding.js';
|
|
10
|
+
const MAX_EVENT_LEN = 12; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_RESERVED_FIELDS
|
|
11
|
+
const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
|
|
8
12
|
export class UnavailableOracleError extends Error {
|
|
9
13
|
constructor(oracleName){
|
|
10
14
|
super(`${oracleName} oracles not available with the current handler`);
|
|
@@ -64,7 +68,7 @@ export class RPCTranslator {
|
|
|
64
68
|
}
|
|
65
69
|
async txeSetPrivateTXEContext(foreignContractAddressIsSome, foreignContractAddressValue, foreignAnchorBlockNumberIsSome, foreignAnchorBlockNumberValue) {
|
|
66
70
|
const contractAddress = fromSingle(foreignContractAddressIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignContractAddressValue)) : undefined;
|
|
67
|
-
const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool() ? fromSingle(foreignAnchorBlockNumberValue).toNumber() : undefined;
|
|
71
|
+
const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool() ? BlockNumber(fromSingle(foreignAnchorBlockNumberValue).toNumber()) : undefined;
|
|
68
72
|
const privateContextInputs = await this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber);
|
|
69
73
|
return toForeignCallResult(privateContextInputs.toFields().map(toSingle));
|
|
70
74
|
}
|
|
@@ -80,6 +84,12 @@ export class RPCTranslator {
|
|
|
80
84
|
}
|
|
81
85
|
// Other oracles - these get handled by the oracle handler
|
|
82
86
|
// TXE-specific oracles
|
|
87
|
+
txeGetDefaultAddress() {
|
|
88
|
+
const defaultAddress = this.handlerAsTxe().txeGetDefaultAddress();
|
|
89
|
+
return toForeignCallResult([
|
|
90
|
+
toSingle(defaultAddress)
|
|
91
|
+
]);
|
|
92
|
+
}
|
|
83
93
|
async txeGetNextBlockNumber() {
|
|
84
94
|
const nextBlockNumber = await this.handlerAsTxe().txeGetNextBlockNumber();
|
|
85
95
|
return toForeignCallResult([
|
|
@@ -163,8 +173,29 @@ export class RPCTranslator {
|
|
|
163
173
|
...arrayToBoundedVec(toArray(nullifiers), MAX_NULLIFIERS_PER_TX)
|
|
164
174
|
]);
|
|
165
175
|
}
|
|
166
|
-
|
|
167
|
-
|
|
176
|
+
async txeGetPrivateEvents(foreignSelector, foreignContractAddress, foreignScope) {
|
|
177
|
+
const selector = EventSelector.fromField(fromSingle(foreignSelector));
|
|
178
|
+
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
179
|
+
const scope = addressFromSingle(foreignScope);
|
|
180
|
+
const events = await this.handlerAsTxe().txeGetPrivateEvents(selector, contractAddress, scope);
|
|
181
|
+
if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
|
|
182
|
+
throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
|
|
183
|
+
}
|
|
184
|
+
if (events.some((e)=>e.length > MAX_EVENT_LEN)) {
|
|
185
|
+
throw new Error(`Some private event has length larger than maxLen ${MAX_EVENT_LEN}`);
|
|
186
|
+
}
|
|
187
|
+
// This is a workaround as Noir does not currently let us return nested structs with arrays. We instead return a raw
|
|
188
|
+
// multidimensional array in get_private_events_oracle and create the BoundedVecs here.
|
|
189
|
+
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();
|
|
190
|
+
const eventLengths = events.map((e)=>new Fr(e.length)).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(new Fr(0)));
|
|
191
|
+
const queryLength = new Fr(events.length);
|
|
192
|
+
return toForeignCallResult([
|
|
193
|
+
toArray(rawArrayStorage),
|
|
194
|
+
toArray(eventLengths),
|
|
195
|
+
toSingle(queryLength)
|
|
196
|
+
]);
|
|
197
|
+
}
|
|
198
|
+
privateStoreInExecutionCache(foreignValues, foreignHash) {
|
|
168
199
|
const values = fromArray(foreignValues);
|
|
169
200
|
const hash = fromSingle(foreignHash);
|
|
170
201
|
this.handlerAsPrivate().privateStoreInExecutionCache(values, hash);
|
|
@@ -186,26 +217,28 @@ export class RPCTranslator {
|
|
|
186
217
|
this.handlerAsMisc().utilityDebugLog(level, message, fields);
|
|
187
218
|
return toForeignCallResult([]);
|
|
188
219
|
}
|
|
189
|
-
async utilityStorageRead(foreignContractAddress, foreignStartStorageSlot,
|
|
220
|
+
async utilityStorageRead(foreignBlockHash, foreignContractAddress, foreignStartStorageSlot, foreignNumberOfElements) {
|
|
221
|
+
const blockHash = L2BlockHash.fromString(foreignBlockHash);
|
|
190
222
|
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
191
223
|
const startStorageSlot = fromSingle(foreignStartStorageSlot);
|
|
192
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
193
224
|
const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
|
|
194
|
-
const values = await this.handlerAsUtility().utilityStorageRead(contractAddress, startStorageSlot,
|
|
225
|
+
const values = await this.handlerAsUtility().utilityStorageRead(blockHash, contractAddress, startStorageSlot, numberOfElements);
|
|
195
226
|
return toForeignCallResult([
|
|
196
227
|
toArray(values)
|
|
197
228
|
]);
|
|
198
229
|
}
|
|
199
|
-
async utilityGetPublicDataWitness(
|
|
200
|
-
const
|
|
230
|
+
async utilityGetPublicDataWitness(foreignBlockHash, foreignLeafSlot) {
|
|
231
|
+
const blockHash = L2BlockHash.fromString(foreignBlockHash);
|
|
201
232
|
const leafSlot = fromSingle(foreignLeafSlot);
|
|
202
|
-
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(
|
|
233
|
+
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(blockHash, leafSlot);
|
|
203
234
|
if (!witness) {
|
|
204
|
-
throw new Error(`Public data witness not found for slot ${leafSlot} at block ${
|
|
235
|
+
throw new Error(`Public data witness not found for slot ${leafSlot} at block ${blockHash.toString()}.`);
|
|
205
236
|
}
|
|
206
237
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
207
238
|
}
|
|
208
|
-
async utilityGetNotes(foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes,
|
|
239
|
+
async utilityGetNotes(foreignOwnerIsSome, foreignOwnerValue, foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedHintedNoteLength) {
|
|
240
|
+
// Parse Option<AztecAddress>: ownerIsSome is 0 for None, 1 for Some
|
|
241
|
+
const owner = fromSingle(foreignOwnerIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignOwnerValue)) : undefined;
|
|
209
242
|
const storageSlot = fromSingle(foreignStorageSlot);
|
|
210
243
|
const numSelects = fromSingle(foreignNumSelects).toNumber();
|
|
211
244
|
const selectByIndexes = fromArray(foreignSelectByIndexes).map((fr)=>fr.toNumber());
|
|
@@ -221,21 +254,31 @@ export class RPCTranslator {
|
|
|
221
254
|
const offset = fromSingle(foreignOffset).toNumber();
|
|
222
255
|
const status = fromSingle(foreignStatus).toNumber();
|
|
223
256
|
const maxNotes = fromSingle(foreignMaxNotes).toNumber();
|
|
224
|
-
const
|
|
225
|
-
const noteDatas = await this.handlerAsUtility().utilityGetNotes(storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
|
|
226
|
-
const returnDataAsArrayOfArrays = noteDatas.map(
|
|
257
|
+
const packedHintedNoteLength = fromSingle(foreignPackedHintedNoteLength).toNumber();
|
|
258
|
+
const noteDatas = await this.handlerAsUtility().utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
|
|
259
|
+
const returnDataAsArrayOfArrays = noteDatas.map((noteData)=>packAsHintedNote({
|
|
260
|
+
contractAddress: noteData.contractAddress,
|
|
261
|
+
owner: noteData.owner,
|
|
262
|
+
randomness: noteData.randomness,
|
|
263
|
+
storageSlot: noteData.storageSlot,
|
|
264
|
+
noteNonce: noteData.noteNonce,
|
|
265
|
+
isPending: noteData.isPending,
|
|
266
|
+
note: noteData.note
|
|
267
|
+
}));
|
|
227
268
|
// Now we convert each sub-array to an array of ForeignCallSingles
|
|
228
269
|
const returnDataAsArrayOfForeignCallSingleArrays = returnDataAsArrayOfArrays.map((subArray)=>subArray.map(toSingle));
|
|
229
270
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
230
|
-
return toForeignCallResult(arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes,
|
|
271
|
+
return toForeignCallResult(arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes, packedHintedNoteLength));
|
|
231
272
|
}
|
|
232
|
-
privateNotifyCreatedNote(foreignStorageSlot, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
|
|
273
|
+
privateNotifyCreatedNote(foreignOwner, foreignStorageSlot, foreignRandomness, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
|
|
274
|
+
const owner = addressFromSingle(foreignOwner);
|
|
233
275
|
const storageSlot = fromSingle(foreignStorageSlot);
|
|
276
|
+
const randomness = fromSingle(foreignRandomness);
|
|
234
277
|
const noteTypeId = NoteSelector.fromField(fromSingle(foreignNoteTypeId));
|
|
235
278
|
const note = fromArray(foreignNote);
|
|
236
279
|
const noteHash = fromSingle(foreignNoteHash);
|
|
237
280
|
const counter = fromSingle(foreignCounter).toNumber();
|
|
238
|
-
this.handlerAsPrivate().privateNotifyCreatedNote(storageSlot, noteTypeId, note, noteHash, counter);
|
|
281
|
+
this.handlerAsPrivate().privateNotifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
|
|
239
282
|
return toForeignCallResult([]);
|
|
240
283
|
}
|
|
241
284
|
async privateNotifyNullifiedNote(foreignInnerNullifier, foreignNoteHash, foreignCounter) {
|
|
@@ -286,12 +329,12 @@ export class RPCTranslator {
|
|
|
286
329
|
privateCallPrivateFunction(_foreignTargetContractAddress, _foreignFunctionSelector, _foreignArgsHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
|
|
287
330
|
throw new Error('Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead');
|
|
288
331
|
}
|
|
289
|
-
async utilityGetNullifierMembershipWitness(
|
|
290
|
-
const
|
|
332
|
+
async utilityGetNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
|
|
333
|
+
const blockHash = L2BlockHash.fromString(foreignBlockHash);
|
|
291
334
|
const nullifier = fromSingle(foreignNullifier);
|
|
292
|
-
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
|
|
335
|
+
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(blockHash, nullifier);
|
|
293
336
|
if (!witness) {
|
|
294
|
-
throw new Error(`Nullifier membership witness not found at block ${
|
|
337
|
+
throw new Error(`Nullifier membership witness not found at block ${blockHash}.`);
|
|
295
338
|
}
|
|
296
339
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
297
340
|
}
|
|
@@ -314,37 +357,44 @@ export class RPCTranslator {
|
|
|
314
357
|
privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter) {
|
|
315
358
|
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
316
359
|
}
|
|
317
|
-
async
|
|
318
|
-
const
|
|
360
|
+
async privateIsSideEffectCounterRevertible(foreignSideEffectCounter) {
|
|
361
|
+
const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
|
|
362
|
+
const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(sideEffectCounter);
|
|
363
|
+
return toForeignCallResult([
|
|
364
|
+
toSingle(new Fr(isRevertible))
|
|
365
|
+
]);
|
|
366
|
+
}
|
|
367
|
+
utilityGetUtilityContext() {
|
|
368
|
+
const context = this.handlerAsUtility().utilityGetUtilityContext();
|
|
319
369
|
return toForeignCallResult(context.toNoirRepresentation());
|
|
320
370
|
}
|
|
321
371
|
async utilityGetBlockHeader(foreignBlockNumber) {
|
|
322
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
372
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
323
373
|
const header = await this.handlerAsUtility().utilityGetBlockHeader(blockNumber);
|
|
324
374
|
if (!header) {
|
|
325
375
|
throw new Error(`Block header not found for block ${blockNumber}.`);
|
|
326
376
|
}
|
|
327
377
|
return toForeignCallResult(header.toFields().map(toSingle));
|
|
328
378
|
}
|
|
329
|
-
async utilityGetMembershipWitness(
|
|
330
|
-
const
|
|
379
|
+
async utilityGetMembershipWitness(foreignBlockHash, foreignTreeId, foreignLeafValue) {
|
|
380
|
+
const blockHash = L2BlockHash.fromString(foreignBlockHash);
|
|
331
381
|
const treeId = fromSingle(foreignTreeId).toNumber();
|
|
332
382
|
const leafValue = fromSingle(foreignLeafValue);
|
|
333
|
-
const witness = await this.handlerAsUtility().utilityGetMembershipWitness(
|
|
383
|
+
const witness = await this.handlerAsUtility().utilityGetMembershipWitness(blockHash, treeId, leafValue);
|
|
334
384
|
if (!witness) {
|
|
335
|
-
throw new Error(`Membership witness in tree ${MerkleTreeId[treeId]} not found for value ${leafValue} at block ${
|
|
385
|
+
throw new Error(`Membership witness in tree ${MerkleTreeId[treeId]} not found for value ${leafValue} at block ${blockHash}.`);
|
|
336
386
|
}
|
|
337
387
|
return toForeignCallResult([
|
|
338
388
|
toSingle(witness[0]),
|
|
339
389
|
toArray(witness.slice(1))
|
|
340
390
|
]);
|
|
341
391
|
}
|
|
342
|
-
async utilityGetLowNullifierMembershipWitness(
|
|
343
|
-
const
|
|
392
|
+
async utilityGetLowNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
|
|
393
|
+
const blockHash = L2BlockHash.fromString(foreignBlockHash);
|
|
344
394
|
const nullifier = fromSingle(foreignNullifier);
|
|
345
|
-
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
|
|
395
|
+
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(blockHash, nullifier);
|
|
346
396
|
if (!witness) {
|
|
347
|
-
throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${
|
|
397
|
+
throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${blockHash}.`);
|
|
348
398
|
}
|
|
349
399
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
350
400
|
}
|
|
@@ -553,7 +603,7 @@ export class RPCTranslator {
|
|
|
553
603
|
avmOpcodeSuccessCopy() {
|
|
554
604
|
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
555
605
|
}
|
|
556
|
-
async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector,
|
|
606
|
+
async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
|
|
557
607
|
const from = addressFromSingle(foreignFrom);
|
|
558
608
|
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
559
609
|
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
@@ -565,7 +615,7 @@ export class RPCTranslator {
|
|
|
565
615
|
toArray(returnValues)
|
|
566
616
|
]);
|
|
567
617
|
}
|
|
568
|
-
async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector,
|
|
618
|
+
async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
|
|
569
619
|
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
570
620
|
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
571
621
|
const args = fromArray(foreignArgs);
|
|
@@ -574,7 +624,7 @@ export class RPCTranslator {
|
|
|
574
624
|
toArray(returnValues)
|
|
575
625
|
]);
|
|
576
626
|
}
|
|
577
|
-
async txePublicCallNewFlow(foreignFrom, foreignAddress,
|
|
627
|
+
async txePublicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
|
|
578
628
|
const from = addressFromSingle(foreignFrom);
|
|
579
629
|
const address = addressFromSingle(foreignAddress);
|
|
580
630
|
const calldata = fromArray(foreignCalldata);
|
|
@@ -1,61 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArchiverDataSourceBase } from '@aztec/archiver';
|
|
2
|
+
import { type EpochNumber, type SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
4
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
7
|
-
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
|
+
import type { L2Tips, ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
7
|
+
import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
8
8
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
* TXE Archiver implementation.
|
|
11
|
+
* Provides most of the endpoints needed by the node for reading from and writing to state,
|
|
12
|
+
* without needing any of the extra overhead that the Archiver itself requires (i.e. an L1 client).
|
|
13
|
+
*/
|
|
14
|
+
export declare class TXEArchiver extends ArchiverDataSourceBase {
|
|
15
|
+
private readonly updater;
|
|
12
16
|
constructor(db: AztecAsyncKVStore);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
17
|
-
*/
|
|
18
|
-
getBlockNumber(): Promise<number>;
|
|
19
|
-
/**
|
|
20
|
-
* Gets the number of the latest L2 block proven seen by the block source implementation.
|
|
21
|
-
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
22
|
-
*/
|
|
23
|
-
getProvenBlockNumber(): Promise<number>;
|
|
24
|
-
/**
|
|
25
|
-
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
26
|
-
* @param number - The block number to return (inclusive).
|
|
27
|
-
* @returns The requested L2 block.
|
|
28
|
-
*/
|
|
29
|
-
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
30
|
-
/**
|
|
31
|
-
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
32
|
-
* @param number - The block number to return (inclusive).
|
|
33
|
-
* @returns The requested L2 block.
|
|
34
|
-
*/
|
|
35
|
-
getBlock(number: number | 'latest'): Promise<L2Block | undefined>;
|
|
36
|
-
/**
|
|
37
|
-
* Gets an l2 block header.
|
|
38
|
-
* @param number - The block number to return or 'latest' for the most recent one.
|
|
39
|
-
* @returns The requested L2 block header.
|
|
40
|
-
*/
|
|
41
|
-
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
42
|
-
getBlocks(from: number, limit: number, _proven?: boolean): Promise<L2Block[]>;
|
|
43
|
-
getL2SlotNumber(): Promise<bigint>;
|
|
44
|
-
getL2EpochNumber(): Promise<bigint>;
|
|
45
|
-
getBlocksForEpoch(_epochNumber: bigint): Promise<L2Block[]>;
|
|
46
|
-
getBlockHeadersForEpoch(_epochNumber: bigint): Promise<BlockHeader[]>;
|
|
47
|
-
isEpochComplete(_epochNumber: bigint): Promise<boolean>;
|
|
48
|
-
getL2Tips(): Promise<L2Tips>;
|
|
17
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], result?: ValidateCheckpointResult): Promise<boolean>;
|
|
18
|
+
getRollupAddress(): Promise<EthAddress>;
|
|
19
|
+
getRegistryAddress(): Promise<EthAddress>;
|
|
49
20
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
50
21
|
getGenesisValues(): Promise<{
|
|
51
22
|
genesisArchiveRoot: Fr;
|
|
52
23
|
}>;
|
|
24
|
+
getL1Timestamp(): Promise<bigint | undefined>;
|
|
25
|
+
getL2Tips(): Promise<L2Tips>;
|
|
26
|
+
getL2SlotNumber(): Promise<SlotNumber | undefined>;
|
|
27
|
+
getL2EpochNumber(): Promise<EpochNumber | undefined>;
|
|
28
|
+
isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
|
|
53
29
|
syncImmediate(): Promise<void>;
|
|
54
|
-
getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
55
|
-
getRollupAddress(): Promise<EthAddress>;
|
|
56
|
-
getRegistryAddress(): Promise<EthAddress>;
|
|
57
|
-
getL1Timestamp(): Promise<bigint>;
|
|
58
|
-
isPendingChainInvalid(): Promise<boolean>;
|
|
59
|
-
getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
|
|
60
30
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2FyY2hpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBaUQsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RyxPQUFPLEVBQW9CLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQW9DLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlHLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRTs7OztHQUlHO0FBQ0gscUJBQWEsV0FBWSxTQUFRLHNCQUFzQjtJQUNyRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBNEM7SUFFcEUsWUFBWSxFQUFFLEVBQUUsaUJBQWlCLEVBR2hDO0lBR1ksY0FBYyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHbkg7SUFJTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTdDO0lBRU0sa0JBQWtCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUUvQztJQUVNLGNBQWMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FFbEQ7SUFFTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUM7UUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDLENBRTdEO0lBRU0sY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRW5EO0lBRVksU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0E4QnhDO0lBRU0sZUFBZSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXhEO0lBRU0sZ0JBQWdCLElBQUksT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FFMUQ7SUFFTSxlQUFlLENBQUMsWUFBWSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWxFO0lBRU0sYUFBYSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAiD,MAAM,iBAAiB,CAAC;AAExG,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAoC,MAAM,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,sBAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IAEpE,YAAY,EAAE,EAAE,iBAAiB,EAGhC;IAGY,cAAc,CAAC,WAAW,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnH;IAIM,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAE7C;IAEM,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CAE/C;IAEM,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAElD;IAEM,gBAAgB,IAAI,OAAO,CAAC;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,CAAC,CAE7D;IAEM,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnD;IAEY,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CA8BxC;IAEM,eAAe,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAExD;IAEM,gBAAgB,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAE1D;IAEM,eAAe,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAElE;IAEM,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;CACF"}
|
|
@@ -1,70 +1,75 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArchiverDataSourceBase, ArchiverDataStoreUpdater, KVArchiverDataStore } from '@aztec/archiver';
|
|
2
2
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
/**
|
|
6
|
+
* TXE Archiver implementation.
|
|
7
|
+
* Provides most of the endpoints needed by the node for reading from and writing to state,
|
|
8
|
+
* without needing any of the extra overhead that the Archiver itself requires (i.e. an L1 client).
|
|
9
|
+
*/ export class TXEArchiver extends ArchiverDataSourceBase {
|
|
10
|
+
updater = new ArchiverDataStoreUpdater(this.store);
|
|
8
11
|
constructor(db){
|
|
9
|
-
|
|
12
|
+
const store = new KVArchiverDataStore(db, 9999);
|
|
13
|
+
super(store);
|
|
10
14
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
]);
|
|
16
|
-
return opResults.every(Boolean);
|
|
15
|
+
// TXE-specific method for adding checkpoints
|
|
16
|
+
async addCheckpoints(checkpoints, result) {
|
|
17
|
+
await this.updater.setNewCheckpointData(checkpoints, result);
|
|
18
|
+
return true;
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*/ getBlockNumber() {
|
|
22
|
-
return this.store.getSynchedL2BlockNumber();
|
|
20
|
+
// Abstract method implementations
|
|
21
|
+
getRollupAddress() {
|
|
22
|
+
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
27
|
-
*/ getProvenBlockNumber() {
|
|
28
|
-
return this.store.getSynchedL2BlockNumber();
|
|
24
|
+
getRegistryAddress() {
|
|
25
|
+
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
29
26
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
number = await this.store.getSynchedL2BlockNumber();
|
|
38
|
-
}
|
|
39
|
-
if (number == 0) {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
const blocks = await this.store.getPublishedBlocks(number, 1);
|
|
43
|
-
return blocks.length === 0 ? undefined : blocks[0];
|
|
27
|
+
getL1Constants() {
|
|
28
|
+
throw new Error('TXE Archiver does not implement "getL1Constants"');
|
|
29
|
+
}
|
|
30
|
+
getGenesisValues() {
|
|
31
|
+
return Promise.resolve({
|
|
32
|
+
genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT)
|
|
33
|
+
});
|
|
44
34
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* @param number - The block number to return (inclusive).
|
|
48
|
-
* @returns The requested L2 block.
|
|
49
|
-
*/ getBlock(number) {
|
|
50
|
-
return this.getPublishedBlock(number != 'latest' ? number : -1).then((block)=>block?.block);
|
|
35
|
+
getL1Timestamp() {
|
|
36
|
+
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
51
37
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
number = await this.store.getSynchedL2BlockNumber();
|
|
38
|
+
async getL2Tips() {
|
|
39
|
+
// In TXE there is no possibility of reorgs and no blocks are ever getting proven so we just set 'latest', 'proven'
|
|
40
|
+
// and 'finalized' to the latest block.
|
|
41
|
+
const blockHeader = await this.getBlockHeader('latest');
|
|
42
|
+
if (!blockHeader) {
|
|
43
|
+
throw new Error('L2Tips requested from TXE Archiver but no block header found');
|
|
59
44
|
}
|
|
60
|
-
|
|
61
|
-
|
|
45
|
+
const number = blockHeader.globalVariables.blockNumber;
|
|
46
|
+
const hash = (await blockHeader.hash()).toString();
|
|
47
|
+
const checkpointedBlock = await this.getCheckpointedBlock(number);
|
|
48
|
+
if (!checkpointedBlock) {
|
|
49
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpointed block found for block number ${number}`);
|
|
62
50
|
}
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
51
|
+
const checkpoint = await this.store.getRangeOfCheckpoints(CheckpointNumber(number), 1);
|
|
52
|
+
if (checkpoint.length === 0) {
|
|
53
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpoint found for block number ${number}`);
|
|
54
|
+
}
|
|
55
|
+
const blockId = {
|
|
56
|
+
number,
|
|
57
|
+
hash
|
|
58
|
+
};
|
|
59
|
+
const checkpointId = {
|
|
60
|
+
number: checkpoint[0].checkpointNumber,
|
|
61
|
+
hash: checkpoint[0].header.hash().toString()
|
|
62
|
+
};
|
|
63
|
+
const tipId = {
|
|
64
|
+
block: blockId,
|
|
65
|
+
checkpoint: checkpointId
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
proposed: blockId,
|
|
69
|
+
proven: tipId,
|
|
70
|
+
finalized: tipId,
|
|
71
|
+
checkpointed: tipId
|
|
72
|
+
};
|
|
68
73
|
}
|
|
69
74
|
getL2SlotNumber() {
|
|
70
75
|
throw new Error('TXE Archiver does not implement "getL2SlotNumber"');
|
|
@@ -72,47 +77,10 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
72
77
|
getL2EpochNumber() {
|
|
73
78
|
throw new Error('TXE Archiver does not implement "getL2EpochNumber"');
|
|
74
79
|
}
|
|
75
|
-
getBlocksForEpoch(_epochNumber) {
|
|
76
|
-
throw new Error('TXE Archiver does not implement "getBlocksForEpoch"');
|
|
77
|
-
}
|
|
78
|
-
getBlockHeadersForEpoch(_epochNumber) {
|
|
79
|
-
throw new Error('TXE Archiver does not implement "getBlockHeadersForEpoch"');
|
|
80
|
-
}
|
|
81
80
|
isEpochComplete(_epochNumber) {
|
|
82
81
|
throw new Error('TXE Archiver does not implement "isEpochComplete"');
|
|
83
82
|
}
|
|
84
|
-
getL2Tips() {
|
|
85
|
-
throw new Error('TXE Archiver does not implement "getL2Tips"');
|
|
86
|
-
}
|
|
87
|
-
getL1Constants() {
|
|
88
|
-
throw new Error('TXE Archiver does not implement "getL2Constants"');
|
|
89
|
-
}
|
|
90
|
-
getGenesisValues() {
|
|
91
|
-
return Promise.resolve({
|
|
92
|
-
genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT)
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
83
|
syncImmediate() {
|
|
96
84
|
throw new Error('TXE Archiver does not implement "syncImmediate"');
|
|
97
85
|
}
|
|
98
|
-
getContract(_address, _timestamp) {
|
|
99
|
-
throw new Error('TXE Archiver does not implement "getContract"');
|
|
100
|
-
}
|
|
101
|
-
getRollupAddress() {
|
|
102
|
-
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
103
|
-
}
|
|
104
|
-
getRegistryAddress() {
|
|
105
|
-
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
106
|
-
}
|
|
107
|
-
getL1Timestamp() {
|
|
108
|
-
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
109
|
-
}
|
|
110
|
-
isPendingChainInvalid() {
|
|
111
|
-
return Promise.resolve(false);
|
|
112
|
-
}
|
|
113
|
-
getPendingChainValidationStatus() {
|
|
114
|
-
return Promise.resolve({
|
|
115
|
-
valid: true
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
86
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { AuthRequest, ENR, P2P, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PConfig, P2PSyncState, PeerId, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolValidators, StatusMessage } from '@aztec/p2p';
|
|
2
3
|
import type { EthAddress, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
|
|
3
4
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
4
|
-
import type {
|
|
5
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
|
|
5
6
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
7
|
export declare class DummyP2P implements P2P {
|
|
7
8
|
validate(_txs: Tx[]): Promise<void>;
|
|
@@ -10,7 +11,10 @@ export declare class DummyP2P implements P2P {
|
|
|
10
11
|
getEncodedEnr(): Promise<string | undefined>;
|
|
11
12
|
getPeers(_includePending?: boolean): Promise<PeerInfo[]>;
|
|
12
13
|
broadcastProposal(_proposal: BlockProposal): Promise<void>;
|
|
14
|
+
broadcastCheckpointProposal(_proposal: CheckpointProposal): Promise<void>;
|
|
15
|
+
broadcastCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void>;
|
|
13
16
|
registerBlockProposalHandler(_handler: P2PBlockReceivedCallback): void;
|
|
17
|
+
registerCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void;
|
|
14
18
|
requestTxs(_txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
15
19
|
requestTxByHash(_txHash: TxHash): Promise<Tx | undefined>;
|
|
16
20
|
sendTx(_tx: Tx): Promise<void>;
|
|
@@ -28,9 +32,8 @@ export declare class DummyP2P implements P2P {
|
|
|
28
32
|
getEnr(): ENR | undefined;
|
|
29
33
|
isP2PClient(): true;
|
|
30
34
|
getTxsByHash(_txHashes: TxHash[]): Promise<Tx[]>;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
addAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
35
|
+
getCheckpointAttestationsForSlot(_slot: SlotNumber, _proposalId?: string): Promise<CheckpointAttestation[]>;
|
|
36
|
+
addCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void>;
|
|
34
37
|
getL2BlockHash(_number: number): Promise<string | undefined>;
|
|
35
38
|
updateP2PConfig(_config: Partial<P2PConfig>): Promise<void>;
|
|
36
39
|
getL2Tips(): Promise<L2Tips>;
|
|
@@ -49,4 +52,4 @@ export declare class DummyP2P implements P2P {
|
|
|
49
52
|
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
50
53
|
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
51
54
|
}
|
|
52
|
-
//# sourceMappingURL=
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfcDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvZHVtbXlfcDJwX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFDVixXQUFXLEVBQ1gsR0FBRyxFQUNILEdBQUcsRUFDSCx3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLGFBQWEsRUFDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELHFCQUFhLFFBQVMsWUFBVyxHQUFHO0lBQzNCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV6QztJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sYUFBYSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVwQztJQUVNLGFBQWEsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVsRDtJQUVNLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBRTlEO0lBRU0saUJBQWlCLENBQUMsU0FBUyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWhFO0lBRU0sMkJBQTJCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFL0U7SUFFTSwrQkFBK0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVGO0lBRU0sNEJBQTRCLENBQUMsUUFBUSxFQUFFLHdCQUF3QixHQUFHLElBQUksQ0FFNUU7SUFFTSxpQ0FBaUMsQ0FBQyxRQUFRLEVBQUUsNkJBQTZCLEdBQUcsSUFBSSxDQUV0RjtJQUVNLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FFbEU7SUFFTSxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUUvRDtJQUVNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEM7SUFFTSxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbkQ7SUFFTSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRW5FO0lBRU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FFM0Q7SUFFTSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRW5FO0lBRU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBSTVFO0lBRU0saUJBQWlCLElBQUkscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBRXBEO0lBRU0saUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUUxQztJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFM0I7SUFFTSxPQUFPLElBQUksT0FBTyxDQUV4QjtJQUVNLFNBQVMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBRXhDO0lBRU0sTUFBTSxJQUFJLEdBQUcsR0FBRyxTQUFTLENBRS9CO0lBRU0sV0FBVyxJQUFJLElBQUksQ0FFekI7SUFFTSxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUV0RDtJQUVNLGdDQUFnQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBRWpIO0lBRU0seUJBQXlCLENBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV0RjtJQUVNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRWxFO0lBRU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVqRTtJQUVNLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWxDO0lBRU0sc0JBQXNCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdkU7SUFFTSxJQUFJLFNBRVY7SUFFTSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRTFEO0lBRU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FFakU7SUFFTSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FFNUU7SUFFTSxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUUzRDtJQUVNLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUUvQztJQUVNLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFaEQ7SUFFTSx1QkFBdUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWhEO0lBRU0sbUJBQW1CLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUU1QztJQUVELHFCQUFxQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWhEO0lBRUQscUJBQXFCLENBQ25CLFlBQVksRUFBRSxrQkFBa0IsRUFDaEMsUUFBUSxFQUFFLHlCQUF5QixFQUNuQyxVQUFVLENBQUMsRUFBRSw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWY7SUFDRCx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUU1RjtJQUdNLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUc7Q0FDdkUifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,GAAG,EACH,GAAG,EACH,wBAAwB,EACxB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"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"}
|