@aztec/stdlib 2.1.2 → 2.1.3-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block/proposal/attestations_and_signers.d.ts +15 -4
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +14 -0
- package/dest/file-store/http.d.ts.map +1 -1
- package/dest/file-store/http.js +8 -3
- package/dest/file-store/s3.d.ts.map +1 -1
- package/dest/file-store/s3.js +3 -7
- package/dest/interfaces/archiver.d.ts +5 -0
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +2 -1
- package/dest/interfaces/aztec-node-admin.d.ts +4 -0
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +5 -0
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/p2p/gossipable.d.ts +1 -1
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +1 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +2 -2
- package/package.json +8 -8
- package/src/block/proposal/attestations_and_signers.ts +20 -1
- package/src/file-store/http.ts +6 -3
- package/src/file-store/s3.ts +3 -7
- package/src/interfaces/archiver.ts +4 -0
- package/src/interfaces/configs.ts +3 -0
- package/src/p2p/gossipable.ts +1 -1
- package/src/tx/tx.ts +2 -3
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { ViemCommitteeAttestations } from '@aztec/ethereum';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
|
|
4
|
-
import { CommitteeAttestation } from './committee_attestation.js';
|
|
4
|
+
import { CommitteeAttestation, EthAddress } from './committee_attestation.js';
|
|
5
5
|
export declare class CommitteeAttestationsAndSigners implements Signable {
|
|
6
6
|
attestations: CommitteeAttestation[];
|
|
7
7
|
constructor(attestations: CommitteeAttestation[]);
|
|
8
8
|
static get schema(): z.ZodEffects<z.ZodObject<{
|
|
9
9
|
attestations: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
10
|
-
address: z.ZodType<
|
|
10
|
+
address: z.ZodType<EthAddress, any, string>;
|
|
11
11
|
signature: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, `0x${string}`, string>, `0x${string}`, string>, import("./committee_attestation.js").Signature, string>;
|
|
12
12
|
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
address:
|
|
13
|
+
address: EthAddress;
|
|
14
14
|
signature: import("./committee_attestation.js").Signature;
|
|
15
15
|
}, {
|
|
16
16
|
address: string;
|
|
@@ -35,7 +35,7 @@ export declare class CommitteeAttestationsAndSigners implements Signable {
|
|
|
35
35
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
|
|
36
36
|
static empty(): CommitteeAttestationsAndSigners;
|
|
37
37
|
toString(): string;
|
|
38
|
-
getSigners():
|
|
38
|
+
getSigners(): EthAddress[];
|
|
39
39
|
getSignedAttestations(): CommitteeAttestation[];
|
|
40
40
|
/**
|
|
41
41
|
* Packs an array of committee attestations into the format expected by the Solidity contract
|
|
@@ -45,4 +45,15 @@ export declare class CommitteeAttestationsAndSigners implements Signable {
|
|
|
45
45
|
*/
|
|
46
46
|
getPackedAttestations(): ViemCommitteeAttestations;
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Malicious extension of CommitteeAttestationsAndSigners that keeps separate attestations and
|
|
50
|
+
* signers. Used for tricking the L1 contract into accepting attestations by reconstructing
|
|
51
|
+
* the correct committee commitment (which relies on the signers, ignoring the signatures)
|
|
52
|
+
* with an invalid set of attestation signatures.
|
|
53
|
+
*/
|
|
54
|
+
export declare class MaliciousCommitteeAttestationsAndSigners extends CommitteeAttestationsAndSigners {
|
|
55
|
+
private signers;
|
|
56
|
+
constructor(attestations: CommitteeAttestation[], signers: EthAddress[]);
|
|
57
|
+
getSigners(): EthAddress[];
|
|
58
|
+
}
|
|
48
59
|
//# sourceMappingURL=attestations_and_signers.d.ts.map
|
|
@@ -1 +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;
|
|
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,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE9E,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;AAED;;;;;GAKG;AACH,qBAAa,wCAAyC,SAAQ,+BAA+B;IAGzF,OAAO,CAAC,OAAO;gBADf,YAAY,EAAE,oBAAoB,EAAE,EAC5B,OAAO,EAAE,UAAU,EAAE;IAKtB,UAAU,IAAI,UAAU,EAAE;CAGpC"}
|
|
@@ -97,3 +97,17 @@ export class CommitteeAttestationsAndSigners {
|
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Malicious extension of CommitteeAttestationsAndSigners that keeps separate attestations and
|
|
102
|
+
* signers. Used for tricking the L1 contract into accepting attestations by reconstructing
|
|
103
|
+
* the correct committee commitment (which relies on the signers, ignoring the signatures)
|
|
104
|
+
* with an invalid set of attestation signatures.
|
|
105
|
+
*/ export class MaliciousCommitteeAttestationsAndSigners extends CommitteeAttestationsAndSigners {
|
|
106
|
+
signers;
|
|
107
|
+
constructor(attestations, signers){
|
|
108
|
+
super(attestations), this.signers = signers;
|
|
109
|
+
}
|
|
110
|
+
getSigners() {
|
|
111
|
+
return this.signers;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -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;AAUlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,qBAAa,aAAc,YAAW,iBAAiB;IAKnD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+D;gBAGlE,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAA+C;IAc1D,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;
|
|
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;IAKnD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+D;gBAGlE,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAA+C;IAc1D,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;IAc5D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,OAAO,CAAC,MAAM;CAGf"}
|
package/dest/file-store/http.js
CHANGED
|
@@ -4,7 +4,7 @@ import axios from 'axios';
|
|
|
4
4
|
import { createWriteStream } from 'fs';
|
|
5
5
|
import { mkdir } from 'fs/promises';
|
|
6
6
|
import { dirname } from 'path';
|
|
7
|
-
import {
|
|
7
|
+
import { pipeline } from 'stream/promises';
|
|
8
8
|
export class HttpFileStore {
|
|
9
9
|
baseUrl;
|
|
10
10
|
log;
|
|
@@ -38,17 +38,22 @@ export class HttpFileStore {
|
|
|
38
38
|
async download(pathOrUrl, destPath) {
|
|
39
39
|
const url = this.getUrl(pathOrUrl);
|
|
40
40
|
try {
|
|
41
|
+
this.log.debug(`Downloading file from ${url} to ${destPath}`);
|
|
41
42
|
const response = await this.fetch({
|
|
42
43
|
url,
|
|
43
44
|
method: 'GET',
|
|
44
45
|
responseType: 'stream'
|
|
45
46
|
});
|
|
47
|
+
this.log.debug(`Response ${response.status} (${response.statusText}) from ${url}, writing to ${destPath}`);
|
|
46
48
|
await mkdir(dirname(destPath), {
|
|
47
49
|
recursive: true
|
|
48
50
|
});
|
|
49
|
-
await
|
|
51
|
+
await pipeline(response.data, createWriteStream(destPath));
|
|
52
|
+
this.log.debug(`Download of ${url} to ${destPath} complete`);
|
|
50
53
|
} catch (error) {
|
|
51
|
-
throw new Error(`Error fetching file from ${url}
|
|
54
|
+
throw new Error(`Error fetching file from ${url}`, {
|
|
55
|
+
cause: error
|
|
56
|
+
});
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
async exists(pathOrUrl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/file-store/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAiBlE,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtE,qBAAa,WAAY,YAAW,SAAS;IAOzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAGrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EACjC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAClC,GAAG,GAAE,MAA6C;IAiBxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/file-store/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAiBlE,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtE,qBAAa,WAAY,YAAW,SAAS;IAOzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAGrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EACjC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAClC,GAAG,GAAE,MAA6C;IAiBxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IA0D3F,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW3C,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe3D,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,WAAW;CAKpB"}
|
package/dest/file-store/s3.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createReadStream, createWriteStream } from 'fs';
|
|
|
4
4
|
import { mkdir, mkdtemp, stat, unlink } from 'fs/promises';
|
|
5
5
|
import { tmpdir } from 'os';
|
|
6
6
|
import { basename, dirname, join } from 'path';
|
|
7
|
-
import {
|
|
7
|
+
import { pipeline } from 'stream/promises';
|
|
8
8
|
import { createGzip } from 'zlib';
|
|
9
9
|
function normalizeBasePath(path) {
|
|
10
10
|
return path?.replace(/^\/+|\/+$/g, '') ?? '';
|
|
@@ -72,11 +72,8 @@ export class S3FileStore {
|
|
|
72
72
|
// Pre-gzip to a temp file so we know the exact length for R2/S3 headers
|
|
73
73
|
const tmpDir = await mkdtemp(join(tmpdir(), 's3-upload-'));
|
|
74
74
|
const gzPath = join(tmpDir, `${basename(srcPath)}.gz`);
|
|
75
|
-
const source = createReadStream(srcPath);
|
|
76
|
-
const gz = createGzip();
|
|
77
|
-
const out = createWriteStream(gzPath);
|
|
78
75
|
try {
|
|
79
|
-
await
|
|
76
|
+
await pipeline(createReadStream(srcPath), createGzip(), createWriteStream(gzPath));
|
|
80
77
|
const st = await stat(gzPath);
|
|
81
78
|
contentLength = st.size;
|
|
82
79
|
bodyPath = gzPath;
|
|
@@ -133,8 +130,7 @@ export class S3FileStore {
|
|
|
133
130
|
await mkdir(dirname(destPath), {
|
|
134
131
|
recursive: true
|
|
135
132
|
});
|
|
136
|
-
|
|
137
|
-
await finished(out.Body.pipe(write));
|
|
133
|
+
await pipeline(out.Body, createWriteStream(destPath));
|
|
138
134
|
}
|
|
139
135
|
async exists(pathOrUrlStr) {
|
|
140
136
|
try {
|
|
@@ -23,6 +23,8 @@ export type ArchiverSpecificConfig = {
|
|
|
23
23
|
archiverStoreMapSizeKb?: number;
|
|
24
24
|
/** Whether to skip validating block attestations (use only for testing). */
|
|
25
25
|
skipValidateBlockAttestations?: boolean;
|
|
26
|
+
/** Maximum allowed drift in seconds between the Ethereum client and current time. */
|
|
27
|
+
maxAllowedEthClientDriftSeconds?: number;
|
|
26
28
|
};
|
|
27
29
|
export declare const ArchiverSpecificConfigSchema: z.ZodObject<{
|
|
28
30
|
archiverPollingIntervalMS: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
@@ -31,6 +33,7 @@ export declare const ArchiverSpecificConfigSchema: z.ZodObject<{
|
|
|
31
33
|
maxLogs: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
32
34
|
archiverStoreMapSizeKb: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
33
35
|
skipValidateBlockAttestations: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
maxAllowedEthClientDriftSeconds: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
34
37
|
}, "strip", z.ZodTypeAny, {
|
|
35
38
|
archiverPollingIntervalMS?: number | undefined;
|
|
36
39
|
archiverBatchSize?: number | undefined;
|
|
@@ -38,6 +41,7 @@ export declare const ArchiverSpecificConfigSchema: z.ZodObject<{
|
|
|
38
41
|
maxLogs?: number | undefined;
|
|
39
42
|
archiverStoreMapSizeKb?: number | undefined;
|
|
40
43
|
skipValidateBlockAttestations?: boolean | undefined;
|
|
44
|
+
maxAllowedEthClientDriftSeconds?: number | undefined;
|
|
41
45
|
}, {
|
|
42
46
|
archiverPollingIntervalMS?: string | number | bigint | undefined;
|
|
43
47
|
archiverBatchSize?: string | number | bigint | undefined;
|
|
@@ -45,6 +49,7 @@ export declare const ArchiverSpecificConfigSchema: z.ZodObject<{
|
|
|
45
49
|
maxLogs?: string | number | bigint | undefined;
|
|
46
50
|
archiverStoreMapSizeKb?: string | number | bigint | undefined;
|
|
47
51
|
skipValidateBlockAttestations?: boolean | undefined;
|
|
52
|
+
maxAllowedEthClientDriftSeconds?: string | number | bigint | undefined;
|
|
48
53
|
}>;
|
|
49
54
|
export type ArchiverApi = Omit<L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource, 'start' | 'stop'>;
|
|
50
55
|
export declare const ArchiverApiSchema: ApiSchemaFor<ArchiverApi>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/interfaces/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAOnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IAEjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qGAAqG;IACrG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,4EAA4E;IAC5E,6BAA6B,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/interfaces/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAOnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IAEjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qGAAqG;IACrG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,4EAA4E;IAC5E,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC,qFAAqF;IACrF,+BAA+B,CAAC,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,aAAa,GAAG,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,EACvE,OAAO,GAAG,MAAM,CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,CAyDvD,CAAC"}
|
|
@@ -20,7 +20,8 @@ export const ArchiverSpecificConfigSchema = z.object({
|
|
|
20
20
|
viemPollingIntervalMS: schemas.Integer.optional(),
|
|
21
21
|
maxLogs: schemas.Integer.optional(),
|
|
22
22
|
archiverStoreMapSizeKb: schemas.Integer.optional(),
|
|
23
|
-
skipValidateBlockAttestations: z.boolean().optional()
|
|
23
|
+
skipValidateBlockAttestations: z.boolean().optional(),
|
|
24
|
+
maxAllowedEthClientDriftSeconds: schemas.Integer.optional()
|
|
24
25
|
});
|
|
25
26
|
export const ArchiverApiSchema = {
|
|
26
27
|
getRollupAddress: z.function().args().returns(schemas.EthAddress),
|
|
@@ -65,6 +65,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
65
65
|
secondsBeforeInvalidatingBlockAsCommitteeMember: z.ZodNumber;
|
|
66
66
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: z.ZodNumber;
|
|
67
67
|
injectFakeAttestation: z.ZodOptional<z.ZodBoolean>;
|
|
68
|
+
shuffleAttestationOrdering: z.ZodOptional<z.ZodBoolean>;
|
|
68
69
|
nodeUrl: z.ZodOptional<z.ZodString>;
|
|
69
70
|
realProofs: z.ZodBoolean;
|
|
70
71
|
proverId: z.ZodOptional<import("../schemas/schemas.js").ZodFor<import("@aztec/foundation/schemas").EthAddress>>;
|
|
@@ -138,6 +139,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
138
139
|
maxLogs: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
139
140
|
archiverStoreMapSizeKb: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
140
141
|
skipValidateBlockAttestations: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
maxAllowedEthClientDriftSeconds: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>>;
|
|
141
143
|
}, "archiverPollingIntervalMS" | "archiverBatchSize" | "skipValidateBlockAttestations"> & {
|
|
142
144
|
maxTxPoolSize: z.ZodNumber;
|
|
143
145
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -200,6 +202,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
200
202
|
attestationPropagationTime?: number | undefined;
|
|
201
203
|
skipCollectingAttestations?: boolean | undefined;
|
|
202
204
|
injectFakeAttestation?: boolean | undefined;
|
|
205
|
+
shuffleAttestationOrdering?: boolean | undefined;
|
|
203
206
|
proverId?: import("@aztec/foundation/schemas").EthAddress | undefined;
|
|
204
207
|
archiverPollingIntervalMS?: number | undefined;
|
|
205
208
|
archiverBatchSize?: number | undefined;
|
|
@@ -270,6 +273,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
270
273
|
attestationPropagationTime?: number | undefined;
|
|
271
274
|
skipCollectingAttestations?: boolean | undefined;
|
|
272
275
|
injectFakeAttestation?: boolean | undefined;
|
|
276
|
+
shuffleAttestationOrdering?: boolean | undefined;
|
|
273
277
|
proverId?: any;
|
|
274
278
|
archiverPollingIntervalMS?: string | number | bigint | undefined;
|
|
275
279
|
archiverBatchSize?: string | number | bigint | undefined;
|
|
@@ -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,EAAE,KAAK,yBAAyB,EAAmC,MAAM,gBAAgB,CAAC;AAEjG;;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
|
|
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,EAAE,KAAK,yBAAyB,EAAmC,MAAM,gBAAgB,CAAC;AAEjG;;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"}
|
|
@@ -51,6 +51,8 @@ export interface SequencerConfig {
|
|
|
51
51
|
skipInvalidateBlockAsProposer?: boolean;
|
|
52
52
|
/** Inject a fake attestation (for testing only) */
|
|
53
53
|
injectFakeAttestation?: boolean;
|
|
54
|
+
/** Shuffle attestation ordering to create invalid ordering (for testing only) */
|
|
55
|
+
shuffleAttestationOrdering?: boolean;
|
|
54
56
|
}
|
|
55
57
|
export declare const SequencerConfigSchema: z.ZodObject<{
|
|
56
58
|
transactionPollingIntervalMS: z.ZodOptional<z.ZodNumber>;
|
|
@@ -104,6 +106,7 @@ export declare const SequencerConfigSchema: z.ZodObject<{
|
|
|
104
106
|
secondsBeforeInvalidatingBlockAsCommitteeMember: z.ZodNumber;
|
|
105
107
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: z.ZodNumber;
|
|
106
108
|
injectFakeAttestation: z.ZodOptional<z.ZodBoolean>;
|
|
109
|
+
shuffleAttestationOrdering: z.ZodOptional<z.ZodBoolean>;
|
|
107
110
|
}, "strip", z.ZodTypeAny, {
|
|
108
111
|
secondsBeforeInvalidatingBlockAsCommitteeMember: number;
|
|
109
112
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: number;
|
|
@@ -136,6 +139,7 @@ export declare const SequencerConfigSchema: z.ZodObject<{
|
|
|
136
139
|
attestationPropagationTime?: number | undefined;
|
|
137
140
|
skipCollectingAttestations?: boolean | undefined;
|
|
138
141
|
injectFakeAttestation?: boolean | undefined;
|
|
142
|
+
shuffleAttestationOrdering?: boolean | undefined;
|
|
139
143
|
}, {
|
|
140
144
|
secondsBeforeInvalidatingBlockAsCommitteeMember: number;
|
|
141
145
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: number;
|
|
@@ -168,5 +172,6 @@ export declare const SequencerConfigSchema: z.ZodObject<{
|
|
|
168
172
|
attestationPropagationTime?: number | undefined;
|
|
169
173
|
skipCollectingAttestations?: boolean | undefined;
|
|
170
174
|
injectFakeAttestation?: boolean | undefined;
|
|
175
|
+
shuffleAttestationOrdering?: boolean | undefined;
|
|
171
176
|
}>;
|
|
172
177
|
//# sourceMappingURL=configs.d.ts.map
|
|
@@ -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,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;IACtC,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wGAAwG;IACxG,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oGAAoG;IACpG,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,wGAAwG;IACxG,kDAAkD,CAAC,EAAE,MAAM,CAAC;IAC5D,sDAAsD;IACtD,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,kGAAkG;IAClG,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mDAAmD;IACnD,qBAAqB,CAAC,EAAE,OAAO,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;IACtC,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wGAAwG;IACxG,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oGAAoG;IACpG,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,wGAAwG;IACxG,kDAAkD,CAAC,EAAE,MAAM,CAAC;IAC5D,sDAAsD;IACtD,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,kGAAkG;IAClG,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mDAAmD;IACnD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iFAAiF;IACjF,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBE,CAAC"}
|
|
@@ -22,5 +22,6 @@ export const SequencerConfigSchema = z.object({
|
|
|
22
22
|
skipCollectingAttestations: z.boolean().optional(),
|
|
23
23
|
secondsBeforeInvalidatingBlockAsCommitteeMember: z.number(),
|
|
24
24
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: z.number(),
|
|
25
|
-
injectFakeAttestation: z.boolean().optional()
|
|
25
|
+
injectFakeAttestation: z.boolean().optional(),
|
|
26
|
+
shuffleAttestationOrdering: z.boolean().optional()
|
|
26
27
|
});
|
package/dest/p2p/gossipable.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare abstract class Gossipable {
|
|
|
20
20
|
* A digest of the message information **used for logging only**.
|
|
21
21
|
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
p2pMessageLoggingIdentifier(): Promise<Buffer32>;
|
|
24
24
|
abstract generateP2PMessageIdentifier(): Promise<Buffer32>;
|
|
25
25
|
abstract toBuffer(): Buffer;
|
|
26
26
|
toMessage(): Buffer;
|
|
@@ -1 +1 @@
|
|
|
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,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAItD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAMvD,aAAa,IAAI,MAAM;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC,2EAA2E;IAC3E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE3B;;;OAGG;IACG,
|
|
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,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAItD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAMvD,aAAa,IAAI,MAAM;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,UAAU;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC,2EAA2E;IAC3E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE3B;;;OAGG;IACG,2BAA2B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQtD,QAAQ,CAAC,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAE1D,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}
|
package/dest/p2p/gossipable.js
CHANGED
|
@@ -28,7 +28,7 @@ export class P2PMessage {
|
|
|
28
28
|
/**
|
|
29
29
|
* A digest of the message information **used for logging only**.
|
|
30
30
|
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
31
|
-
*/ async
|
|
31
|
+
*/ async p2pMessageLoggingIdentifier() {
|
|
32
32
|
if (this.cachedId) {
|
|
33
33
|
return this.cachedId;
|
|
34
34
|
}
|
package/dest/tx/tx.d.ts.map
CHANGED
|
@@ -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
|
@@ -224,12 +224,12 @@ import { TxHash } from './tx_hash.js';
|
|
|
224
224
|
* Helper class to handle Serialization and Deserialization of Txs array.
|
|
225
225
|
*/ export class TxArray extends Array {
|
|
226
226
|
static fromBuffer(buffer) {
|
|
227
|
+
const reader = BufferReader.asReader(buffer);
|
|
227
228
|
try {
|
|
228
|
-
const reader = BufferReader.asReader(buffer);
|
|
229
229
|
const txs = reader.readVector(Tx);
|
|
230
230
|
return new TxArray(...txs);
|
|
231
231
|
} catch {
|
|
232
|
-
|
|
232
|
+
throw new Error('Failed to deserialize TxArray from buffer');
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
toBuffer() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3-rc.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -70,13 +70,13 @@
|
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
73
|
-
"@aztec/bb.js": "2.1.
|
|
74
|
-
"@aztec/blob-lib": "2.1.
|
|
75
|
-
"@aztec/constants": "2.1.
|
|
76
|
-
"@aztec/ethereum": "2.1.
|
|
77
|
-
"@aztec/foundation": "2.1.
|
|
78
|
-
"@aztec/l1-artifacts": "2.1.
|
|
79
|
-
"@aztec/noir-noirc_abi": "2.1.
|
|
73
|
+
"@aztec/bb.js": "2.1.3-rc.1",
|
|
74
|
+
"@aztec/blob-lib": "2.1.3-rc.1",
|
|
75
|
+
"@aztec/constants": "2.1.3-rc.1",
|
|
76
|
+
"@aztec/ethereum": "2.1.3-rc.1",
|
|
77
|
+
"@aztec/foundation": "2.1.3-rc.1",
|
|
78
|
+
"@aztec/l1-artifacts": "2.1.3-rc.1",
|
|
79
|
+
"@aztec/noir-noirc_abi": "2.1.3-rc.1",
|
|
80
80
|
"@google-cloud/storage": "^7.15.0",
|
|
81
81
|
"axios": "^1.12.0",
|
|
82
82
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -5,7 +5,7 @@ import { encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
|
|
7
7
|
import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
|
|
8
|
-
import { CommitteeAttestation } from './committee_attestation.js';
|
|
8
|
+
import { CommitteeAttestation, EthAddress } from './committee_attestation.js';
|
|
9
9
|
|
|
10
10
|
export class CommitteeAttestationsAndSigners implements Signable {
|
|
11
11
|
constructor(public attestations: CommitteeAttestation[]) {}
|
|
@@ -119,3 +119,22 @@ export class CommitteeAttestationsAndSigners implements Signable {
|
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Malicious extension of CommitteeAttestationsAndSigners that keeps separate attestations and
|
|
125
|
+
* signers. Used for tricking the L1 contract into accepting attestations by reconstructing
|
|
126
|
+
* the correct committee commitment (which relies on the signers, ignoring the signatures)
|
|
127
|
+
* with an invalid set of attestation signatures.
|
|
128
|
+
*/
|
|
129
|
+
export class MaliciousCommitteeAttestationsAndSigners extends CommitteeAttestationsAndSigners {
|
|
130
|
+
constructor(
|
|
131
|
+
attestations: CommitteeAttestation[],
|
|
132
|
+
private signers: EthAddress[],
|
|
133
|
+
) {
|
|
134
|
+
super(attestations);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
override getSigners(): EthAddress[] {
|
|
138
|
+
return this.signers;
|
|
139
|
+
}
|
|
140
|
+
}
|
package/src/file-store/http.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { createWriteStream } from 'fs';
|
|
|
6
6
|
import { mkdir } from 'fs/promises';
|
|
7
7
|
import { dirname } from 'path';
|
|
8
8
|
import { Readable } from 'stream';
|
|
9
|
-
import {
|
|
9
|
+
import { pipeline } from 'stream/promises';
|
|
10
10
|
|
|
11
11
|
import type { ReadOnlyFileStore } from './interface.js';
|
|
12
12
|
|
|
@@ -43,11 +43,14 @@ export class HttpFileStore implements ReadOnlyFileStore {
|
|
|
43
43
|
public async download(pathOrUrl: string, destPath: string): Promise<void> {
|
|
44
44
|
const url = this.getUrl(pathOrUrl);
|
|
45
45
|
try {
|
|
46
|
+
this.log.debug(`Downloading file from ${url} to ${destPath}`);
|
|
46
47
|
const response = await this.fetch<Readable>({ url, method: 'GET', responseType: 'stream' });
|
|
48
|
+
this.log.debug(`Response ${response.status} (${response.statusText}) from ${url}, writing to ${destPath}`);
|
|
47
49
|
await mkdir(dirname(destPath), { recursive: true });
|
|
48
|
-
await
|
|
50
|
+
await pipeline(response.data, createWriteStream(destPath));
|
|
51
|
+
this.log.debug(`Download of ${url} to ${destPath} complete`);
|
|
49
52
|
} catch (error) {
|
|
50
|
-
throw new Error(`Error fetching file from ${url}
|
|
53
|
+
throw new Error(`Error fetching file from ${url}`, { cause: error });
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
|
package/src/file-store/s3.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { mkdir, mkdtemp, stat, unlink } from 'fs/promises';
|
|
|
12
12
|
import { tmpdir } from 'os';
|
|
13
13
|
import { basename, dirname, join } from 'path';
|
|
14
14
|
import { Readable } from 'stream';
|
|
15
|
-
import {
|
|
15
|
+
import { pipeline } from 'stream/promises';
|
|
16
16
|
import { createGzip } from 'zlib';
|
|
17
17
|
|
|
18
18
|
import type { FileStore, FileStoreSaveOptions } from './interface.js';
|
|
@@ -88,11 +88,8 @@ export class S3FileStore implements FileStore {
|
|
|
88
88
|
// Pre-gzip to a temp file so we know the exact length for R2/S3 headers
|
|
89
89
|
const tmpDir = await mkdtemp(join(tmpdir(), 's3-upload-'));
|
|
90
90
|
const gzPath = join(tmpDir, `${basename(srcPath)}.gz`);
|
|
91
|
-
const source = createReadStream(srcPath);
|
|
92
|
-
const gz = createGzip();
|
|
93
|
-
const out = createWriteStream(gzPath);
|
|
94
91
|
try {
|
|
95
|
-
await
|
|
92
|
+
await pipeline(createReadStream(srcPath), createGzip(), createWriteStream(gzPath));
|
|
96
93
|
const st = await stat(gzPath);
|
|
97
94
|
contentLength = st.size;
|
|
98
95
|
bodyPath = gzPath;
|
|
@@ -144,8 +141,7 @@ export class S3FileStore implements FileStore {
|
|
|
144
141
|
const { bucket, key } = this.getBucketAndKey(pathOrUrlStr);
|
|
145
142
|
const out: GetObjectCommandOutput = await this.s3.send(new GetObjectCommand({ Bucket: bucket, Key: key }));
|
|
146
143
|
await mkdir(dirname(destPath), { recursive: true });
|
|
147
|
-
|
|
148
|
-
await finished((out.Body as Readable).pipe(write));
|
|
144
|
+
await pipeline(out.Body as Readable, createWriteStream(destPath));
|
|
149
145
|
}
|
|
150
146
|
|
|
151
147
|
public async exists(pathOrUrlStr: string): Promise<boolean> {
|
|
@@ -49,6 +49,9 @@ export type ArchiverSpecificConfig = {
|
|
|
49
49
|
|
|
50
50
|
/** Whether to skip validating block attestations (use only for testing). */
|
|
51
51
|
skipValidateBlockAttestations?: boolean;
|
|
52
|
+
|
|
53
|
+
/** Maximum allowed drift in seconds between the Ethereum client and current time. */
|
|
54
|
+
maxAllowedEthClientDriftSeconds?: number;
|
|
52
55
|
};
|
|
53
56
|
|
|
54
57
|
export const ArchiverSpecificConfigSchema = z.object({
|
|
@@ -58,6 +61,7 @@ export const ArchiverSpecificConfigSchema = z.object({
|
|
|
58
61
|
maxLogs: schemas.Integer.optional(),
|
|
59
62
|
archiverStoreMapSizeKb: schemas.Integer.optional(),
|
|
60
63
|
skipValidateBlockAttestations: z.boolean().optional(),
|
|
64
|
+
maxAllowedEthClientDriftSeconds: schemas.Integer.optional(),
|
|
61
65
|
});
|
|
62
66
|
|
|
63
67
|
export type ArchiverApi = Omit<
|
|
@@ -54,6 +54,8 @@ export interface SequencerConfig {
|
|
|
54
54
|
skipInvalidateBlockAsProposer?: boolean;
|
|
55
55
|
/** Inject a fake attestation (for testing only) */
|
|
56
56
|
injectFakeAttestation?: boolean;
|
|
57
|
+
/** Shuffle attestation ordering to create invalid ordering (for testing only) */
|
|
58
|
+
shuffleAttestationOrdering?: boolean;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
export const SequencerConfigSchema = z.object({
|
|
@@ -78,4 +80,5 @@ export const SequencerConfigSchema = z.object({
|
|
|
78
80
|
secondsBeforeInvalidatingBlockAsCommitteeMember: z.number(),
|
|
79
81
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: z.number(),
|
|
80
82
|
injectFakeAttestation: z.boolean().optional(),
|
|
83
|
+
shuffleAttestationOrdering: z.boolean().optional(),
|
|
81
84
|
}) satisfies ZodFor<SequencerConfig>;
|
package/src/p2p/gossipable.ts
CHANGED
|
@@ -35,7 +35,7 @@ export abstract class Gossipable {
|
|
|
35
35
|
* A digest of the message information **used for logging only**.
|
|
36
36
|
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
37
37
|
*/
|
|
38
|
-
async
|
|
38
|
+
async p2pMessageLoggingIdentifier(): Promise<Buffer32> {
|
|
39
39
|
if (this.cachedId) {
|
|
40
40
|
return this.cachedId;
|
|
41
41
|
}
|
package/src/tx/tx.ts
CHANGED
|
@@ -308,13 +308,12 @@ export class Tx extends Gossipable {
|
|
|
308
308
|
*/
|
|
309
309
|
export class TxArray extends Array<Tx> {
|
|
310
310
|
static fromBuffer(buffer: Buffer | BufferReader): TxArray {
|
|
311
|
+
const reader = BufferReader.asReader(buffer);
|
|
311
312
|
try {
|
|
312
|
-
const reader = BufferReader.asReader(buffer);
|
|
313
313
|
const txs = reader.readVector(Tx);
|
|
314
|
-
|
|
315
314
|
return new TxArray(...txs);
|
|
316
315
|
} catch {
|
|
317
|
-
|
|
316
|
+
throw new Error('Failed to deserialize TxArray from buffer');
|
|
318
317
|
}
|
|
319
318
|
}
|
|
320
319
|
|