@aztec/stdlib 0.86.0-nightly.20250513 → 0.86.0-nightly.20250515

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 (41) hide show
  1. package/dest/abi/contract_artifact.js +3 -16
  2. package/dest/contract/artifact_hash.d.ts.map +1 -1
  3. package/dest/contract/artifact_hash.js +3 -2
  4. package/dest/file-store/http.d.ts +1 -0
  5. package/dest/file-store/http.d.ts.map +1 -1
  6. package/dest/file-store/http.js +32 -16
  7. package/dest/interfaces/aztec-node.d.ts +1 -1
  8. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  9. package/dest/interfaces/aztec-node.js +2 -1
  10. package/dest/interfaces/configs.d.ts +5 -0
  11. package/dest/interfaces/configs.d.ts.map +1 -1
  12. package/dest/interfaces/configs.js +1 -0
  13. package/dest/messaging/inbox_leaf.d.ts +5 -0
  14. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  15. package/dest/messaging/inbox_leaf.js +11 -0
  16. package/dest/p2p/block_attestation.d.ts +1 -1
  17. package/dest/p2p/block_attestation.d.ts.map +1 -1
  18. package/dest/p2p/block_attestation.js +1 -1
  19. package/dest/p2p/block_proposal.d.ts +5 -2
  20. package/dest/p2p/block_proposal.d.ts.map +1 -1
  21. package/dest/p2p/block_proposal.js +2 -2
  22. package/dest/p2p/gossipable.d.ts +14 -2
  23. package/dest/p2p/gossipable.d.ts.map +1 -1
  24. package/dest/p2p/gossipable.js +43 -0
  25. package/dest/p2p/topic_type.d.ts.map +1 -1
  26. package/dest/p2p/topic_type.js +5 -0
  27. package/dest/tx/tx.d.ts +1 -1
  28. package/dest/tx/tx.d.ts.map +1 -1
  29. package/dest/tx/tx.js +1 -1
  30. package/package.json +9 -7
  31. package/src/abi/contract_artifact.ts +3 -17
  32. package/src/contract/artifact_hash.ts +4 -2
  33. package/src/file-store/http.ts +23 -17
  34. package/src/interfaces/aztec-node.ts +2 -0
  35. package/src/interfaces/configs.ts +3 -0
  36. package/src/messaging/inbox_leaf.ts +10 -0
  37. package/src/p2p/block_attestation.ts +1 -1
  38. package/src/p2p/block_proposal.ts +7 -3
  39. package/src/p2p/gossipable.ts +40 -2
  40. package/src/p2p/topic_type.ts +2 -0
  41. package/src/tx/tx.ts +1 -1
@@ -166,29 +166,16 @@ import { AZTEC_INITIALIZER_ATTRIBUTE, AZTEC_INTERNAL_ATTRIBUTE, AZTEC_PRIVATE_AT
166
166
  };
167
167
  }
