@aztec/aztec-node 5.0.0-private.20260319 → 5.0.0-rc.2
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/aztec-node/block_response_helpers.d.ts +25 -0
- package/dest/aztec-node/block_response_helpers.d.ts.map +1 -0
- package/dest/aztec-node/block_response_helpers.js +112 -0
- package/dest/aztec-node/config.d.ts +16 -4
- package/dest/aztec-node/config.d.ts.map +1 -1
- package/dest/aztec-node/config.js +15 -5
- package/dest/aztec-node/node_public_calls_simulator.d.ts +90 -0
- package/dest/aztec-node/node_public_calls_simulator.d.ts.map +1 -0
- package/dest/aztec-node/node_public_calls_simulator.js +346 -0
- package/dest/aztec-node/public_data_overrides.d.ts +13 -0
- package/dest/aztec-node/public_data_overrides.d.ts.map +1 -0
- package/dest/aztec-node/public_data_overrides.js +21 -0
- package/dest/aztec-node/register_node_rpc_handlers.d.ts +10 -0
- package/dest/aztec-node/register_node_rpc_handlers.d.ts.map +1 -0
- package/dest/aztec-node/register_node_rpc_handlers.js +31 -0
- package/dest/aztec-node/server.d.ts +128 -134
- package/dest/aztec-node/server.d.ts.map +1 -1
- package/dest/aztec-node/server.js +393 -820
- package/dest/bin/index.js +15 -10
- package/dest/factory.d.ts +33 -0
- package/dest/factory.d.ts.map +1 -0
- package/dest/factory.js +496 -0
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/modules/block_parameter.d.ts +25 -0
- package/dest/modules/block_parameter.d.ts.map +1 -0
- package/dest/modules/block_parameter.js +100 -0
- package/dest/modules/node_block_provider.d.ts +19 -0
- package/dest/modules/node_block_provider.d.ts.map +1 -0
- package/dest/modules/node_block_provider.js +112 -0
- package/dest/modules/node_tx_receipt.d.ts +24 -0
- package/dest/modules/node_tx_receipt.d.ts.map +1 -0
- package/dest/modules/node_tx_receipt.js +70 -0
- package/dest/modules/node_world_state_queries.d.ts +61 -0
- package/dest/modules/node_world_state_queries.d.ts.map +1 -0
- package/dest/modules/node_world_state_queries.js +257 -0
- package/dest/sentinel/config.d.ts +3 -2
- package/dest/sentinel/config.d.ts.map +1 -1
- package/dest/sentinel/config.js +15 -5
- package/dest/sentinel/factory.d.ts +5 -3
- package/dest/sentinel/factory.d.ts.map +1 -1
- package/dest/sentinel/factory.js +12 -5
- package/dest/sentinel/sentinel.d.ts +145 -21
- package/dest/sentinel/sentinel.d.ts.map +1 -1
- package/dest/sentinel/sentinel.js +227 -105
- package/dest/sentinel/store.d.ts +8 -8
- package/dest/sentinel/store.d.ts.map +1 -1
- package/dest/sentinel/store.js +25 -17
- package/dest/test/index.d.ts +3 -3
- package/dest/test/index.d.ts.map +1 -1
- package/package.json +28 -26
- package/src/aztec-node/block_response_helpers.ts +161 -0
- package/src/aztec-node/config.ts +30 -7
- package/src/aztec-node/node_public_calls_simulator.ts +383 -0
- package/src/aztec-node/public_data_overrides.ts +35 -0
- package/src/aztec-node/register_node_rpc_handlers.ts +29 -0
- package/src/aztec-node/server.ts +514 -1070
- package/src/bin/index.ts +19 -12
- package/src/factory.ts +656 -0
- package/src/index.ts +2 -0
- package/src/modules/block_parameter.ts +93 -0
- package/src/modules/node_block_provider.ts +149 -0
- package/src/modules/node_tx_receipt.ts +115 -0
- package/src/modules/node_world_state_queries.ts +360 -0
- package/src/sentinel/README.md +103 -0
- package/src/sentinel/config.ts +18 -6
- package/src/sentinel/factory.ts +21 -6
- package/src/sentinel/sentinel.ts +277 -130
- package/src/sentinel/store.ts +26 -18
- package/src/test/index.ts +2 -2
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { BlockHash, BlockTag } from '@aztec/stdlib/block';
|
|
3
|
+
/** True when `value` is a {@link BlockTag}. */ export function isBlockTag(value) {
|
|
4
|
+
return BlockTag.includes(value);
|
|
5
|
+
}
|
|
6
|
+
/** True when `value` is a {@link CheckpointTag}. */ export function isCheckpointTag(value) {
|
|
7
|
+
return value === 'checkpointed' || value === 'proven' || value === 'finalized';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Normalizes a {@link BlockParameter} (which may be a bare value) into a {@link NormalizedBlockParameter}
|
|
11
|
+
* object form. Performs no chain-tip resolution — tag lookups are deferred to the underlying block source.
|
|
12
|
+
*/ export function normalizeBlockParameter(param) {
|
|
13
|
+
if (BlockHash.isBlockHash(param)) {
|
|
14
|
+
return {
|
|
15
|
+
hash: param
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (typeof param === 'number') {
|
|
19
|
+
return {
|
|
20
|
+
number: param
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (typeof param === 'string') {
|
|
24
|
+
if (isBlockTag(param)) {
|
|
25
|
+
return {
|
|
26
|
+
tag: param === 'latest' ? 'proposed' : param
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
throw new BadRequestError(`Invalid BlockParameter tag: ${param}`);
|
|
30
|
+
}
|
|
31
|
+
if (typeof param === 'object' && param !== null) {
|
|
32
|
+
if ('number' in param) {
|
|
33
|
+
return {
|
|
34
|
+
number: param.number
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if ('hash' in param) {
|
|
38
|
+
return {
|
|
39
|
+
hash: param.hash
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if ('archive' in param) {
|
|
43
|
+
return {
|
|
44
|
+
archive: param.archive
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if ('tag' in param) {
|
|
48
|
+
if (isBlockTag(param.tag)) {
|
|
49
|
+
return {
|
|
50
|
+
tag: param.tag
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
throw new BadRequestError(`Invalid BlockParameter tag: ${param.tag}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
throw new BadRequestError(`Invalid BlockParameter: ${JSON.stringify(param)}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolves a {@link CheckpointParameter} into a concrete `{ number }` or `{ slot }` query.
|
|
60
|
+
*
|
|
61
|
+
* Tag-based parameters (`'checkpointed'`, `'proven'`, `'finalized'`) are translated up-front to the
|
|
62
|
+
* corresponding tip's checkpoint number via {@link L2BlockSource.getL2Tips}. After resolution the unified
|
|
63
|
+
* `getCheckpoint` flow can perform a single confirmed→proposed lookup against either store.
|
|
64
|
+
*/ export async function resolveCheckpointParameter(param, blockSource) {
|
|
65
|
+
if (typeof param === 'number') {
|
|
66
|
+
return {
|
|
67
|
+
number: param
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (isCheckpointTag(param)) {
|
|
71
|
+
const tips = await blockSource.getL2Tips();
|
|
72
|
+
switch(param){
|
|
73
|
+
case 'checkpointed':
|
|
74
|
+
return {
|
|
75
|
+
number: tips.checkpointed.checkpoint.number
|
|
76
|
+
};
|
|
77
|
+
case 'proven':
|
|
78
|
+
return {
|
|
79
|
+
number: tips.proven.checkpoint.number
|
|
80
|
+
};
|
|
81
|
+
case 'finalized':
|
|
82
|
+
return {
|
|
83
|
+
number: tips.finalized.checkpoint.number
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (typeof param === 'object' && param !== null) {
|
|
88
|
+
if ('number' in param) {
|
|
89
|
+
return {
|
|
90
|
+
number: param.number
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if ('slot' in param) {
|
|
94
|
+
return {
|
|
95
|
+
slot: param.slot
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new BadRequestError(`Invalid CheckpointParameter: ${JSON.stringify(param)}`);
|
|
100
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { BlockData, BlockParameter, L2BlockSource } from '@aztec/stdlib/block';
|
|
3
|
+
import type { BlockIncludeOptions, BlockResponse, BlocksIncludeOptions, CheckpointIncludeOptions, CheckpointParameter, CheckpointResponse } from '@aztec/stdlib/interfaces/client';
|
|
4
|
+
/**
|
|
5
|
+
* Serves the node's block and checkpoint read queries, assembling RPC responses (optionally including
|
|
6
|
+
* transactions, L1 publish info, and attestations) from the underlying block source. Extracted from
|
|
7
|
+
* `AztecNodeService` to keep `server.ts` smaller.
|
|
8
|
+
*/
|
|
9
|
+
export declare class NodeBlockProvider {
|
|
10
|
+
#private;
|
|
11
|
+
private readonly blockSource;
|
|
12
|
+
constructor(blockSource: L2BlockSource);
|
|
13
|
+
getBlock<Opts extends BlockIncludeOptions = {}>(param: BlockParameter, options?: Opts): Promise<BlockResponse<Opts> | undefined>;
|
|
14
|
+
getBlockData(param: BlockParameter): Promise<BlockData | undefined>;
|
|
15
|
+
getBlocks<Opts extends BlocksIncludeOptions = {}>(from: BlockNumber, limit: number, options?: Opts): Promise<BlockResponse<Opts>[]>;
|
|
16
|
+
getCheckpoint<Opts extends CheckpointIncludeOptions = {}>(param: CheckpointParameter, options?: Opts): Promise<CheckpointResponse<Opts> | undefined>;
|
|
17
|
+
getCheckpoints<Opts extends CheckpointIncludeOptions = {}>(from: CheckpointNumber, limit: number, options?: Opts): Promise<CheckpointResponse<Opts>[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9ibG9ja19wcm92aWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZXMvbm9kZV9ibG9ja19wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVyRixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUF3QixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRyxPQUFPLEtBQUssRUFDVixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNuQixNQUFNLGlDQUFpQyxDQUFDO0FBV3pDOzs7O0dBSUc7QUFDSCxxQkFBYSxpQkFBaUI7O0lBQ2hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUF4QyxZQUE2QixXQUFXLEVBQUUsYUFBYSxFQUFJO0lBRTlDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsbUJBQW1CLEdBQUcsRUFBRSxFQUN6RCxLQUFLLEVBQUUsY0FBYyxFQUNyQixPQUFPLEdBQUUsSUFBaUIsR0FDekIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FtQjFDO0lBRU0sWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FHekU7SUFFWSxTQUFTLENBQUMsSUFBSSxTQUFTLG9CQUFvQixHQUFHLEVBQUUsRUFDM0QsSUFBSSxFQUFFLFdBQVcsRUFDakIsS0FBSyxFQUFFLE1BQU0sRUFDYixPQUFPLEdBQUUsSUFBaUIsR0FDekIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBZ0JoQztJQUVZLGFBQWEsQ0FBQyxJQUFJLFNBQVMsd0JBQXdCLEdBQUcsRUFBRSxFQUNuRSxLQUFLLEVBQUUsbUJBQW1CLEVBQzFCLE9BQU8sR0FBRSxJQUFpQixHQUN6QixPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBNEIvQztJQUVZLGNBQWMsQ0FBQyxJQUFJLFNBQVMsd0JBQXdCLEdBQUcsRUFBRSxFQUNwRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQ3RCLEtBQUssRUFBRSxNQUFNLEVBQ2IsT0FBTyxHQUFFLElBQWlCLEdBQ3pCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBU3JDO0NBcUJGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_block_provider.d.ts","sourceRoot":"","sources":["../../src/modules/node_block_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAwB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1G,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAWzC;;;;GAIG;AACH,qBAAa,iBAAiB;;IAChB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAxC,YAA6B,WAAW,EAAE,aAAa,EAAI;IAE9C,QAAQ,CAAC,IAAI,SAAS,mBAAmB,GAAG,EAAE,EACzD,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,IAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAmB1C;IAEM,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAGzE;IAEY,SAAS,CAAC,IAAI,SAAS,oBAAoB,GAAG,EAAE,EAC3D,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,IAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAgBhC;IAEY,aAAa,CAAC,IAAI,SAAS,wBAAwB,GAAG,EAAE,EACnE,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,IAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CA4B/C;IAEY,cAAc,CAAC,IAAI,SAAS,wBAAwB,GAAG,EAAE,EACpE,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,IAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CASrC;CAqBF"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { blockResponseFromBlockData, blockResponseFromL2Block, checkpointResponseFromCheckpointData, checkpointResponseFromPublishedCheckpoint, projectProposedToCheckpointResponse } from '../aztec-node/block_response_helpers.js';
|
|
3
|
+
import { normalizeBlockParameter, resolveCheckpointParameter } from './block_parameter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Serves the node's block and checkpoint read queries, assembling RPC responses (optionally including
|
|
6
|
+
* transactions, L1 publish info, and attestations) from the underlying block source. Extracted from
|
|
7
|
+
* `AztecNodeService` to keep `server.ts` smaller.
|
|
8
|
+
*/ export class NodeBlockProvider {
|
|
9
|
+
blockSource;
|
|
10
|
+
constructor(blockSource){
|
|
11
|
+
this.blockSource = blockSource;
|
|
12
|
+
}
|
|
13
|
+
async getBlock(param, options = {}) {
|
|
14
|
+
const query = normalizeBlockParameter(param);
|
|
15
|
+
const wantTxs = !!options.includeTransactions;
|
|
16
|
+
const wantContext = !!options.includeL1PublishInfo || !!options.includeAttestations;
|
|
17
|
+
if (wantTxs) {
|
|
18
|
+
const block = await this.blockSource.getBlock(query);
|
|
19
|
+
if (!block) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const ctx = wantContext ? await this.#getCheckpointContext(block.checkpointNumber) : undefined;
|
|
23
|
+
return await blockResponseFromL2Block(block, options, ctx);
|
|
24
|
+
}
|
|
25
|
+
const data = await this.blockSource.getBlockData(query);
|
|
26
|
+
if (!data) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const ctx = wantContext ? await this.#getCheckpointContext(data.checkpointNumber) : undefined;
|
|
30
|
+
return blockResponseFromBlockData(data, options, ctx);
|
|
31
|
+
}
|
|
32
|
+
getBlockData(param) {
|
|
33
|
+
const query = normalizeBlockParameter(param);
|
|
34
|
+
return this.blockSource.getBlockData(query);
|
|
35
|
+
}
|
|
36
|
+
async getBlocks(from, limit, options = {}) {
|
|
37
|
+
const wantTxs = !!options.includeTransactions;
|
|
38
|
+
const wantContext = !!options.includeL1PublishInfo || !!options.includeAttestations;
|
|
39
|
+
const onlyCheckpointed = !!options.onlyCheckpointed;
|
|
40
|
+
if (wantTxs) {
|
|
41
|
+
const blocks = await this.blockSource.getBlocks({
|
|
42
|
+
from,
|
|
43
|
+
limit,
|
|
44
|
+
onlyCheckpointed
|
|
45
|
+
});
|
|
46
|
+
const ctxByCheckpoint = await this.#getCheckpointContextsForBlocks(wantContext ? blocks : []);
|
|
47
|
+
return await Promise.all(blocks.map((block)=>blockResponseFromL2Block(block, options, ctxByCheckpoint.get(block.checkpointNumber))));
|
|
48
|
+
}
|
|
49
|
+
const dataItems = await this.blockSource.getBlocksData({
|
|
50
|
+
from,
|
|
51
|
+
limit,
|
|
52
|
+
onlyCheckpointed
|
|
53
|
+
});
|
|
54
|
+
const ctxByCheckpoint = await this.#getCheckpointContextsForBlocks(wantContext ? dataItems : []);
|
|
55
|
+
return await Promise.all(dataItems.map((data)=>blockResponseFromBlockData(data, options, ctxByCheckpoint.get(data.checkpointNumber))));
|
|
56
|
+
}
|
|
57
|
+
async getCheckpoint(param, options = {}) {
|
|
58
|
+
const query = await resolveCheckpointParameter(param, this.blockSource);
|
|
59
|
+
// Try the confirmed store first.
|
|
60
|
+
const confirmed = options.includeBlocks ? await this.blockSource.getCheckpoint(query) : await this.blockSource.getCheckpointData(query);
|
|
61
|
+
if (confirmed) {
|
|
62
|
+
return await (options.includeBlocks ? checkpointResponseFromPublishedCheckpoint(confirmed, options) : checkpointResponseFromCheckpointData(confirmed, options));
|
|
63
|
+
}
|
|
64
|
+
// Fall back to the proposed store.
|
|
65
|
+
const proposed = await this.blockSource.getProposedCheckpointData(query);
|
|
66
|
+
if (proposed) {
|
|
67
|
+
if (options.includeAttestations || options.includeL1PublishInfo) {
|
|
68
|
+
throw new BadRequestError(`Options includeL1PublishInfo or includeAttestations cannot be satisfied for a proposed checkpoint`);
|
|
69
|
+
}
|
|
70
|
+
const blocks = options.includeBlocks ? await this.blockSource.getBlocks({
|
|
71
|
+
from: proposed.startBlock,
|
|
72
|
+
limit: proposed.blockCount
|
|
73
|
+
}) : undefined;
|
|
74
|
+
return await projectProposedToCheckpointResponse(proposed, options, blocks);
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
async getCheckpoints(from, limit, options = {}) {
|
|
79
|
+
if (options.includeBlocks) {
|
|
80
|
+
const checkpoints = await this.blockSource.getCheckpoints({
|
|
81
|
+
from,
|
|
82
|
+
limit
|
|
83
|
+
});
|
|
84
|
+
return await Promise.all(checkpoints.map((cp)=>checkpointResponseFromPublishedCheckpoint(cp, options)));
|
|
85
|
+
}
|
|
86
|
+
const datas = await this.blockSource.getCheckpointsData({
|
|
87
|
+
from,
|
|
88
|
+
limit
|
|
89
|
+
});
|
|
90
|
+
return datas.map((d)=>checkpointResponseFromCheckpointData(d, options));
|
|
91
|
+
}
|
|
92
|
+
/** Fetches checkpoint-level L1 and attestation data for use as block response context. */ async #getCheckpointContext(checkpointNumber) {
|
|
93
|
+
const checkpoint = await this.blockSource.getCheckpointData({
|
|
94
|
+
number: checkpointNumber
|
|
95
|
+
});
|
|
96
|
+
if (!checkpoint) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
l1: checkpoint.l1,
|
|
101
|
+
attestations: checkpoint.attestations
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** Fetches checkpoint context for a set of blocks, deduplicating shared checkpoints. */ async #getCheckpointContextsForBlocks(blocks) {
|
|
105
|
+
const unique = Array.from(new Set(blocks.map((b)=>b.checkpointNumber)));
|
|
106
|
+
const entries = await Promise.all(unique.map(async (n)=>[
|
|
107
|
+
n,
|
|
108
|
+
await this.#getCheckpointContext(n)
|
|
109
|
+
]));
|
|
110
|
+
return new Map(entries);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { P2P } from '@aztec/p2p';
|
|
2
|
+
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
3
|
+
import type { DebugLogStore } from '@aztec/stdlib/logs';
|
|
4
|
+
import { type GetTxReceiptOptions, type TxHash, type TxReceipt } from '@aztec/stdlib/tx';
|
|
5
|
+
/** Dependencies required to build a {@link NodeTxReceiptBuilder}. */
|
|
6
|
+
export interface NodeTxReceiptBuilderDeps {
|
|
7
|
+
p2pClient: P2P;
|
|
8
|
+
blockSource: L2BlockSource;
|
|
9
|
+
debugLogStore: DebugLogStore;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Builds transaction receipts by reconciling the archiver's mined tx effects with the tx pool's view,
|
|
13
|
+
* deriving the finalization status from the cached L2 tips. Extracted from `AztecNodeService` to keep
|
|
14
|
+
* `server.ts` smaller.
|
|
15
|
+
*/
|
|
16
|
+
export declare class NodeTxReceiptBuilder {
|
|
17
|
+
#private;
|
|
18
|
+
private readonly p2pClient;
|
|
19
|
+
private readonly blockSource;
|
|
20
|
+
private readonly debugLogStore;
|
|
21
|
+
constructor(deps: NodeTxReceiptBuilderDeps);
|
|
22
|
+
getTxReceipt<TGetTxReceiptOptions extends GetTxReceiptOptions = {}>(txHash: TxHash, options?: TGetTxReceiptOptions): Promise<TxReceipt<TGetTxReceiptOptions>>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV90eF9yZWNlaXB0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9ub2RlX3R4X3JlY2VpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFFTCxLQUFLLG1CQUFtQixFQU14QixLQUFLLE1BQU0sRUFDWCxLQUFLLFNBQVMsRUFFZixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLFNBQVMsRUFBRSxHQUFHLENBQUM7SUFDZixXQUFXLEVBQUUsYUFBYSxDQUFDO0lBQzNCLGFBQWEsRUFBRSxhQUFhLENBQUM7Q0FDOUI7QUFFRDs7OztHQUlHO0FBQ0gscUJBQWEsb0JBQW9COztJQUMvQixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBTTtJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBZ0I7SUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQWdCO0lBRTlDLFlBQVksSUFBSSxFQUFFLHdCQUF3QixFQUl6QztJQUVZLFlBQVksQ0FBQyxvQkFBb0IsU0FBUyxtQkFBbUIsR0FBRyxFQUFFLEVBQzdFLE1BQU0sRUFBRSxNQUFNLEVBQ2QsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEdBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQStCMUM7Q0F1Q0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_tx_receipt.d.ts","sourceRoot":"","sources":["../../src/modules/node_tx_receipt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAEL,KAAK,mBAAmB,EAMxB,KAAK,MAAM,EACX,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAC;AAE1B,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,aAAa,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,YAAY,IAAI,EAAE,wBAAwB,EAIzC;IAEY,YAAY,CAAC,oBAAoB,SAAS,mBAAmB,GAAG,EAAE,EAC7E,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CA+B1C;CAuCF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
2
|
+
import { DroppedTxReceipt, MinedTxReceipt, PendingTxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
3
|
+
/**
|
|
4
|
+
* Builds transaction receipts by reconciling the archiver's mined tx effects with the tx pool's view,
|
|
5
|
+
* deriving the finalization status from the cached L2 tips. Extracted from `AztecNodeService` to keep
|
|
6
|
+
* `server.ts` smaller.
|
|
7
|
+
*/ export class NodeTxReceiptBuilder {
|
|
8
|
+
p2pClient;
|
|
9
|
+
blockSource;
|
|
10
|
+
debugLogStore;
|
|
11
|
+
constructor(deps){
|
|
12
|
+
this.p2pClient = deps.p2pClient;
|
|
13
|
+
this.blockSource = deps.blockSource;
|
|
14
|
+
this.debugLogStore = deps.debugLogStore;
|
|
15
|
+
}
|
|
16
|
+
async getTxReceipt(txHash, options) {
|
|
17
|
+
// Check the tx pool status first. If the tx is known to the pool (pending or mined), we'll use that
|
|
18
|
+
// as a fallback if we don't find a mined tx effect in the archiver.
|
|
19
|
+
const txPoolStatus = await this.p2pClient.getTxStatus(txHash);
|
|
20
|
+
const isKnownToPool = txPoolStatus === 'pending' || txPoolStatus === 'mined';
|
|
21
|
+
// Then get the raw tx effect from the archiver, which tracks every tx in a mined block.
|
|
22
|
+
const indexed = await this.blockSource.getTxEffect(txHash);
|
|
23
|
+
let receipt;
|
|
24
|
+
if (indexed) {
|
|
25
|
+
receipt = await this.#assembleMinedReceipt(indexed, options);
|
|
26
|
+
} else if (isKnownToPool) {
|
|
27
|
+
// If the tx is in the pool but not in the archiver, it's pending.
|
|
28
|
+
// This handles race conditions between archiver and p2p, where the archiver
|
|
29
|
+
// has pruned the block in which a tx was mined, but p2p has not caught up yet.
|
|
30
|
+
let tx;
|
|
31
|
+
if (options?.includePendingTx) {
|
|
32
|
+
// The tx may have left the pool since we checked its status (mined or dropped); in that case we
|
|
33
|
+
// leave `tx` unset and still return a pending receipt.
|
|
34
|
+
tx = await this.p2pClient.getTxByHashFromPool(txHash, {
|
|
35
|
+
includeProof: !!options.includeProof
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
receipt = new PendingTxReceipt(txHash, tx);
|
|
39
|
+
} else {
|
|
40
|
+
// Otherwise, if we don't know the tx, we consider it dropped.
|
|
41
|
+
receipt = new DroppedTxReceipt(txHash, 'Tx dropped by P2P node');
|
|
42
|
+
}
|
|
43
|
+
this.debugLogStore.decorateReceiptWithLogs(txHash.toString(), receipt);
|
|
44
|
+
return receipt;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Assembles a {@link MinedTxReceipt} from a raw {@link IndexedTxEffect}, deriving the finalization status from the
|
|
48
|
+
* cached L2 tips and the epoch from the block's slot number.
|
|
49
|
+
*/ async #assembleMinedReceipt(indexed, options) {
|
|
50
|
+
const blockNumber = indexed.l2BlockNumber;
|
|
51
|
+
const [tips, l1Constants] = await Promise.all([
|
|
52
|
+
this.blockSource.getL2Tips(),
|
|
53
|
+
this.blockSource.getL1Constants()
|
|
54
|
+
]);
|
|
55
|
+
const status = this.#deriveMinedStatus(blockNumber, tips);
|
|
56
|
+
const epochNumber = getEpochAtSlot(indexed.slotNumber, l1Constants);
|
|
57
|
+
return new MinedTxReceipt(indexed.data.txHash, status, MinedTxReceipt.executionResultFromRevertCode(indexed.data.revertCode), indexed.data.transactionFee.toBigInt(), indexed.l2BlockHash, blockNumber, indexed.slotNumber, indexed.txIndexInBlock, epochNumber, options?.includeTxEffect ? indexed.data : undefined, /*debugLogs=*/ undefined);
|
|
58
|
+
}
|
|
59
|
+
#deriveMinedStatus(blockNumber, tips) {
|
|
60
|
+
if (blockNumber <= tips.finalized.block.number) {
|
|
61
|
+
return TxStatus.FINALIZED;
|
|
62
|
+
} else if (blockNumber <= tips.proven.block.number) {
|
|
63
|
+
return TxStatus.PROVEN;
|
|
64
|
+
} else if (blockNumber <= tips.checkpointed.block.number) {
|
|
65
|
+
return TxStatus.CHECKPOINTED;
|
|
66
|
+
} else {
|
|
67
|
+
return TxStatus.PROPOSED;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import { BlockNumber, type CheckpointNumber, type EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
5
|
+
import { MembershipWitness, type SiblingPath } from '@aztec/foundation/trees';
|
|
6
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import { type BlockHash, type BlockParameter, type DataInBlock, type L2BlockSource } from '@aztec/stdlib/block';
|
|
8
|
+
import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
9
|
+
import { type L1ToL2MessageSource, type L2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
10
|
+
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
11
|
+
import type { TxHash } from '@aztec/stdlib/tx';
|
|
12
|
+
/** Dependencies required to build a {@link NodeWorldStateQueries}. */
|
|
13
|
+
export interface NodeWorldStateQueriesDeps {
|
|
14
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
15
|
+
blockSource: L2BlockSource;
|
|
16
|
+
l1ToL2MessageSource: L1ToL2MessageSource;
|
|
17
|
+
log?: Logger;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Serves the node's Merkle-tree and membership-witness queries against committed world-state at a
|
|
21
|
+
* requested block. Extracted from `AztecNodeService` so the block-resolution and reorg-aware sync logic
|
|
22
|
+
* can be unit-tested without standing up the whole node, and to keep `server.ts` smaller.
|
|
23
|
+
*/
|
|
24
|
+
export declare class NodeWorldStateQueries {
|
|
25
|
+
#private;
|
|
26
|
+
private readonly worldStateSynchronizer;
|
|
27
|
+
private readonly blockSource;
|
|
28
|
+
private readonly l1ToL2MessageSource;
|
|
29
|
+
private readonly log;
|
|
30
|
+
constructor(deps: NodeWorldStateQueriesDeps);
|
|
31
|
+
findLeavesIndexes(referenceBlock: BlockParameter, treeId: MerkleTreeId, leafValues: Fr[]): Promise<(DataInBlock<bigint> | undefined)[]>;
|
|
32
|
+
getBlockHashMembershipWitness(referenceBlock: BlockParameter, blockHash: BlockHash): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
|
|
33
|
+
getNoteHashMembershipWitness(referenceBlock: BlockParameter, noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
|
|
34
|
+
getL1ToL2MessageMembershipWitness(referenceBlock: BlockParameter, l1ToL2Message: Fr): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] | undefined>;
|
|
35
|
+
getL1ToL2MessageCheckpoint(l1ToL2Message: Fr): Promise<CheckpointNumber | undefined>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns all the L2 to L1 messages in an epoch (empty array if the epoch is not found). The public
|
|
38
|
+
* `AztecNodeService.getL2ToL1Messages` that delegates here is deprecated in favor of
|
|
39
|
+
* {@link getL2ToL1MembershipWitness}.
|
|
40
|
+
* @param epoch - The epoch at which to get the data.
|
|
41
|
+
*/
|
|
42
|
+
getL2ToL1Messages(epoch: EpochNumber): Promise<Fr[][][][]>;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the L2-to-L1 membership witness for a message in `txHash`. Passthrough to the
|
|
45
|
+
* archiver's locally-cached resolver — see {@link Archiver.getL2ToL1MembershipWitness}.
|
|
46
|
+
*/
|
|
47
|
+
getL2ToL1MembershipWitness(txHash: TxHash, message: Fr, messageIndexInTx?: number): Promise<L2ToL1MembershipWitness | undefined>;
|
|
48
|
+
getNullifierMembershipWitness(referenceBlock: BlockParameter, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
49
|
+
getLowNullifierMembershipWitness(referenceBlock: BlockParameter, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
50
|
+
getPublicDataWitness(referenceBlock: BlockParameter, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
51
|
+
getPublicStorageAt(referenceBlock: BlockParameter, contract: AztecAddress, slot: Fr): Promise<Fr>;
|
|
52
|
+
/**
|
|
53
|
+
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
54
|
+
* @param block - The block parameter (block number, block hash, or 'latest') at which to get the data.
|
|
55
|
+
* @returns An instance of a committed MerkleTreeOperations
|
|
56
|
+
*/
|
|
57
|
+
getWorldState(block: BlockParameter): Promise<import("@aztec/stdlib/trees").MerkleTreeReadOperations>;
|
|
58
|
+
/** Resolves any {@link BlockParameter} variant to a concrete block number. */
|
|
59
|
+
resolveBlockNumber(block: BlockParameter): Promise<BlockNumber>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV93b3JsZF9zdGF0ZV9xdWVyaWVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9ub2RlX3dvcmxkX3N0YXRlX3F1ZXJpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxLQUFLLFNBQVMsRUFDZCxLQUFLLGNBQWMsRUFDbkIsS0FBSyxXQUFXLEVBQ2hCLEtBQUssYUFBYSxFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFhLEtBQUssbUJBQW1CLEVBQUUsS0FBSyx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVHLE9BQU8sRUFDTCxZQUFZLEVBRVosMEJBQTBCLEVBRTFCLGlCQUFpQixFQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSS9DLHNFQUFzRTtBQUN0RSxNQUFNLFdBQVcseUJBQXlCO0lBQ3hDLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDO0lB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_world_state_queries.d.ts","sourceRoot":"","sources":["../../src/modules/node_world_state_queries.ts"],"names":[],"mappings":"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"}
|