@aztec/txe 4.0.0-nightly.20260112 → 4.0.0-nightly.20260114
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/oracle/txe_oracle_top_level_context.d.ts +1 -1
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +2 -1
- package/dest/rpc_translator.js +1 -1
- package/dest/state_machine/archiver.d.ts +21 -65
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +57 -170
- package/dest/state_machine/dummy_p2p_client.d.ts +8 -7
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +13 -10
- package/dest/state_machine/mock_epoch_cache.d.ts +2 -1
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +3 -0
- package/dest/utils/block_creation.d.ts +1 -1
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +1 -1
- package/package.json +15 -15
- package/src/oracle/txe_oracle_top_level_context.ts +2 -1
- package/src/rpc_translator.ts +1 -1
- package/src/state_machine/archiver.ts +55 -202
- package/src/state_machine/dummy_p2p_client.ts +18 -13
- package/src/state_machine/mock_epoch_cache.ts +4 -0
- package/src/utils/block_creation.ts +1 -0
|
@@ -62,4 +62,4 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
|
|
|
62
62
|
close(): [bigint, Map<string, AuthWitness>];
|
|
63
63
|
private getLastBlockNumber;
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUVULGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUVuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFJTCxLQUFLLFdBQVcsRUFNakIsTUFBTSxzQkFBc0IsQ0FBQztBQWdCOUIsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsYUFBYSxFQUFnQixnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLDJCQUEyQixFQUF5QixNQUFNLHdCQUF3QixDQUFDO0FBWWpHLE9BQU8sRUFTTCxNQUFNLEVBRVAsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EAET,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,KAAK,WAAW,EAMjB,MAAM,sBAAsB,CAAC;AAgB9B,OAAO,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAgB,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,2BAA2B,EAAyB,MAAM,wBAAwB,CAAC;AAYjG,OAAO,EASL,MAAM,EAEP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,wBAAyB,YAAW,WAAW,EAAE,mBAAmB;IAO7E,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IApBlB,MAAM,OAAiB;IACvB,KAAK,OAAiB;IAEtB,OAAO,CAAC,MAAM,CAAS;IAEvB,YACU,YAAY,EAAE,eAAe,EAC7B,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,eAAe,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAI3C;IAED,oCAAoC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM1D;IAID,qBAAqB,IAAI,EAAE,CAE1B;IAGD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAOlE;IAED,oBAAoB,IAAI,YAAY,CAEnC;IAEK,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAElD;IAED,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE1C;IAEK,wBAAwB,oBAE7B;IAEK,mBAAmB;;;;
|
|
1
|
+
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,8 @@ export class TXEOracleTopLevelContext {
|
|
|
97
97
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
98
98
|
}
|
|
99
99
|
async txeGetLastTxEffects() {
|
|
100
|
-
const
|
|
100
|
+
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
101
|
+
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
101
102
|
if (block.body.txEffects.length != 1) {
|
|
102
103
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
103
104
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
package/dest/rpc_translator.js
CHANGED
|
@@ -261,7 +261,7 @@ export class RPCTranslator {
|
|
|
261
261
|
randomness: noteData.randomness,
|
|
262
262
|
storageSlot: noteData.storageSlot,
|
|
263
263
|
noteNonce: noteData.noteNonce,
|
|
264
|
-
|
|
264
|
+
isPending: noteData.isPending,
|
|
265
265
|
note: noteData.note
|
|
266
266
|
}));
|
|
267
267
|
// Now we convert each sub-array to an array of ForeignCallSingles
|
|
@@ -1,78 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ArchiveSourceBase } from '@aztec/archiver';
|
|
2
|
+
import { type EpochNumber, type SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
6
|
-
import type
|
|
7
|
-
import {
|
|
8
|
-
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
9
|
-
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
|
+
import { L2Block, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
7
|
+
import { Checkpoint, type PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
10
8
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
11
9
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/**
|
|
11
|
+
* TXE Archiver implementation.
|
|
12
|
+
* Provides most of the endpoints needed by the node for reading from and writing to state,
|
|
13
|
+
* without needing any of the extra overhead that the Archiver itself requires (i.e. an L1 client).
|
|
14
|
+
*/
|
|
15
|
+
export declare class TXEArchiver extends ArchiveSourceBase {
|
|
14
16
|
constructor(db: AztecAsyncKVStore);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* Gets the number of the latest L2 block proven seen by the block source implementation.
|
|
25
|
-
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
26
|
-
*/
|
|
27
|
-
getProvenBlockNumber(): Promise<BlockNumber>;
|
|
28
|
-
/**
|
|
29
|
-
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
30
|
-
* @param number - The block number to return (inclusive).
|
|
31
|
-
* @returns The requested L2 block.
|
|
32
|
-
*/
|
|
33
|
-
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
34
|
-
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
35
|
-
private retrievePublishedBlocks;
|
|
36
|
-
/**
|
|
37
|
-
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
38
|
-
* @param number - The block number to return (inclusive).
|
|
39
|
-
* @returns The requested L2 block.
|
|
40
|
-
*/
|
|
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>;
|
|
48
|
-
/**
|
|
49
|
-
* Gets an l2 block header.
|
|
50
|
-
* @param number - The block number to return or 'latest' for the most recent one.
|
|
51
|
-
* @returns The requested L2 block header.
|
|
52
|
-
*/
|
|
53
|
-
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
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>;
|
|
17
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], result?: ValidateCheckpointResult): Promise<boolean>;
|
|
18
|
+
getRollupAddress(): Promise<EthAddress>;
|
|
19
|
+
getRegistryAddress(): Promise<EthAddress>;
|
|
20
|
+
getL1Constants(): Promise<L1RollupConstants>;
|
|
21
|
+
getGenesisValues(): Promise<{
|
|
22
|
+
genesisArchiveRoot: Fr;
|
|
23
|
+
}>;
|
|
24
|
+
getL1Timestamp(): Promise<bigint | undefined>;
|
|
25
|
+
getL2Tips(): Promise<L2Tips>;
|
|
57
26
|
getL2SlotNumber(): Promise<SlotNumber | undefined>;
|
|
58
|
-
getL2EpochNumber(): Promise<EpochNumber>;
|
|
27
|
+
getL2EpochNumber(): Promise<EpochNumber | undefined>;
|
|
59
28
|
getCheckpointsForEpoch(_epochNumber: EpochNumber): Promise<Checkpoint[]>;
|
|
60
29
|
getBlocksForEpoch(_epochNumber: EpochNumber): Promise<L2Block[]>;
|
|
61
30
|
getBlockHeadersForEpoch(_epochNumber: EpochNumber): Promise<BlockHeader[]>;
|
|
62
31
|
isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
|
|
63
|
-
getL2Tips(): Promise<L2Tips>;
|
|
64
|
-
getL1Constants(): Promise<L1RollupConstants>;
|
|
65
|
-
getGenesisValues(): Promise<{
|
|
66
|
-
genesisArchiveRoot: Fr;
|
|
67
|
-
}>;
|
|
68
32
|
syncImmediate(): Promise<void>;
|
|
69
|
-
getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
70
|
-
getRollupAddress(): Promise<EthAddress>;
|
|
71
|
-
getRegistryAddress(): Promise<EthAddress>;
|
|
72
|
-
getL1Timestamp(): Promise<bigint>;
|
|
73
|
-
isPendingChainInvalid(): Promise<boolean>;
|
|
74
|
-
getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
|
|
75
|
-
getPublishedBlockByHash(_blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
76
|
-
getPublishedBlockByArchive(_archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
77
33
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2FyY2hpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBdUQsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RyxPQUFPLEVBQW9CLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLE9BQU8sRUFHUCxLQUFLLE1BQU0sRUFDWCxLQUFLLHdCQUF3QixFQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7Ozs7R0FJRztBQUNILHFCQUFhLFdBQVksU0FBUSxpQkFBaUI7SUFDaEQsWUFBWSxFQUFFLEVBQUUsaUJBQWlCLEVBR2hDO0lBR00sY0FBYyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFN0c7SUFJTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTdDO0lBRU0sa0JBQWtCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUUvQztJQUVNLGNBQWMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FFbEQ7SUFFTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUM7UUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDLENBRTdEO0lBRU0sY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRW5EO0lBRVksU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0E4QnhDO0lBRU0sZUFBZSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRXhEO0lBRU0sZ0JBQWdCLElBQUksT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FFMUQ7SUFFTSxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUU5RTtJQUVNLGlCQUFpQixDQUFDLFlBQVksRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBRXRFO0lBRU0sdUJBQXVCLENBQUMsWUFBWSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FFaEY7SUFFTSxlQUFlLENBQUMsWUFBWSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWxFO0lBRU0sYUFBYSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEM7Q0FDRiJ9
|
|
@@ -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,iBAAiB,EAAuD,MAAM,iBAAiB,CAAC;AAEzG,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,EAEL,OAAO,EAGP,KAAK,MAAM,EACX,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,iBAAiB;IAChD,YAAY,EAAE,EAAE,iBAAiB,EAGhC;IAGM,cAAc,CAAC,WAAW,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7G;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,sBAAsB,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAE9E;IAEM,iBAAiB,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEtE;IAEM,uBAAuB,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAEhF;IAEM,eAAe,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAElE;IAEM,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;CACF"}
|
|
@@ -1,128 +1,73 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArchiveSourceBase, KVArchiverDataStore, addCheckpointsWithContractData } from '@aztec/archiver';
|
|
2
2
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// requires (i.e. an L1 client)
|
|
11
|
-
export class TXEArchiver extends ArchiverStoreHelper {
|
|
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 ArchiveSourceBase {
|
|
12
10
|
constructor(db){
|
|
13
|
-
|
|
11
|
+
const store = new KVArchiverDataStore(db, 9999);
|
|
12
|
+
super(store);
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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);
|
|
31
|
-
const opResults = await Promise.all([
|
|
32
|
-
this.store.addLogs(allBlocks),
|
|
33
|
-
this.store.addCheckpoints(checkpoints)
|
|
34
|
-
]);
|
|
35
|
-
return opResults.every(Boolean);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
39
|
-
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
40
|
-
*/ getBlockNumber() {
|
|
41
|
-
return this.store.getLatestBlockNumber();
|
|
14
|
+
// TXE-specific method for adding checkpoints
|
|
15
|
+
addCheckpoints(checkpoints, result) {
|
|
16
|
+
return addCheckpointsWithContractData(this.store, checkpoints, result);
|
|
42
17
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*/ getProvenBlockNumber() {
|
|
47
|
-
return this.store.getProvenBlockNumber();
|
|
18
|
+
// Abstract method implementations
|
|
19
|
+
getRollupAddress() {
|
|
20
|
+
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
48
21
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* @param number - The block number to return (inclusive).
|
|
52
|
-
* @returns The requested L2 block.
|
|
53
|
-
*/ async getPublishedBlock(number) {
|
|
54
|
-
// If the number provided is -ve, then return the latest block.
|
|
55
|
-
if (number < 0) {
|
|
56
|
-
number = await this.store.getLatestBlockNumber();
|
|
57
|
-
}
|
|
58
|
-
if (number == 0) {
|
|
59
|
-
return undefined;
|
|
60
|
-
}
|
|
61
|
-
const publishedBlocks = await this.retrievePublishedBlocks(BlockNumber(number), 1);
|
|
62
|
-
return publishedBlocks.length === 0 ? undefined : publishedBlocks[0];
|
|
22
|
+
getRegistryAddress() {
|
|
23
|
+
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
63
24
|
}
|
|
64
|
-
|
|
65
|
-
|
|
25
|
+
getL1Constants() {
|
|
26
|
+
throw new Error('TXE Archiver does not implement "getL1Constants"');
|
|
66
27
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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;
|
|
28
|
+
getGenesisValues() {
|
|
29
|
+
return Promise.resolve({
|
|
30
|
+
genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT)
|
|
31
|
+
});
|
|
86
32
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
* @param number - The block number to return (inclusive).
|
|
90
|
-
* @returns The requested L2 block.
|
|
91
|
-
*/ getL2Block(number) {
|
|
92
|
-
return this.getPublishedBlock(number != 'latest' ? number : -1).then((b)=>b?.block);
|
|
33
|
+
getL1Timestamp() {
|
|
34
|
+
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
93
35
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return Promise.resolve(undefined);
|
|
36
|
+
async getL2Tips() {
|
|
37
|
+
// In TXE there is no possibility of reorgs and no blocks are ever getting proven so we just set 'latest', 'proven'
|
|
38
|
+
// and 'finalized' to the latest block.
|
|
39
|
+
const blockHeader = await this.getBlockHeader('latest');
|
|
40
|
+
if (!blockHeader) {
|
|
41
|
+
throw new Error('L2Tips requested from TXE Archiver but no block header found');
|
|
101
42
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
* @returns The requested L2 block header.
|
|
108
|
-
*/ async getBlockHeader(number) {
|
|
109
|
-
if (number === 'latest') {
|
|
110
|
-
number = await this.store.getLatestBlockNumber();
|
|
43
|
+
const number = blockHeader.globalVariables.blockNumber;
|
|
44
|
+
const hash = (await blockHeader.hash()).toString();
|
|
45
|
+
const checkpointedBlock = await this.getCheckpointedBlock(number);
|
|
46
|
+
if (!checkpointedBlock) {
|
|
47
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpointed block found for block number ${number}`);
|
|
111
48
|
}
|
|
112
|
-
|
|
113
|
-
|
|
49
|
+
const checkpoint = await this.store.getRangeOfCheckpoints(CheckpointNumber(number), 1);
|
|
50
|
+
if (checkpoint.length === 0) {
|
|
51
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpoint found for block number ${number}`);
|
|
114
52
|
}
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
53
|
+
const blockId = {
|
|
54
|
+
number,
|
|
55
|
+
hash
|
|
56
|
+
};
|
|
57
|
+
const checkpointId = {
|
|
58
|
+
number: checkpoint[0].checkpointNumber,
|
|
59
|
+
hash: checkpoint[0].header.hash().toString()
|
|
60
|
+
};
|
|
61
|
+
const tipId = {
|
|
62
|
+
block: blockId,
|
|
63
|
+
checkpoint: checkpointId
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
proposed: blockId,
|
|
67
|
+
proven: tipId,
|
|
68
|
+
finalized: tipId,
|
|
69
|
+
checkpointed: tipId
|
|
70
|
+
};
|
|
126
71
|
}
|
|
127
72
|
getL2SlotNumber() {
|
|
128
73
|
throw new Error('TXE Archiver does not implement "getL2SlotNumber"');
|
|
@@ -142,65 +87,7 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
142
87
|
isEpochComplete(_epochNumber) {
|
|
143
88
|
throw new Error('TXE Archiver does not implement "isEpochComplete"');
|
|
144
89
|
}
|
|
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
|
-
};
|
|
168
|
-
}
|
|
169
|
-
getL1Constants() {
|
|
170
|
-
throw new Error('TXE Archiver does not implement "getL2Constants"');
|
|
171
|
-
}
|
|
172
|
-
getGenesisValues() {
|
|
173
|
-
return Promise.resolve({
|
|
174
|
-
genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT)
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
90
|
syncImmediate() {
|
|
178
91
|
throw new Error('TXE Archiver does not implement "syncImmediate"');
|
|
179
92
|
}
|
|
180
|
-
getContract(_address, _timestamp) {
|
|
181
|
-
throw new Error('TXE Archiver does not implement "getContract"');
|
|
182
|
-
}
|
|
183
|
-
getRollupAddress() {
|
|
184
|
-
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
185
|
-
}
|
|
186
|
-
getRegistryAddress() {
|
|
187
|
-
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
188
|
-
}
|
|
189
|
-
getL1Timestamp() {
|
|
190
|
-
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
191
|
-
}
|
|
192
|
-
isPendingChainInvalid() {
|
|
193
|
-
return Promise.resolve(false);
|
|
194
|
-
}
|
|
195
|
-
getPendingChainValidationStatus() {
|
|
196
|
-
return Promise.resolve({
|
|
197
|
-
valid: true
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
getPublishedBlockByHash(_blockHash) {
|
|
201
|
-
throw new Error('Method not implemented.');
|
|
202
|
-
}
|
|
203
|
-
getPublishedBlockByArchive(_archive) {
|
|
204
|
-
throw new Error('Method not implemented.');
|
|
205
|
-
}
|
|
206
93
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import type { AuthRequest, ENR, P2P, P2PBlockReceivedCallback, P2PConfig, P2PSyncState, PeerId, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolValidators, StatusMessage } from '@aztec/p2p';
|
|
2
|
+
import type { AuthRequest, ENR, P2P, P2PBlockReceivedCallback, P2PCheckpointReceivedCallback, P2PConfig, P2PSyncState, PeerId, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolValidators, StatusMessage } from '@aztec/p2p';
|
|
3
3
|
import type { EthAddress, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
|
|
4
4
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import type {
|
|
5
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
|
|
6
6
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
export declare class DummyP2P implements P2P {
|
|
8
|
-
broadcastAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
9
8
|
validate(_txs: Tx[]): Promise<void>;
|
|
10
9
|
clear(): Promise<void>;
|
|
11
10
|
getPendingTxs(): Promise<Tx[]>;
|
|
12
11
|
getEncodedEnr(): Promise<string | undefined>;
|
|
13
12
|
getPeers(_includePending?: boolean): Promise<PeerInfo[]>;
|
|
14
13
|
broadcastProposal(_proposal: BlockProposal): Promise<void>;
|
|
14
|
+
broadcastCheckpointProposal(_proposal: CheckpointProposal): Promise<void>;
|
|
15
|
+
broadcastCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void>;
|
|
15
16
|
registerBlockProposalHandler(_handler: P2PBlockReceivedCallback): void;
|
|
17
|
+
registerCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void;
|
|
16
18
|
requestTxs(_txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
17
19
|
requestTxByHash(_txHash: TxHash): Promise<Tx | undefined>;
|
|
18
20
|
sendTx(_tx: Tx): Promise<void>;
|
|
@@ -30,9 +32,8 @@ export declare class DummyP2P implements P2P {
|
|
|
30
32
|
getEnr(): ENR | undefined;
|
|
31
33
|
isP2PClient(): true;
|
|
32
34
|
getTxsByHash(_txHashes: TxHash[]): Promise<Tx[]>;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
addAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
35
|
+
getCheckpointAttestationsForSlot(_slot: SlotNumber, _proposalId?: string): Promise<CheckpointAttestation[]>;
|
|
36
|
+
addCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void>;
|
|
36
37
|
getL2BlockHash(_number: number): Promise<string | undefined>;
|
|
37
38
|
updateP2PConfig(_config: Partial<P2PConfig>): Promise<void>;
|
|
38
39
|
getL2Tips(): Promise<L2Tips>;
|
|
@@ -51,4 +52,4 @@ export declare class DummyP2P implements P2P {
|
|
|
51
52
|
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
52
53
|
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
53
54
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfcDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvZHVtbXlfcDJwX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFDVixXQUFXLEVBQ1gsR0FBRyxFQUNILEdBQUcsRUFDSCx3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLGFBQWEsRUFDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELHFCQUFhLFFBQVMsWUFBVyxHQUFHO0lBQzNCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV6QztJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sYUFBYSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVwQztJQUVNLGFBQWEsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVsRDtJQUVNLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxD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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,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,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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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export class DummyP2P {
|
|
2
|
-
broadcastAttestations(_attestations) {
|
|
3
|
-
return Promise.resolve();
|
|
4
|
-
}
|
|
5
2
|
validate(_txs) {
|
|
6
3
|
return Promise.resolve();
|
|
7
4
|
}
|
|
@@ -20,9 +17,18 @@ export class DummyP2P {
|
|
|
20
17
|
broadcastProposal(_proposal) {
|
|
21
18
|
throw new Error('DummyP2P does not implement "broadcastProposal"');
|
|
22
19
|
}
|
|
20
|
+
broadcastCheckpointProposal(_proposal) {
|
|
21
|
+
throw new Error('DummyP2P does not implement "broadcastCheckpointProposal"');
|
|
22
|
+
}
|
|
23
|
+
broadcastCheckpointAttestations(_attestations) {
|
|
24
|
+
throw new Error('DummyP2P does not implement "broadcastCheckpointAttestations"');
|
|
25
|
+
}
|
|
23
26
|
registerBlockProposalHandler(_handler) {
|
|
24
27
|
throw new Error('DummyP2P does not implement "registerBlockProposalHandler"');
|
|
25
28
|
}
|
|
29
|
+
registerCheckpointProposalHandler(_handler) {
|
|
30
|
+
throw new Error('DummyP2P does not implement "registerCheckpointProposalHandler"');
|
|
31
|
+
}
|
|
26
32
|
requestTxs(_txHashes) {
|
|
27
33
|
throw new Error('DummyP2P does not implement "requestTxs"');
|
|
28
34
|
}
|
|
@@ -76,14 +82,11 @@ export class DummyP2P {
|
|
|
76
82
|
getTxsByHash(_txHashes) {
|
|
77
83
|
throw new Error('DummyP2P does not implement "getTxsByHash"');
|
|
78
84
|
}
|
|
79
|
-
|
|
80
|
-
throw new Error('DummyP2P does not implement "
|
|
81
|
-
}
|
|
82
|
-
deleteAttestation(_attestation) {
|
|
83
|
-
return Promise.resolve();
|
|
85
|
+
getCheckpointAttestationsForSlot(_slot, _proposalId) {
|
|
86
|
+
throw new Error('DummyP2P does not implement "getCheckpointAttestationsForSlot"');
|
|
84
87
|
}
|
|
85
|
-
|
|
86
|
-
throw new Error('DummyP2P does not implement "
|
|
88
|
+
addCheckpointAttestations(_attestations) {
|
|
89
|
+
throw new Error('DummyP2P does not implement "addCheckpointAttestations"');
|
|
87
90
|
}
|
|
88
91
|
getL2BlockHash(_number) {
|
|
89
92
|
throw new Error('DummyP2P does not implement "getL2BlockHash"');
|
|
@@ -19,8 +19,9 @@ export declare class MockEpochCache implements EpochCacheInterface {
|
|
|
19
19
|
currentSlot: SlotNumber;
|
|
20
20
|
nextSlot: SlotNumber;
|
|
21
21
|
}>;
|
|
22
|
+
getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined>;
|
|
22
23
|
isInCommittee(_slot: SlotTag, _validator: EthAddress): Promise<boolean>;
|
|
23
24
|
getRegisteredValidators(): Promise<EthAddress[]>;
|
|
24
25
|
filterInCommittee(_slot: SlotTag, _validators: EthAddress[]): Promise<EthAddress[]>;
|
|
25
26
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBTTFDO0lBRUQsa0JBQWtCLElBQUksWUFBWSxDQU1qQztJQUVELDJCQUEyQixJQUFJLFlBQVksR0FBRztRQUFFLEdBQUcsRUFBRSxNQUFNLENBQUE7S0FBRSxDQU81RDtJQUVELHdCQUF3QixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBRTdGO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRWpHO0lBRUQsNkNBQTZDLElBQUksT0FBTyxDQUFDO1FBQ3ZELGVBQWUsRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLFlBQVksRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDeEIsUUFBUSxFQUFFLFVBQVUsQ0FBQztLQUN0QixDQUFDLENBT0Q7SUFFRCxnQ0FBZ0MsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRW5GO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXRFO0lBRUQsdUJBQXVCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRS9DO0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRWxGO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAM1C;IAED,kBAAkB,IAAI,YAAY,CAMjC;IAED,2BAA2B,IAAI,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAO5D;IAED,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE7F;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjG;IAED,6CAA6C,IAAI,OAAO,CAAC;QACvD,eAAe,EAAE,UAAU,GAAG,SAAS,CAAC;QACxC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;QACrC,WAAW,EAAE,UAAU,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC;KACtB,CAAC,CAOD;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;IAED,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE/C;IAED,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAElF;CACF"}
|
|
1
|
+
{"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAM1C;IAED,kBAAkB,IAAI,YAAY,CAMjC;IAED,2BAA2B,IAAI,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAO5D;IAED,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE7F;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjG;IAED,6CAA6C,IAAI,OAAO,CAAC;QACvD,eAAe,EAAE,UAAU,GAAG,SAAS,CAAC;QACxC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;QACrC,WAAW,EAAE,UAAU,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC;KACtB,CAAC,CAOD;IAED,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEnF;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;IAED,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE/C;IAED,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAElF;CACF"}
|
|
@@ -39,6 +39,9 @@ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
39
39
|
nextSlot: SlotNumber(0)
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
+
getProposerAttesterAddressInSlot(_slot) {
|
|
43
|
+
return Promise.resolve(undefined);
|
|
44
|
+
}
|
|
42
45
|
isInCommittee(_slot, _validator) {
|
|
43
46
|
return Promise.resolve(false);
|
|
44
47
|
}
|
|
@@ -25,4 +25,4 @@ export declare function makeTXEBlockHeader(worldTrees: MerkleTreeWriteOperations
|
|
|
25
25
|
* @returns The created L2Block with proper archive chaining
|
|
26
26
|
*/
|
|
27
27
|
export declare function makeTXEBlock(worldTrees: MerkleTreeWriteOperations, globalVariables: GlobalVariables, txEffects: TxEffect[]): Promise<L2Block>;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfY3JlYXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ibG9ja19jcmVhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBUSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUF3QyxLQUFLLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RDs7OztHQUlHO0FBQ0gsd0JBQWdCLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsRUFBRSxDQUV4RTtBQUVELHdCQUFzQiw0QkFBNEIsQ0FDaEQsUUFBUSxFQUFFLFFBQVEsRUFDbEIsVUFBVSxFQUFFLHlCQUF5QixHQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0JmO0FBRUQsd0JBQXNCLGtCQUFrQixDQUN0QyxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLGVBQWUsRUFBRSxlQUFlLEdBQy9CLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FnQnhCO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxlQUFlLEVBQUUsZUFBZSxFQUNoQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FXbEIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_creation.d.ts","sourceRoot":"","sources":["../../src/utils/block_creation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAQ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAwC,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAExE;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"block_creation.d.ts","sourceRoot":"","sources":["../../src/utils/block_creation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAQ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAwC,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAExE;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAWlB"}
|
|
@@ -19,7 +19,7 @@ export async function insertTxEffectIntoWorldTrees(txEffect, worldTrees) {
|
|
|
19
19
|
export async function makeTXEBlockHeader(worldTrees, globalVariables) {
|
|
20
20
|
const stateReference = await worldTrees.getStateReference();
|
|
21
21
|
const archiveInfo = await worldTrees.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
22
|
-
return new L2BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), Fr.ZERO, Fr.ZERO, stateReference, globalVariables, Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO);
|
|
22
|
+
return new L2BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), Fr.ZERO, Fr.ZERO, Fr.ZERO, stateReference, globalVariables, Fr.ZERO, Fr.ZERO, Fr.ZERO, Fr.ZERO);
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Creates an L2Block with proper archive chaining.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/txe",
|
|
3
|
-
"version": "4.0.0-nightly.
|
|
3
|
+
"version": "4.0.0-nightly.20260114",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"bin": "./dest/bin/index.js",
|
|
@@ -61,20 +61,20 @@
|
|
|
61
61
|
]
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@aztec/accounts": "4.0.0-nightly.
|
|
65
|
-
"@aztec/archiver": "4.0.0-nightly.
|
|
66
|
-
"@aztec/aztec-node": "4.0.0-nightly.
|
|
67
|
-
"@aztec/aztec.js": "4.0.0-nightly.
|
|
68
|
-
"@aztec/bb-prover": "4.0.0-nightly.
|
|
69
|
-
"@aztec/constants": "4.0.0-nightly.
|
|
70
|
-
"@aztec/foundation": "4.0.0-nightly.
|
|
71
|
-
"@aztec/key-store": "4.0.0-nightly.
|
|
72
|
-
"@aztec/kv-store": "4.0.0-nightly.
|
|
73
|
-
"@aztec/protocol-contracts": "4.0.0-nightly.
|
|
74
|
-
"@aztec/pxe": "4.0.0-nightly.
|
|
75
|
-
"@aztec/simulator": "4.0.0-nightly.
|
|
76
|
-
"@aztec/stdlib": "4.0.0-nightly.
|
|
77
|
-
"@aztec/world-state": "4.0.0-nightly.
|
|
64
|
+
"@aztec/accounts": "4.0.0-nightly.20260114",
|
|
65
|
+
"@aztec/archiver": "4.0.0-nightly.20260114",
|
|
66
|
+
"@aztec/aztec-node": "4.0.0-nightly.20260114",
|
|
67
|
+
"@aztec/aztec.js": "4.0.0-nightly.20260114",
|
|
68
|
+
"@aztec/bb-prover": "4.0.0-nightly.20260114",
|
|
69
|
+
"@aztec/constants": "4.0.0-nightly.20260114",
|
|
70
|
+
"@aztec/foundation": "4.0.0-nightly.20260114",
|
|
71
|
+
"@aztec/key-store": "4.0.0-nightly.20260114",
|
|
72
|
+
"@aztec/kv-store": "4.0.0-nightly.20260114",
|
|
73
|
+
"@aztec/protocol-contracts": "4.0.0-nightly.20260114",
|
|
74
|
+
"@aztec/pxe": "4.0.0-nightly.20260114",
|
|
75
|
+
"@aztec/simulator": "4.0.0-nightly.20260114",
|
|
76
|
+
"@aztec/stdlib": "4.0.0-nightly.20260114",
|
|
77
|
+
"@aztec/world-state": "4.0.0-nightly.20260114",
|
|
78
78
|
"zod": "^3.23.8"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
@@ -156,7 +156,8 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
async txeGetLastTxEffects() {
|
|
159
|
-
const
|
|
159
|
+
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
160
|
+
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
160
161
|
|
|
161
162
|
if (block!.body.txEffects.length != 1) {
|
|
162
163
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
package/src/rpc_translator.ts
CHANGED
|
@@ -1,187 +1,96 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArchiveSourceBase, KVArchiverDataStore, addCheckpointsWithContractData } from '@aztec/archiver';
|
|
2
2
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { CheckpointNumber, type EpochNumber, type SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
-
import { isDefined } from '@aztec/foundation/types';
|
|
7
6
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
8
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
7
|
import {
|
|
10
|
-
|
|
8
|
+
type CheckpointId,
|
|
11
9
|
L2Block,
|
|
12
10
|
type L2BlockId,
|
|
13
|
-
type
|
|
14
|
-
type L2BlockSource,
|
|
11
|
+
type L2TipId,
|
|
15
12
|
type L2Tips,
|
|
16
|
-
|
|
17
|
-
type ValidateBlockResult,
|
|
13
|
+
type ValidateCheckpointResult,
|
|
18
14
|
} from '@aztec/stdlib/block';
|
|
19
|
-
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
20
|
-
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
15
|
+
import { Checkpoint, type PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
21
16
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
22
17
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
23
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
/**
|
|
20
|
+
* TXE Archiver implementation.
|
|
21
|
+
* Provides most of the endpoints needed by the node for reading from and writing to state,
|
|
22
|
+
* without needing any of the extra overhead that the Archiver itself requires (i.e. an L1 client).
|
|
23
|
+
*/
|
|
24
|
+
export class TXEArchiver extends ArchiveSourceBase {
|
|
29
25
|
constructor(db: AztecAsyncKVStore) {
|
|
30
|
-
|
|
26
|
+
const store = new KVArchiverDataStore(db, 9999);
|
|
27
|
+
super(store);
|
|
31
28
|
}
|
|
32
29
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
const publishedBlocks = await this.getPublishedBlocks(number, 1);
|
|
38
|
-
if (publishedBlocks.length === 0) {
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
return publishedBlocks[0].block;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
public async getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]> {
|
|
45
|
-
const publishedBlocks = await this.getPublishedBlocks(from, limit, proven);
|
|
46
|
-
return publishedBlocks.map(x => x.block);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public override async addCheckpoints(
|
|
50
|
-
checkpoints: PublishedCheckpoint[],
|
|
51
|
-
_result?: ValidateBlockResult,
|
|
52
|
-
): Promise<boolean> {
|
|
53
|
-
const allBlocks = checkpoints.flatMap(ch => ch.checkpoint.blocks);
|
|
54
|
-
const opResults = await Promise.all([this.store.addLogs(allBlocks), this.store.addCheckpoints(checkpoints)]);
|
|
55
|
-
|
|
56
|
-
return opResults.every(Boolean);
|
|
30
|
+
// TXE-specific method for adding checkpoints
|
|
31
|
+
public addCheckpoints(checkpoints: PublishedCheckpoint[], result?: ValidateCheckpointResult): Promise<boolean> {
|
|
32
|
+
return addCheckpointsWithContractData(this.store, checkpoints, result);
|
|
57
33
|
}
|
|
58
34
|
|
|
59
|
-
|
|
60
|
-
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
61
|
-
* @returns The number of the latest L2 block processed by the block source implementation.
|
|
62
|
-
*/
|
|
63
|
-
public getBlockNumber(): Promise<BlockNumber> {
|
|
64
|
-
return this.store.getLatestBlockNumber();
|
|
65
|
-
}
|
|
35
|
+
// Abstract method implementations
|
|
66
36
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
70
|
-
*/
|
|
71
|
-
public override getProvenBlockNumber(): Promise<BlockNumber> {
|
|
72
|
-
return this.store.getProvenBlockNumber();
|
|
37
|
+
public getRollupAddress(): Promise<EthAddress> {
|
|
38
|
+
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
73
39
|
}
|
|
74
40
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @param number - The block number to return (inclusive).
|
|
78
|
-
* @returns The requested L2 block.
|
|
79
|
-
*/
|
|
80
|
-
public async getPublishedBlock(number: number): Promise<PublishedL2Block | undefined> {
|
|
81
|
-
// If the number provided is -ve, then return the latest block.
|
|
82
|
-
if (number < 0) {
|
|
83
|
-
number = await this.store.getLatestBlockNumber();
|
|
84
|
-
}
|
|
85
|
-
if (number == 0) {
|
|
86
|
-
return undefined;
|
|
87
|
-
}
|
|
88
|
-
const publishedBlocks = await this.retrievePublishedBlocks(BlockNumber(number), 1);
|
|
89
|
-
return publishedBlocks.length === 0 ? undefined : publishedBlocks[0];
|
|
41
|
+
public getRegistryAddress(): Promise<EthAddress> {
|
|
42
|
+
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
90
43
|
}
|
|
91
44
|
|
|
92
|
-
|
|
93
|
-
|
|
45
|
+
public getL1Constants(): Promise<L1RollupConstants> {
|
|
46
|
+
throw new Error('TXE Archiver does not implement "getL1Constants"');
|
|
94
47
|
}
|
|
95
48
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
limit: number,
|
|
99
|
-
proven?: boolean,
|
|
100
|
-
): Promise<PublishedL2Block[]> {
|
|
101
|
-
const checkpoints = await this.store.getRangeOfCheckpoints(CheckpointNumber(from), limit);
|
|
102
|
-
const provenCheckpointNumber = await this.store.getProvenCheckpointNumber();
|
|
103
|
-
const blocks = (
|
|
104
|
-
await Promise.all(checkpoints.map(ch => this.store.getBlocksForCheckpoint(ch.checkpointNumber)))
|
|
105
|
-
).filter(isDefined);
|
|
106
|
-
|
|
107
|
-
const olbBlocks: PublishedL2Block[] = [];
|
|
108
|
-
for (let i = 0; i < checkpoints.length; i++) {
|
|
109
|
-
const blockForCheckpoint = blocks[i][0];
|
|
110
|
-
const checkpoint = checkpoints[i];
|
|
111
|
-
if (proven === true && checkpoint.checkpointNumber > provenCheckpointNumber) {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
const oldCheckpoint = new Checkpoint(
|
|
115
|
-
blockForCheckpoint.archive,
|
|
116
|
-
checkpoint.header,
|
|
117
|
-
[blockForCheckpoint],
|
|
118
|
-
checkpoint.checkpointNumber,
|
|
119
|
-
);
|
|
120
|
-
const oldBlock = L2Block.fromCheckpoint(oldCheckpoint);
|
|
121
|
-
const publishedBlock = new PublishedL2Block(
|
|
122
|
-
oldBlock,
|
|
123
|
-
checkpoint.l1,
|
|
124
|
-
checkpoint.attestations.map(x => CommitteeAttestation.fromBuffer(x)),
|
|
125
|
-
);
|
|
126
|
-
olbBlocks.push(publishedBlock);
|
|
127
|
-
}
|
|
128
|
-
return olbBlocks;
|
|
49
|
+
public getGenesisValues(): Promise<{ genesisArchiveRoot: Fr }> {
|
|
50
|
+
return Promise.resolve({ genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT) });
|
|
129
51
|
}
|
|
130
52
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
* @param number - The block number to return (inclusive).
|
|
134
|
-
* @returns The requested L2 block.
|
|
135
|
-
*/
|
|
136
|
-
public getL2Block(number: BlockNumber | 'latest'): Promise<L2Block | undefined> {
|
|
137
|
-
return this.getPublishedBlock(number != 'latest' ? number : -1).then(b => b?.block);
|
|
53
|
+
public getL1Timestamp(): Promise<bigint | undefined> {
|
|
54
|
+
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
138
55
|
}
|
|
139
56
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (number === 0) {
|
|
147
|
-
return Promise.resolve(undefined);
|
|
57
|
+
public async getL2Tips(): Promise<L2Tips> {
|
|
58
|
+
// In TXE there is no possibility of reorgs and no blocks are ever getting proven so we just set 'latest', 'proven'
|
|
59
|
+
// and 'finalized' to the latest block.
|
|
60
|
+
const blockHeader = await this.getBlockHeader('latest');
|
|
61
|
+
if (!blockHeader) {
|
|
62
|
+
throw new Error('L2Tips requested from TXE Archiver but no block header found');
|
|
148
63
|
}
|
|
149
|
-
return this.store.getBlock(number);
|
|
150
|
-
}
|
|
151
64
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
public async getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined> {
|
|
158
|
-
if (number === 'latest') {
|
|
159
|
-
number = await this.store.getLatestBlockNumber();
|
|
65
|
+
const number = blockHeader.globalVariables.blockNumber;
|
|
66
|
+
const hash = (await blockHeader.hash()).toString();
|
|
67
|
+
const checkpointedBlock = await this.getCheckpointedBlock(number);
|
|
68
|
+
if (!checkpointedBlock) {
|
|
69
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpointed block found for block number ${number}`);
|
|
160
70
|
}
|
|
161
|
-
|
|
162
|
-
|
|
71
|
+
const checkpoint = await this.store.getRangeOfCheckpoints(CheckpointNumber(number), 1);
|
|
72
|
+
if (checkpoint.length === 0) {
|
|
73
|
+
throw new Error(`L2Tips requested from TXE Archiver but no checkpoint found for block number ${number}`);
|
|
163
74
|
}
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
public getCheckpointByArchive(_archive: Fr): Promise<Checkpoint | undefined> {
|
|
177
|
-
throw new Error('TXE Archiver does not implement "getCheckpointByArchive"');
|
|
75
|
+
const blockId: L2BlockId = { number, hash };
|
|
76
|
+
const checkpointId: CheckpointId = {
|
|
77
|
+
number: checkpoint[0].checkpointNumber,
|
|
78
|
+
hash: checkpoint[0].header.hash().toString(),
|
|
79
|
+
};
|
|
80
|
+
const tipId: L2TipId = { block: blockId, checkpoint: checkpointId };
|
|
81
|
+
return {
|
|
82
|
+
proposed: blockId,
|
|
83
|
+
proven: tipId,
|
|
84
|
+
finalized: tipId,
|
|
85
|
+
checkpointed: tipId,
|
|
86
|
+
};
|
|
178
87
|
}
|
|
179
88
|
|
|
180
89
|
public getL2SlotNumber(): Promise<SlotNumber | undefined> {
|
|
181
90
|
throw new Error('TXE Archiver does not implement "getL2SlotNumber"');
|
|
182
91
|
}
|
|
183
92
|
|
|
184
|
-
public getL2EpochNumber(): Promise<EpochNumber> {
|
|
93
|
+
public getL2EpochNumber(): Promise<EpochNumber | undefined> {
|
|
185
94
|
throw new Error('TXE Archiver does not implement "getL2EpochNumber"');
|
|
186
95
|
}
|
|
187
96
|
|
|
@@ -201,63 +110,7 @@ export class TXEArchiver extends ArchiverStoreHelper implements L2BlockSource {
|
|
|
201
110
|
throw new Error('TXE Archiver does not implement "isEpochComplete"');
|
|
202
111
|
}
|
|
203
112
|
|
|
204
|
-
public async getL2Tips(): Promise<L2Tips> {
|
|
205
|
-
// In TXE there is no possibility of reorgs and no blocks are ever getting proven so we just set 'latest', 'proven'
|
|
206
|
-
// and 'finalized' to the latest block.
|
|
207
|
-
const blockHeader = await this.getBlockHeader('latest');
|
|
208
|
-
if (!blockHeader) {
|
|
209
|
-
throw new Error('L2Tips requested from TXE Archiver but no block header found');
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
const number = blockHeader.globalVariables.blockNumber;
|
|
213
|
-
const hash = (await blockHeader.hash()).toString();
|
|
214
|
-
return {
|
|
215
|
-
latest: { number, hash } as L2BlockId,
|
|
216
|
-
proven: { number, hash } as L2BlockId,
|
|
217
|
-
finalized: { number, hash } as L2BlockId,
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
public getL1Constants(): Promise<L1RollupConstants> {
|
|
222
|
-
throw new Error('TXE Archiver does not implement "getL2Constants"');
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
public getGenesisValues(): Promise<{ genesisArchiveRoot: Fr }> {
|
|
226
|
-
return Promise.resolve({ genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT) });
|
|
227
|
-
}
|
|
228
|
-
|
|
229
113
|
public syncImmediate(): Promise<void> {
|
|
230
114
|
throw new Error('TXE Archiver does not implement "syncImmediate"');
|
|
231
115
|
}
|
|
232
|
-
|
|
233
|
-
public getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined> {
|
|
234
|
-
throw new Error('TXE Archiver does not implement "getContract"');
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
public getRollupAddress(): Promise<EthAddress> {
|
|
238
|
-
throw new Error('TXE Archiver does not implement "getRollupAddress"');
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
public getRegistryAddress(): Promise<EthAddress> {
|
|
242
|
-
throw new Error('TXE Archiver does not implement "getRegistryAddress"');
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
public getL1Timestamp(): Promise<bigint> {
|
|
246
|
-
throw new Error('TXE Archiver does not implement "getL1Timestamp"');
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
public isPendingChainInvalid(): Promise<boolean> {
|
|
250
|
-
return Promise.resolve(false);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
public override getPendingChainValidationStatus(): Promise<ValidateBlockResult> {
|
|
254
|
-
return Promise.resolve({ valid: true });
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
getPublishedBlockByHash(_blockHash: Fr): Promise<PublishedL2Block | undefined> {
|
|
258
|
-
throw new Error('Method not implemented.');
|
|
259
|
-
}
|
|
260
|
-
getPublishedBlockByArchive(_archive: Fr): Promise<PublishedL2Block | undefined> {
|
|
261
|
-
throw new Error('Method not implemented.');
|
|
262
|
-
}
|
|
263
116
|
}
|
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
ENR,
|
|
5
5
|
P2P,
|
|
6
6
|
P2PBlockReceivedCallback,
|
|
7
|
+
P2PCheckpointReceivedCallback,
|
|
7
8
|
P2PConfig,
|
|
8
9
|
P2PSyncState,
|
|
9
10
|
PeerId,
|
|
@@ -14,14 +15,10 @@ import type {
|
|
|
14
15
|
} from '@aztec/p2p';
|
|
15
16
|
import type { EthAddress, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
|
|
16
17
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
17
|
-
import type {
|
|
18
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
|
|
18
19
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
19
20
|
|
|
20
21
|
export class DummyP2P implements P2P {
|
|
21
|
-
public broadcastAttestations(_attestations: BlockAttestation[]): Promise<void> {
|
|
22
|
-
return Promise.resolve();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
22
|
public validate(_txs: Tx[]): Promise<void> {
|
|
26
23
|
return Promise.resolve();
|
|
27
24
|
}
|
|
@@ -46,10 +43,22 @@ export class DummyP2P implements P2P {
|
|
|
46
43
|
throw new Error('DummyP2P does not implement "broadcastProposal"');
|
|
47
44
|
}
|
|
48
45
|
|
|
46
|
+
public broadcastCheckpointProposal(_proposal: CheckpointProposal): Promise<void> {
|
|
47
|
+
throw new Error('DummyP2P does not implement "broadcastCheckpointProposal"');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public broadcastCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {
|
|
51
|
+
throw new Error('DummyP2P does not implement "broadcastCheckpointAttestations"');
|
|
52
|
+
}
|
|
53
|
+
|
|
49
54
|
public registerBlockProposalHandler(_handler: P2PBlockReceivedCallback): void {
|
|
50
55
|
throw new Error('DummyP2P does not implement "registerBlockProposalHandler"');
|
|
51
56
|
}
|
|
52
57
|
|
|
58
|
+
public registerCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void {
|
|
59
|
+
throw new Error('DummyP2P does not implement "registerCheckpointProposalHandler"');
|
|
60
|
+
}
|
|
61
|
+
|
|
53
62
|
public requestTxs(_txHashes: TxHash[]): Promise<(Tx | undefined)[]> {
|
|
54
63
|
throw new Error('DummyP2P does not implement "requestTxs"');
|
|
55
64
|
}
|
|
@@ -120,16 +129,12 @@ export class DummyP2P implements P2P {
|
|
|
120
129
|
throw new Error('DummyP2P does not implement "getTxsByHash"');
|
|
121
130
|
}
|
|
122
131
|
|
|
123
|
-
public
|
|
124
|
-
throw new Error('DummyP2P does not implement "
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
public deleteAttestation(_attestation: BlockAttestation): Promise<void> {
|
|
128
|
-
return Promise.resolve();
|
|
132
|
+
public getCheckpointAttestationsForSlot(_slot: SlotNumber, _proposalId?: string): Promise<CheckpointAttestation[]> {
|
|
133
|
+
throw new Error('DummyP2P does not implement "getCheckpointAttestationsForSlot"');
|
|
129
134
|
}
|
|
130
135
|
|
|
131
|
-
public
|
|
132
|
-
throw new Error('DummyP2P does not implement "
|
|
136
|
+
public addCheckpointAttestations(_attestations: CheckpointAttestation[]): Promise<void> {
|
|
137
|
+
throw new Error('DummyP2P does not implement "addCheckpointAttestations"');
|
|
133
138
|
}
|
|
134
139
|
|
|
135
140
|
public getL2BlockHash(_number: number): Promise<string | undefined> {
|
|
@@ -54,6 +54,10 @@ export class MockEpochCache implements EpochCacheInterface {
|
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined> {
|
|
58
|
+
return Promise.resolve(undefined);
|
|
59
|
+
}
|
|
60
|
+
|
|
57
61
|
isInCommittee(_slot: SlotTag, _validator: EthAddress): Promise<boolean> {
|
|
58
62
|
return Promise.resolve(false);
|
|
59
63
|
}
|