@aztec/stdlib 0.0.1-commit.f504929 → 0.0.1-commit.f81dbcf

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.
Files changed (153) hide show
  1. package/dest/block/l2_block.d.ts +9 -1
  2. package/dest/block/l2_block.d.ts.map +1 -1
  3. package/dest/block/l2_block.js +12 -2
  4. package/dest/block/l2_block_source.d.ts +14 -8
  5. package/dest/block/l2_block_source.d.ts.map +1 -1
  6. package/dest/checkpoint/checkpoint.d.ts +2 -1
  7. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  8. package/dest/checkpoint/checkpoint.js +9 -4
  9. package/dest/checkpoint/index.d.ts +2 -1
  10. package/dest/checkpoint/index.d.ts.map +1 -1
  11. package/dest/checkpoint/index.js +1 -0
  12. package/dest/checkpoint/validate.d.ts +36 -0
  13. package/dest/checkpoint/validate.d.ts.map +1 -0
  14. package/dest/checkpoint/validate.js +120 -0
  15. package/dest/config/sequencer-config.d.ts +2 -4
  16. package/dest/config/sequencer-config.d.ts.map +1 -1
  17. package/dest/config/sequencer-config.js +1 -3
  18. package/dest/epoch-helpers/index.d.ts +5 -1
  19. package/dest/epoch-helpers/index.d.ts.map +1 -1
  20. package/dest/epoch-helpers/index.js +4 -2
  21. package/dest/gas/gas_fees.d.ts +1 -1
  22. package/dest/gas/gas_fees.d.ts.map +1 -1
  23. package/dest/gas/gas_fees.js +1 -4
  24. package/dest/interfaces/allowed_element.d.ts +25 -1
  25. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  26. package/dest/interfaces/allowed_element.js +8 -2
  27. package/dest/interfaces/archiver.d.ts +1 -1
  28. package/dest/interfaces/archiver.d.ts.map +1 -1
  29. package/dest/interfaces/archiver.js +3 -2
  30. package/dest/interfaces/aztec-node-admin.d.ts +55 -7
  31. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  32. package/dest/interfaces/aztec-node.d.ts +11 -6
  33. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  34. package/dest/interfaces/aztec-node.js +5 -2
  35. package/dest/interfaces/block-builder.d.ts +17 -9
  36. package/dest/interfaces/block-builder.d.ts.map +1 -1
  37. package/dest/interfaces/block-builder.js +12 -5
  38. package/dest/interfaces/configs.d.ts +42 -7
  39. package/dest/interfaces/configs.d.ts.map +1 -1
  40. package/dest/interfaces/configs.js +2 -1
  41. package/dest/interfaces/merkle_tree_operations.d.ts +9 -19
  42. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  43. package/dest/interfaces/prover-client.d.ts +6 -1
  44. package/dest/interfaces/prover-client.d.ts.map +1 -1
  45. package/dest/interfaces/prover-client.js +7 -1
  46. package/dest/interfaces/validator.d.ts +65 -6
  47. package/dest/interfaces/validator.d.ts.map +1 -1
  48. package/dest/interfaces/validator.js +6 -3
  49. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +2 -1
  50. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  51. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -0
  52. package/dest/logs/log_filter.d.ts +4 -1
  53. package/dest/logs/log_filter.d.ts.map +1 -1
  54. package/dest/logs/log_filter.js +2 -1
  55. package/dest/logs/tx_scoped_l2_log.d.ts +3 -1
  56. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  57. package/dest/logs/tx_scoped_l2_log.js +7 -0
  58. package/dest/messaging/l2_to_l1_membership.d.ts +32 -6
  59. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  60. package/dest/messaging/l2_to_l1_membership.js +69 -26
  61. package/dest/p2p/block_proposal.d.ts +2 -2
  62. package/dest/p2p/block_proposal.d.ts.map +1 -1
  63. package/dest/p2p/block_proposal.js +1 -1
  64. package/dest/p2p/checkpoint_proposal.d.ts +2 -7
  65. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  66. package/dest/p2p/checkpoint_proposal.js +14 -24
  67. package/dest/p2p/peer_error.d.ts +3 -1
  68. package/dest/p2p/peer_error.d.ts.map +1 -1
  69. package/dest/p2p/peer_error.js +5 -0
  70. package/dest/slashing/tally.d.ts +5 -6
  71. package/dest/slashing/tally.d.ts.map +1 -1
  72. package/dest/slashing/tally.js +19 -10
  73. package/dest/tests/mocks.d.ts +4 -2
  74. package/dest/tests/mocks.d.ts.map +1 -1
  75. package/dest/tests/mocks.js +13 -8
  76. package/dest/tx/block_header.d.ts +3 -1
  77. package/dest/tx/block_header.d.ts.map +1 -1
  78. package/dest/tx/block_header.js +4 -0
  79. package/dest/tx/tx.d.ts +6 -5
  80. package/dest/tx/tx.d.ts.map +1 -1
  81. package/dest/tx/tx.js +18 -6
  82. package/dest/tx/tx_receipt.d.ts +7 -2
  83. package/dest/tx/tx_receipt.d.ts.map +1 -1
  84. package/dest/tx/tx_receipt.js +6 -3
  85. package/dest/tx/validator/error_texts.d.ts +6 -1
  86. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  87. package/dest/tx/validator/error_texts.js +6 -0
  88. package/dest/update-checker/index.d.ts +3 -2
  89. package/dest/update-checker/index.d.ts.map +1 -1
  90. package/dest/update-checker/index.js +2 -1
  91. package/dest/update-checker/package_version.d.ts +3 -0
  92. package/dest/update-checker/package_version.d.ts.map +1 -0
  93. package/dest/update-checker/package_version.js +24 -0
  94. package/dest/update-checker/version_checker.d.ts +25 -0
  95. package/dest/update-checker/version_checker.d.ts.map +1 -0
  96. package/dest/update-checker/version_checker.js +50 -0
  97. package/dest/validators/errors.d.ts +6 -1
  98. package/dest/validators/errors.d.ts.map +1 -1
  99. package/dest/validators/errors.js +7 -0
  100. package/dest/versioning/versioning.d.ts +4 -2
  101. package/dest/versioning/versioning.d.ts.map +1 -1
  102. package/dest/versioning/versioning.js +4 -1
  103. package/package.json +9 -9
  104. package/src/block/l2_block.ts +13 -1
  105. package/src/block/l2_block_source.ts +14 -7
  106. package/src/checkpoint/checkpoint.ts +12 -3
  107. package/src/checkpoint/index.ts +1 -0
  108. package/src/checkpoint/validate.ts +230 -0
  109. package/src/config/sequencer-config.ts +2 -5
  110. package/src/epoch-helpers/index.ts +3 -0
  111. package/src/gas/gas_fees.ts +1 -7
  112. package/src/interfaces/allowed_element.ts +28 -4
  113. package/src/interfaces/archiver.ts +3 -2
  114. package/src/interfaces/aztec-node.ts +23 -5
  115. package/src/interfaces/block-builder.ts +30 -11
  116. package/src/interfaces/configs.ts +12 -4
  117. package/src/interfaces/merkle_tree_operations.ts +8 -18
  118. package/src/interfaces/prover-client.ts +8 -0
  119. package/src/interfaces/validator.ts +18 -3
  120. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +9 -0
  121. package/src/logs/log_filter.ts +5 -0
  122. package/src/logs/tx_scoped_l2_log.ts +16 -0
  123. package/src/messaging/l2_to_l1_membership.ts +98 -33
  124. package/src/p2p/block_proposal.ts +1 -1
  125. package/src/p2p/checkpoint_proposal.ts +24 -38
  126. package/src/p2p/peer_error.ts +7 -0
  127. package/src/slashing/tally.ts +22 -4
  128. package/src/tests/mocks.ts +18 -7
  129. package/src/tx/block_header.ts +6 -0
  130. package/src/tx/tx.ts +20 -11
  131. package/src/tx/tx_receipt.ts +7 -2
  132. package/src/tx/validator/error_texts.ts +7 -0
  133. package/src/update-checker/index.ts +2 -1
  134. package/src/update-checker/package_version.ts +30 -0
  135. package/src/update-checker/version_checker.ts +65 -0
  136. package/src/validators/errors.ts +9 -0
  137. package/src/versioning/versioning.ts +4 -1
  138. package/dest/ha-signing/config.d.ts +0 -101
  139. package/dest/ha-signing/config.d.ts.map +0 -1
  140. package/dest/ha-signing/config.js +0 -92
  141. package/dest/ha-signing/index.d.ts +0 -3
  142. package/dest/ha-signing/index.d.ts.map +0 -1
  143. package/dest/ha-signing/index.js +0 -2
  144. package/dest/ha-signing/types.d.ts +0 -85
  145. package/dest/ha-signing/types.d.ts.map +0 -1
  146. package/dest/ha-signing/types.js +0 -32
  147. package/dest/update-checker/update-checker.d.ts +0 -49
  148. package/dest/update-checker/update-checker.d.ts.map +0 -1
  149. package/dest/update-checker/update-checker.js +0 -130
  150. package/src/ha-signing/config.ts +0 -149
  151. package/src/ha-signing/index.ts +0 -18
  152. package/src/ha-signing/types.ts +0 -112
  153. package/src/update-checker/update-checker.ts +0 -166
