@aztec/txe 0.0.1-commit.b655e406 → 0.0.1-commit.c7c42ec
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/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 +5 -5
- 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 +20 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +95 -63
- package/dest/rpc_translator.d.ts +17 -8
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +69 -20
- package/dest/state_machine/archiver.d.ts +31 -14
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +105 -17
- package/dest/state_machine/dummy_p2p_client.d.ts +4 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +6 -1
- package/dest/state_machine/global_variable_builder.d.ts +5 -3
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +12 -0
- package/dest/state_machine/index.d.ts +5 -5
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +14 -20
- package/dest/state_machine/mock_epoch_cache.d.ts +6 -5
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +8 -7
- 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 +19 -13
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +55 -41
- package/dest/util/encoding.d.ts +623 -24
- 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 +19 -4
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +24 -3
- package/dest/utils/tx_effect_creation.d.ts +4 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +6 -6
- package/package.json +18 -17
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +8 -5
- package/src/oracle/txe_oracle_public_context.ts +6 -11
- package/src/oracle/txe_oracle_top_level_context.ts +126 -88
- package/src/rpc_translator.ts +90 -20
- package/src/state_machine/archiver.ts +141 -29
- package/src/state_machine/dummy_p2p_client.ts +9 -2
- package/src/state_machine/global_variable_builder.ts +21 -3
- package/src/state_machine/index.ts +19 -18
- package/src/state_machine/mock_epoch_cache.ts +12 -11
- package/src/state_machine/synchronizer.ts +8 -7
- package/src/txe_session.ts +113 -72
- 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 +35 -3
- package/src/utils/tx_effect_creation.ts +8 -7
- 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,13 @@
|
|
|
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 { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { packAsRetrievedNote } from '@aztec/pxe/simulator';
|
|
4
|
-
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
5
|
+
import { EventSelector, FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
7
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
8
|
import { addressFromSingle, arrayOfArraysToBoundedVecOfArrays, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle } from './util/encoding.js';
|
|
9
|
+
const MAX_EVENT_LEN = 12; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_RESERVED_FIELDS
|
|
10
|
+
const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
|
|
8
11
|
export class UnavailableOracleError extends Error {
|
|
9
12
|
constructor(oracleName){
|
|
10
13
|
super(`${oracleName} oracles not available with the current handler`);
|
|
@@ -64,7 +67,7 @@ export class RPCTranslator {
|
|
|
64
67
|
}
|
|
65
68
|
async txeSetPrivateTXEContext(foreignContractAddressIsSome, foreignContractAddressValue, foreignAnchorBlockNumberIsSome, foreignAnchorBlockNumberValue) {
|
|
66
69
|
const contractAddress = fromSingle(foreignContractAddressIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignContractAddressValue)) : undefined;
|
|
67
|
-
const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool() ? fromSingle(foreignAnchorBlockNumberValue).toNumber() : undefined;
|
|
70
|
+
const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool() ? BlockNumber(fromSingle(foreignAnchorBlockNumberValue).toNumber()) : undefined;
|
|
68
71
|
const privateContextInputs = await this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber);
|
|
69
72
|
return toForeignCallResult(privateContextInputs.toFields().map(toSingle));
|
|
70
73
|
}
|
|
@@ -80,6 +83,12 @@ export class RPCTranslator {
|
|
|
80
83
|
}
|
|
81
84
|
// Other oracles - these get handled by the oracle handler
|
|
82
85
|
// TXE-specific oracles
|
|
86
|
+
txeGetDefaultAddress() {
|
|
87
|
+
const defaultAddress = this.handlerAsTxe().txeGetDefaultAddress();
|
|
88
|
+
return toForeignCallResult([
|
|
89
|
+
toSingle(defaultAddress)
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
83
92
|
async txeGetNextBlockNumber() {
|
|
84
93
|
const nextBlockNumber = await this.handlerAsTxe().txeGetNextBlockNumber();
|
|
85
94
|
return toForeignCallResult([
|
|
@@ -163,8 +172,29 @@ export class RPCTranslator {
|
|
|
163
172
|
...arrayToBoundedVec(toArray(nullifiers), MAX_NULLIFIERS_PER_TX)
|
|
164
173
|
]);
|
|
165
174
|
}
|
|
166
|
-
|
|
167
|
-
|
|
175
|
+
async txeGetPrivateEvents(foreignSelector, foreignContractAddress, foreignScope) {
|
|
176
|
+
const selector = EventSelector.fromField(fromSingle(foreignSelector));
|
|
177
|
+
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
178
|
+
const scope = addressFromSingle(foreignScope);
|
|
179
|
+
const events = await this.handlerAsTxe().txeGetPrivateEvents(selector, contractAddress, scope);
|
|
180
|
+
if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
|
|
181
|
+
throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
|
|
182
|
+
}
|
|
183
|
+
if (events.some((e)=>e.length > MAX_EVENT_LEN)) {
|
|
184
|
+
throw new Error(`Some private event has length larger than maxLen ${MAX_EVENT_LEN}`);
|
|
185
|
+
}
|
|
186
|
+
// This is a workaround as Noir does not currently let us return nested structs with arrays. We instead return a raw
|
|
187
|
+
// multidimensional array in get_private_events_oracle and create the BoundedVecs here.
|
|
188
|
+
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();
|
|
189
|
+
const eventLengths = events.map((e)=>new Fr(e.length)).concat(Array(MAX_PRIVATE_EVENTS_PER_TXE_QUERY - events.length).fill(new Fr(0)));
|
|
190
|
+
const queryLength = new Fr(events.length);
|
|
191
|
+
return toForeignCallResult([
|
|
192
|
+
toArray(rawArrayStorage),
|
|
193
|
+
toArray(eventLengths),
|
|
194
|
+
toSingle(queryLength)
|
|
195
|
+
]);
|
|
196
|
+
}
|
|
197
|
+
privateStoreInExecutionCache(foreignValues, foreignHash) {
|
|
168
198
|
const values = fromArray(foreignValues);
|
|
169
199
|
const hash = fromSingle(foreignHash);
|
|
170
200
|
this.handlerAsPrivate().privateStoreInExecutionCache(values, hash);
|
|
@@ -189,7 +219,7 @@ export class RPCTranslator {
|
|
|
189
219
|
async utilityStorageRead(foreignContractAddress, foreignStartStorageSlot, foreignBlockNumber, foreignNumberOfElements) {
|
|
190
220
|
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
191
221
|
const startStorageSlot = fromSingle(foreignStartStorageSlot);
|
|
192
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
222
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
193
223
|
const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
|
|
194
224
|
const values = await this.handlerAsUtility().utilityStorageRead(contractAddress, startStorageSlot, blockNumber, numberOfElements);
|
|
195
225
|
return toForeignCallResult([
|
|
@@ -197,7 +227,7 @@ export class RPCTranslator {
|
|
|
197
227
|
]);
|
|
198
228
|
}
|
|
199
229
|
async utilityGetPublicDataWitness(foreignBlockNumber, foreignLeafSlot) {
|
|
200
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
230
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
201
231
|
const leafSlot = fromSingle(foreignLeafSlot);
|
|
202
232
|
const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(blockNumber, leafSlot);
|
|
203
233
|
if (!witness) {
|
|
@@ -205,7 +235,9 @@ export class RPCTranslator {
|
|
|
205
235
|
}
|
|
206
236
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
207
237
|
}
|
|
208
|
-
async utilityGetNotes(foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedRetrievedNoteLength) {
|
|
238
|
+
async utilityGetNotes(foreignOwnerIsSome, foreignOwnerValue, foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedRetrievedNoteLength) {
|
|
239
|
+
// Parse Option<AztecAddress>: ownerIsSome is 0 for None, 1 for Some
|
|
240
|
+
const owner = fromSingle(foreignOwnerIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignOwnerValue)) : undefined;
|
|
209
241
|
const storageSlot = fromSingle(foreignStorageSlot);
|
|
210
242
|
const numSelects = fromSingle(foreignNumSelects).toNumber();
|
|
211
243
|
const selectByIndexes = fromArray(foreignSelectByIndexes).map((fr)=>fr.toNumber());
|
|
@@ -222,20 +254,30 @@ export class RPCTranslator {
|
|
|
222
254
|
const status = fromSingle(foreignStatus).toNumber();
|
|
223
255
|
const maxNotes = fromSingle(foreignMaxNotes).toNumber();
|
|
224
256
|
const packedRetrievedNoteLength = fromSingle(foreignPackedRetrievedNoteLength).toNumber();
|
|
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(packAsRetrievedNote
|
|
257
|
+
const noteDatas = await this.handlerAsUtility().utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
|
|
258
|
+
const returnDataAsArrayOfArrays = noteDatas.map((noteData)=>packAsRetrievedNote({
|
|
259
|
+
contractAddress: noteData.contractAddress,
|
|
260
|
+
owner: noteData.owner,
|
|
261
|
+
randomness: noteData.randomness,
|
|
262
|
+
storageSlot: noteData.storageSlot,
|
|
263
|
+
noteNonce: noteData.noteNonce,
|
|
264
|
+
index: noteData.index,
|
|
265
|
+
note: noteData.note
|
|
266
|
+
}));
|
|
227
267
|
// Now we convert each sub-array to an array of ForeignCallSingles
|
|
228
268
|
const returnDataAsArrayOfForeignCallSingleArrays = returnDataAsArrayOfArrays.map((subArray)=>subArray.map(toSingle));
|
|
229
269
|
// At last we convert the array of arrays to a bounded vec of arrays
|
|
230
270
|
return toForeignCallResult(arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes, packedRetrievedNoteLength));
|
|
231
271
|
}
|
|
232
|
-
privateNotifyCreatedNote(foreignStorageSlot, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
|
|
272
|
+
privateNotifyCreatedNote(foreignOwner, foreignStorageSlot, foreignRandomness, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
|
|
273
|
+
const owner = addressFromSingle(foreignOwner);
|
|
233
274
|
const storageSlot = fromSingle(foreignStorageSlot);
|
|
275
|
+
const randomness = fromSingle(foreignRandomness);
|
|
234
276
|
const noteTypeId = NoteSelector.fromField(fromSingle(foreignNoteTypeId));
|
|
235
277
|
const note = fromArray(foreignNote);
|
|
236
278
|
const noteHash = fromSingle(foreignNoteHash);
|
|
237
279
|
const counter = fromSingle(foreignCounter).toNumber();
|
|
238
|
-
this.handlerAsPrivate().privateNotifyCreatedNote(storageSlot, noteTypeId, note, noteHash, counter);
|
|
280
|
+
this.handlerAsPrivate().privateNotifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
|
|
239
281
|
return toForeignCallResult([]);
|
|
240
282
|
}
|
|
241
283
|
async privateNotifyNullifiedNote(foreignInnerNullifier, foreignNoteHash, foreignCounter) {
|
|
@@ -287,7 +329,7 @@ export class RPCTranslator {
|
|
|
287
329
|
throw new Error('Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead');
|
|
288
330
|
}
|
|
289
331
|
async utilityGetNullifierMembershipWitness(foreignBlockNumber, foreignNullifier) {
|
|
290
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
332
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
291
333
|
const nullifier = fromSingle(foreignNullifier);
|
|
292
334
|
const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(blockNumber, nullifier);
|
|
293
335
|
if (!witness) {
|
|
@@ -314,12 +356,19 @@ export class RPCTranslator {
|
|
|
314
356
|
privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter) {
|
|
315
357
|
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
316
358
|
}
|
|
317
|
-
async
|
|
318
|
-
const
|
|
359
|
+
async privateIsSideEffectCounterRevertible(foreignSideEffectCounter) {
|
|
360
|
+
const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
|
|
361
|
+
const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(sideEffectCounter);
|
|
362
|
+
return toForeignCallResult([
|
|
363
|
+
toSingle(new Fr(isRevertible))
|
|
364
|
+
]);
|
|
365
|
+
}
|
|
366
|
+
utilityGetUtilityContext() {
|
|
367
|
+
const context = this.handlerAsUtility().utilityGetUtilityContext();
|
|
319
368
|
return toForeignCallResult(context.toNoirRepresentation());
|
|
320
369
|
}
|
|
321
370
|
async utilityGetBlockHeader(foreignBlockNumber) {
|
|
322
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
371
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
323
372
|
const header = await this.handlerAsUtility().utilityGetBlockHeader(blockNumber);
|
|
324
373
|
if (!header) {
|
|
325
374
|
throw new Error(`Block header not found for block ${blockNumber}.`);
|
|
@@ -327,7 +376,7 @@ export class RPCTranslator {
|
|
|
327
376
|
return toForeignCallResult(header.toFields().map(toSingle));
|
|
328
377
|
}
|
|
329
378
|
async utilityGetMembershipWitness(foreignBlockNumber, foreignTreeId, foreignLeafValue) {
|
|
330
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
379
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
331
380
|
const treeId = fromSingle(foreignTreeId).toNumber();
|
|
332
381
|
const leafValue = fromSingle(foreignLeafValue);
|
|
333
382
|
const witness = await this.handlerAsUtility().utilityGetMembershipWitness(blockNumber, treeId, leafValue);
|
|
@@ -340,7 +389,7 @@ export class RPCTranslator {
|
|
|
340
389
|
]);
|
|
341
390
|
}
|
|
342
391
|
async utilityGetLowNullifierMembershipWitness(foreignBlockNumber, foreignNullifier) {
|
|
343
|
-
const blockNumber = fromSingle(foreignBlockNumber).toNumber();
|
|
392
|
+
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
344
393
|
const nullifier = fromSingle(foreignNullifier);
|
|
345
394
|
const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(blockNumber, nullifier);
|
|
346
395
|
if (!witness) {
|
|
@@ -553,7 +602,7 @@ export class RPCTranslator {
|
|
|
553
602
|
avmOpcodeSuccessCopy() {
|
|
554
603
|
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
555
604
|
}
|
|
556
|
-
async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector,
|
|
605
|
+
async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
|
|
557
606
|
const from = addressFromSingle(foreignFrom);
|
|
558
607
|
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
559
608
|
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
@@ -565,7 +614,7 @@ export class RPCTranslator {
|
|
|
565
614
|
toArray(returnValues)
|
|
566
615
|
]);
|
|
567
616
|
}
|
|
568
|
-
async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector,
|
|
617
|
+
async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
|
|
569
618
|
const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
|
|
570
619
|
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
571
620
|
const args = fromArray(foreignArgs);
|
|
@@ -574,7 +623,7 @@ export class RPCTranslator {
|
|
|
574
623
|
toArray(returnValues)
|
|
575
624
|
]);
|
|
576
625
|
}
|
|
577
|
-
async txePublicCallNewFlow(foreignFrom, foreignAddress,
|
|
626
|
+
async txePublicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
|
|
578
627
|
const from = addressFromSingle(foreignFrom);
|
|
579
628
|
const address = addressFromSingle(foreignAddress);
|
|
580
629
|
const calldata = fromArray(foreignCalldata);
|
|
@@ -1,50 +1,65 @@
|
|
|
1
|
-
import { ArchiverStoreHelper
|
|
1
|
+
import { ArchiverStoreHelper } from '@aztec/archiver';
|
|
2
|
+
import { BlockNumber, CheckpointNumber, EpochNumber, 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
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
-
import
|
|
7
|
+
import { L2Block, type L2BlockNew, type L2BlockSource, type L2Tips, PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
|
|
8
|
+
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
7
9
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
8
10
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
9
11
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
10
12
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
11
13
|
export declare class TXEArchiver extends ArchiverStoreHelper implements L2BlockSource {
|
|
12
14
|
constructor(db: AztecAsyncKVStore);
|
|
13
|
-
|
|
15
|
+
getBlock(number: BlockNumber): Promise<L2Block | undefined>;
|
|
16
|
+
getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]>;
|
|
17
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], _result?: ValidateBlockResult): Promise<boolean>;
|
|
14
18
|
/**
|
|
15
19
|
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
16
20
|
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
17
21
|
*/
|
|
18
|
-
getBlockNumber(): Promise<
|
|
22
|
+
getBlockNumber(): Promise<BlockNumber>;
|
|
19
23
|
/**
|
|
20
24
|
* Gets the number of the latest L2 block proven seen by the block source implementation.
|
|
21
25
|
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
22
26
|
*/
|
|
23
|
-
getProvenBlockNumber(): Promise<
|
|
27
|
+
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
24
28
|
/**
|
|
25
29
|
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
26
30
|
* @param number - The block number to return (inclusive).
|
|
27
31
|
* @returns The requested L2 block.
|
|
28
32
|
*/
|
|
29
33
|
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
34
|
+
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
35
|
+
private retrievePublishedBlocks;
|
|
30
36
|
/**
|
|
31
37
|
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
32
38
|
* @param number - The block number to return (inclusive).
|
|
33
39
|
* @returns The requested L2 block.
|
|
34
40
|
*/
|
|
35
|
-
|
|
41
|
+
getL2Block(number: BlockNumber | 'latest'): Promise<L2Block | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Gets an L2 block (new format).
|
|
44
|
+
* @param number - The block number to return.
|
|
45
|
+
* @returns The requested L2 block.
|
|
46
|
+
*/
|
|
47
|
+
getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
36
48
|
/**
|
|
37
49
|
* Gets an l2 block header.
|
|
38
50
|
* @param number - The block number to return or 'latest' for the most recent one.
|
|
39
51
|
* @returns The requested L2 block header.
|
|
40
52
|
*/
|
|
41
53
|
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
getBlockRange(from: number, limit: number, _proven?: boolean): Promise<L2Block[]>;
|
|
55
|
+
getPublishedCheckpoints(_from: CheckpointNumber, _limit: number): Promise<PublishedCheckpoint[]>;
|
|
56
|
+
getCheckpointByArchive(_archive: Fr): Promise<Checkpoint | undefined>;
|
|
57
|
+
getL2SlotNumber(): Promise<SlotNumber | undefined>;
|
|
58
|
+
getL2EpochNumber(): Promise<EpochNumber>;
|
|
59
|
+
getCheckpointsForEpoch(_epochNumber: EpochNumber): Promise<Checkpoint[]>;
|
|
60
|
+
getBlocksForEpoch(_epochNumber: EpochNumber): Promise<L2Block[]>;
|
|
61
|
+
getBlockHeadersForEpoch(_epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
62
|
+
isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
|
|
48
63
|
getL2Tips(): Promise<L2Tips>;
|
|
49
64
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
50
65
|
getGenesisValues(): Promise<{
|
|
@@ -57,5 +72,7 @@ export declare class TXEArchiver extends ArchiverStoreHelper implements L2BlockS
|
|
|
57
72
|
getL1Timestamp(): Promise<bigint>;
|
|
58
73
|
isPendingChainInvalid(): Promise<boolean>;
|
|
59
74
|
getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
|
|
75
|
+
getPublishedBlockByHash(_blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
76
|
+
getPublishedBlockByArchive(_archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
60
77
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2FyY2hpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsT0FBTyxFQUVQLEtBQUssVUFBVSxFQUNmLEtBQUssYUFBYSxFQUNsQixLQUFLLE1BQU0sRUFDWCxnQkFBZ0IsRUFDaEIsS0FBSyxtQkFBbUIsRUFDekIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS2xELHFCQUFhLFdBQVksU0FBUSxtQkFBb0IsWUFBVyxhQUFhO0lBQzNFLFlBQVksRUFBRSxFQUFFLGlCQUFpQixFQUVoQztJQUVZLFFBQVEsQ0FBQyxNQUFNLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { ArchiverStoreHelper, KVArchiverDataStore } from '@aztec/archiver';
|
|
2
2
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import { isDefined } from '@aztec/foundation/types';
|
|
6
|
+
import { CommitteeAttestation, L2Block, PublishedL2Block } from '@aztec/stdlib/block';
|
|
7
|
+
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
4
8
|
// We are extending the ArchiverDataStoreHelper here because it provides most of the endpoints needed by the
|
|
5
9
|
// node for reading from and writing to state, without needing any of the extra overhead that the Archiver itself
|
|
6
10
|
// requires (i.e. an L1 client)
|
|
@@ -8,10 +12,25 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
8
12
|
constructor(db){
|
|
9
13
|
super(new KVArchiverDataStore(db, 9999));
|
|
10
14
|
}
|
|
11
|
-
async
|
|
15
|
+
async getBlock(number) {
|
|
16
|
+
if (number === 0) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const publishedBlocks = await this.getPublishedBlocks(number, 1);
|
|
20
|
+
if (publishedBlocks.length === 0) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return publishedBlocks[0].block;
|
|
24
|
+
}
|
|
25
|
+
async getBlocks(from, limit, proven) {
|
|
26
|
+
const publishedBlocks = await this.getPublishedBlocks(from, limit, proven);
|
|
27
|
+
return publishedBlocks.map((x)=>x.block);
|
|
28
|
+
}
|
|
29
|
+
async addCheckpoints(checkpoints, _result) {
|
|
30
|
+
const allBlocks = checkpoints.flatMap((ch)=>ch.checkpoint.blocks);
|
|
12
31
|
const opResults = await Promise.all([
|
|
13
|
-
this.store.addLogs(
|
|
14
|
-
this.store.
|
|
32
|
+
this.store.addLogs(allBlocks),
|
|
33
|
+
this.store.addCheckpoints(checkpoints)
|
|
15
34
|
]);
|
|
16
35
|
return opResults.every(Boolean);
|
|
17
36
|
}
|
|
@@ -19,13 +38,13 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
19
38
|
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
20
39
|
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
21
40
|
*/ getBlockNumber() {
|
|
22
|
-
return this.store.
|
|
41
|
+
return this.store.getLatestBlockNumber();
|
|
23
42
|
}
|
|
24
43
|
/**
|
|
25
44
|
* Gets the number of the latest L2 block proven seen by the block source implementation.
|
|
26
45
|
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
27
46
|
*/ getProvenBlockNumber() {
|
|
28
|
-
return this.store.
|
|
47
|
+
return this.store.getProvenBlockNumber();
|
|
29
48
|
}
|
|
30
49
|
/**
|
|
31
50
|
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
@@ -34,20 +53,53 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
34
53
|
*/ async getPublishedBlock(number) {
|
|
35
54
|
// If the number provided is -ve, then return the latest block.
|
|
36
55
|
if (number < 0) {
|
|
37
|
-
number = await this.store.
|
|
56
|
+
number = await this.store.getLatestBlockNumber();
|
|
38
57
|
}
|
|
39
58
|
if (number == 0) {
|
|
40
59
|
return undefined;
|
|
41
60
|
}
|
|
42
|
-
const
|
|
43
|
-
return
|
|
61
|
+
const publishedBlocks = await this.retrievePublishedBlocks(BlockNumber(number), 1);
|
|
62
|
+
return publishedBlocks.length === 0 ? undefined : publishedBlocks[0];
|
|
63
|
+
}
|
|
64
|
+
getPublishedBlocks(from, limit, proven) {
|
|
65
|
+
return this.retrievePublishedBlocks(from, limit, proven);
|
|
66
|
+
}
|
|
67
|
+
async retrievePublishedBlocks(from, limit, proven) {
|
|
68
|
+
const checkpoints = await this.store.getRangeOfCheckpoints(CheckpointNumber(from), limit);
|
|
69
|
+
const provenCheckpointNumber = await this.store.getProvenCheckpointNumber();
|
|
70
|
+
const blocks = (await Promise.all(checkpoints.map((ch)=>this.store.getBlocksForCheckpoint(ch.checkpointNumber)))).filter(isDefined);
|
|
71
|
+
const olbBlocks = [];
|
|
72
|
+
for(let i = 0; i < checkpoints.length; i++){
|
|
73
|
+
const blockForCheckpoint = blocks[i][0];
|
|
74
|
+
const checkpoint = checkpoints[i];
|
|
75
|
+
if (proven === true && checkpoint.checkpointNumber > provenCheckpointNumber) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const oldCheckpoint = new Checkpoint(blockForCheckpoint.archive, checkpoint.header, [
|
|
79
|
+
blockForCheckpoint
|
|
80
|
+
], checkpoint.checkpointNumber);
|
|
81
|
+
const oldBlock = L2Block.fromCheckpoint(oldCheckpoint);
|
|
82
|
+
const publishedBlock = new PublishedL2Block(oldBlock, checkpoint.l1, checkpoint.attestations.map((x)=>CommitteeAttestation.fromBuffer(x)));
|
|
83
|
+
olbBlocks.push(publishedBlock);
|
|
84
|
+
}
|
|
85
|
+
return olbBlocks;
|
|
44
86
|
}
|
|
45
87
|
/**
|
|
46
88
|
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
47
89
|
* @param number - The block number to return (inclusive).
|
|
48
90
|
* @returns The requested L2 block.
|
|
49
|
-
*/
|
|
50
|
-
return this.getPublishedBlock(number != 'latest' ? number : -1).then((
|
|
91
|
+
*/ getL2Block(number) {
|
|
92
|
+
return this.getPublishedBlock(number != 'latest' ? number : -1).then((b)=>b?.block);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Gets an L2 block (new format).
|
|
96
|
+
* @param number - The block number to return.
|
|
97
|
+
* @returns The requested L2 block.
|
|
98
|
+
*/ getL2BlockNew(number) {
|
|
99
|
+
if (number === 0) {
|
|
100
|
+
return Promise.resolve(undefined);
|
|
101
|
+
}
|
|
102
|
+
return this.store.getBlock(number);
|
|
51
103
|
}
|
|
52
104
|
/**
|
|
53
105
|
* Gets an l2 block header.
|
|
@@ -55,16 +107,22 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
55
107
|
* @returns The requested L2 block header.
|
|
56
108
|
*/ async getBlockHeader(number) {
|
|
57
109
|
if (number === 'latest') {
|
|
58
|
-
number = await this.store.
|
|
110
|
+
number = await this.store.getLatestBlockNumber();
|
|
59
111
|
}
|
|
60
112
|
if (number === 0) {
|
|
61
113
|
return undefined;
|
|
62
114
|
}
|
|
63
|
-
const headers = await this.store.getBlockHeaders(number, 1);
|
|
115
|
+
const headers = await this.store.getBlockHeaders(BlockNumber(number), 1);
|
|
64
116
|
return headers.length === 0 ? undefined : headers[0];
|
|
65
117
|
}
|
|
66
|
-
|
|
67
|
-
return this.getPublishedBlocks(from, limit).then((blocks)=>blocks.map((b)=>b.block));
|
|
118
|
+
getBlockRange(from, limit, _proven) {
|
|
119
|
+
return this.getPublishedBlocks(BlockNumber(from), limit).then((blocks)=>blocks.map((b)=>b.block));
|
|
120
|
+
}
|
|
121
|
+
getPublishedCheckpoints(_from, _limit) {
|
|
122
|
+
throw new Error('TXE Archiver does not implement "getPublishedCheckpoints"');
|
|
123
|
+
}
|
|
124
|
+
getCheckpointByArchive(_archive) {
|
|
125
|
+
throw new Error('TXE Archiver does not implement "getCheckpointByArchive"');
|
|
68
126
|
}
|
|
69
127
|
getL2SlotNumber() {
|
|
70
128
|
throw new Error('TXE Archiver does not implement "getL2SlotNumber"');
|
|
@@ -72,6 +130,9 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
72
130
|
getL2EpochNumber() {
|
|
73
131
|
throw new Error('TXE Archiver does not implement "getL2EpochNumber"');
|
|
74
132
|
}
|
|
133
|
+
getCheckpointsForEpoch(_epochNumber) {
|
|
134
|
+
throw new Error('TXE Archiver does not implement "getCheckpointsForEpoch"');
|
|
135
|
+
}
|
|
75
136
|
getBlocksForEpoch(_epochNumber) {
|
|
76
137
|
throw new Error('TXE Archiver does not implement "getBlocksForEpoch"');
|
|
77
138
|
}
|
|
@@ -81,8 +142,29 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
81
142
|
isEpochComplete(_epochNumber) {
|
|
82
143
|
throw new Error('TXE Archiver does not implement "isEpochComplete"');
|
|
83
144
|
}
|
|
84
|
-
getL2Tips() {
|
|
85
|
-
|
|
145
|
+
async getL2Tips() {
|
|
146
|
+
// In TXE there is no possibility of reorgs and no blocks are ever getting proven so we just set 'latest', 'proven'
|
|
147
|
+
// and 'finalized' to the latest block.
|
|
148
|
+
const blockHeader = await this.getBlockHeader('latest');
|
|
149
|
+
if (!blockHeader) {
|
|
150
|
+
throw new Error('L2Tips requested from TXE Archiver but no block header found');
|
|
151
|
+
}
|
|
152
|
+
const number = blockHeader.globalVariables.blockNumber;
|
|
153
|
+
const hash = (await blockHeader.hash()).toString();
|
|
154
|
+
return {
|
|
155
|
+
latest: {
|
|
156
|
+
number,
|
|
157
|
+
hash
|
|
158
|
+
},
|
|
159
|
+
proven: {
|
|
160
|
+
number,
|
|
161
|
+
hash
|
|
162
|
+
},
|
|
163
|
+
finalized: {
|
|
164
|
+
number,
|
|
165
|
+
hash
|
|
166
|
+
}
|
|
167
|
+
};
|
|
86
168
|
}
|
|
87
169
|
getL1Constants() {
|
|
88
170
|
throw new Error('TXE Archiver does not implement "getL2Constants"');
|
|
@@ -115,4 +197,10 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
115
197
|
valid: true
|
|
116
198
|
});
|
|
117
199
|
}
|
|
200
|
+
getPublishedBlockByHash(_blockHash) {
|
|
201
|
+
throw new Error('Method not implemented.');
|
|
202
|
+
}
|
|
203
|
+
getPublishedBlockByArchive(_archive) {
|
|
204
|
+
throw new Error('Method not implemented.');
|
|
205
|
+
}
|
|
118
206
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { AuthRequest, ENR, P2P, P2PBlockReceivedCallback, 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
5
|
import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
5
6
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
7
|
export declare class DummyP2P implements P2P {
|
|
8
|
+
broadcastAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
7
9
|
validate(_txs: Tx[]): Promise<void>;
|
|
8
10
|
clear(): Promise<void>;
|
|
9
11
|
getPendingTxs(): Promise<Tx[]>;
|
|
@@ -28,7 +30,7 @@ export declare class DummyP2P implements P2P {
|
|
|
28
30
|
getEnr(): ENR | undefined;
|
|
29
31
|
isP2PClient(): true;
|
|
30
32
|
getTxsByHash(_txHashes: TxHash[]): Promise<Tx[]>;
|
|
31
|
-
getAttestationsForSlot(_slot:
|
|
33
|
+
getAttestationsForSlot(_slot: SlotNumber, _proposalId?: string): Promise<BlockAttestation[]>;
|
|
32
34
|
deleteAttestation(_attestation: BlockAttestation): Promise<void>;
|
|
33
35
|
addAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
34
36
|
getL2BlockHash(_number: number): Promise<string | undefined>;
|
|
@@ -49,4 +51,4 @@ export declare class DummyP2P implements P2P {
|
|
|
49
51
|
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
50
52
|
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
51
53
|
}
|
|
52
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfcDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvZHVtbXlfcDJwX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFDVixXQUFXLEVBQ1gsR0FBRyxFQUNILEdBQUcsRUFDSCx3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsYUFBYSxFQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQscUJBQWEsUUFBUyxZQUFXLEdBQUc7SUFDM0IscUJBQXFCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU3RTtJQUVNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV6QztJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sYUFBYSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVwQztJQUVNLGFBQWEsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVsRDtJQUVNLFFBQVEsQ0FBQyxl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
|
|
@@ -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,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,QAAS,YAAW,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export class DummyP2P {
|
|
2
|
+
broadcastAttestations(_attestations) {
|
|
3
|
+
return Promise.resolve();
|
|
4
|
+
}
|
|
2
5
|
validate(_txs) {
|
|
3
6
|
return Promise.resolve();
|
|
4
7
|
}
|
|
@@ -42,7 +45,9 @@ export class DummyP2P {
|
|
|
42
45
|
throw new Error('DummyP2P does not implement "getArchivedTxByHash"');
|
|
43
46
|
}
|
|
44
47
|
getTxStatus(_txHash) {
|
|
45
|
-
|
|
48
|
+
// In TXE there is no concept of transactions but we need to implement this because of tagging. We return 'mined'
|
|
49
|
+
// tx status for any tx hash.
|
|
50
|
+
return Promise.resolve('mined');
|
|
46
51
|
}
|
|
47
52
|
iteratePendingTxs() {
|
|
48
53
|
throw new Error('DummyP2P does not implement "iteratePendingTxs"');
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { BlockNumber, type SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
4
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
4
|
-
import { type GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
|
+
import { type CheckpointGlobalVariables, type GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
6
|
export declare class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
|
|
6
7
|
getCurrentBaseFees(): Promise<GasFees>;
|
|
7
|
-
buildGlobalVariables(_blockNumber:
|
|
8
|
+
buildGlobalVariables(_blockNumber: BlockNumber, _coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber?: SlotNumber): Promise<GlobalVariables>;
|
|
9
|
+
buildCheckpointGlobalVariables(_coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber: SlotNumber): Promise<CheckpointGlobalVariables>;
|
|
8
10
|
}
|
|
9
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsT0FBTyxFQUFFLEtBQUsseUJBQXlCLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRyxxQkFBYSx5QkFBMEIsWUFBVyxxQkFBcUI7SUFDOUQsa0JBQWtCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUU1QztJQUVNLG9CQUFvQixDQUN6QixZQUFZLEVBQUUsV0FBVyxFQUN6QixTQUFTLEVBQUUsVUFBVSxFQUNyQixhQUFhLEVBQUUsWUFBWSxFQUMzQixXQUFXLENBQUMsRUFBRSxVQUFVLEdBQ3ZCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7SUFFTSw4QkFBOEIsQ0FDbkMsU0FBUyxFQUFFLFVBQVUsRUFDckIsYUFBYSxFQUFFLFlBQVksRUFDM0IsV0FBVyxFQUFFLFVBQVUsR0FDdEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBV3BDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,KAAK,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/G,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE5C;IAEM,oBAAoB,CACzB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,UAAU,GACvB,OAAO,CAAC,eAAe,CAAC,CAE1B;IAEM,8BAA8B,CACnC,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,yBAAyB,CAAC,CAWpC;CACF"}
|
|
@@ -7,4 +7,16 @@ export class TXEGlobalVariablesBuilder {
|
|
|
7
7
|
buildGlobalVariables(_blockNumber, _coinbase, _feeRecipient, _slotNumber) {
|
|
8
8
|
return Promise.resolve(makeGlobalVariables());
|
|
9
9
|
}
|
|
10
|
+
buildCheckpointGlobalVariables(_coinbase, _feeRecipient, _slotNumber) {
|
|
11
|
+
const vars = makeGlobalVariables();
|
|
12
|
+
return Promise.resolve({
|
|
13
|
+
chainId: vars.chainId,
|
|
14
|
+
version: vars.version,
|
|
15
|
+
slotNumber: vars.slotNumber,
|
|
16
|
+
timestamp: vars.timestamp,
|
|
17
|
+
coinbase: vars.coinbase,
|
|
18
|
+
feeRecipient: vars.feeRecipient,
|
|
19
|
+
gasFees: vars.gasFees
|
|
20
|
+
});
|
|
21
|
+
}
|
|
10
22
|
}
|