@aztec/stdlib 2.0.3-rc.3 → 2.0.3-rc.30

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 (52) hide show
  1. package/dest/block/proposal/attestations_and_signers.d.ts +48 -0
  2. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -0
  3. package/dest/block/proposal/attestations_and_signers.js +99 -0
  4. package/dest/block/proposal/committee_attestation.d.ts +1 -0
  5. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  6. package/dest/block/proposal/committee_attestation.js +3 -0
  7. package/dest/block/proposal/index.d.ts +1 -0
  8. package/dest/block/proposal/index.d.ts.map +1 -1
  9. package/dest/block/proposal/index.js +1 -0
  10. package/dest/interfaces/aztec-node-admin.d.ts +6 -0
  11. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  12. package/dest/interfaces/block-builder.d.ts +1 -0
  13. package/dest/interfaces/block-builder.d.ts.map +1 -1
  14. package/dest/interfaces/slasher.d.ts +4 -0
  15. package/dest/interfaces/slasher.d.ts.map +1 -1
  16. package/dest/interfaces/slasher.js +1 -0
  17. package/dest/interfaces/validator.d.ts +9 -2
  18. package/dest/interfaces/validator.d.ts.map +1 -1
  19. package/dest/interfaces/validator.js +2 -1
  20. package/dest/p2p/consensus_payload.d.ts +27 -0
  21. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  22. package/dest/p2p/consensus_payload.js +10 -0
  23. package/dest/p2p/signature_utils.d.ts +2 -1
  24. package/dest/p2p/signature_utils.d.ts.map +1 -1
  25. package/dest/p2p/signature_utils.js +1 -0
  26. package/dest/slashing/types.d.ts +1 -0
  27. package/dest/slashing/types.d.ts.map +1 -1
  28. package/dest/slashing/types.js +22 -0
  29. package/dest/tests/mocks.d.ts +2 -0
  30. package/dest/tests/mocks.d.ts.map +1 -1
  31. package/dest/tests/mocks.js +4 -0
  32. package/dest/tx/proposed_block_header.d.ts +1 -0
  33. package/dest/tx/proposed_block_header.d.ts.map +1 -1
  34. package/dest/tx/proposed_block_header.js +3 -0
  35. package/dest/tx/state_reference.js +1 -1
  36. package/dest/tx/tx.d.ts +0 -7
  37. package/dest/tx/tx.d.ts.map +1 -1
  38. package/dest/tx/tx.js +0 -8
  39. package/package.json +8 -8
  40. package/src/block/proposal/attestations_and_signers.ts +121 -0
  41. package/src/block/proposal/committee_attestation.ts +4 -0
  42. package/src/block/proposal/index.ts +1 -0
  43. package/src/interfaces/block-builder.ts +1 -0
  44. package/src/interfaces/slasher.ts +2 -0
  45. package/src/interfaces/validator.ts +12 -2
  46. package/src/p2p/consensus_payload.ts +16 -0
  47. package/src/p2p/signature_utils.ts +1 -0
  48. package/src/slashing/types.ts +23 -0
  49. package/src/tests/mocks.ts +12 -0
  50. package/src/tx/proposed_block_header.ts +13 -0
  51. package/src/tx/state_reference.ts +1 -1
  52. package/src/tx/tx.ts +0 -10
