@aztec/stdlib 5.0.0-nightly.20260428 → 5.0.0-nightly.20260430
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/avm/avm.d.ts +300 -300
- package/dest/block/attestation_info.d.ts +3 -2
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -5
- package/dest/block/block_data.d.ts +290 -1
- package/dest/block/block_data.d.ts.map +1 -1
- package/dest/block/block_data.js +14 -0
- package/dest/block/block_parameter.d.ts +30 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +36 -2
- package/dest/block/l2_block_source.d.ts +39 -4
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.d.ts +13 -6
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +26 -18
- package/dest/checkpoint/checkpoint_data.d.ts +7 -1
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_data.js +2 -0
- package/dest/config/chain-config.d.ts +2 -2
- package/dest/config/chain-config.d.ts.map +1 -1
- package/dest/config/chain-config.js +2 -2
- package/dest/config/sequencer-config.d.ts +2 -2
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +6 -6
- package/dest/ha-signing/local_config.d.ts +1 -1
- package/dest/ha-signing/local_config.d.ts.map +1 -1
- package/dest/ha-signing/local_config.js +2 -2
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +7 -3
- package/dest/interfaces/aztec-node-admin.d.ts +11 -1
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +2 -1
- package/dest/interfaces/aztec-node.d.ts +45 -55
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +18 -16
- package/dest/interfaces/block_response.d.ts +156 -0
- package/dest/interfaces/block_response.d.ts.map +1 -0
- package/dest/interfaces/block_response.js +24 -0
- package/dest/interfaces/chain_tips.d.ts +304 -0
- package/dest/interfaces/chain_tips.d.ts.map +1 -0
- package/dest/interfaces/chain_tips.js +11 -0
- package/dest/interfaces/checkpoint_parameter.d.ts +27 -0
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_parameter.js +20 -0
- package/dest/interfaces/checkpoint_response.d.ts +312 -0
- package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_response.js +26 -0
- package/dest/interfaces/client.d.ts +6 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +5 -0
- package/dest/interfaces/configs.d.ts +7 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/interfaces/l1_publish_info.d.ts +43 -0
- package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
- package/dest/interfaces/l1_publish_info.js +26 -0
- package/dest/interfaces/proving-job.d.ts +166 -166
- package/dest/interfaces/server.d.ts +6 -1
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +5 -0
- package/dest/interfaces/validator.d.ts +10 -1
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +1 -0
- package/dest/p2p/block_proposal.d.ts +19 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +42 -32
- package/dest/p2p/checkpoint_attestation.d.ts +7 -3
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +15 -17
- package/dest/p2p/checkpoint_proposal.d.ts +15 -7
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +31 -29
- package/dest/p2p/consensus_payload.d.ts +18 -7
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +31 -19
- package/dest/p2p/signature_utils.d.ts +28 -19
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +118 -21
- package/dest/p2p/signed_txs.d.ts +15 -13
- package/dest/p2p/signed_txs.d.ts.map +1 -1
- package/dest/p2p/signed_txs.js +26 -24
- package/dest/tests/mocks.d.ts +7 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +28 -14
- package/dest/timetable/index.d.ts +1 -1
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +25 -11
- package/dest/tx/profiling.js +4 -4
- package/package.json +8 -8
- package/src/block/attestation_info.ts +11 -11
- package/src/block/block_data.ts +17 -0
- package/src/block/block_parameter.ts +35 -2
- package/src/block/l2_block_source.ts +43 -3
- package/src/block/proposal/attestations_and_signers.ts +32 -17
- package/src/checkpoint/checkpoint_data.ts +4 -0
- package/src/config/chain-config.ts +2 -3
- package/src/config/sequencer-config.ts +10 -6
- package/src/ha-signing/local_config.ts +2 -2
- package/src/interfaces/archiver.ts +13 -3
- package/src/interfaces/aztec-node-admin.ts +3 -1
- package/src/interfaces/aztec-node.ts +105 -95
- package/src/interfaces/block_response.ts +79 -0
- package/src/interfaces/chain_tips.ts +24 -0
- package/src/interfaces/checkpoint_parameter.ts +22 -0
- package/src/interfaces/checkpoint_response.ts +84 -0
- package/src/interfaces/client.ts +5 -0
- package/src/interfaces/configs.ts +5 -1
- package/src/interfaces/l1_publish_info.ts +40 -0
- package/src/interfaces/server.ts +5 -0
- package/src/interfaces/validator.ts +5 -0
- package/src/p2p/block_proposal.ts +84 -28
- package/src/p2p/checkpoint_attestation.ts +15 -20
- package/src/p2p/checkpoint_proposal.ts +69 -37
- package/src/p2p/consensus_payload.ts +50 -28
- package/src/p2p/signature_utils.ts +110 -25
- package/src/p2p/signed_txs.ts +46 -28
- package/src/tests/mocks.ts +46 -26
- package/src/timetable/index.ts +26 -11
- package/src/tx/profiling.ts +4 -4
|
@@ -2,6 +2,11 @@ export * from './allowed_element.js';
|
|
|
2
2
|
export * from './api_limit.js';
|
|
3
3
|
export * from './archiver.js';
|
|
4
4
|
export * from './aztec-node.js';
|
|
5
|
+
export * from './block_response.js';
|
|
6
|
+
export * from './chain_tips.js';
|
|
7
|
+
export * from './checkpoint_parameter.js';
|
|
8
|
+
export * from './checkpoint_response.js';
|
|
9
|
+
export * from './l1_publish_info.js';
|
|
5
10
|
export * from './block-builder.js';
|
|
6
11
|
export * from './configs.js';
|
|
7
12
|
export * from './epoch-prover.js';
|
|
@@ -23,4 +28,4 @@ export * from './slasher.js';
|
|
|
23
28
|
export * from './tx_provider.js';
|
|
24
29
|
export * from './validator.js';
|
|
25
30
|
export * from './world_state.js';
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/interfaces/server.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/interfaces/server.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
|
|
@@ -2,6 +2,11 @@ export * from './allowed_element.js';
|
|
|
2
2
|
export * from './api_limit.js';
|
|
3
3
|
export * from './archiver.js';
|
|
4
4
|
export * from './aztec-node.js';
|
|
5
|
+
export * from './block_response.js';
|
|
6
|
+
export * from './chain_tips.js';
|
|
7
|
+
export * from './checkpoint_parameter.js';
|
|
8
|
+
export * from './checkpoint_response.js';
|
|
9
|
+
export * from './l1_publish_info.js';
|
|
5
10
|
export * from './block-builder.js';
|
|
6
11
|
export * from './configs.js';
|
|
7
12
|
export * from './epoch-prover.js';
|
|
@@ -10,11 +10,14 @@ import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
|
10
10
|
import type { PeerId } from '@libp2p/interface';
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import type { CommitteeAttestationsAndSigners } from '../block/index.js';
|
|
13
|
+
import type { ChainConfig } from '../config/chain-config.js';
|
|
13
14
|
import { type LocalSignerConfig, type ValidatorHASignerConfig } from '../ha-signing/index.js';
|
|
14
15
|
/**
|
|
15
16
|
* Validator client configuration
|
|
16
17
|
*/
|
|
17
18
|
export type ValidatorClientConfig = ValidatorHASignerConfig & LocalSignerConfig & {
|
|
19
|
+
/** The L1 chain id used for EIP-712 proposal-path signing. */
|
|
20
|
+
l1ChainId: ChainConfig['l1ChainId'];
|
|
18
21
|
/** The private keys of the validators participating in attestation duties */
|
|
19
22
|
validatorPrivateKeys?: SecretValue<`0x${string}`[]>;
|
|
20
23
|
/** The addresses of the validators to use with remote signers */
|
|
@@ -75,6 +78,7 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
|
|
|
75
78
|
dataStoreMapSizeKb: z.ZodNumber;
|
|
76
79
|
signingProtectionMapSizeKb: z.ZodOptional<z.ZodNumber>;
|
|
77
80
|
} & {
|
|
81
|
+
l1ChainId: z.ZodNumber;
|
|
78
82
|
validatorAddresses: z.ZodOptional<z.ZodArray<z.ZodType<EthAddress, any, string>, "many">>;
|
|
79
83
|
disableValidator: z.ZodBoolean;
|
|
80
84
|
disabledValidators: z.ZodArray<z.ZodType<EthAddress, any, string>, "many">;
|
|
@@ -106,6 +110,7 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
|
|
|
106
110
|
dataDirectory?: string | undefined;
|
|
107
111
|
dataStoreMapSizeKb: number;
|
|
108
112
|
signingProtectionMapSizeKb?: number | undefined;
|
|
113
|
+
l1ChainId: number;
|
|
109
114
|
validatorAddresses?: EthAddress[] | undefined;
|
|
110
115
|
disableValidator: boolean;
|
|
111
116
|
disabledValidators: EthAddress[];
|
|
@@ -137,6 +142,7 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
|
|
|
137
142
|
dataDirectory?: string | undefined;
|
|
138
143
|
dataStoreMapSizeKb: number;
|
|
139
144
|
signingProtectionMapSizeKb?: number | undefined;
|
|
145
|
+
l1ChainId: number;
|
|
140
146
|
validatorAddresses?: string[] | undefined;
|
|
141
147
|
disableValidator: boolean;
|
|
142
148
|
disabledValidators: string[];
|
|
@@ -175,6 +181,7 @@ export declare const ValidatorClientFullConfigSchema: z.ZodObject<{
|
|
|
175
181
|
dataStoreMapSizeKb: z.ZodNumber;
|
|
176
182
|
signingProtectionMapSizeKb: z.ZodOptional<z.ZodNumber>;
|
|
177
183
|
} & {
|
|
184
|
+
l1ChainId: z.ZodNumber;
|
|
178
185
|
validatorAddresses: z.ZodOptional<z.ZodArray<z.ZodType<EthAddress, any, string>, "many">>;
|
|
179
186
|
disableValidator: z.ZodBoolean;
|
|
180
187
|
disabledValidators: z.ZodArray<z.ZodType<EthAddress, any, string>, "many">;
|
|
@@ -249,6 +256,7 @@ export declare const ValidatorClientFullConfigSchema: z.ZodObject<{
|
|
|
249
256
|
dataDirectory?: string | undefined;
|
|
250
257
|
dataStoreMapSizeKb: number;
|
|
251
258
|
signingProtectionMapSizeKb?: number | undefined;
|
|
259
|
+
l1ChainId: number;
|
|
252
260
|
validatorAddresses?: EthAddress[] | undefined;
|
|
253
261
|
disableValidator: boolean;
|
|
254
262
|
disabledValidators: EthAddress[];
|
|
@@ -298,6 +306,7 @@ export declare const ValidatorClientFullConfigSchema: z.ZodObject<{
|
|
|
298
306
|
dataDirectory?: string | undefined;
|
|
299
307
|
dataStoreMapSizeKb: number;
|
|
300
308
|
signingProtectionMapSizeKb?: number | undefined;
|
|
309
|
+
l1ChainId: number;
|
|
301
310
|
validatorAddresses?: string[] | undefined;
|
|
302
311
|
disableValidator: boolean;
|
|
303
312
|
disabledValidators: string[];
|
|
@@ -354,4 +363,4 @@ export interface Validator {
|
|
|
354
363
|
collectAttestations(proposal: CheckpointProposal, required: number, deadline: Date, checkpointNumber: CheckpointNumber): Promise<CheckpointAttestation[]>;
|
|
355
364
|
signAttestationsAndSigners(attestationsAndSigners: CommitteeAttestationsAndSigners, proposer: EthAddress, slot: SlotNumber, checkpointNumber: CheckpointNumber): Promise<Signature>;
|
|
356
365
|
}
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFDVixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQzFCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUV0QixLQUFLLHVCQUF1QixFQUU3QixNQUFNLHdCQUF3QixDQUFDO0FBR2hDOztH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,uBAAuB,EAE7B,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,GACzD,iBAAiB,GAAG;IAClB,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC;IAEpD,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;IAElC,+BAA+B;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,6DAA6D;IAC7D,kBAAkB,EAAE,UAAU,EAAE,CAAC;IAEjC,+DAA+D;IAC/D,4BAA4B,EAAE,MAAM,CAAC;IAErC,qHAAqH;IACrH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,6EAA6E;IAC7E,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAE3C,mEAAmE;IACnE,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAE3C,sFAAsF;IACtF,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC,4FAA4F;IAC5F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,4FAA4F;IAC5F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,uGAAuG;IACvG,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEJ,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAC3D,IAAI,CAAC,eAAe,EAAE,8BAA8B,GAAG,+BAA+B,CAAC,GACvF,IAAI,CACF,aAAa,EACb,qCAAqC,GAAG,+BAA+B,GAAG,kCAAkC,CAC7G,GAAG;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEJ,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { LocalSignerConfigSchema, ValidatorHASignerConfigSchema } from '../ha-signing/index.js';
|
|
4
4
|
import { AllowedElementSchema } from './allowed_element.js';
|
|
5
5
|
export const ValidatorClientConfigSchema = zodFor()(ValidatorHASignerConfigSchema.merge(LocalSignerConfigSchema).extend({
|
|
6
|
+
l1ChainId: z.number().int().nonnegative(),
|
|
6
7
|
validatorAddresses: z.array(schemas.EthAddress).optional(),
|
|
7
8
|
disableValidator: z.boolean(),
|
|
8
9
|
disabledValidators: z.array(schemas.EthAddress),
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BlockNumber, type CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import {
|
|
2
|
+
import type { BaseBuffer32 } from '@aztec/foundation/buffer';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
6
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
7
|
+
import type { TypedDataDefinition } from 'viem';
|
|
7
8
|
import type { L2Block } from '../block/l2_block.js';
|
|
8
9
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
9
10
|
import { type SigningContext } from '../ha-signing/index.js';
|
|
@@ -11,7 +12,7 @@ import { BlockHeader } from '../tx/block_header.js';
|
|
|
11
12
|
import { TxHash } from '../tx/index.js';
|
|
12
13
|
import type { Tx } from '../tx/tx.js';
|
|
13
14
|
import { Gossipable } from './gossipable.js';
|
|
14
|
-
import {
|
|
15
|
+
import { type CoordinationSignatureContext, type CoordinationSignatureType, type Signable } from './signature_utils.js';
|
|
15
16
|
import { SignedTxs } from './signed_txs.js';
|
|
16
17
|
import { TopicType } from './topic_type.js';
|
|
17
18
|
export type { BlockProposalHash } from '@aztec/foundation/branded-types';
|
|
@@ -32,7 +33,7 @@ export type BlockProposalOptions = {
|
|
|
32
33
|
* to be included in a block within a checkpoint. This is used for non-last blocks in a slot.
|
|
33
34
|
* The last block is sent as part of a CheckpointProposal.
|
|
34
35
|
*/
|
|
35
|
-
export declare class BlockProposal extends Gossipable {
|
|
36
|
+
export declare class BlockProposal extends Gossipable implements Signable {
|
|
36
37
|
/** The per-block header containing block state and global variables */
|
|
37
38
|
readonly blockHeader: BlockHeader;
|
|
38
39
|
/** Index of this block within the checkpoint (0-indexed) */
|
|
@@ -45,10 +46,13 @@ export declare class BlockProposal extends Gossipable {
|
|
|
45
46
|
readonly txHashes: TxHash[];
|
|
46
47
|
/** The proposer's signature over the block data */
|
|
47
48
|
readonly signature: Signature;
|
|
49
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
50
|
+
readonly signatureContext: CoordinationSignatureContext;
|
|
48
51
|
/** The signed transactions in the block (optional, for DA guarantees) */
|
|
49
52
|
readonly signedTxs?: SignedTxs | undefined;
|
|
50
53
|
static p2pTopic: TopicType;
|
|
51
|
-
|
|
54
|
+
readonly primaryType: CoordinationSignatureType;
|
|
55
|
+
private cachedSender;
|
|
52
56
|
constructor(
|
|
53
57
|
/** The per-block header containing block state and global variables */
|
|
54
58
|
blockHeader: BlockHeader,
|
|
@@ -62,6 +66,8 @@ export declare class BlockProposal extends Gossipable {
|
|
|
62
66
|
txHashes: TxHash[],
|
|
63
67
|
/** The proposer's signature over the block data */
|
|
64
68
|
signature: Signature,
|
|
69
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
70
|
+
signatureContext: CoordinationSignatureContext,
|
|
65
71
|
/** The signed transactions in the block (optional, for DA guarantees) */
|
|
66
72
|
signedTxs?: SignedTxs | undefined);
|
|
67
73
|
generateP2PMessageIdentifier(): Promise<BaseBuffer32>;
|
|
@@ -75,12 +81,14 @@ export declare class BlockProposal extends Gossipable {
|
|
|
75
81
|
* Get the payload to sign for this block proposal.
|
|
76
82
|
* The signature is over: blockHeader + indexWithinCheckpoint + inHash + archiveRoot + txHashes
|
|
77
83
|
*/
|
|
78
|
-
getPayloadToSign(
|
|
79
|
-
static createProposalFromSigner(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint, inHash: Fr, archiveRoot: Fr, txHashes: TxHash[], txs: Tx[] | undefined,
|
|
84
|
+
getPayloadToSign(): Buffer;
|
|
85
|
+
static createProposalFromSigner(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint, inHash: Fr, archiveRoot: Fr, txHashes: TxHash[], txs: Tx[] | undefined, signatureContext: CoordinationSignatureContext, proposalSigner: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>, txsSigner?: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>): Promise<BlockProposal>;
|
|
80
86
|
/**
|
|
81
87
|
* Lazily evaluate the sender of the proposal; result is cached.
|
|
82
|
-
* If there's signedTxs, also verifies
|
|
83
|
-
*
|
|
88
|
+
* If there's signedTxs, also verifies that its signing domain matches this proposal's and
|
|
89
|
+
* that the signedTxs sender matches the block proposal sender. This prevents a proposer
|
|
90
|
+
* from wrapping a foreign-chain SignedTxs bundle inside a local-chain proposal.
|
|
91
|
+
* @returns The sender address, or undefined if signature recovery fails or inner/outer mismatch
|
|
84
92
|
*/
|
|
85
93
|
getSender(): EthAddress | undefined;
|
|
86
94
|
getPayload(): Buffer<ArrayBufferLike>;
|
|
@@ -118,6 +126,8 @@ export declare class BlockProposal extends Gossipable {
|
|
|
118
126
|
archiveRoot: `0x${string}`;
|
|
119
127
|
signature: `0x${string}`;
|
|
120
128
|
txHashes: `0x${string}`[];
|
|
129
|
+
chainId: number;
|
|
130
|
+
rollupAddress: `0x${string}`;
|
|
121
131
|
};
|
|
122
132
|
/**
|
|
123
133
|
* Check if this proposal matches the given block.
|
|
@@ -132,4 +142,4 @@ export declare class BlockProposal extends Gossipable {
|
|
|
132
142
|
*/
|
|
133
143
|
withoutSignedTxs(): BlockProposal;
|
|
134
144
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYmxvY2tfcHJvcG9zYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFFWCxLQUFLLGdCQUFnQixFQUNyQixxQkFBcUIsRUFDckIsVUFBVSxFQUNYLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBWSxLQUFLLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsS0FBSyw0QkFBNEIsRUFDakMsS0FBSyx5QkFBeUIsRUFFOUIsS0FBSyxRQUFRLEVBTWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,UAAU,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BlockProposalHash, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
|
-
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
4
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
4
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
5
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
@@ -9,7 +8,7 @@ import { DutyType } from '../ha-signing/index.js';
|
|
|
9
8
|
import { BlockHeader } from '../tx/block_header.js';
|
|
10
9
|
import { TxHash } from '../tx/index.js';
|
|
11
10
|
import { Gossipable } from './gossipable.js';
|
|
12
|
-
import {
|
|
11
|
+
import { EMPTY_COORDINATION_SIGNATURE_CONTEXT, coordinationSignatureContextEquals, getCoordinationSignatureTypedData, readCoordinationSignatureContext, recoverCoordinationSigner, serializeCoordinationSignatureContext } from './signature_utils.js';
|
|
13
12
|
import { SignedTxs } from './signed_txs.js';
|
|
14
13
|
import { TopicType } from './topic_type.js';
|
|
15
14
|
/**
|
|
@@ -23,11 +22,13 @@ import { TopicType } from './topic_type.js';
|
|
|
23
22
|
archiveRoot;
|
|
24
23
|
txHashes;
|
|
25
24
|
signature;
|
|
25
|
+
signatureContext;
|
|
26
26
|
signedTxs;
|
|
27
27
|
static p2pTopic = TopicType.block_proposal;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
primaryType;
|
|
29
|
+
cachedSender;
|
|
30
|
+
constructor(/** The per-block header containing block state and global variables */ blockHeader, /** Index of this block within the checkpoint (0-indexed) */ indexWithinCheckpoint, /** Hash of L1 to L2 messages for this checkpoint (constant across all blocks in checkpoint) */ inHash, /** Archive root after this block is applied */ archiveRoot, /** The sequence of transactions in the block */ txHashes, /** The proposer's signature over the block data */ signature, /** The signing domain (chainId + rollupAddress) the signature is bound to */ signatureContext, /** The signed transactions in the block (optional, for DA guarantees) */ signedTxs){
|
|
31
|
+
super(), this.blockHeader = blockHeader, this.indexWithinCheckpoint = indexWithinCheckpoint, this.inHash = inHash, this.archiveRoot = archiveRoot, this.txHashes = txHashes, this.signature = signature, this.signatureContext = signatureContext, this.signedTxs = signedTxs, this.primaryType = 'BlockProposal', this.cachedSender = undefined;
|
|
31
32
|
}
|
|
32
33
|
generateP2PMessageIdentifier() {
|
|
33
34
|
return Promise.resolve(BlockProposalHash.fromBuffer(keccak256(this.signature.toBuffer())));
|
|
@@ -56,9 +57,8 @@ import { TopicType } from './topic_type.js';
|
|
|
56
57
|
/**
|
|
57
58
|
* Get the payload to sign for this block proposal.
|
|
58
59
|
* The signature is over: blockHeader + indexWithinCheckpoint + inHash + archiveRoot + txHashes
|
|
59
|
-
*/ getPayloadToSign(
|
|
60
|
+
*/ getPayloadToSign() {
|
|
60
61
|
return serializeToBuffer([
|
|
61
|
-
domainSeparator,
|
|
62
62
|
this.blockHeader,
|
|
63
63
|
this.indexWithinCheckpoint,
|
|
64
64
|
this.inHash,
|
|
@@ -67,9 +67,9 @@ import { TopicType } from './topic_type.js';
|
|
|
67
67
|
this.txHashes
|
|
68
68
|
]);
|
|
69
69
|
}
|
|
70
|
-
static async createProposalFromSigner(blockHeader, checkpointNumber, indexWithinCheckpoint, inHash, archiveRoot, txHashes, txs,
|
|
70
|
+
static async createProposalFromSigner(blockHeader, checkpointNumber, indexWithinCheckpoint, inHash, archiveRoot, txHashes, txs, signatureContext, proposalSigner, txsSigner) {
|
|
71
71
|
// Create a temporary proposal to get the payload to sign
|
|
72
|
-
const tempProposal = new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, Signature.empty());
|
|
72
|
+
const tempProposal = new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, Signature.empty(), signatureContext);
|
|
73
73
|
// Create the block signing context
|
|
74
74
|
const blockContext = {
|
|
75
75
|
slot: blockHeader.globalVariables.slotNumber,
|
|
@@ -78,41 +78,47 @@ import { TopicType } from './topic_type.js';
|
|
|
78
78
|
blockIndexWithinCheckpoint: indexWithinCheckpoint,
|
|
79
79
|
dutyType: DutyType.BLOCK_PROPOSAL
|
|
80
80
|
};
|
|
81
|
-
const
|
|
82
|
-
const sig = await
|
|
81
|
+
const typedData = getCoordinationSignatureTypedData(tempProposal);
|
|
82
|
+
const sig = await proposalSigner(typedData, blockContext);
|
|
83
83
|
// If txs are provided, sign them as well
|
|
84
84
|
let signedTxs;
|
|
85
85
|
if (txs) {
|
|
86
86
|
const txsSigningContext = {
|
|
87
87
|
dutyType: DutyType.TXS
|
|
88
88
|
};
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
if (!txsSigner) {
|
|
90
|
+
throw new Error('signed_txs requires a typed-data signer');
|
|
91
|
+
}
|
|
92
|
+
signedTxs = await SignedTxs.createFromSigner(txs, signatureContext, (typedData)=>txsSigner(typedData, txsSigningContext));
|
|
91
93
|
}
|
|
92
|
-
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, sig, signedTxs);
|
|
94
|
+
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, sig, signatureContext, signedTxs);
|
|
93
95
|
}
|
|
94
96
|
/**
|
|
95
97
|
* Lazily evaluate the sender of the proposal; result is cached.
|
|
96
|
-
* If there's signedTxs, also verifies
|
|
97
|
-
*
|
|
98
|
+
* If there's signedTxs, also verifies that its signing domain matches this proposal's and
|
|
99
|
+
* that the signedTxs sender matches the block proposal sender. This prevents a proposer
|
|
100
|
+
* from wrapping a foreign-chain SignedTxs bundle inside a local-chain proposal.
|
|
101
|
+
* @returns The sender address, or undefined if signature recovery fails or inner/outer mismatch
|
|
98
102
|
*/ getSender() {
|
|
99
|
-
if (
|
|
100
|
-
const
|
|
101
|
-
const blockSender = tryRecoverAddress(hashed, this.signature);
|
|
102
|
-
// If there's signedTxs, verify the sender matches
|
|
103
|
+
if (this.cachedSender === undefined) {
|
|
104
|
+
const blockSender = recoverCoordinationSigner(this, this.signature);
|
|
103
105
|
if (blockSender && this.signedTxs) {
|
|
106
|
+
if (!coordinationSignatureContextEquals(this.signedTxs.signatureContext, this.signatureContext)) {
|
|
107
|
+
this.cachedSender = null;
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
104
110
|
const txsSender = this.signedTxs.getSender();
|
|
105
111
|
if (!txsSender || !txsSender.equals(blockSender)) {
|
|
106
|
-
|
|
112
|
+
this.cachedSender = null;
|
|
113
|
+
return undefined;
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
|
-
|
|
110
|
-
this.sender = blockSender;
|
|
116
|
+
this.cachedSender = blockSender ?? null;
|
|
111
117
|
}
|
|
112
|
-
return this.
|
|
118
|
+
return this.cachedSender ?? undefined;
|
|
113
119
|
}
|
|
114
120
|
getPayload() {
|
|
115
|
-
return this.getPayloadToSign(
|
|
121
|
+
return this.getPayloadToSign();
|
|
116
122
|
}
|
|
117
123
|
toBuffer() {
|
|
118
124
|
const buffer = [
|
|
@@ -121,6 +127,7 @@ import { TopicType } from './topic_type.js';
|
|
|
121
127
|
this.inHash,
|
|
122
128
|
this.archiveRoot,
|
|
123
129
|
this.signature,
|
|
130
|
+
serializeCoordinationSignatureContext(this.signatureContext),
|
|
124
131
|
this.txHashes.length,
|
|
125
132
|
this.txHashes
|
|
126
133
|
];
|
|
@@ -139,6 +146,7 @@ import { TopicType } from './topic_type.js';
|
|
|
139
146
|
const inHash = reader.readObject(Fr);
|
|
140
147
|
const archiveRoot = reader.readObject(Fr);
|
|
141
148
|
const signature = reader.readObject(Signature);
|
|
149
|
+
const signatureContext = readCoordinationSignatureContext(reader);
|
|
142
150
|
const txHashCount = reader.readNumber();
|
|
143
151
|
if (txHashCount > MAX_TXS_PER_BLOCK) {
|
|
144
152
|
throw new Error(`txHashes count ${txHashCount} exceeds maximum ${MAX_TXS_PER_BLOCK}`);
|
|
@@ -148,22 +156,22 @@ import { TopicType } from './topic_type.js';
|
|
|
148
156
|
const hasSignedTxs = reader.readNumber();
|
|
149
157
|
if (hasSignedTxs) {
|
|
150
158
|
const signedTxs = SignedTxs.fromBuffer(reader);
|
|
151
|
-
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature, signedTxs);
|
|
159
|
+
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature, signatureContext, signedTxs);
|
|
152
160
|
}
|
|
153
161
|
}
|
|
154
|
-
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature);
|
|
162
|
+
return new BlockProposal(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, signature, signatureContext);
|
|
155
163
|
}
|
|
156
164
|
getSize() {
|
|
157
|
-
return this.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.inHash.size + this.archiveRoot.size + this.signature.getSize() + 4 /* txHashes.length */ + this.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.signedTxs ? this.signedTxs.getSize() : 0);
|
|
165
|
+
return this.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.inHash.size + this.archiveRoot.size + this.signature.getSize() + 4 /* chainId */ + 20 /* rollupAddress */ + 4 /* txHashes.length */ + this.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.signedTxs ? this.signedTxs.getSize() : 0);
|
|
158
166
|
}
|
|
159
167
|
static empty() {
|
|
160
|
-
return new BlockProposal(BlockHeader.empty(), IndexWithinCheckpoint(0), Fr.ZERO, Fr.ZERO, [], Signature.empty());
|
|
168
|
+
return new BlockProposal(BlockHeader.empty(), IndexWithinCheckpoint(0), Fr.ZERO, Fr.ZERO, [], Signature.empty(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
161
169
|
}
|
|
162
170
|
static random() {
|
|
163
171
|
return new BlockProposal(BlockHeader.random(), IndexWithinCheckpoint(Math.floor(Math.random() * 5)), Fr.random(), Fr.random(), [
|
|
164
172
|
TxHash.random(),
|
|
165
173
|
TxHash.random()
|
|
166
|
-
], Signature.random());
|
|
174
|
+
], Signature.random(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
167
175
|
}
|
|
168
176
|
toInspect() {
|
|
169
177
|
return {
|
|
@@ -172,7 +180,9 @@ import { TopicType } from './topic_type.js';
|
|
|
172
180
|
inHash: this.inHash.toString(),
|
|
173
181
|
archiveRoot: this.archiveRoot.toString(),
|
|
174
182
|
signature: this.signature.toString(),
|
|
175
|
-
txHashes: this.txHashes.map((h)=>h.toString())
|
|
183
|
+
txHashes: this.txHashes.map((h)=>h.toString()),
|
|
184
|
+
chainId: this.signatureContext.chainId,
|
|
185
|
+
rollupAddress: this.signatureContext.rollupAddress.toString()
|
|
176
186
|
};
|
|
177
187
|
}
|
|
178
188
|
/**
|
|
@@ -187,6 +197,6 @@ import { TopicType } from './topic_type.js';
|
|
|
187
197
|
* Returns a copy of this proposal without signedTxs.
|
|
188
198
|
* Used when storing proposals in attestation pool to avoid storing full tx data.
|
|
189
199
|
*/ withoutSignedTxs() {
|
|
190
|
-
return new BlockProposal(this.blockHeader, this.indexWithinCheckpoint, this.inHash, this.archiveRoot, this.txHashes, this.signature);
|
|
200
|
+
return new BlockProposal(this.blockHeader, this.indexWithinCheckpoint, this.inHash, this.archiveRoot, this.txHashes, this.signature, this.signatureContext);
|
|
191
201
|
}
|
|
192
202
|
}
|
|
@@ -7,6 +7,7 @@ import { BufferReader } from '@aztec/foundation/serialize';
|
|
|
7
7
|
import type { ZodFor } from '../schemas/index.js';
|
|
8
8
|
import { ConsensusPayload } from './consensus_payload.js';
|
|
9
9
|
import { Gossipable } from './gossipable.js';
|
|
10
|
+
import { type CoordinationSignatureContext } from './signature_utils.js';
|
|
10
11
|
import { TopicType } from './topic_type.js';
|
|
11
12
|
export type { CheckpointAttestationHash } from '@aztec/foundation/branded-types';
|
|
12
13
|
/**
|
|
@@ -23,8 +24,8 @@ export declare class CheckpointAttestation extends Gossipable {
|
|
|
23
24
|
/** The signature from the checkpoint proposer */
|
|
24
25
|
readonly proposerSignature: Signature;
|
|
25
26
|
static p2pTopic: TopicType;
|
|
26
|
-
private
|
|
27
|
-
private
|
|
27
|
+
private cachedSender;
|
|
28
|
+
private cachedProposer;
|
|
28
29
|
constructor(
|
|
29
30
|
/** The payload of the message, and what the signature is over */
|
|
30
31
|
payload: ConsensusPayload,
|
|
@@ -36,6 +37,7 @@ export declare class CheckpointAttestation extends Gossipable {
|
|
|
36
37
|
generateP2PMessageIdentifier(): Promise<BaseBuffer32>;
|
|
37
38
|
get archive(): Fr;
|
|
38
39
|
get slotNumber(): SlotNumber;
|
|
40
|
+
get signatureContext(): CoordinationSignatureContext;
|
|
39
41
|
/**
|
|
40
42
|
* Lazily evaluate and cache the signer of the attestation
|
|
41
43
|
* @returns The signer of the attestation, or undefined if signature recovery fails
|
|
@@ -72,9 +74,11 @@ export declare class CheckpointAttestation extends Gossipable {
|
|
|
72
74
|
};
|
|
73
75
|
archive: `0x${string}`;
|
|
74
76
|
feeAssetPriceModifier: string;
|
|
77
|
+
chainId: number;
|
|
78
|
+
rollupAddress: `0x${string}`;
|
|
75
79
|
};
|
|
76
80
|
signature: `0x${string}`;
|
|
77
81
|
proposerSignature: `0x${string}`;
|
|
78
82
|
};
|
|
79
83
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9hdHRlc3RhdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9jaGVja3BvaW50X2F0dGVzdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkIsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFJOUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLDRCQUE0QixFQUE2QixNQUFNLHNCQUFzQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRjs7Ozs7R0FLRztBQUNILHFCQUFhLHFCQUFzQixTQUFRLFVBQVU7SUFPakQsaUVBQWlFO2FBQ2pELE9BQU8sRUFBRSxnQkFBZ0I7SUFFekMsK0NBQStDO2FBQy9CLFNBQVMsRUFBRSxTQUFTO0lBRXBDLGlEQUFpRDthQUNqQyxpQkFBaUIsRUFBRSxTQUFTO0lBYjlDLE9BQWdCLFFBQVEsWUFBb0M7SUFFNUQsT0FBTyxDQUFDLFlBQVksQ0FBNEM7SUFDaEUsT0FBTyxDQUFDLGNBQWMsQ0FBNEM7SUFFbEU7SUFDRSxpRUFBaUU7SUFDakQsT0FBTyxFQUFFLGdCQUFnQjtJQUV6QywrQ0FBK0M7SUFDL0IsU0FBUyxFQUFFLFNBQVM7SUFFcEMsaURBQWlEO0lBQ2pDLGlCQUFpQixFQUFFLFNBQVMsRUFHN0M7SUFFRCxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQVFqRDtJQUVRLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FFN0Q7SUFFRCxJQUFJLE9BQU8sSUFBSSxFQUFFLENBRWhCO0lBRUQsSUFBSSxVQUFVLElBQUksVUFBVSxDQUUzQjtJQUVELElBQUksZ0JBQWdCLElBQUksNEJBQTRCLENBRW5EO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBS2xDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBZXBDO0lBRUQsVUFBVSxJQUFJLE1BQU0sQ0FFbkI7SUFFRCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcscUJBQXFCLENBT25FO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxxQkFBcUIsQ0FFcEM7SUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLHFCQUFxQixDQUVyQztJQUVELE9BQU8sSUFBSSxNQUFNLENBRWhCO0lBRUQsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQU1SO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"checkpoint_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,4BAA4B,EAA6B,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IAOjD,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;aAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;aACjC,iBAAiB,EAAE,SAAS;IAb9C,OAAgB,QAAQ,YAAoC;IAE5D,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAA4C;IAElE;IACE,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,+CAA+C;IAC/B,SAAS,EAAE,SAAS;IAEpC,iDAAiD;IACjC,iBAAiB,EAAE,SAAS,EAG7C;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAQjD;IAEQ,4BAA4B,IAAI,OAAO,CAAC,YAAY,CAAC,CAE7D;IAED,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,gBAAgB,IAAI,4BAA4B,CAEnD;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS,CAKlC;IAED;;;OAGG;IACH,WAAW,IAAI,UAAU,GAAG,SAAS,CAepC;IAED,UAAU,IAAI,MAAM,CAEnB;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,qBAAqB,CAOnE;IAED,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAEpC;IAED,MAAM,CAAC,MAAM,IAAI,qBAAqB,CAErC;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;MAMR;CACF"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { CheckpointAttestationHash } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
|
-
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
4
3
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
5
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
6
5
|
import { z } from 'zod';
|
|
7
6
|
import { CheckpointProposal } from './checkpoint_proposal.js';
|
|
8
7
|
import { ConsensusPayload } from './consensus_payload.js';
|
|
9
8
|
import { Gossipable } from './gossipable.js';
|
|
10
|
-
import {
|
|
9
|
+
import { recoverCoordinationSigner } from './signature_utils.js';
|
|
11
10
|
import { TopicType } from './topic_type.js';
|
|
12
11
|
/**
|
|
13
12
|
* CheckpointAttestation
|
|
@@ -19,10 +18,10 @@ import { TopicType } from './topic_type.js';
|
|
|
19
18
|
signature;
|
|
20
19
|
proposerSignature;
|
|
21
20
|
static p2pTopic = TopicType.checkpoint_attestation;
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
cachedSender;
|
|
22
|
+
cachedProposer;
|
|
24
23
|
constructor(/** The payload of the message, and what the signature is over */ payload, /** The signature of the checkpoint attester */ signature, /** The signature from the checkpoint proposer */ proposerSignature){
|
|
25
|
-
super(), this.payload = payload, this.signature = signature, this.proposerSignature = proposerSignature;
|
|
24
|
+
super(), this.payload = payload, this.signature = signature, this.proposerSignature = proposerSignature, this.cachedSender = undefined, this.cachedProposer = undefined;
|
|
26
25
|
}
|
|
27
26
|
static get schema() {
|
|
28
27
|
return z.object({
|
|
@@ -40,34 +39,33 @@ import { TopicType } from './topic_type.js';
|
|
|
40
39
|
get slotNumber() {
|
|
41
40
|
return this.payload.header.slotNumber;
|
|
42
41
|
}
|
|
42
|
+
get signatureContext() {
|
|
43
|
+
return this.payload.signatureContext;
|
|
44
|
+
}
|
|
43
45
|
/**
|
|
44
46
|
* Lazily evaluate and cache the signer of the attestation
|
|
45
47
|
* @returns The signer of the attestation, or undefined if signature recovery fails
|
|
46
48
|
*/ getSender() {
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
const hashed = getHashedSignaturePayloadEthSignedMessage(this.payload, SignatureDomainSeparator.checkpointAttestation);
|
|
50
|
-
// Cache the sender for later use
|
|
51
|
-
this.sender = tryRecoverAddress(hashed, this.signature);
|
|
49
|
+
if (this.cachedSender === undefined) {
|
|
50
|
+
this.cachedSender = recoverCoordinationSigner(this.payload, this.signature) ?? null;
|
|
52
51
|
}
|
|
53
|
-
return this.
|
|
52
|
+
return this.cachedSender ?? undefined;
|
|
54
53
|
}
|
|
55
54
|
/**
|
|
56
55
|
* Lazily evaluate and cache the proposer of the checkpoint
|
|
57
56
|
* @returns The proposer of the checkpoint
|
|
58
57
|
*/ getProposer() {
|
|
59
|
-
if (
|
|
58
|
+
if (this.cachedProposer === undefined) {
|
|
60
59
|
// Create a temporary CheckpointProposal to recover the proposer address.
|
|
61
60
|
// We need to use CheckpointProposal because it has a different getPayloadToSign()
|
|
62
61
|
// implementation than ConsensusPayload (uses serializeToBuffer vs ABI encoding).
|
|
63
|
-
const proposal = new CheckpointProposal(this.payload.header, this.payload.archive, this.payload.feeAssetPriceModifier, this.proposerSignature);
|
|
64
|
-
|
|
65
|
-
this.proposer = proposal.getSender();
|
|
62
|
+
const proposal = new CheckpointProposal(this.payload.header, this.payload.archive, this.payload.feeAssetPriceModifier, this.proposerSignature, this.payload.signatureContext);
|
|
63
|
+
this.cachedProposer = proposal.getSender() ?? null;
|
|
66
64
|
}
|
|
67
|
-
return this.
|
|
65
|
+
return this.cachedProposer ?? undefined;
|
|
68
66
|
}
|
|
69
67
|
getPayload() {
|
|
70
|
-
return this.payload.getPayloadToSign(
|
|
68
|
+
return this.payload.getPayloadToSign();
|
|
71
69
|
}
|
|
72
70
|
toBuffer() {
|
|
73
71
|
return serializeToBuffer([
|