168
168
  function getFunctionType(fn) {
169
- if (fn.custom_attributes.some((attr)=>attr.endsWith(AZTEC_PRIVATE_ATTRIBUTE))) {
169
+ if (fn.custom_attributes.includes(AZTEC_PRIVATE_ATTRIBUTE)) {
170
170
  return FunctionType.PRIVATE;
171
- } else if (fn.custom_attributes.some((attr)=>attr.endsWith(AZTEC_PUBLIC_ATTRIBUTE))) {
171
+ } else if (fn.custom_attributes.includes(AZTEC_PUBLIC_ATTRIBUTE)) {
172
172
  return FunctionType.PUBLIC;
173
- } else if (fn.custom_attributes.some((attr)=>attr.endsWith(AZTEC_UTILITY_ATTRIBUTE))) {
173
+ } else if (fn.custom_attributes.includes(AZTEC_UTILITY_ATTRIBUTE)) {
174
174
  return FunctionType.UTILITY;
175
175
  } else {
176
176
  throw new Error(`Invalid function type for a noir contract function ${fn.name}`);
177
177
  }
178
178
  }
179
- // TODO(https://github.com/noir-lang/noir/issues/7912): Replace the above function with this one once the linked issue
180
- // is fixed.
181
- // function getFunctionType(fn: NoirCompiledContractFunction): FunctionType {
182
- // if (fn.custom_attributes.includes(AZTEC_PRIVATE_ATTRIBUTE)) {
183
- // return FunctionType.PRIVATE;
184
- // } else if (fn.custom_attributes.includes(AZTEC_PUBLIC_ATTRIBUTE)) {
185
- // return FunctionType.PUBLIC;
186
- // } else if (fn.custom_attributes.includes(AZTEC_UTILITY_ATTRIBUTE)) {
187
- // return FunctionType.UTILITY;
188
- // } else {
189
- // throw new Error(`Invalid function type for a noir contract function ${fn.name}`);
190
- // }
191
- // }
192
179
  /**
193
180
  * Returns true if the first parameter is kernel function inputs.
194
181
  *
@@ -1 +1 @@
1
- {"version":3,"file":"artifact_hash.d.ts","sourceRoot":"","sources":["../../src/contract/artifact_hash.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAY,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAS/G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,gBAAgB,GAAG;IAAE,mBAAmB,EAAE,EAAE,CAAC;IAAC,mBAAmB,EAAE,EAAE,CAAC;IAAC,YAAY,EAAE,EAAE,CAAA;CAAE,GAClG,OAAO,CAAC,EAAE,CAAC,CAWb;AAED,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB;;;;GAK3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,MAErE;AAED,wBAAsB,+BAA+B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,eAGrG;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CASjC;AAYD,wBAAsB,2BAA2B,CAC/C,EAAE,EACE,gBAAgB,GAChB,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,eAOpG;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,gBAAgB,MAE/D;AAMD,wBAAgB,2BAA2B,QAC9B,MAAM,KAAK,MAAM,qBAC7B"}
1
+ {"version":3,"file":"artifact_hash.d.ts","sourceRoot":"","sources":["../../src/contract/artifact_hash.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAY,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAI3E,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAS/G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,gBAAgB,GAAG;IAAE,mBAAmB,EAAE,EAAE,CAAC;IAAC,mBAAmB,EAAE,EAAE,CAAC;IAAC,YAAY,EAAE,EAAE,CAAA;CAAE,GAClG,OAAO,CAAC,EAAE,CAAC,CAWb;AAED,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB;;;;GAK3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,MAErE;AAED,wBAAsB,+BAA+B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,eAGrG;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CASjC;AAYD,wBAAsB,2BAA2B,CAC/C,EAAE,EACE,gBAAgB,GAChB,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,eAOpG;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,gBAAgB,MAE/D;AAMD,wBAAgB,2BAA2B,QAC9B,MAAM,KAAK,MAAM,qBAC7B"}
@@ -3,6 +3,7 @@ import { Fr, reduceFn } from '@aztec/foundation/fields';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { numToUInt8 } from '@aztec/foundation/serialize';
5
5
  import { MerkleTreeCalculator } from '@aztec/foundation/trees';
6
+ import deterministicStringify from 'json-stringify-deterministic';
6
7
  import { FunctionSelector, FunctionType } from '../abi/index.js';
7
8
  const VERSION = 1;
8
9
  // TODO(miranda): Artifact and artifact metadata hashes are currently the only SHAs not truncated by a byte.
@@ -62,7 +63,7 @@ export async function computeArtifactHashPreimage(artifact) {
62
63
  };
63
64
  }
64
65
  export function computeArtifactMetadataHash(artifact) {
65
- return sha256Fr(Buffer.from(JSON.stringify({
66
+ return sha256Fr(Buffer.from(deterministicStringify({
66
67
  name: artifact.name,
67
68
  outputs: artifact.outputs
68
69
  }), 'utf-8'));
@@ -101,7 +102,7 @@ export async function computeFunctionArtifactHash(fn) {
101
102
  ]));
102
103
  }
103
104
  export function computeFunctionMetadataHash(fn) {
104
- return sha256Fr(Buffer.from(JSON.stringify(fn.returnTypes), 'utf8'));
105
+ return sha256Fr(Buffer.from(deterministicStringify(fn.returnTypes), 'utf8'));
105
106
  }
106
107
  function getLogger() {
107
108
  return createLogger('circuits:artifact_hash');
@@ -5,6 +5,7 @@ import type { ReadOnlyFileStore } from './interface.js';
5
5
  export declare class HttpFileStore implements ReadOnlyFileStore {
6
6
  private readonly baseUrl;
7
7
  private readonly log;
8
+ private readonly axiosInstance;
8
9
  private readonly fetch;
9
10
  constructor(baseUrl: string, log?: Logger);
10
11
  read(pathOrUrl: string): Promise<Buffer>;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/file-store/http.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AASlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,qBAAa,aAAc,YAAW,iBAAiB;IAGzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFlE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAER,OAAO,EAAE,MAAM,EAAmB,GAAG,GAAE,MAA+C;IAYtG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,OAAO,CAAC,MAAM;CAGf"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/file-store/http.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAUlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,qBAAa,aAAc,YAAW,iBAAiB;IAIzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHlE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+D;gBAExD,OAAO,EAAE,MAAM,EAAmB,GAAG,GAAE,MAA+C;IAatG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,OAAO,CAAC,MAAM;CAGf"}
@@ -1,19 +1,21 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { makeBackoff, retry } from '@aztec/foundation/retry';
3
+ import axios from 'axios';
3
4
  import { createWriteStream } from 'fs';
4
5
  import { mkdir } from 'fs/promises';
5
6
  import { dirname } from 'path';
6
- import { Readable } from 'stream';
7
7
  import { finished } from 'stream/promises';
8
8
  export class HttpFileStore {
9
9
  baseUrl;
10
10
  log;
11
+ axiosInstance;
11
12
  fetch;
12
13
  constructor(baseUrl, log = createLogger('stdlib:http-file-store')){
13
14
  this.baseUrl = baseUrl;
14
15
  this.log = log;
15
- this.fetch = async (...args)=>{
16
- return await retry(()=>fetch(...args), `Fetching ${args[0]}`, makeBackoff([
16
+ this.axiosInstance = axios.create();
17
+ this.fetch = async (config)=>{
18
+ return await retry(()=>this.axiosInstance.request(config), `Fetching ${config.url}`, makeBackoff([
17
19
  1,
18
20
  1,
19
21
  3
@@ -22,30 +24,44 @@ export class HttpFileStore {
22
24
  }
23
25
  async read(pathOrUrl) {
24
26
  const url = this.getUrl(pathOrUrl);
25
- const response = await this.fetch(url);
26
- if (response.ok) {
27
- return Buffer.from(await response.arrayBuffer());
28
- } else {
29
- throw new Error(`Error fetching file from ${url}: ${response.statusText}`);
27
+ try {
28
+ const response = await this.fetch({
29
+ url,
30
+ method: 'GET',
31
+ responseType: 'arraybuffer'
32
+ });
33
+ return Buffer.from(response.data);
34
+ } catch (error) {
35
+ throw new Error(`Error fetching file from ${url}: ${error instanceof Error ? error.message : String(error)}`);
30
36
  }
31
37
  }
32
38
  async download(pathOrUrl, destPath) {
33
39
  const url = this.getUrl(pathOrUrl);
34
- const response = await this.fetch(url);
35
- if (response.ok) {
40
+ try {
41
+ const response = await this.fetch({
42
+ url,
43
+ method: 'GET',
44
+ responseType: 'stream'
45
+ });
36
46
  await mkdir(dirname(destPath), {
37
47
  recursive: true
38
48
  });
39
- // Typescript complains about Readable.fromWeb, hence the cast
40
- await finished(Readable.fromWeb(response.body).pipe(createWriteStream(destPath)));
41
- } else {
42
- throw new Error(`Error fetching file from ${url}: ${response.statusText}`);
49
+ await finished(response.data.pipe(createWriteStream(destPath)));
50
+ } catch (error) {
51
+ throw new Error(`Error fetching file from ${url}: ${error instanceof Error ? error.message : String(error)}`);
43
52
  }
44
53
  }
45
54
  async exists(pathOrUrl) {
46
55
  const url = this.getUrl(pathOrUrl);
47
- const response = await this.fetch(url);
48
- return response.ok;
56
+ try {
57
+ await this.fetch({
58
+ url,
59
+ method: 'HEAD'
60
+ });
61
+ return true;
62
+ } catch (error) {
63
+ return false;
64
+ }
49
65
  }
50
66
  getUrl(path) {
51
67
  return URL.canParse(path) ? path : `${this.baseUrl.replace(/\/$/, '')}/${path}`;
@@ -314,5 +314,5 @@ export interface AztecNode extends Pick<L2BlockSource, 'getBlocks' | 'getPublish
314
314
  getEncodedEnr(): Promise<string | undefined>;
315
315
  }
316
316
  export declare const AztecNodeApiSchema: ApiSchemaFor<AztecNode>;
317
- export declare function createAztecNodeClient(url: string, versions?: Partial<ComponentsVersions>, fetch?: typeof import("@aztec/foundation/json-rpc/client").defaultFetch): AztecNode;
317
+ export declare function createAztecNodeClient(url: string, versions?: Partial<ComponentsVersions>, fetch?: typeof import("@aztec/foundation/json-rpc/client").defaultFetch, batchWindowMS?: number): AztecNode;
318
318
  //# sourceMappingURL=aztec-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aztec-node.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aztec-node.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node.ts"],"names":[],"mappings":"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"}
@@ -83,10 +83,11 @@ export function createAztecNodeClient(url, versions = {}, fetch = makeFetch([
83
83
  1,
84
84
  2,
85
85
  3
86
- ], false)) {
86
+ ], false), batchWindowMS = 25) {
87
87
  return createSafeJsonRpcClient(url, AztecNodeApiSchema, {
88
88
  namespaceMethods: 'node',
89
89
  fetch,
90
+ batchWindowMS,
90
91
  onResponse: getVersioningResponseHandler(versions)
91
92
  });
92
93
  }
@@ -13,6 +13,8 @@ export interface SequencerConfig {
13
13
  maxTxsPerBlock?: number;
14
14
  /** The minimum number of txs to include in a block. */
15
15
  minTxsPerBlock?: number;
16
+ /** Whether to publish txs with the block proposals */
17
+ publishTxsWithProposals?: boolean;
16
18
  /** The maximum L2 block gas. */
17
19
  maxL2BlockGas?: number;
18
20
  /** The maximum DA block gas. */
@@ -41,6 +43,7 @@ export declare const SequencerConfigSchema: z.ZodObject<{
41
43
  maxTxsPerBlock: z.ZodOptional<z.ZodNumber>;
42
44
  minTxsPerBlock: z.ZodOptional<z.ZodNumber>;
43
45
  maxL2BlockGas: z.ZodOptional<z.ZodNumber>;
46
+ publishTxsWithProposals: z.ZodOptional<z.ZodBoolean>;
44
47
  maxDABlockGas: z.ZodOptional<z.ZodNumber>;
45
48
  coinbase: z.ZodOptional<ZodFor<EthAddress>>;
46
49
  feeRecipient: z.ZodOptional<ZodFor<AztecAddress>>;
@@ -88,6 +91,7 @@ export declare const SequencerConfigSchema: z.ZodObject<{
88
91
  maxTxsPerBlock?: number | undefined;
89
92
  minTxsPerBlock?: number | undefined;
90
93
  maxL2BlockGas?: number | undefined;
94
+ publishTxsWithProposals?: boolean | undefined;
91
95
  maxDABlockGas?: number | undefined;
92
96
  acvmWorkingDirectory?: string | undefined;
93
97
  acvmBinaryPath?: string | undefined;
@@ -113,6 +117,7 @@ export declare const SequencerConfigSchema: z.ZodObject<{
113
117
  maxTxsPerBlock?: number | undefined;
114
118
  minTxsPerBlock?: number | undefined;
115
119
  maxL2BlockGas?: number | undefined;
120
+ publishTxsWithProposals?: boolean | undefined;
116
121
  maxDABlockGas?: number | undefined;
117
122
  acvmWorkingDirectory?: string | undefined;
118
123
  acvmBinaryPath?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../src/interfaces/configs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1C,qBAAqB;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,yBAAyB,CAAC,EAAE,UAAU,CAAC;IACvC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeE,CAAC"}
1
+ {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../src/interfaces/configs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1C,qBAAqB;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,yBAAyB,CAAC,EAAE,UAAU,CAAC;IACvC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBE,CAAC"}
@@ -6,6 +6,7 @@ export const SequencerConfigSchema = z.object({
6
6
  maxTxsPerBlock: z.number().optional(),
7
7
  minTxsPerBlock: z.number().optional(),
8
8
  maxL2BlockGas: z.number().optional(),
9
+ publishTxsWithProposals: z.boolean().optional(),
9
10
  maxDABlockGas: z.number().optional(),
10
11
  coinbase: schemas.EthAddress.optional(),
11
12
  feeRecipient: schemas.AztecAddress.optional(),
@@ -15,5 +15,10 @@ export declare class InboxLeaf {
15
15
  toBuffer(): Buffer;
16
16
  fromBuffer(buffer: Buffer | BufferReader): InboxLeaf;
17
17
  static smallestIndexFromL2Block(l2block: bigint): bigint;
18
+ /**
19
+ * Returns the range of valid indices for a given L2 block.
20
+ * Start index is inclusive, end index is exclusive.
21
+ */
22
+ static indexRangeFromL2Block(l2block: bigint): [bigint, bigint];
18
23
  }
19
24
  //# sourceMappingURL=inbox_leaf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox_leaf.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox_leaf.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,qBAAa,SAAS;IAElB,2CAA2C;aAC3B,KAAK,EAAE,MAAM;IAC7B,wCAAwC;aACxB,IAAI,EAAE,EAAE;;IAHxB,2CAA2C;IAC3B,KAAK,EAAE,MAAM;IAC7B,wCAAwC;IACxB,IAAI,EAAE,EAAE;IAG1B,QAAQ,IAAI,MAAM;IAIlB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOpD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGzD"}
1
+ {"version":3,"file":"inbox_leaf.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox_leaf.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,qBAAa,SAAS;IAElB,2CAA2C;aAC3B,KAAK,EAAE,MAAM;IAC7B,wCAAwC;aACxB,IAAI,EAAE,EAAE;;IAHxB,2CAA2C;IAC3B,KAAK,EAAE,MAAM;IAC7B,wCAAwC;IACxB,IAAI,EAAE,EAAE;IAG1B,QAAQ,IAAI,MAAM;IAIlB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAOpD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIxD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAKhE"}
@@ -24,4 +24,15 @@ export class InboxLeaf {
24
24
  static smallestIndexFromL2Block(l2block) {
25
25
  return (l2block - BigInt(INITIAL_L2_BLOCK_NUM)) * BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
26
26
  }
27
+ /**
28
+ * Returns the range of valid indices for a given L2 block.
29
+ * Start index is inclusive, end index is exclusive.
30
+ */ static indexRangeFromL2Block(l2block) {
31
+ const start = this.smallestIndexFromL2Block(l2block);
32
+ const end = start + BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
33
+ return [
34
+ start,
35
+ end
36
+ ];
37
+ }
27
38
  }
@@ -35,7 +35,7 @@ export declare class BlockAttestation extends Gossipable {
35
35
  /** The signature of the block attester */
36
36
  signature: Signature);
37
37
  static get schema(): ZodFor<BlockAttestation>;
38
- p2pMessageIdentifier(): Promise<Buffer32>;
38
+ generateP2PMessageIdentifier(): Promise<Buffer32>;
39
39
  get archive(): Fr;
40
40
  get slotNumber(): Fr;
41
41
  /**Get sender
@@ -1 +1 @@
1
- {"version":3,"file":"block_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/block_attestation.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAM5C,2CAA2C;aAC3B,WAAW,EAAE,EAAE;IAE/B,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;aAC1B,SAAS,EAAE,SAAS;IAZtC,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,2CAA2C;IAC3B,WAAW,EAAE,EAAE;IAE/B,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAKtC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAQ5C;IAEQ,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIlD,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED;;;;OAIG;IACH,SAAS,IAAI,UAAU;IAWvB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAS/D,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,OAAO,IAAI,MAAM;CAGlB"}
1
+ {"version":3,"file":"block_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/block_attestation.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAM5C,2CAA2C;aAC3B,WAAW,EAAE,EAAE;IAE/B,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;aAC1B,SAAS,EAAE,SAAS;IAZtC,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,2CAA2C;IAC3B,WAAW,EAAE,EAAE;IAE/B,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAKtC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAQ5C;IAEQ,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED;;;;OAIG;IACH,SAAS,IAAI,UAAU;IAWvB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAS/D,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,OAAO,IAAI,MAAM;CAGlB"}
@@ -34,7 +34,7 @@ export class BlockAttestationHash extends Buffer32 {
34
34
  signature: Signature.schema
35
35
  }).transform((obj)=>new BlockAttestation(obj.blockNumber, obj.payload, obj.signature));
36
36
  }
37
- p2pMessageIdentifier() {
37
+ generateP2PMessageIdentifier() {
38
38
  return Promise.resolve(new BlockAttestationHash(keccak256(this.signature.toBuffer())));
39
39
  }
40
40
  get archive() {
@@ -12,6 +12,9 @@ import { TopicType } from './topic_type.js';
12
12
  export declare class BlockProposalHash extends Buffer32 {
13
13
  constructor(hash: Buffer);
14
14
  }
15
+ export type BlockProposalOptions = {
16
+ publishFullTxs: boolean;
17
+ };
15
18
  /**
16
19
  * BlockProposal
17
20
  *
@@ -38,10 +41,10 @@ export declare class BlockProposal extends Gossipable {
38
41
  signature: Signature,
39
42
  /** The transactions in the block */
40
43
  txs?: Tx[] | undefined);
41
- p2pMessageIdentifier(): Promise<Buffer32>;
44
+ generateP2PMessageIdentifier(): Promise<Buffer32>;
42
45
  get archive(): Fr;
43
46
  get slotNumber(): Fr;
44
- static createProposalFromSigner(blockNumber: Fr, payload: ConsensusPayload, txs: Tx[], payloadSigner: (payload: Buffer32) => Promise<Signature>): Promise<BlockProposal>;
47
+ static createProposalFromSigner(blockNumber: Fr, payload: ConsensusPayload, txs: Tx[] | undefined, payloadSigner: (payload: Buffer32) => Promise<Signature>): Promise<BlockProposal>;
45
48
  /**Get Sender
46
49
  * Lazily evaluate the sender of the proposal; result is cached
47
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,IAAI,EAAE,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAMzC,8BAA8B;aACd,WAAW,EAAE,EAAE;IAE/B,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;aACtD,SAAS,EAAE,SAAS;IAGpC,oCAAoC;aACpB,GAAG,CAAC;IAhBtB,OAAgB,QAAQ,YAA4B;IAEpD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,8BAA8B;IACd,WAAW,EAAE,EAAE;IAE/B,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;IACtD,SAAS,EAAE,SAAS;IAGpC,oCAAoC;IACpB,GAAG,CAAC,kBAAM;IAKnB,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIlD,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;WAEY,wBAAwB,CACnC,WAAW,EAAE,EAAE,EACf,OAAO,EAAE,gBAAgB,EAEzB,GAAG,EAAE,EAAE,EAAE,EACT,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;IAQ1D;;OAEG;IACH,SAAS;IAUT,UAAU;IAIV,QAAQ,IAAI,MAAM;IASlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa;IAe5D,OAAO,IAAI,MAAM;CAQlB"}
1
+ {"version":3,"file":"block_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/block_proposal.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,IAAI,EAAE,MAAM;CAGzB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAMzC,8BAA8B;aACd,WAAW,EAAE,EAAE;IAE/B,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;aACtD,SAAS,EAAE,SAAS;IAGpC,oCAAoC;aACpB,GAAG,CAAC;IAhBtB,OAAgB,QAAQ,YAA4B;IAEpD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,8BAA8B;IACd,WAAW,EAAE,EAAE;IAE/B,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;IACtD,SAAS,EAAE,SAAS;IAGpC,oCAAoC;IACpB,GAAG,CAAC,kBAAM;IAKnB,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;WAEY,wBAAwB,CACnC,WAAW,EAAE,EAAE,EACf,OAAO,EAAE,gBAAgB,EAEzB,GAAG,EAAE,EAAE,EAAE,GAAG,SAAS,EACrB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;IAQ1D;;OAEG;IACH,SAAS;IAUT,UAAU;IAIV,QAAQ,IAAI,MAAM;IASlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa;IAe5D,OAAO,IAAI,MAAM;CAQlB"}
@@ -29,7 +29,7 @@ export class BlockProposalHash extends Buffer32 {
29
29
  /** The transactions in the block */ txs){
30
30
  super(), this.blockNumber = blockNumber, this.payload = payload, this.signature = signature, this.txs = txs;
31
31
  }
32
- p2pMessageIdentifier() {
32
+ generateP2PMessageIdentifier() {
33
33
  return Promise.resolve(new BlockProposalHash(keccak256(this.signature.toBuffer())));
34
34
  }
35
35
  get archive() {
@@ -38,7 +38,7 @@ export class BlockProposalHash extends Buffer32 {
38
38
  get slotNumber() {
39
39
  return this.payload.header.slotNumber;
40
40
  }
41
- static async createProposalFromSigner(blockNumber, payload, // Note(md): Provided seperately to tx hashes such that this function can be optional
41
+ static async createProposalFromSigner(blockNumber, payload, // Note(md): Provided separately to tx hashes such that this function can be optional
42
42
  txs, payloadSigner) {
43
43
  const hashed = getHashedSignaturePayload(payload, SignatureDomainSeparator.blockProposal);
44
44
  const sig = await payloadSigner(hashed);
@@ -1,13 +1,23 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import type { Buffer32 } from '@aztec/foundation/buffer';
3
+ import { Buffer32 } from '@aztec/foundation/buffer';
4
4
  import type { TopicType } from './topic_type.js';
5
+ export declare class P2PMessage {
6
+ readonly publishTime: Date;
7
+ readonly id: Buffer32;
8
+ readonly payload: Buffer;
9
+ constructor(publishTime: Date, id: Buffer32, payload: Buffer);
10
+ static fromGossipable(message: Gossipable): Promise<P2PMessage>;
11
+ static fromMessageData(messageData: Buffer): P2PMessage;
12
+ toMessageData(): Buffer;
13
+ }
5
14
  /**
6
15
  * Gossipable
7
16
  *
8
17
  * Any class which extends gossipable will be able to be Gossiped over the p2p network
9
18
  */
10
19
  export declare abstract class Gossipable {
20
+ private cachedId;
11
21
  /** p2p Topic
12
22
  *
13
23
  * - The p2p topic identifier, this determines how the message is handled
@@ -17,12 +27,14 @@ export declare abstract class Gossipable {
17
27
  *
18
28
  * - A digest of the message information, this key is used for deduplication
19
29
  */
20
- abstract p2pMessageIdentifier(): Promise<Buffer32>;
30
+ p2pMessageIdentifier(): Promise<Buffer32>;
31
+ abstract generateP2PMessageIdentifier(): Promise<Buffer32>;
21
32
  /** To Buffer
22
33
  *
23
34
  * - Serialization method
24
35
  */
25
36
  abstract toBuffer(): Buffer;
37
+ toMessage(): Buffer;
26
38
  /**
27
39
  * Get the size of the gossipable object.
28
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gossipable.d.ts","sourceRoot":"","sources":["../../src/p2p/gossipable.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}
1
+ {"version":3,"file":"gossipable.d.ts","sourceRoot":"","sources":["../../src/p2p/gossipable.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAAa,UAAU;aACO,WAAW,EAAE,IAAI;aAAkB,EAAE,EAAE,QAAQ;aAAkB,OAAO,EAAE,MAAM;gBAAhF,WAAW,EAAE,IAAI,EAAkB,EAAE,EAAE,QAAQ,EAAkB,OAAO,EAAE,MAAM;WAE/F,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAQvD,aAAa,IAAI,MAAM;CAOxB;AAED;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE3B;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQ/C,QAAQ,CAAC,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAE1D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}
@@ -1,10 +1,53 @@
1
+ import { Buffer32 } from '@aztec/foundation/buffer';
2
+ import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ export class P2PMessage {
4
+ publishTime;
5
+ id;
6
+ payload;
7
+ constructor(publishTime, id, payload){
8
+ this.publishTime = publishTime;
9
+ this.id = id;
10
+ this.payload = payload;
11
+ }
12
+ static async fromGossipable(message) {
13
+ return new P2PMessage(new Date(), await message.p2pMessageIdentifier(), message.toBuffer());
14
+ }
15
+ static fromMessageData(messageData) {
16
+ const reader = new BufferReader(messageData);
17
+ const publishTime = reader.readUInt64();
18
+ const id = Buffer32.fromBuffer(reader);
19
+ const payload = reader.readBuffer();
20
+ return new P2PMessage(new Date(Number(publishTime)), id, payload);
21
+ }
22
+ toMessageData() {
23
+ return serializeToBuffer([
24
+ bigintToUInt64BE(BigInt(this.publishTime.getTime())),
25
+ this.id,
26
+ serializeToBuffer(this.payload.length, this.payload)
27
+ ]);
28
+ }
29
+ }
1
30
  /**
2
31
  * Gossipable
3
32
  *
4
33
  * Any class which extends gossipable will be able to be Gossiped over the p2p network
5
34
  */ export class Gossipable {
35
+ cachedId;
6
36
  /** p2p Topic
7
37
  *
8
38
  * - The p2p topic identifier, this determines how the message is handled
9
39
  */ static p2pTopic;
40
+ /** p2p Message Identifier
41
+ *
42
+ * - A digest of the message information, this key is used for deduplication
43
+ */ async p2pMessageIdentifier() {
44
+ if (this.cachedId) {
45
+ return this.cachedId;
46
+ }
47
+ this.cachedId = await this.generateP2PMessageIdentifier();
48
+ return this.cachedId;
49
+ }
50
+ toMessage() {
51
+ return this.toBuffer();
52
+ }
10
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAE9E;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;CACxC;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,aAAa,eAKlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,uBAO9D"}
1
+ {"version":3,"file":"topic_type.d.ts","sourceRoot":"","sources":["../../src/p2p/topic_type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAE9E;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;CACxC;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,aAAa,eAOlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,uBAO9D"}
@@ -18,6 +18,11 @@ import { P2PClientType } from './client_type.js';
18
18
  export function getTopicTypeForClientType(clientType) {
19
19
  if (clientType === P2PClientType.Full) {
20
20
  return Object.values(TopicType);
21
+ } else if (clientType === P2PClientType.Prover) {
22
+ return [
23
+ "tx",
24
+ "block_proposal"
25
+ ];
21
26
  }
22
27
  return [
23
28
  "tx"
package/dest/tx/tx.d.ts CHANGED
@@ -61,7 +61,7 @@ export declare class Tx extends Gossipable {
61
61
  * An array of calldata for the enqueued public function calls and the teardown function call.
62
62
  */
63
63
  publicFunctionCalldata: HashedValues[]);
64
- p2pMessageIdentifier(): Promise<Buffer32>;
64
+ generateP2PMessageIdentifier(): Promise<Buffer32>;
65
65
  hasPublicCalls(): boolean;
66
66
  numberOfPublicCalls(): number;
67
67
  getNonRevertiblePublicCallRequestsWithCalldata(): PublicCallRequestWithCalldata[];
@@ -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
@@ -35,7 +35,7 @@ import { TxHash } from './tx_hash.js';
35
35
  super(), this.data = data, this.clientIvcProof = clientIvcProof, this.contractClassLogs = contractClassLogs, this.publicFunctionCalldata = publicFunctionCalldata;
36
36
  }
37
37
  // Gossipable method
38
- async p2pMessageIdentifier() {
38
+ async generateP2PMessageIdentifier() {
39
39
  return new Buffer32((await this.getTxHash()).toBuffer());
40
40
  }
41
41
  hasPublicCalls() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "0.86.0-nightly.20250513",
3
+ "version": "0.86.0-nightly.20250515",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -66,13 +66,15 @@
66
66
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
67
67
  },
68
68
  "dependencies": {
69
- "@aztec/bb.js": "0.86.0-nightly.20250513",
70
- "@aztec/blob-lib": "0.86.0-nightly.20250513",
71
- "@aztec/constants": "0.86.0-nightly.20250513",
72
- "@aztec/ethereum": "0.86.0-nightly.20250513",
73
- "@aztec/foundation": "0.86.0-nightly.20250513",
74
- "@aztec/noir-noirc_abi": "0.86.0-nightly.20250513",
69
+ "@aztec/bb.js": "0.86.0-nightly.20250515",
70
+ "@aztec/blob-lib": "0.86.0-nightly.20250515",
71
+ "@aztec/constants": "0.86.0-nightly.20250515",
72
+ "@aztec/ethereum": "0.86.0-nightly.20250515",
73
+ "@aztec/foundation": "0.86.0-nightly.20250515",
74
+ "@aztec/noir-noirc_abi": "0.86.0-nightly.20250515",
75
75
  "@google-cloud/storage": "^7.15.0",
76
+ "axios": "^1.9.0",
77
+ "json-stringify-deterministic": "1.0.12",
76
78
  "lodash.chunk": "^4.2.0",
77
79
  "lodash.isequal": "^4.5.0",
78
80
  "lodash.omit": "^4.5.0",
@@ -216,31 +216,17 @@ function generateFunctionArtifact(
216
216
  }
217
217
 
218
218
  function getFunctionType(fn: NoirCompiledContractFunction): FunctionType {
219
- if (fn.custom_attributes.some(attr => attr.endsWith(AZTEC_PRIVATE_ATTRIBUTE))) {
219
+ if (fn.custom_attributes.includes(AZTEC_PRIVATE_ATTRIBUTE)) {
220
220
  return FunctionType.PRIVATE;
221
- } else if (fn.custom_attributes.some(attr => attr.endsWith(AZTEC_PUBLIC_ATTRIBUTE))) {
221
+ } else if (fn.custom_attributes.includes(AZTEC_PUBLIC_ATTRIBUTE)) {
222
222
  return FunctionType.PUBLIC;
223
- } else if (fn.custom_attributes.some(attr => attr.endsWith(AZTEC_UTILITY_ATTRIBUTE))) {
223
+ } else if (fn.custom_attributes.includes(AZTEC_UTILITY_ATTRIBUTE)) {
224
224
  return FunctionType.UTILITY;
225
225
  } else {
226
226
  throw new Error(`Invalid function type for a noir contract function ${fn.name}`);
227
227
  }
228
228
  }
229
229
 
230
- // TODO(https://github.com/noir-lang/noir/issues/7912): Replace the above function with this one once the linked issue
231
- // is fixed.
232
- // function getFunctionType(fn: NoirCompiledContractFunction): FunctionType {
233
- // if (fn.custom_attributes.includes(AZTEC_PRIVATE_ATTRIBUTE)) {
234
- // return FunctionType.PRIVATE;
235
- // } else if (fn.custom_attributes.includes(AZTEC_PUBLIC_ATTRIBUTE)) {
236
- // return FunctionType.PUBLIC;
237
- // } else if (fn.custom_attributes.includes(AZTEC_UTILITY_ATTRIBUTE)) {
238
- // return FunctionType.UTILITY;
239
- // } else {
240
- // throw new Error(`Invalid function type for a noir contract function ${fn.name}`);
241
- // }
242
- // }
243
-
244
230
  /**
245
231
  * Returns true if the first parameter is kernel function inputs.
246
232
  *
@@ -4,6 +4,8 @@ import { createLogger } from '@aztec/foundation/log';
4
4
  import { numToUInt8 } from '@aztec/foundation/serialize';
5
5
  import { MerkleTree, MerkleTreeCalculator } from '@aztec/foundation/trees';
6
6
 
7
+ import deterministicStringify from 'json-stringify-deterministic';
8
+
7
9
  import { type ContractArtifact, type FunctionArtifact, FunctionSelector, FunctionType } from '../abi/index.js';
8
10
 
9
11
  const VERSION = 1;
@@ -58,7 +60,7 @@ export async function computeArtifactHashPreimage(artifact: ContractArtifact) {
58
60
  }
59
61
 
60
62
  export function computeArtifactMetadataHash(artifact: ContractArtifact) {
61
- return sha256Fr(Buffer.from(JSON.stringify({ name: artifact.name, outputs: artifact.outputs }), 'utf-8'));
63
+ return sha256Fr(Buffer.from(deterministicStringify({ name: artifact.name, outputs: artifact.outputs }), 'utf-8'));
62
64
  }
63
65
 
64
66
  export async function computeArtifactFunctionTreeRoot(artifact: ContractArtifact, fnType: FunctionType) {
@@ -103,7 +105,7 @@ export async function computeFunctionArtifactHash(
103
105
  }
104
106
 
105
107
  export function computeFunctionMetadataHash(fn: FunctionArtifact) {
106
- return sha256Fr(Buffer.from(JSON.stringify(fn.returnTypes), 'utf8'));
108
+ return sha256Fr(Buffer.from(deterministicStringify(fn.returnTypes), 'utf8'));
107
109
  }
108
110
 
109
111
  function getLogger() {
@@ -1,6 +1,7 @@
1
1
  import { type Logger, createLogger } from '@aztec/foundation/log';
2
2
  import { makeBackoff, retry } from '@aztec/foundation/retry';
3
3
 
4
+ import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse } from 'axios';
4
5
  import { createWriteStream } from 'fs';
5
6
  import { mkdir } from 'fs/promises';
6
7
  import { dirname } from 'path';
@@ -10,13 +11,15 @@ import { finished } from 'stream/promises';
10
11
  import type { ReadOnlyFileStore } from './interface.js';
11
12
 
12
13
  export class HttpFileStore implements ReadOnlyFileStore {
13
- private readonly fetch: typeof fetch;
14
+ private readonly axiosInstance: AxiosInstance;
15
+ private readonly fetch: <T>(config: AxiosRequestConfig) => Promise<AxiosResponse<T>>;
14
16
 
15
17
  constructor(private readonly baseUrl: string, private readonly log: Logger = createLogger('stdlib:http-file-store')) {
16
- this.fetch = async (...args: Parameters<typeof fetch>): Promise<Response> => {
18
+ this.axiosInstance = axios.create();
19
+ this.fetch = async <T>(config: AxiosRequestConfig) => {
17
20
  return await retry(
18
- () => fetch(...args),
19
- `Fetching ${args[0]}`,
21
+ () => this.axiosInstance.request<T>(config),
22
+ `Fetching ${config.url}`,
20
23
  makeBackoff([1, 1, 3]),
21
24
  this.log,
22
25
  /*failSilently=*/ true,
@@ -26,30 +29,33 @@ export class HttpFileStore implements ReadOnlyFileStore {
26
29
 
27
30
  public async read(pathOrUrl: string): Promise<Buffer> {
28
31
  const url = this.getUrl(pathOrUrl);
29
- const response = await this.fetch(url);
30
- if (response.ok) {
31
- return Buffer.from(await response.arrayBuffer());
32
- } else {
33
- throw new Error(`Error fetching file from ${url}: ${response.statusText}`);
32
+ try {
33
+ const response = await this.fetch<ArrayBuffer>({ url, method: 'GET', responseType: 'arraybuffer' });
34
+ return Buffer.from(response.data);
35
+ } catch (error) {
36
+ throw new Error(`Error fetching file from ${url}: ${error instanceof Error ? error.message : String(error)}`);
34
37
  }
35
38
  }
36
39
 
37
40
  public async download(pathOrUrl: string, destPath: string): Promise<void> {
38
41
  const url = this.getUrl(pathOrUrl);
39
- const response = await this.fetch(url);
40
- if (response.ok) {
42
+ try {
43
+ const response = await this.fetch<Readable>({ url, method: 'GET', responseType: 'stream' });
41
44
  await mkdir(dirname(destPath), { recursive: true });
42
- // Typescript complains about Readable.fromWeb, hence the cast
43
- await finished(Readable.fromWeb(response.body! as any).pipe(createWriteStream(destPath)));
44
- } else {
45
- throw new Error(`Error fetching file from ${url}: ${response.statusText}`);
45
+ await finished(response.data.pipe(createWriteStream(destPath)));
46
+ } catch (error) {
47
+ throw new Error(`Error fetching file from ${url}: ${error instanceof Error ? error.message : String(error)}`);
46
48
  }
47
49
  }
48
50
 
49
51
  public async exists(pathOrUrl: string): Promise<boolean> {
50
52
  const url = this.getUrl(pathOrUrl);
51
- const response = await this.fetch(url);
52
- return response.ok;
53
+ try {
54
+ await this.fetch<unknown>({ url, method: 'HEAD' });
55
+ return true;
56
+ } catch (error) {
57
+ return false;
58
+ }
53
59
  }
54
60
 
55
61
  private getUrl(path: string): string {
@@ -552,10 +552,12 @@ export function createAztecNodeClient(
552
552
  url: string,
553
553
  versions: Partial<ComponentsVersions> = {},
554
554
  fetch = makeFetch([1, 2, 3], false),
555
+ batchWindowMS = 25,
555
556
  ): AztecNode {
556
557
  return createSafeJsonRpcClient<AztecNode>(url, AztecNodeApiSchema, {
557
558
  namespaceMethods: 'node',
558
559
  fetch,
560
+ batchWindowMS,
559
561
  onResponse: getVersioningResponseHandler(versions),
560
562
  });
561
563
  }
@@ -16,6 +16,8 @@ export interface SequencerConfig {
16
16
  maxTxsPerBlock?: number;
17
17
  /** The minimum number of txs to include in a block. */
18
18
  minTxsPerBlock?: number;
19
+ /** Whether to publish txs with the block proposals */
20
+ publishTxsWithProposals?: boolean;
19
21
  /** The maximum L2 block gas. */
20
22
  maxL2BlockGas?: number;
21
23
  /** The maximum DA block gas. */
@@ -45,6 +47,7 @@ export const SequencerConfigSchema = z.object({
45
47
  maxTxsPerBlock: z.number().optional(),
46
48
  minTxsPerBlock: z.number().optional(),
47
49
  maxL2BlockGas: z.number().optional(),
50
+ publishTxsWithProposals: z.boolean().optional(),
48
51
  maxDABlockGas: z.number().optional(),
49
52
  coinbase: schemas.EthAddress.optional(),
50
53
  feeRecipient: schemas.AztecAddress.optional(),
@@ -25,4 +25,14 @@ export class InboxLeaf {
25
25
  static smallestIndexFromL2Block(l2block: bigint): bigint {
26
26
  return (l2block - BigInt(INITIAL_L2_BLOCK_NUM)) * BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
27
27
  }
28
+
29
+ /**
30
+ * Returns the range of valid indices for a given L2 block.
31
+ * Start index is inclusive, end index is exclusive.
32
+ */
33
+ static indexRangeFromL2Block(l2block: bigint): [bigint, bigint] {
34
+ const start = this.smallestIndexFromL2Block(l2block);
35
+ const end = start + BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
36
+ return [start, end];
37
+ }
28
38
  }
@@ -53,7 +53,7 @@ export class BlockAttestation extends Gossipable {
53
53
  .transform(obj => new BlockAttestation(obj.blockNumber, obj.payload, obj.signature));
54
54
  }
55
55
 
56
- override p2pMessageIdentifier(): Promise<Buffer32> {
56
+ override generateP2PMessageIdentifier(): Promise<Buffer32> {
57
57
  return Promise.resolve(new BlockAttestationHash(keccak256(this.signature.toBuffer())));
58
58
  }
59
59
 
@@ -21,6 +21,10 @@ export class BlockProposalHash extends Buffer32 {
21
21
  }
22
22
  }
23
23
 
24
+ export type BlockProposalOptions = {
25
+ publishFullTxs: boolean;
26
+ };
27
+
24
28
  /**
25
29
  * BlockProposal
26
30
  *
@@ -49,7 +53,7 @@ export class BlockProposal extends Gossipable {
49
53
  super();
50
54
  }
51
55
 
52
- override p2pMessageIdentifier(): Promise<Buffer32> {
56
+ override generateP2PMessageIdentifier(): Promise<Buffer32> {
53
57
  return Promise.resolve(new BlockProposalHash(keccak256(this.signature.toBuffer())));
54
58
  }
55
59
 
@@ -64,8 +68,8 @@ export class BlockProposal extends Gossipable {
64
68
  static async createProposalFromSigner(
65
69
  blockNumber: Fr,
66
70
  payload: ConsensusPayload,
67
- // Note(md): Provided seperately to tx hashes such that this function can be optional
68
- txs: Tx[],
71
+ // Note(md): Provided separately to tx hashes such that this function can be optional
72
+ txs: Tx[] | undefined,
69
73
  payloadSigner: (payload: Buffer32) => Promise<Signature>,
70
74
  ) {
71
75
  const hashed = getHashedSignaturePayload(payload, SignatureDomainSeparator.blockProposal);
@@ -1,13 +1,39 @@
1
- import type { Buffer32 } from '@aztec/foundation/buffer';
1
+ import { Buffer32 } from '@aztec/foundation/buffer';
2
+ import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize';
2
3
 
3
4
  import type { TopicType } from './topic_type.js';
4
5
 
6
+ export class P2PMessage {
7
+ constructor(public readonly publishTime: Date, public readonly id: Buffer32, public readonly payload: Buffer) {}
8
+
9
+ static async fromGossipable(message: Gossipable): Promise<P2PMessage> {
10
+ return new P2PMessage(new Date(), await message.p2pMessageIdentifier(), message.toBuffer());
11
+ }
12
+
13
+ static fromMessageData(messageData: Buffer): P2PMessage {
14
+ const reader = new BufferReader(messageData);
15
+ const publishTime = reader.readUInt64();
16
+ const id = Buffer32.fromBuffer(reader);
17
+ const payload = reader.readBuffer();
18
+ return new P2PMessage(new Date(Number(publishTime)), id, payload);
19
+ }
20
+
21
+ toMessageData(): Buffer {
22
+ return serializeToBuffer([
23
+ bigintToUInt64BE(BigInt(this.publishTime.getTime())),
24
+ this.id,
25
+ serializeToBuffer(this.payload.length, this.payload),
26
+ ]);
27
+ }
28
+ }
29
+
5
30
  /**
6
31
  * Gossipable
7
32
  *
8
33
  * Any class which extends gossipable will be able to be Gossiped over the p2p network
9
34
  */
10
35
  export abstract class Gossipable {
36
+ private cachedId: Buffer32 | undefined;
11
37
  /** p2p Topic
12
38
  *
13
39
  * - The p2p topic identifier, this determines how the message is handled
@@ -18,7 +44,15 @@ export abstract class Gossipable {
18
44
  *
19
45
  * - A digest of the message information, this key is used for deduplication
20
46
  */
21
- abstract p2pMessageIdentifier(): Promise<Buffer32>;
47
+ async p2pMessageIdentifier(): Promise<Buffer32> {
48
+ if (this.cachedId) {
49
+ return this.cachedId;
50
+ }
51
+ this.cachedId = await this.generateP2PMessageIdentifier();
52
+ return this.cachedId;
53
+ }
54
+
55
+ abstract generateP2PMessageIdentifier(): Promise<Buffer32>;
22
56
 
23
57
  /** To Buffer
24
58
  *
@@ -26,6 +60,10 @@ export abstract class Gossipable {
26
60
  */
27
61
  abstract toBuffer(): Buffer;
28
62
 
63
+ toMessage(): Buffer {
64
+ return this.toBuffer();
65
+ }
66
+
29
67
  /**
30
68
  * Get the size of the gossipable object.
31
69
  *
@@ -22,6 +22,8 @@ export enum TopicType {
22
22
  export function getTopicTypeForClientType(clientType: P2PClientType) {
23
23
  if (clientType === P2PClientType.Full) {
24
24
  return Object.values(TopicType);
25
+ } else if (clientType === P2PClientType.Prover) {
26
+ return [TopicType.tx, TopicType.block_proposal];
25
27
  }
26
28
  return [TopicType.tx];
27
29
  }
package/src/tx/tx.ts CHANGED
@@ -54,7 +54,7 @@ export class Tx extends Gossipable {
54
54
  }
55
55
 
56
56
  // Gossipable method
57
- override async p2pMessageIdentifier(): Promise<Buffer32> {
57
+ override async generateP2PMessageIdentifier(): Promise<Buffer32> {
58
58
  return new Buffer32((await this.getTxHash()).toBuffer());
59
59
  }
60
60