@@ -0,0 +1,48 @@
1
+ import type { ViemCommitteeAttestations } from '@aztec/ethereum';
2
+ import { z } from 'zod';
3
+ import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
4
+ import { CommitteeAttestation } from './committee_attestation.js';
5
+ export declare class CommitteeAttestationsAndSigners implements Signable {
6
+ attestations: CommitteeAttestation[];
7
+ constructor(attestations: CommitteeAttestation[]);
8
+ static get schema(): z.ZodEffects<z.ZodObject<{
9
+ attestations: z.ZodArray<z.ZodEffects<z.ZodObject<{
10
+ address: z.ZodType<import("./committee_attestation.js").EthAddress, any, string>;
11
+ signature: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, `0x${string}`, string>, `0x${string}`, string>, import("./committee_attestation.js").Signature, string>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ address: import("./committee_attestation.js").EthAddress;
14
+ signature: import("./committee_attestation.js").Signature;
15
+ }, {
16
+ address: string;
17
+ signature: string;
18
+ }>, CommitteeAttestation, {
19
+ address: string;
20
+ signature: string;
21
+ }>, "many">;
22
+ }, "strip", z.ZodTypeAny, {
23
+ attestations: CommitteeAttestation[];
24
+ }, {
25
+ attestations: {
26
+ address: string;
27
+ signature: string;
28
+ }[];
29
+ }>, CommitteeAttestationsAndSigners, {
30
+ attestations: {
31
+ address: string;
32
+ signature: string;
33
+ }[];
34
+ }>;
35
+ getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
36
+ static empty(): CommitteeAttestationsAndSigners;
37
+ toString(): string;
38
+ getSigners(): import("./committee_attestation.js").EthAddress[];
39
+ getSignedAttestations(): CommitteeAttestation[];
40
+ /**
41
+ * Packs an array of committee attestations into the format expected by the Solidity contract
42
+ *
43
+ * @param attestations - Array of committee attestations with addresses and signatures
44
+ * @returns Packed attestations with bitmap and tightly packed signature/address data
45
+ */
46
+ getPackedAttestations(): ViemCommitteeAttestations;
47
+ }
48
+ //# sourceMappingURL=attestations_and_signers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestations_and_signers.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/attestations_and_signers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAIjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,qBAAa,+BAAgC,YAAW,QAAQ;IAC3C,YAAY,EAAE,oBAAoB,EAAE;gBAApC,YAAY,EAAE,oBAAoB,EAAE;IAEvD,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;OAMhB;IAED,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM;IAanE,MAAM,CAAC,KAAK,IAAI,+BAA+B;IAI/C,QAAQ;IAIR,UAAU;IAIV,qBAAqB;IAIrB;;;;;OAKG;IACH,qBAAqB,IAAI,yBAAyB;CAiEnD"}
@@ -0,0 +1,99 @@
1
+ import { hexToBuffer } from '@aztec/foundation/string';
2
+ import { encodeAbiParameters, parseAbiParameters } from 'viem';
3
+ import { z } from 'zod';
4
+ import { CommitteeAttestation } from './committee_attestation.js';
5
+ export class CommitteeAttestationsAndSigners {
6
+ attestations;
7
+ constructor(attestations){
8
+ this.attestations = attestations;
9
+ }
10
+ static get schema() {
11
+ return z.object({
12
+ attestations: CommitteeAttestation.schema.array()
13
+ }).transform((obj)=>new CommitteeAttestationsAndSigners(obj.attestations));
14
+ }
15
+ getPayloadToSign(domainSeparator) {
16
+ const abi = parseAbiParameters('uint8,(bytes,bytes),address[]');
17
+ const packed = this.getPackedAttestations();
18
+ const encodedData = encodeAbiParameters(abi, [
19
+ domainSeparator,
20
+ [
21
+ packed.signatureIndices,
22
+ packed.signaturesOrAddresses
23
+ ],
24
+ this.getSigners().map((s)=>s.toString())
25
+ ]);
26
+ return hexToBuffer(encodedData);
27
+ }
28
+ static empty() {
29
+ return new CommitteeAttestationsAndSigners([]);
30
+ }
31
+ toString() {
32
+ return `CommitteeAttestationsAndSigners(${this.attestations.map((a)=>a.toString()).join(',')})`;
33
+ }
34
+ getSigners() {
35
+ return this.attestations.filter((a)=>!a.signature.isEmpty()).map((a)=>a.address);
36
+ }
37
+ getSignedAttestations() {
38
+ return this.attestations.filter((a)=>!a.signature.isEmpty());
39
+ }
40
+ /**
41
+ * Packs an array of committee attestations into the format expected by the Solidity contract
42
+ *
43
+ * @param attestations - Array of committee attestations with addresses and signatures
44
+ * @returns Packed attestations with bitmap and tightly packed signature/address data
45
+ */ getPackedAttestations() {
46
+ const length = this.attestations.length;
47
+ const attestations = this.attestations.map((a)=>a.toViem());
48
+ // Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
49
+ const bitmapSize = Math.ceil(length / 8);
50
+ const signatureIndices = new Uint8Array(bitmapSize);
51
+ // Calculate total data size needed
52
+ let totalDataSize = 0;
53
+ for(let i = 0; i < length; i++){
54
+ const signature = attestations[i].signature;
55
+ // Check if signature is empty (v = 0)
56
+ const isEmpty = signature.v === 0;
57
+ if (!isEmpty) {
58
+ totalDataSize += 65; // v (1) + r (32) + s (32)
59
+ } else {
60
+ totalDataSize += 20; // address only
61
+ }
62
+ }
63
+ const signaturesOrAddresses = new Uint8Array(totalDataSize);
64
+ let dataIndex = 0;
65
+ // Pack the data
66
+ for(let i = 0; i < length; i++){
67
+ const attestation = attestations[i];
68
+ const signature = attestation.signature;
69
+ // Check if signature is empty
70
+ const isEmpty = signature.v === 0;
71
+ if (!isEmpty) {
72
+ // Set bit in bitmap (bit 7-0 in each byte, left to right)
73
+ const byteIndex = Math.floor(i / 8);
74
+ const bitIndex = 7 - i % 8;
75
+ signatureIndices[byteIndex] |= 1 << bitIndex;
76
+ // Pack signature: v + r + s
77
+ signaturesOrAddresses[dataIndex] = signature.v;
78
+ dataIndex++;
79
+ // Pack r (32 bytes)
80
+ const rBytes = Buffer.from(signature.r.slice(2), 'hex');
81
+ signaturesOrAddresses.set(rBytes, dataIndex);
82
+ dataIndex += 32;
83
+ // Pack s (32 bytes)
84
+ const sBytes = Buffer.from(signature.s.slice(2), 'hex');
85
+ signaturesOrAddresses.set(sBytes, dataIndex);
86
+ dataIndex += 32;
87
+ } else {
88
+ // Pack address only (20 bytes)
89
+ const addrBytes = Buffer.from(attestation.addr.slice(2), 'hex');
90
+ signaturesOrAddresses.set(addrBytes, dataIndex);
91
+ dataIndex += 20;
92
+ }
93
+ }
94
+ return {
95
+ signatureIndices: `0x${Buffer.from(signatureIndices).toString('hex')}`,
96
+ signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`
97
+ };
98
+ }
99
+ }
@@ -31,6 +31,7 @@ export declare class CommitteeAttestation {
31
31
  static fromPacked(packed: ViemCommitteeAttestations, committeeSize: number): CommitteeAttestation[];
32
32
  toBuffer(): Buffer;
33
33
  equals(other: CommitteeAttestation): boolean;
34
+ toString(): string;
34
35
  toViem(): ViemCommitteeAttestation;
35
36
  }
36
37
  //# sourceMappingURL=committee_attestation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"committee_attestation.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/committee_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEjC,qBAAa,oBAAoB;aAEb,OAAO,EAAE,UAAU;aACnB,SAAS,EAAE,SAAS;gBADpB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS;IAGtC,MAAM,KAAK,MAAM;;;;;;;;;;;;OAOhB;IAGD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB;IAK7D,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAI/F,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAIhE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,oBAAoB;IAIrE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,oBAAoB;IAOtE,MAAM,CAAC,MAAM,IAAI,oBAAoB;IAKrC,MAAM,CAAC,KAAK,IAAI,oBAAoB;IAIpC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,GAAG,oBAAoB,EAAE;IA+CnG,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAI5C,MAAM,IAAI,wBAAwB;CAMnC"}
1
+ {"version":3,"file":"committee_attestation.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/committee_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEjC,qBAAa,oBAAoB;aAEb,OAAO,EAAE,UAAU;aACnB,SAAS,EAAE,SAAS;gBADpB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS;IAGtC,MAAM,KAAK,MAAM;;;;;;;;;;;;OAOhB;IAGD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB;IAK7D,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAI/F,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB;IAIhE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,oBAAoB;IAIrE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,oBAAoB;IAOtE,MAAM,CAAC,MAAM,IAAI,oBAAoB;IAKrC,MAAM,CAAC,KAAK,IAAI,oBAAoB;IAIpC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,GAAG,oBAAoB,EAAE;IA+CnG,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAI5C,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,wBAAwB;CAMnC"}
@@ -92,6 +92,9 @@ export class CommitteeAttestation {
92
92
  equals(other) {
93
93
  return this.address.equals(other.address) && this.signature.equals(other.signature);
94
94
  }
95
+ toString() {
96
+ return `CommitteeAttestation(${this.address.toString()}, ${this.signature.toString()})`;
97
+ }
95
98
  toViem() {
96
99
  return {
97
100
  addr: this.address.toString(),
@@ -1,2 +1,3 @@
1
1
  export * from './committee_attestation.js';
2
+ export * from './attestations_and_signers.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/block/proposal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from './committee_attestation.js';
2
+ export * from './attestations_and_signers.js';
@@ -121,6 +121,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
121
121
  slashMaxPayloadSize: z.ZodNumber;
122
122
  slashGracePeriodL2Slots: z.ZodNumber;
123
123
  slashBroadcastedInvalidBlockPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
124
+ slashExecuteRoundsLookBack: z.ZodNumber;
124
125
  slashSelfAllowed: z.ZodOptional<z.ZodBoolean>;
125
126
  }>, {
126
127
  validatorAddresses: z.ZodOptional<z.ZodArray<z.ZodType<import("@aztec/foundation/schemas").EthAddress, any, string>, "many">>;
@@ -129,6 +130,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
129
130
  attestationPollingIntervalMs: z.ZodNumber;
130
131
  validatorReexecute: z.ZodBoolean;
131
132
  validatorReexecuteDeadlineMs: z.ZodNumber;
133
+ alwaysReexecuteBlockProposals: z.ZodOptional<z.ZodBoolean>;
132
134
  }>, Pick<{
133
135
  archiverPollingIntervalMS: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
134
136
  archiverBatchSize: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
@@ -157,6 +159,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
157
159
  slashMaxPayloadSize: number;
158
160
  slashGracePeriodL2Slots: number;
159
161
  slashBroadcastedInvalidBlockPenalty: bigint;
162
+ slashExecuteRoundsLookBack: number;
160
163
  realProofs: boolean;
161
164
  proverTestDelayType: "fixed" | "realistic";
162
165
  proverTestDelayMs: number;
@@ -204,6 +207,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
204
207
  slashSelfAllowed?: boolean | undefined;
205
208
  nodeUrl?: string | undefined;
206
209
  validatorAddresses?: import("@aztec/foundation/schemas").EthAddress[] | undefined;
210
+ alwaysReexecuteBlockProposals?: boolean | undefined;
207
211
  }, {
208
212
  secondsBeforeInvalidatingBlockAsCommitteeMember: number;
209
213
  secondsBeforeInvalidatingBlockAsNonCommitteeMember: number;
@@ -223,6 +227,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
223
227
  slashMaxPayloadSize: number;
224
228
  slashGracePeriodL2Slots: number;
225
229
  slashBroadcastedInvalidBlockPenalty: string | number | bigint;
230
+ slashExecuteRoundsLookBack: number;
226
231
  realProofs: boolean;
227
232
  proverTestDelayType: "fixed" | "realistic";
228
233
  proverTestDelayMs: number;
@@ -270,6 +275,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
270
275
  slashSelfAllowed?: boolean | undefined;
271
276
  nodeUrl?: string | undefined;
272
277
  validatorAddresses?: string[] | undefined;
278
+ alwaysReexecuteBlockProposals?: boolean | undefined;
273
279
  }>;
274
280
  export declare const AztecNodeAdminApiSchema: ApiSchemaFor<AztecNodeAdmin>;
275
281
  export declare function createAztecNodeAdminClient(url: string, versions?: Partial<ComponentsVersions>, fetch?: typeof defaultFetch): AztecNodeAdmin;
@@ -1 +1 @@
1
- {"version":3,"file":"aztec-node-admin.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,iBAAiB,EAA2B,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,KAAK,sBAAsB,EAAgC,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,cAAc,CAAC;AACvE,OAAO,EAA+B,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,UAAU,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,+CAA+C;IAC/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,gDAAgD;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjD,2DAA2D;IAC3D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAC1D,eAAe,GACf,YAAY,GACZ,aAAa,GACb,IAAI,CAAC,sBAAsB,EAAE,2BAA2B,GAAG,+BAA+B,GAAG,mBAAmB,CAAC,GAAG;IAClH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUU,CAAC;AAElD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,cAAc,CAYhE,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,GACnB,cAAc,CAMhB"}
1
+ {"version":3,"file":"aztec-node-admin.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,iBAAiB,EAA2B,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,KAAK,sBAAsB,EAAgC,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,cAAc,CAAC;AACvE,OAAO,EAA+B,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,UAAU,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,+CAA+C;IAC/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,gDAAgD;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjD,2DAA2D;IAC3D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAC1D,eAAe,GACf,YAAY,GACZ,aAAa,GACb,IAAI,CAAC,sBAAsB,EAAE,2BAA2B,GAAG,+BAA+B,GAAG,mBAAmB,CAAC,GAAG;IAClH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUU,CAAC;AAElD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,cAAc,CAYhE,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,GACnB,cAAc,CAMhB"}
@@ -34,6 +34,7 @@ export interface PublicProcessorLimits {
34
34
  maxTransactions?: number;
35
35
  maxBlockSize?: number;
36
36
  maxBlockGas?: Gas;
37
+ maxBlobFields?: number;
37
38
  deadline?: Date;
38
39
  }
39
40
  export interface PublicProcessorValidator {
@@ -1 +1 @@
1
- {"version":3,"file":"block-builder.d.ts","sourceRoot":"","sources":["../../src/interfaces/block-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-builder.d.ts","sourceRoot":"","sources":["../../src/interfaces/block-builder.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export interface SlasherConfig {
20
20
  slashOffenseExpirationRounds: number;
21
21
  slashMaxPayloadSize: number;
22
22
  slashGracePeriodL2Slots: number;
23
+ slashExecuteRoundsLookBack: number;
23
24
  }
24
25
  export declare const SlasherConfigSchema: z.ZodObject<{
25
26
  slashOverridePayload: z.ZodOptional<z.ZodType<EthAddress, any, string>>;
@@ -39,6 +40,7 @@ export declare const SlasherConfigSchema: z.ZodObject<{
39
40
  slashMaxPayloadSize: z.ZodNumber;
40
41
  slashGracePeriodL2Slots: z.ZodNumber;
41
42
  slashBroadcastedInvalidBlockPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
43
+ slashExecuteRoundsLookBack: z.ZodNumber;
42
44
  slashSelfAllowed: z.ZodOptional<z.ZodBoolean>;
43
45
  }, "strip", z.ZodTypeAny, {
44
46
  slashMinPenaltyPercentage: number;
@@ -57,6 +59,7 @@ export declare const SlasherConfigSchema: z.ZodObject<{
57
59
  slashMaxPayloadSize: number;
58
60
  slashGracePeriodL2Slots: number;
59
61
  slashBroadcastedInvalidBlockPenalty: bigint;
62
+ slashExecuteRoundsLookBack: number;
60
63
  slashOverridePayload?: EthAddress | undefined;
61
64
  slashSelfAllowed?: boolean | undefined;
62
65
  }, {
@@ -76,6 +79,7 @@ export declare const SlasherConfigSchema: z.ZodObject<{
76
79
  slashMaxPayloadSize: number;
77
80
  slashGracePeriodL2Slots: number;
78
81
  slashBroadcastedInvalidBlockPenalty: string | number | bigint;
82
+ slashExecuteRoundsLookBack: number;
79
83
  slashOverridePayload?: string | undefined;
80
84
  slashSelfAllowed?: boolean | undefined;
81
85
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"slasher.d.ts","sourceRoot":"","sources":["../../src/interfaces/slasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACpC,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,+BAA+B,EAAE,MAAM,CAAC;IACxC,wCAAwC,EAAE,MAAM,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mCAAmC,EAAE,MAAM,CAAC;IAC5C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBE,CAAC"}
1
+ {"version":3,"file":"slasher.d.ts","sourceRoot":"","sources":["../../src/interfaces/slasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACpC,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,+BAA+B,EAAE,MAAM,CAAC;IACxC,wCAAwC,EAAE,MAAM,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mCAAmC,EAAE,MAAM,CAAC;IAC5C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;CACpC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBE,CAAC"}
@@ -18,5 +18,6 @@ export const SlasherConfigSchema = z.object({
18
18
  slashMaxPayloadSize: z.number(),
19
19
  slashGracePeriodL2Slots: z.number(),
20
20
  slashBroadcastedInvalidBlockPenalty: schemas.BigInt,
21
+ slashExecuteRoundsLookBack: z.number(),
21
22
  slashSelfAllowed: z.boolean().optional()
22
23
  });
@@ -1,11 +1,13 @@
1
1
  import type { SecretValue } from '@aztec/foundation/config';
2
2
  import type { EthAddress } from '@aztec/foundation/eth-address';
3
+ import type { Signature } from '@aztec/foundation/eth-signature';
3
4
  import { Fr } from '@aztec/foundation/fields';
4
5
  import type { SequencerConfig, SlasherConfig } from '@aztec/stdlib/interfaces/server';
5
6
  import type { BlockAttestation, BlockProposal, BlockProposalOptions } from '@aztec/stdlib/p2p';
6
7
  import type { ProposedBlockHeader, StateReference, Tx } from '@aztec/stdlib/tx';
7
8
  import type { PeerId } from '@libp2p/interface';
8
9
  import { z } from 'zod';
10
+ import type { CommitteeAttestationsAndSigners } from '../block/index.js';
9
11
  /**
10
12
  * Validator client configuration
11
13
  */
@@ -20,10 +22,12 @@ export interface ValidatorClientConfig {
20
22
  disabledValidators: EthAddress[];
21
23
  /** Interval between polling for new attestations from peers */
22
24
  attestationPollingIntervalMs: number;
23
- /** Re-execute transactions before attesting */
25
+ /** Whether to re-execute transactions in a block proposal before attesting */
24
26
  validatorReexecute: boolean;
25
27
  /** Will re-execute until this many milliseconds are left in the slot */
26
28
  validatorReexecuteDeadlineMs: number;
29
+ /** Whether to always reexecute block proposals, even for non-validator nodes or when out of the currnet committee */
30
+ alwaysReexecuteBlockProposals?: boolean;
27
31
  }
28
32
  export type ValidatorClientFullConfig = ValidatorClientConfig & Pick<SequencerConfig, 'txPublicSetupAllowList'> & Pick<SlasherConfig, 'slashBroadcastedInvalidBlockPenalty'>;
29
33
  export declare const ValidatorClientConfigSchema: z.ZodObject<{
@@ -33,6 +37,7 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
33
37
  attestationPollingIntervalMs: z.ZodNumber;
34
38
  validatorReexecute: z.ZodBoolean;
35
39
  validatorReexecuteDeadlineMs: z.ZodNumber;
40
+ alwaysReexecuteBlockProposals: z.ZodOptional<z.ZodBoolean>;
36
41
  }, "strip", z.ZodTypeAny, {
37
42
  disableValidator: boolean;
38
43
  disabledValidators: EthAddress[];
@@ -40,6 +45,7 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
40
45
  validatorReexecute: boolean;
41
46
  validatorReexecuteDeadlineMs: number;
42
47
  validatorAddresses?: EthAddress[] | undefined;
48
+ alwaysReexecuteBlockProposals?: boolean | undefined;
43
49
  }, {
44
50
  disableValidator: boolean;
45
51
  disabledValidators: string[];
@@ -47,14 +53,15 @@ export declare const ValidatorClientConfigSchema: z.ZodObject<{
47
53
  validatorReexecute: boolean;
48
54
  validatorReexecuteDeadlineMs: number;
49
55
  validatorAddresses?: string[] | undefined;
56
+ alwaysReexecuteBlockProposals?: boolean | undefined;
50
57
  }>;
51
58
  export interface Validator {
52
59
  start(): Promise<void>;
53
- registerBlockProposalHandler(): void;
54
60
  updateConfig(config: Partial<ValidatorClientFullConfig>): void;
55
61
  createBlockProposal(blockNumber: number, header: ProposedBlockHeader, archive: Fr, stateReference: StateReference, txs: Tx[], proposerAddress: EthAddress | undefined, options: BlockProposalOptions): Promise<BlockProposal | undefined>;
56
62
  attestToProposal(proposal: BlockProposal, sender: PeerId): Promise<BlockAttestation[] | undefined>;
57
63
  broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
58
64
  collectAttestations(proposal: BlockProposal, required: number, deadline: Date): Promise<BlockAttestation[]>;
65
+ signAttestationsAndSigners(attestationsAndSigners: CommitteeAttestationsAndSigners, proposer: EthAddress): Promise<Signature>;
59
66
  }
60
67
  //# sourceMappingURL=validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,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,+CAA+C;IAC/C,kBAAkB,EAAE,OAAO,CAAC;IAE5B,wEAAwE;IACxE,4BAA4B,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAC3D,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC,GAC/C,IAAI,CAAC,aAAa,EAAE,qCAAqC,CAAC,CAAC;AAE7D,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;EAOgC,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,4BAA4B,IAAI,IAAI,CAAC;IACrC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;IAG/D,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,EAAE,EACX,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,EAAE,EAAE,EACT,eAAe,EAAE,UAAU,GAAG,SAAS,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;IAEnG,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAC7G"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEhF,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;AAEzE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,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,8EAA8E;IAC9E,kBAAkB,EAAE,OAAO,CAAC;IAE5B,wEAAwE;IACxE,4BAA4B,EAAE,MAAM,CAAC;IAErC,qHAAqH;IACrH,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAC3D,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC,GAC/C,IAAI,CAAC,aAAa,EAAE,qCAAqC,CAAC,CAAC;AAE7D,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAQgC,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;IAG/D,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,EAAE,EACX,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,EAAE,EAAE,EACT,eAAe,EAAE,UAAU,GAAG,SAAS,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;IAEnG,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5G,0BAA0B,CACxB,sBAAsB,EAAE,+BAA+B,EACvD,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,SAAS,CAAC,CAAC;CACvB"}
@@ -6,5 +6,6 @@ export const ValidatorClientConfigSchema = z.object({
6
6
  disabledValidators: z.array(schemas.EthAddress),
7
7
  attestationPollingIntervalMs: z.number().min(0),
8
8
  validatorReexecute: z.boolean(),
9
- validatorReexecuteDeadlineMs: z.number().min(0)
9
+ validatorReexecuteDeadlineMs: z.number().min(0),
10
+ alwaysReexecuteBlockProposals: z.boolean().optional()
10
11
  });
@@ -204,6 +204,7 @@ export declare class ConsensusPayload implements Signable {
204
204
  static getFields(fields: FieldsOf<ConsensusPayload>): readonly [ProposedBlockHeader, Fr, StateReference];
205
205
  getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
206
206
  toBuffer(): Buffer;
207
+ equals(other: ConsensusPayload): boolean;
207
208
  static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload;
208
209
  static fromFields(fields: FieldsOf<ConsensusPayload>): ConsensusPayload;
209
210
  static fromBlock(block: L2Block): ConsensusPayload;
@@ -214,6 +215,32 @@ export declare class ConsensusPayload implements Signable {
214
215
  * @returns The size of the consensus payload.
215
216
  */
216
217
  getSize(): number;
218
+ toInspect(): {
219
+ header: {
220
+ lastArchive: `0x${string}`;
221
+ contentCommitment: {
222
+ blobsHash: `0x${string}`;
223
+ inHash: `0x${string}`;
224
+ outHash: `0x${string}`;
225
+ };
226
+ slotNumber: bigint;
227
+ timestamp: bigint;
228
+ coinbase: `0x${string}`;
229
+ feeRecipient: `0x${string}`;
230
+ gasFees: {
231
+ feePerDaGas: bigint;
232
+ feePerL2Gas: bigint;
233
+ };
234
+ totalManaUsed: bigint;
235
+ };
236
+ archive: `0x${string}`;
237
+ stateReference: {
238
+ l1ToL2MessageTree: `0x${string}`;
239
+ noteHashTree: `0x${string}`;
240
+ nullifierTree: `0x${string}`;
241
+ publicDataTree: `0x${string}`;
242
+ };
243
+ };
217
244
  toString(): string;
218
245
  }
219
246
  //# sourceMappingURL=consensus_payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,6DAA6D;aAC7C,MAAM,EAAE,mBAAmB;IAC3C,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAC3B,mDAAmD;aACnC,cAAc,EAAE,cAAc;IARhD,OAAO,CAAC,IAAI,CAAqB;;IAG/B,6DAA6D;IAC7C,MAAM,EAAE,mBAAmB;IAC3C,gDAAgD;IAChC,OAAO,EAAE,EAAE;IAC3B,mDAAmD;IACnC,cAAc,EAAE,cAAc;IAGhD,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAInD,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM;IAsBnE,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAU/D,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAIvE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IAIlD,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAIjC;;;OAGG;IACH,OAAO,IAAI,MAAM;IASjB,QAAQ;CAGT"}
1
+ {"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,6DAA6D;aAC7C,MAAM,EAAE,mBAAmB;IAC3C,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAC3B,mDAAmD;aACnC,cAAc,EAAE,cAAc;IARhD,OAAO,CAAC,IAAI,CAAqB;;IAG/B,6DAA6D;IAC7C,MAAM,EAAE,mBAAmB;IAC3C,gDAAgD;IAChC,OAAO,EAAE,EAAE;IAC3B,mDAAmD;IACnC,cAAc,EAAE,cAAc;IAGhD,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAInD,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM;IAsBnE,QAAQ,IAAI,MAAM;IAIX,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQ/C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAU/D,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;IAIvE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IAIlD,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAIjC;;;OAGG;IACH,OAAO,IAAI,MAAM;IASjB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;IAQT,QAAQ;CAGT"}
@@ -59,6 +59,9 @@ export class ConsensusPayload {
59
59
  this.stateReference
60
60
  ]);
61
61
  }
62
+ equals(other) {
63
+ return this.header.equals(other.header) && this.archive.equals(other.archive) && this.stateReference.equals(other.stateReference);
64
+ }
62
65
  static fromBuffer(buf) {
63
66
  const reader = BufferReader.asReader(buf);
64
67
  const payload = new ConsensusPayload(reader.readObject(ProposedBlockHeader), reader.readObject(Fr), reader.readObject(StateReference));
@@ -87,6 +90,13 @@ export class ConsensusPayload {
87
90
  this.size = this.toBuffer().length;
88
91
  return this.size;
89
92
  }
93
+ toInspect() {
94
+ return {
95
+ header: this.header.toInspect(),
96
+ archive: this.archive.toString(),
97
+ stateReference: this.stateReference.toInspect()
98
+ };
99
+ }
90
100
  toString() {
91
101
  return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, stateReference: ${this.stateReference.l1ToL2MessageTree.root.toString()}`;
92
102
  }
@@ -1,7 +1,8 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
2
  export declare enum SignatureDomainSeparator {
3
3
  blockProposal = 0,
4
- blockAttestation = 1
4
+ blockAttestation = 1,
5
+ attestationsAndSigners = 2
5
6
  }
6
7
  export interface Signable {
7
8
  getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,oBAAY,wBAAwB;IAClC,aAAa,IAAI;IACjB,gBAAgB,IAAI;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM,CAAC;CACrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,wBAAwB,GAAG,QAAQ,CAE1G;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,wBAAwB,GACxC,QAAQ,CAGV"}
1
+ {"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,oBAAY,wBAAwB;IAClC,aAAa,IAAI;IACjB,gBAAgB,IAAI;IACpB,sBAAsB,IAAI;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM,CAAC;CACrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,wBAAwB,GAAG,QAAQ,CAE1G;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,wBAAwB,GACxC,QAAQ,CAGV"}
@@ -3,6 +3,7 @@ import { keccak256, makeEthSignDigest } from '@aztec/foundation/crypto';
3
3
  export var SignatureDomainSeparator = /*#__PURE__*/ function(SignatureDomainSeparator) {
4
4
  SignatureDomainSeparator[SignatureDomainSeparator["blockProposal"] = 0] = "blockProposal";
5
5
  SignatureDomainSeparator[SignatureDomainSeparator["blockAttestation"] = 1] = "blockAttestation";
6
+ SignatureDomainSeparator[SignatureDomainSeparator["attestationsAndSigners"] = 2] = "attestationsAndSigners";
6
7
  return SignatureDomainSeparator;
7
8
  }({});
8
9
  /**
@@ -18,6 +18,7 @@ export declare enum OffenseType {
18
18
  /** A committee member attested to a block that was built as a descendent of an invalid block (as in a block with invalid attestations) */
19
19
  ATTESTED_DESCENDANT_OF_INVALID = 7
20
20
  }
21
+ export declare function getOffenseTypeName(offense: OffenseType): "unknown" | "data_withholding" | "valid_epoch_pruned" | "inactivity" | "broadcasted_invalid_block_proposal" | "proposed_insufficient_attestations" | "proposed_incorrect_attestations" | "attested_descendant_of_invalid";
21
22
  export declare const OffenseTypeSchema: z.ZodNativeEnum<typeof OffenseType>;
22
23
  export declare const OffenseToBigInt: Record<OffenseType, bigint>;
23
24
  export declare function bigIntToOffense(offense: bigint): OffenseType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/slashing/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAE3D,oBAAY,WAAW;IACrB,OAAO,IAAI;IACX,uFAAuF;IACvF,gBAAgB,IAAI;IACpB,2EAA2E;IAC3E,kBAAkB,IAAI;IACtB,uFAAuF;IACvF,UAAU,IAAI;IACd,sFAAsF;IACtF,kCAAkC,IAAI;IACtC,+EAA+E;IAC/E,kCAAkC,IAAI;IACtC,uHAAuH;IACvH,+BAA+B,IAAI;IACnC,0IAA0I;IAC1I,8BAA8B,IAAI;CACnC;AAED,eAAO,MAAM,iBAAiB,qCAA4B,CAAC;AAE3D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CASvD,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAqB5D;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;AAE3F,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKE,CAAC;AAE7B,+DAA+D;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYE,CAAC;AAEvC,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC,MAAM,MAAM,mBAAmB;AAC7B,mEAAmE;AACjE;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,IAAI,EAAE,cAAc,EAAE,CAAA;CAAE;AAC3D,oEAAoE;GAClE;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE;AACtD,mEAAmE;GACjE;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnD,yDAAyD;GACvD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnG,gEAAgE;GAC9D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/slashing/types.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,28 @@ export var OffenseType = /*#__PURE__*/ function(OffenseType) {
11
11
  /** A committee member attested to a block that was built as a descendent of an invalid block (as in a block with invalid attestations) */ OffenseType[OffenseType["ATTESTED_DESCENDANT_OF_INVALID"] = 7] = "ATTESTED_DESCENDANT_OF_INVALID";
12
12
  return OffenseType;
13
13
  }({});
14
+ export function getOffenseTypeName(offense) {
15
+ switch(offense){
16
+ case 0:
17
+ return 'unknown';
18
+ case 1:
19
+ return 'data_withholding';
20
+ case 2:
21
+ return 'valid_epoch_pruned';
22
+ case 3:
23
+ return 'inactivity';
24
+ case 4:
25
+ return 'broadcasted_invalid_block_proposal';
26
+ case 5:
27
+ return 'proposed_insufficient_attestations';
28
+ case 6:
29
+ return 'proposed_incorrect_attestations';
30
+ case 7:
31
+ return 'attested_descendant_of_invalid';
32
+ default:
33
+ throw new Error(`Unknown offense type: ${offense}`);
34
+ }
35
+ }
14
36
  export const OffenseTypeSchema = z.nativeEnum(OffenseType);
15
37
  export const OffenseToBigInt = {
16
38
  [0]: 0n,
@@ -3,6 +3,7 @@ import { Fr } from '@aztec/foundation/fields';
3
3
  import type { ContractArtifact } from '../abi/abi.js';
4
4
  import { AztecAddress } from '../aztec-address/index.js';
5
5
  import { L2Block } from '../block/l2_block.js';
6
+ import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
6
7
  import { PublishedL2Block } from '../block/published_l2_block.js';
7
8
  import type { ContractInstanceWithAddress } from '../contract/index.js';
8
9
  import { GasFees } from '../gas/gas_fees.js';
@@ -48,6 +49,7 @@ export interface MakeConsensusPayloadOptions {
48
49
  txHashes?: TxHash[];
49
50
  txs?: Tx[];
50
51
  }
52
+ export declare const makeAndSignCommitteeAttestationsAndSigners: (attestationsAndSigners: CommitteeAttestationsAndSigners, signer?: Secp256k1Signer) => import("../block/index.js").Signature;
51
53
  export declare const makeBlockProposal: (options?: MakeConsensusPayloadOptions) => BlockProposal;
52
54
  export declare const makeBlockAttestation: (options?: MakeConsensusPayloadOptions) => BlockAttestation;
53
55
  export declare const makeBlockAttestationFromBlock: (block: L2Block, signer?: Secp256k1Signer) => BlockAttestation;
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tests/mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tests/mocks.ts"],"names":[],"mappings":"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"}
@@ -148,6 +148,10 @@ const makeAndSignConsensusPayload = (domainSeparator, options)=>{
148
148
  signature
149
149
  };
150
150
  };
151
+ export const makeAndSignCommitteeAttestationsAndSigners = (attestationsAndSigners, signer = Secp256k1Signer.random())=>{
152
+ const hash = getHashedSignaturePayloadEthSignedMessage(attestationsAndSigners, SignatureDomainSeparator.attestationsAndSigners);
153
+ return signer.sign(hash);
154
+ };
151
155
  export const makeBlockProposal = (options)=>{
152
156
  const { blockNumber, payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options);
153
157
  const txHashes = options?.txHashes ?? [
@@ -48,6 +48,7 @@ export declare class ProposedBlockHeader {
48
48
  static getFields(fields: FieldsOf<ProposedBlockHeader>): readonly [Fr, ContentCommitment, Fr, bigint, EthAddress, AztecAddress, GasFees, Fr];
49
49
  static from(fields: FieldsOf<ProposedBlockHeader>): ProposedBlockHeader;
50
50
  static fromBuffer(buffer: Buffer | BufferReader): ProposedBlockHeader;
51
+ equals(other: ProposedBlockHeader): boolean;
51
52
  toBuffer(): Buffer<ArrayBufferLike>;
52
53
  hash(): Fr;
53
54
  static empty(fields?: Partial<FieldsOf<ProposedBlockHeader>>): ProposedBlockHeader;
@@ -1 +1 @@
1
- {"version":3,"file":"proposed_block_header.d.ts","sourceRoot":"","sources":["../../src/tx/proposed_block_header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAuC,MAAM,6BAA6B,CAAC;AAEhG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,0CAA0C;AAC1C,qBAAa,mBAAmB;IAE5B,2DAA2D;IACpD,eAAe,EAAE,EAAE;IAC1B,0CAA0C;IACnC,iBAAiB,EAAE,iBAAiB;IAC3C,kCAAkC;IAC3B,UAAU,EAAE,EAAE;IACrB,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO;IACvB,wEAAwE;IACjE,aAAa,EAAE,EAAE;;IAfxB,2DAA2D;IACpD,eAAe,EAAE,EAAE;IAC1B,0CAA0C;IACnC,iBAAiB,EAAE,iBAAiB;IAC3C,kCAAkC;IAC3B,UAAU,EAAE,EAAE;IACrB,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO;IACvB,wEAAwE;IACjE,aAAa,EAAE,EAAE;IAG1B,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAa/C;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;IAatD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;IAIjD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,mBAAmB;IAerE,QAAQ;IAcR,IAAI,IAAI,EAAE;IAIV,MAAM,CAAC,KAAK,CAAC,MAAM,GAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAM,GAAG,mBAAmB;IActF,MAAM,CAAC,MAAM,IAAI,mBAAmB;IAapC,OAAO,IAAI,OAAO;IAalB;;;OAGG;IACI,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;IAInD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;IAalC,MAAM,IAAI,UAAU;IAgBpB,SAAS;;;;;;;;;;;;;;;;;IAaT,CAAC,OAAO,CAAC,MAAM,CAAC;CAajB"}
1
+ {"version":3,"file":"proposed_block_header.d.ts","sourceRoot":"","sources":["../../src/tx/proposed_block_header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAuC,MAAM,6BAA6B,CAAC;AAEhG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,0CAA0C;AAC1C,qBAAa,mBAAmB;IAE5B,2DAA2D;IACpD,eAAe,EAAE,EAAE;IAC1B,0CAA0C;IACnC,iBAAiB,EAAE,iBAAiB;IAC3C,kCAAkC;IAC3B,UAAU,EAAE,EAAE;IACrB,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO;IACvB,wEAAwE;IACjE,aAAa,EAAE,EAAE;;IAfxB,2DAA2D;IACpD,eAAe,EAAE,EAAE;IAC1B,0CAA0C;IACnC,iBAAiB,EAAE,iBAAiB;IAC3C,kCAAkC;IAC3B,UAAU,EAAE,EAAE;IACrB,iCAAiC;IAC1B,SAAS,EAAE,MAAM;IACxB,iCAAiC;IAC1B,QAAQ,EAAE,UAAU;IAC3B,+BAA+B;IACxB,YAAY,EAAE,YAAY;IACjC,wCAAwC;IACjC,OAAO,EAAE,OAAO;IACvB,wEAAwE;IACjE,aAAa,EAAE,EAAE;IAG1B,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAa/C;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;IAatD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;IAIjD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,mBAAmB;IAerE,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IAa3C,QAAQ;IAcR,IAAI,IAAI,EAAE;IAIV,MAAM,CAAC,KAAK,CAAC,MAAM,GAAE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAM,GAAG,mBAAmB;IActF,MAAM,CAAC,MAAM,IAAI,mBAAmB;IAapC,OAAO,IAAI,OAAO;IAalB;;;OAGG;IACI,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;IAInD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;IAalC,MAAM,IAAI,UAAU;IAgBpB,SAAS;;;;;;;;;;;;;;;;;IAaT,CAAC,OAAO,CAAC,MAAM,CAAC;CAajB"}
@@ -59,6 +59,9 @@ import { ContentCommitment } from './content_commitment.js';
59
59
  const reader = BufferReader.asReader(buffer);
60
60
  return new ProposedBlockHeader(reader.readObject(Fr), reader.readObject(ContentCommitment), Fr.fromBuffer(reader), reader.readUInt64(), reader.readObject(EthAddress), reader.readObject(AztecAddress), reader.readObject(GasFees), reader.readObject(Fr));
61
61
  }
62
+ equals(other) {
63
+ return this.lastArchiveRoot.equals(other.lastArchiveRoot) && this.contentCommitment.equals(other.contentCommitment) && this.slotNumber.equals(other.slotNumber) && this.timestamp === other.timestamp && this.coinbase.equals(other.coinbase) && this.feeRecipient.equals(other.feeRecipient) && this.gasFees.equals(other.gasFees) && this.totalManaUsed.equals(other.totalManaUsed);
64
+ }
62
65
  toBuffer() {
63
66
  // Note: The order here must match the order in the ProposedHeaderLib solidity library.
64
67
  return serializeToBuffer([
@@ -102,6 +102,6 @@ import { PartialStateReference } from './partial_state_reference.js';
102
102
  }`;
103
103
  }
104
104
  equals(other) {
105
- return this.l1ToL2MessageTree.root.equals(other.l1ToL2MessageTree.root) && this.partial.equals(other.partial);
105
+ return this.l1ToL2MessageTree.equals(other.l1ToL2MessageTree) && this.partial.equals(other.partial);
106
106
  }
107
107
  }
package/dest/tx/tx.d.ts CHANGED
@@ -107,13 +107,6 @@ export declare class Tx extends Gossipable {
107
107
  * @returns The hash of the public inputs of the private kernel tail circuit.
108
108
  */
109
109
  getTxHash(): TxHash;
110
- /**
111
- * Allows setting the hash of the Tx.
112
- * Use this when you want to skip computing it from the original data.
113
- * Don't set a Tx hash received from an untrusted source.
114
- * @param hash - The hash to set.
115
- */
116
- setTxHash(_hash: TxHash): this;
117
110
  getCalldataMap(): Map<string, Fr[]>;
118
111
  /** Returns stats about this tx. */
119
112
  getStats(): TxStats;
@@ -1 +1 @@
1
- {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/tx/tx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/tx/tx.ts"],"names":[],"mappings":"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"}
package/dest/tx/tx.js CHANGED
@@ -149,14 +149,6 @@ import { TxHash } from './tx_hash.js';
149
149
  */ getTxHash() {
150
150
  return this.txHash;
151
151
  }
152
- /**
153
- * Allows setting the hash of the Tx.
154
- * Use this when you want to skip computing it from the original data.
155
- * Don't set a Tx hash received from an untrusted source.
156
- * @param hash - The hash to set.
157
- */ setTxHash(_hash) {
158
- return this;
159
- }
160
152
  getCalldataMap() {
161
153
  if (!this.calldataMap) {
162
154
  const calldataMap = new Map();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "2.0.3-rc.3",
3
+ "version": "2.0.3-rc.30",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -69,13 +69,13 @@
69
69
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
70
70
  },
71
71
  "dependencies": {
72
- "@aztec/bb.js": "2.0.3-rc.3",
73
- "@aztec/blob-lib": "2.0.3-rc.3",
74
- "@aztec/constants": "2.0.3-rc.3",
75
- "@aztec/ethereum": "2.0.3-rc.3",
76
- "@aztec/foundation": "2.0.3-rc.3",
77
- "@aztec/l1-artifacts": "2.0.3-rc.3",
78
- "@aztec/noir-noirc_abi": "2.0.3-rc.3",
72
+ "@aztec/bb.js": "2.0.3-rc.30",
73
+ "@aztec/blob-lib": "2.0.3-rc.30",
74
+ "@aztec/constants": "2.0.3-rc.30",
75
+ "@aztec/ethereum": "2.0.3-rc.30",
76
+ "@aztec/foundation": "2.0.3-rc.30",
77
+ "@aztec/l1-artifacts": "2.0.3-rc.30",
78
+ "@aztec/noir-noirc_abi": "2.0.3-rc.30",
79
79
  "@google-cloud/storage": "^7.15.0",
80
80
  "axios": "^1.9.0",
81
81
  "json-stringify-deterministic": "1.0.12",
@@ -0,0 +1,121 @@
1
+ import type { ViemCommitteeAttestations } from '@aztec/ethereum';
2
+ import { hexToBuffer } from '@aztec/foundation/string';
3
+
4
+ import { encodeAbiParameters, parseAbiParameters } from 'viem';
5
+ import { z } from 'zod';
6
+
7
+ import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
8
+ import { CommitteeAttestation } from './committee_attestation.js';
9
+
10
+ export class CommitteeAttestationsAndSigners implements Signable {
11
+ constructor(public attestations: CommitteeAttestation[]) {}
12
+
13
+ static get schema() {
14
+ return z
15
+ .object({
16
+ attestations: CommitteeAttestation.schema.array(),
17
+ })
18
+ .transform(obj => new CommitteeAttestationsAndSigners(obj.attestations));
19
+ }
20
+
21
+ getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
22
+ const abi = parseAbiParameters('uint8,(bytes,bytes),address[]');
23
+ const packed = this.getPackedAttestations();
24
+
25
+ const encodedData = encodeAbiParameters(abi, [
26
+ domainSeparator,
27
+ [packed.signatureIndices, packed.signaturesOrAddresses],
28
+ this.getSigners().map(s => s.toString()),
29
+ ]);
30
+
31
+ return hexToBuffer(encodedData);
32
+ }
33
+
34
+ static empty(): CommitteeAttestationsAndSigners {
35
+ return new CommitteeAttestationsAndSigners([]);
36
+ }
37
+
38
+ toString() {
39
+ return `CommitteeAttestationsAndSigners(${this.attestations.map(a => a.toString()).join(',')})`;
40
+ }
41
+
42
+ getSigners() {
43
+ return this.attestations.filter(a => !a.signature.isEmpty()).map(a => a.address);
44
+ }
45
+
46
+ getSignedAttestations() {
47
+ return this.attestations.filter(a => !a.signature.isEmpty());
48
+ }
49
+
50
+ /**
51
+ * Packs an array of committee attestations into the format expected by the Solidity contract
52
+ *
53
+ * @param attestations - Array of committee attestations with addresses and signatures
54
+ * @returns Packed attestations with bitmap and tightly packed signature/address data
55
+ */
56
+ getPackedAttestations(): ViemCommitteeAttestations {
57
+ const length = this.attestations.length;
58
+ const attestations = this.attestations.map(a => a.toViem());
59
+
60
+ // Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
61
+ const bitmapSize = Math.ceil(length / 8);
62
+ const signatureIndices = new Uint8Array(bitmapSize);
63
+
64
+ // Calculate total data size needed
65
+ let totalDataSize = 0;
66
+ for (let i = 0; i < length; i++) {
67
+ const signature = attestations[i].signature;
68
+ // Check if signature is empty (v = 0)
69
+ const isEmpty = signature.v === 0;
70
+
71
+ if (!isEmpty) {
72
+ totalDataSize += 65; // v (1) + r (32) + s (32)
73
+ } else {
74
+ totalDataSize += 20; // address only
75
+ }
76
+ }
77
+
78
+ const signaturesOrAddresses = new Uint8Array(totalDataSize);
79
+ let dataIndex = 0;
80
+
81
+ // Pack the data
82
+ for (let i = 0; i < length; i++) {
83
+ const attestation = attestations[i];
84
+ const signature = attestation.signature;
85
+
86
+ // Check if signature is empty
87
+ const isEmpty = signature.v === 0;
88
+
89
+ if (!isEmpty) {
90
+ // Set bit in bitmap (bit 7-0 in each byte, left to right)
91
+ const byteIndex = Math.floor(i / 8);
92
+ const bitIndex = 7 - (i % 8);
93
+ signatureIndices[byteIndex] |= 1 << bitIndex;
94
+
95
+ // Pack signature: v + r + s
96
+ signaturesOrAddresses[dataIndex] = signature.v;
97
+ dataIndex++;
98
+
99
+ // Pack r (32 bytes)
100
+ const rBytes = Buffer.from(signature.r.slice(2), 'hex');
101
+ signaturesOrAddresses.set(rBytes, dataIndex);
102
+ dataIndex += 32;
103
+
104
+ // Pack s (32 bytes)
105
+ const sBytes = Buffer.from(signature.s.slice(2), 'hex');
106
+ signaturesOrAddresses.set(sBytes, dataIndex);
107
+ dataIndex += 32;
108
+ } else {
109
+ // Pack address only (20 bytes)
110
+ const addrBytes = Buffer.from(attestation.addr.slice(2), 'hex');
111
+ signaturesOrAddresses.set(addrBytes, dataIndex);
112
+ dataIndex += 20;
113
+ }
114
+ }
115
+
116
+ return {
117
+ signatureIndices: `0x${Buffer.from(signatureIndices).toString('hex')}`,
118
+ signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`,
119
+ };
120
+ }
121
+ }
@@ -111,6 +111,10 @@ export class CommitteeAttestation {
111
111
  return this.address.equals(other.address) && this.signature.equals(other.signature);
112
112
  }
113
113
 
114
+ toString(): string {
115
+ return `CommitteeAttestation(${this.address.toString()}, ${this.signature.toString()})`;
116
+ }
117
+
114
118
  toViem(): ViemCommitteeAttestation {
115
119
  return {
116
120
  addr: this.address.toString(),
@@ -1 +1,2 @@
1
1
  export * from './committee_attestation.js';
2
+ export * from './attestations_and_signers.js';
@@ -43,6 +43,7 @@ export interface PublicProcessorLimits {
43
43
  maxTransactions?: number;
44
44
  maxBlockSize?: number;
45
45
  maxBlockGas?: Gas;
46
+ maxBlobFields?: number;
46
47
  deadline?: Date;
47
48
  }
48
49
 
@@ -24,6 +24,7 @@ export interface SlasherConfig {
24
24
  slashOffenseExpirationRounds: number; // Number of rounds after which pending offenses expire
25
25
  slashMaxPayloadSize: number; // Maximum number of offenses to include in a single slash payload
26
26
  slashGracePeriodL2Slots: number; // Number of L2 slots to wait after genesis before slashing for most offenses
27
+ slashExecuteRoundsLookBack: number; // How many rounds to look back when searching for a round to execute
27
28
  }
28
29
 
29
30
  export const SlasherConfigSchema = z.object({
@@ -44,5 +45,6 @@ export const SlasherConfigSchema = z.object({
44
45
  slashMaxPayloadSize: z.number(),
45
46
  slashGracePeriodL2Slots: z.number(),
46
47
  slashBroadcastedInvalidBlockPenalty: schemas.BigInt,
48
+ slashExecuteRoundsLookBack: z.number(),
47
49
  slashSelfAllowed: z.boolean().optional(),
48
50
  }) satisfies ZodFor<SlasherConfig>;
@@ -1,5 +1,6 @@
1
1
  import type { SecretValue } from '@aztec/foundation/config';
2
2
  import type { EthAddress } from '@aztec/foundation/eth-address';
3
+ import type { Signature } from '@aztec/foundation/eth-signature';
3
4
  import { Fr } from '@aztec/foundation/fields';
4
5
  import { type ZodFor, schemas } from '@aztec/foundation/schemas';
5
6
  import type { SequencerConfig, SlasherConfig } from '@aztec/stdlib/interfaces/server';
@@ -9,6 +10,8 @@ import type { ProposedBlockHeader, StateReference, Tx } from '@aztec/stdlib/tx';
9
10
  import type { PeerId } from '@libp2p/interface';
10
11
  import { z } from 'zod';
11
12
 
13
+ import type { CommitteeAttestationsAndSigners } from '../block/index.js';
14
+
12
15
  /**
13
16
  * Validator client configuration
14
17
  */
@@ -28,11 +31,14 @@ export interface ValidatorClientConfig {
28
31
  /** Interval between polling for new attestations from peers */
29
32
  attestationPollingIntervalMs: number;
30
33
 
31
- /** Re-execute transactions before attesting */
34
+ /** Whether to re-execute transactions in a block proposal before attesting */
32
35
  validatorReexecute: boolean;
33
36
 
34
37
  /** Will re-execute until this many milliseconds are left in the slot */
35
38
  validatorReexecuteDeadlineMs: number;
39
+
40
+ /** Whether to always reexecute block proposals, even for non-validator nodes or when out of the currnet committee */
41
+ alwaysReexecuteBlockProposals?: boolean;
36
42
  }
37
43
 
38
44
  export type ValidatorClientFullConfig = ValidatorClientConfig &
@@ -46,11 +52,11 @@ export const ValidatorClientConfigSchema = z.object({
46
52
  attestationPollingIntervalMs: z.number().min(0),
47
53
  validatorReexecute: z.boolean(),
48
54
  validatorReexecuteDeadlineMs: z.number().min(0),
55
+ alwaysReexecuteBlockProposals: z.boolean().optional(),
49
56
  }) satisfies ZodFor<Omit<ValidatorClientConfig, 'validatorPrivateKeys'>>;
50
57
 
51
58
  export interface Validator {
52
59
  start(): Promise<void>;
53
- registerBlockProposalHandler(): void;
54
60
  updateConfig(config: Partial<ValidatorClientFullConfig>): void;
55
61
 
56
62
  // Block validation responsibilities
@@ -67,4 +73,8 @@ export interface Validator {
67
73
 
68
74
  broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
69
75
  collectAttestations(proposal: BlockProposal, required: number, deadline: Date): Promise<BlockAttestation[]>;
76
+ signAttestationsAndSigners(
77
+ attestationsAndSigners: CommitteeAttestationsAndSigners,
78
+ proposer: EthAddress,
79
+ ): Promise<Signature>;
70
80
  }
@@ -63,6 +63,14 @@ export class ConsensusPayload implements Signable {
63
63
  return serializeToBuffer([this.header, this.archive, this.stateReference]);
64
64
  }
65
65
 
66
+ public equals(other: ConsensusPayload): boolean {
67
+ return (
68
+ this.header.equals(other.header) &&
69
+ this.archive.equals(other.archive) &&
70
+ this.stateReference.equals(other.stateReference)
71
+ );
72
+ }
73
+
66
74
  static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload {
67
75
  const reader = BufferReader.asReader(buf);
68
76
  const payload = new ConsensusPayload(
@@ -102,6 +110,14 @@ export class ConsensusPayload implements Signable {
102
110
  return this.size;
103
111
  }
104
112
 
113
+ toInspect() {
114
+ return {
115
+ header: this.header.toInspect(),
116
+ archive: this.archive.toString(),
117
+ stateReference: this.stateReference.toInspect(),
118
+ };
119
+ }
120
+
105
121
  toString() {
106
122
  return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, stateReference: ${this.stateReference.l1ToL2MessageTree.root.toString()}`;
107
123
  }
@@ -4,6 +4,7 @@ import { keccak256, makeEthSignDigest } from '@aztec/foundation/crypto';
4
4
  export enum SignatureDomainSeparator {
5
5
  blockProposal = 0,
6
6
  blockAttestation = 1,
7
+ attestationsAndSigners = 2,
7
8
  }
8
9
 
9
10
  export interface Signable {
@@ -22,6 +22,29 @@ export enum OffenseType {
22
22
  ATTESTED_DESCENDANT_OF_INVALID = 7,
23
23
  }
24
24
 
25
+ export function getOffenseTypeName(offense: OffenseType) {
26
+ switch (offense) {
27
+ case OffenseType.UNKNOWN:
28
+ return 'unknown';
29
+ case OffenseType.DATA_WITHHOLDING:
30
+ return 'data_withholding';
31
+ case OffenseType.VALID_EPOCH_PRUNED:
32
+ return 'valid_epoch_pruned';
33
+ case OffenseType.INACTIVITY:
34
+ return 'inactivity';
35
+ case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
36
+ return 'broadcasted_invalid_block_proposal';
37
+ case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
38
+ return 'proposed_insufficient_attestations';
39
+ case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
40
+ return 'proposed_incorrect_attestations';
41
+ case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
42
+ return 'attested_descendant_of_invalid';
43
+ default:
44
+ throw new Error(`Unknown offense type: ${offense}`);
45
+ }
46
+ }
47
+
25
48
  export const OffenseTypeSchema = z.nativeEnum(OffenseType);
26
49
 
27
50
  export const OffenseToBigInt: Record<OffenseType, bigint> = {
@@ -8,6 +8,7 @@ import type { ContractArtifact } from '../abi/abi.js';
8
8
  import { AztecAddress } from '../aztec-address/index.js';
9
9
  import { CommitteeAttestation, L1PublishedData } from '../block/index.js';
10
10
  import { L2Block } from '../block/l2_block.js';
11
+ import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
11
12
  import { PublishedL2Block } from '../block/published_l2_block.js';
12
13
  import { computeContractAddressFromInstance } from '../contract/contract_address.js';
13
14
  import { getContractClassFromArtifact } from '../contract/contract_class.js';
@@ -273,6 +274,17 @@ const makeAndSignConsensusPayload = (
273
274
  return { blockNumber: header.globalVariables.blockNumber, payload, signature };
274
275
  };
275
276
 
277
+ export const makeAndSignCommitteeAttestationsAndSigners = (
278
+ attestationsAndSigners: CommitteeAttestationsAndSigners,
279
+ signer: Secp256k1Signer = Secp256k1Signer.random(),
280
+ ) => {
281
+ const hash = getHashedSignaturePayloadEthSignedMessage(
282
+ attestationsAndSigners,
283
+ SignatureDomainSeparator.attestationsAndSigners,
284
+ );
285
+ return signer.sign(hash);
286
+ };
287
+
276
288
  export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => {
277
289
  const { blockNumber, payload, signature } = makeAndSignConsensusPayload(
278
290
  SignatureDomainSeparator.blockProposal,
@@ -84,6 +84,19 @@ export class ProposedBlockHeader {
84
84
  );
85
85
  }
86
86
 
87
+ equals(other: ProposedBlockHeader): boolean {
88
+ return (
89
+ this.lastArchiveRoot.equals(other.lastArchiveRoot) &&
90
+ this.contentCommitment.equals(other.contentCommitment) &&
91
+ this.slotNumber.equals(other.slotNumber) &&
92
+ this.timestamp === other.timestamp &&
93
+ this.coinbase.equals(other.coinbase) &&
94
+ this.feeRecipient.equals(other.feeRecipient) &&
95
+ this.gasFees.equals(other.gasFees) &&
96
+ this.totalManaUsed.equals(other.totalManaUsed)
97
+ );
98
+ }
99
+
87
100
  toBuffer() {
88
101
  // Note: The order here must match the order in the ProposedHeaderLib solidity library.
89
102
  return serializeToBuffer([
@@ -137,6 +137,6 @@ export class StateReference {
137
137
  }
138
138
 
139
139
  public equals(other: this): boolean {
140
- return this.l1ToL2MessageTree.root.equals(other.l1ToL2MessageTree.root) && this.partial.equals(other.partial);
140
+ return this.l1ToL2MessageTree.equals(other.l1ToL2MessageTree) && this.partial.equals(other.partial);
141
141
  }
142
142
  }
package/src/tx/tx.ts CHANGED
@@ -207,16 +207,6 @@ export class Tx extends Gossipable {
207
207
  return this.txHash;
208
208
  }
209
209
 
210
- /**
211
- * Allows setting the hash of the Tx.
212
- * Use this when you want to skip computing it from the original data.
213
- * Don't set a Tx hash received from an untrusted source.
214
- * @param hash - The hash to set.
215
- */
216
- setTxHash(_hash: TxHash) {
217
- return this;
218
- }
219
-
220
210
  getCalldataMap(): Map<string, Fr[]> {
221
211
  if (!this.calldataMap) {
222
212
  const calldataMap = new Map();