@@ -1,112 +0,0 @@
1
- import {
2
- BlockNumber,
3
- type CheckpointNumber,
4
- type IndexWithinCheckpoint,
5
- type SlotNumber,
6
- } from '@aztec/foundation/branded-types';
7
-
8
- /**
9
- * Type of validator duty being performed
10
- */
11
- export enum DutyType {
12
- BLOCK_PROPOSAL = 'BLOCK_PROPOSAL',
13
- CHECKPOINT_PROPOSAL = 'CHECKPOINT_PROPOSAL',
14
- ATTESTATION = 'ATTESTATION',
15
- ATTESTATIONS_AND_SIGNERS = 'ATTESTATIONS_AND_SIGNERS',
16
- GOVERNANCE_VOTE = 'GOVERNANCE_VOTE',
17
- SLASHING_VOTE = 'SLASHING_VOTE',
18
- AUTH_REQUEST = 'AUTH_REQUEST',
19
- TXS = 'TXS',
20
- }
21
-
22
- /**
23
- * Base context for signing operations
24
- */
25
- interface BaseSigningContext {
26
- /** Slot number for this duty */
27
- slot: SlotNumber;
28
- /**
29
- * Block or checkpoint number for this duty.
30
- * For block proposals, this is the block number.
31
- * For checkpoint proposals, this is the checkpoint number.
32
- */
33
- blockNumber: BlockNumber | CheckpointNumber;
34
- }
35
-
36
- /**
37
- * Signing context for block proposals.
38
- * blockIndexWithinCheckpoint is REQUIRED and must be >= 0.
39
- */
40
- export interface BlockProposalSigningContext extends BaseSigningContext {
41
- /** Block index within checkpoint (0, 1, 2...). Required for block proposals. */
42
- blockIndexWithinCheckpoint: IndexWithinCheckpoint;
43
- dutyType: DutyType.BLOCK_PROPOSAL;
44
- }
45
-
46
- /**
47
- * Signing context for non-block-proposal duties that require HA protection.
48
- * blockIndexWithinCheckpoint is not applicable (internally always -1).
49
- */
50
- export interface OtherSigningContext extends BaseSigningContext {
51
- dutyType: DutyType.CHECKPOINT_PROPOSAL | DutyType.ATTESTATION | DutyType.ATTESTATIONS_AND_SIGNERS;
52
- }
53
-
54
- /**
55
- * Signing context for governance/slashing votes which only need slot for HA protection.
56
- * blockNumber is not applicable (internally always 0).
57
- */
58
- export interface VoteSigningContext {
59
- slot: SlotNumber;
60
- dutyType: DutyType.GOVERNANCE_VOTE | DutyType.SLASHING_VOTE;
61
- }
62
-
63
- /**
64
- * Signing context for duties which don't require slot/blockNumber
65
- * as they don't need HA protection (AUTH_REQUEST, TXS).
66
- */
67
- export interface NoHAProtectionSigningContext {
68
- dutyType: DutyType.AUTH_REQUEST | DutyType.TXS;
69
- }
70
-
71
- /**
72
- * Signing contexts that require HA protection (excludes AUTH_REQUEST).
73
- * Used by the HA signer's signWithProtection method.
74
- */
75
- export type HAProtectedSigningContext = BlockProposalSigningContext | OtherSigningContext | VoteSigningContext;
76
-
77
- /**
78
- * Context required for slashing protection during signing operations.
79
- * Uses discriminated union to enforce type safety:
80
- * - BLOCK_PROPOSAL duties MUST have blockIndexWithinCheckpoint >= 0
81
- * - Other duty types do NOT have blockIndexWithinCheckpoint (internally -1)
82
- * - Vote duties only need slot (blockNumber is internally 0)
83
- * - AUTH_REQUEST and TXS duties don't need slot/blockNumber (no HA protection needed)
84
- */
85
- export type SigningContext = HAProtectedSigningContext | NoHAProtectionSigningContext;
86
-
87
- /**
88
- * Type guard to check if a SigningContext requires HA protection.
89
- * Returns true for contexts that need HA protection, false for AUTH_REQUEST and TXS.
90
- */
91
- export function isHAProtectedContext(context: SigningContext): context is HAProtectedSigningContext {
92
- return context.dutyType !== DutyType.AUTH_REQUEST && context.dutyType !== DutyType.TXS;
93
- }
94
-
95
- /**
96
- * Gets the block number from a signing context.
97
- * - Vote duties (GOVERNANCE_VOTE, SLASHING_VOTE): returns BlockNumber(0)
98
- * - Other duties: returns the blockNumber from the context
99
- */
100
- export function getBlockNumberFromSigningContext(context: HAProtectedSigningContext): BlockNumber | CheckpointNumber {
101
- // Check for duty types that have blockNumber
102
- if (
103
- context.dutyType === DutyType.BLOCK_PROPOSAL ||
104
- context.dutyType === DutyType.CHECKPOINT_PROPOSAL ||
105
- context.dutyType === DutyType.ATTESTATION ||
106
- context.dutyType === DutyType.ATTESTATIONS_AND_SIGNERS
107
- ) {
108
- return context.blockNumber;
109
- }
110
- // Vote duties (GOVERNANCE_VOTE, SLASHING_VOTE) don't have blockNumber
111
- return BlockNumber(0);
112
- }
@@ -1,166 +0,0 @@
1
- import { RegistryContract } from '@aztec/ethereum/contracts';
2
- import type { ViemClient } from '@aztec/ethereum/types';
3
- import { EthAddress } from '@aztec/foundation/eth-address';
4
- import { createLogger } from '@aztec/foundation/log';
5
- import { RunningPromise } from '@aztec/foundation/running-promise';
6
- import { fileURLToPath } from '@aztec/foundation/url';
7
-
8
- import { EventEmitter } from 'events';
9
- import { readFileSync } from 'fs';
10
- import { dirname, resolve } from 'path';
11
- import { isDeepStrictEqual } from 'util';
12
- import { z } from 'zod';
13
-
14
- const updateConfigSchema = z.object({
15
- version: z.string().optional(),
16
- publicTelemetry: z.any().optional(),
17
- config: z.any().optional(),
18
- });
19
-
20
- export type EventMap = {
21
- newRollupVersion: [{ currentVersion: bigint; latestVersion: bigint }];
22
- newNodeVersion: [{ currentVersion: string; latestVersion: string }];
23
- updateNodeConfig: [object];
24
- updatePublicTelemetryConfig: [object];
25
- };
26
-
27
- type Config = {
28
- baseURL: URL;
29
- nodeVersion?: string;
30
- checkIntervalMs?: number;
31
- registryContractAddress: EthAddress;
32
- publicClient: ViemClient;
33
- fetch?: typeof fetch;
34
- };
35
-
36
- export class UpdateChecker extends EventEmitter<EventMap> {
37
- private runningPromise: RunningPromise;
38
- private lastPatchedConfig: object = {};
39
- private lastPatchedPublicTelemetryConfig: object = {};
40
-
41
- constructor(
42
- private updatesUrl: URL,
43
- private nodeVersion: string | undefined,
44
- private rollupVersion: bigint,
45
- private fetch: typeof globalThis.fetch,
46
- private getLatestRollupVersion: () => Promise<bigint>,
47
- private checkIntervalMs = 10 * 60_000, // every 10 mins
48
- private log = createLogger('foundation:update-check'),
49
- ) {
50
- super();
51
- this.runningPromise = new RunningPromise(this.runChecks, this.log, this.checkIntervalMs);
52
- }
53
-
54
- public static async new(config: Config): Promise<UpdateChecker> {
55
- const registryContract = new RegistryContract(config.publicClient, config.registryContractAddress);
56
- const getLatestRollupVersion = () => registryContract.getRollupVersions().then(versions => versions.at(-1)!);
57
-
58
- return new UpdateChecker(
59
- config.baseURL,
60
- config.nodeVersion ?? getPackageVersion(),
61
- await getLatestRollupVersion(),
62
- config.fetch ?? fetch,
63
- getLatestRollupVersion,
64
- config.checkIntervalMs,
65
- );
66
- }
67
-
68
- public start(): void {
69
- if (this.runningPromise.isRunning()) {
70
- this.log.debug(`Can't start update checker again`);
71
- return;
72
- }
73
-
74
- this.log.info('Starting update checker', {
75
- nodeVersion: this.nodeVersion,
76
- rollupVersion: this.rollupVersion,
77
- });
78
- this.runningPromise.start();
79
- }
80
-
81
- public stop(): Promise<void> {
82
- if (!this.runningPromise.isRunning()) {
83
- this.log.debug(`Can't stop update checker because it is not running`);
84
- return Promise.resolve();
85
- }
86
- return this.runningPromise.stop();
87
- }
88
-
89
- public trigger(): Promise<void> {
90
- return this.runningPromise.trigger();
91
- }
92
-
93
- private runChecks = async (): Promise<void> => {
94
- await Promise.all([this.checkRollupVersion(), this.checkConfig()]);
95
- };
96
-
97
- private async checkRollupVersion(): Promise<void> {
98
- try {
99
- const canonicalRollupVersion = await this.getLatestRollupVersion();
100
- if (canonicalRollupVersion !== this.rollupVersion) {
101
- this.log.debug('New canonical rollup version', {
102
- currentVersion: this.rollupVersion,
103
- latestVersion: canonicalRollupVersion,
104
- });
105
- this.emit('newRollupVersion', { currentVersion: this.rollupVersion, latestVersion: canonicalRollupVersion });
106
- }
107
- } catch (err) {
108
- this.log.warn(`Failed to check if there is a new rollup`, err);
109
- }
110
- }
111
-
112
- private async checkConfig(): Promise<void> {
113
- try {
114
- const response = await this.fetch(this.updatesUrl);
115
- const body = await response.json();
116
- if (!response.ok) {
117
- this.log.warn(`Unexpected HTTP response checking for updates`, {
118
- status: response.status,
119
- body: await response.text(),
120
- url: this.updatesUrl,
121
- });
122
- }
123
-
124
- const { version, config, publicTelemetry } = updateConfigSchema.parse(body);
125
-
126
- if (this.nodeVersion && version && version !== this.nodeVersion) {
127
- this.log.debug('New node version', { currentVersion: this.nodeVersion, latestVersion: version });
128
- this.emit('newNodeVersion', { currentVersion: this.nodeVersion, latestVersion: version });
129
- }
130
-
131
- if (config && Object.keys(config).length > 0 && !isDeepStrictEqual(config, this.lastPatchedConfig)) {
132
- this.log.debug('New node config', { config });
133
- this.lastPatchedConfig = config;
134
- this.emit('updateNodeConfig', config);
135
- }
136
-
137
- if (
138
- publicTelemetry &&
139
- Object.keys(publicTelemetry).length > 0 &&
140
- !isDeepStrictEqual(publicTelemetry, this.lastPatchedPublicTelemetryConfig)
141
- ) {
142
- this.log.debug('New metrics config', { config });
143
- this.lastPatchedPublicTelemetryConfig = publicTelemetry;
144
- this.emit('updatePublicTelemetryConfig', publicTelemetry);
145
- }
146
- } catch (err) {
147
- this.log.warn(`Failed to check if there is an update`, err);
148
- }
149
- }
150
- }
151
-
152
- /**
153
- * Returns package version.
154
- */
155
- export function getPackageVersion(): string | undefined {
156
- try {
157
- const releasePleaseManifestPath = resolve(
158
- dirname(fileURLToPath(import.meta.url)),
159
- '../../../../.release-please-manifest.json',
160
- );
161
- const version = JSON.parse(readFileSync(releasePleaseManifestPath).toString())['.'];
162
- return version;
163
- } catch {
164
- return undefined;
165
- }
166
- }