@aztec/stdlib 3.0.0-nightly.20251016 → 3.0.0-nightly.20251023
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/attestation_info.d.ts +30 -0
- package/dest/block/attestation_info.d.ts.map +1 -0
- package/dest/block/attestation_info.js +39 -0
- package/dest/block/index.d.ts +1 -0
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -0
- package/dest/block/published_l2_block.d.ts +0 -2
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +0 -6
- package/dest/interfaces/aztec-node-admin.d.ts +3 -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/interfaces/p2p.d.ts +2 -0
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +2 -1
- package/dest/note/notes_filter.d.ts +0 -5
- package/dest/note/notes_filter.d.ts.map +1 -1
- package/dest/note/notes_filter.js +0 -3
- package/dest/p2p/block_attestation.d.ts +44 -3
- package/dest/p2p/block_attestation.d.ts.map +1 -1
- package/dest/p2p/block_attestation.js +36 -12
- package/dest/p2p/block_proposal.d.ts +2 -1
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +3 -2
- package/dest/tests/mocks.d.ts +3 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +31 -9
- package/dest/tx/tx.d.ts +6 -0
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +8 -0
- package/dest/zkpassport/index.d.ts +15 -9
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +17 -11
- package/package.json +9 -9
- package/src/block/attestation_info.ts +62 -0
- package/src/block/index.ts +1 -0
- package/src/block/published_l2_block.ts +0 -11
- package/src/interfaces/configs.ts +3 -0
- package/src/interfaces/p2p.ts +4 -0
- package/src/note/notes_filter.ts +0 -7
- package/src/p2p/block_attestation.ts +49 -10
- package/src/p2p/block_proposal.ts +4 -3
- package/src/tests/mocks.ts +51 -12
- package/src/tx/tx.ts +10 -0
- package/src/zkpassport/index.ts +40 -28
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import type { L2Block } from './l2_block.js';
|
|
3
|
+
import type { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
4
|
+
/**
|
|
5
|
+
* Status indicating how the attestation address was determined
|
|
6
|
+
*/
|
|
7
|
+
export type AttestationStatus = 'recovered-from-signature' | 'provided-as-address' | 'invalid-signature' | 'empty';
|
|
8
|
+
/**
|
|
9
|
+
* Information about an attestation extracted from a published block
|
|
10
|
+
*/
|
|
11
|
+
export type AttestationInfo = {
|
|
12
|
+
/** The validator's address, undefined if signature recovery failed or empty */
|
|
13
|
+
address?: undefined;
|
|
14
|
+
/** How the attestation address was determined */
|
|
15
|
+
status: Extract<AttestationStatus, 'invalid-signature' | 'empty'>;
|
|
16
|
+
} | {
|
|
17
|
+
/** The validator's address */
|
|
18
|
+
address: EthAddress;
|
|
19
|
+
/** How the attestation address was determined */
|
|
20
|
+
status: Extract<AttestationStatus, 'provided-as-address' | 'recovered-from-signature'>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Extracts attestation information from a published L2 block.
|
|
24
|
+
* Returns info for each attestation, preserving array indices.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getAttestationInfoFromPublishedL2Block(block: {
|
|
27
|
+
attestations: CommitteeAttestation[];
|
|
28
|
+
block: L2Block;
|
|
29
|
+
}): AttestationInfo[];
|
|
30
|
+
//# sourceMappingURL=attestation_info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation_info.d.ts","sourceRoot":"","sources":["../../src/block/attestation_info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAEnH;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IACE,+EAA+E;IAC/E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;CACnE,GACD;IACE,8BAA8B;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,0BAA0B,CAAC,CAAC;CACxF,CAAC;AAEN;;;GAGG;AACH,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,eAAe,EAAE,CAwBpB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { recoverAddress } from '@aztec/foundation/crypto';
|
|
2
|
+
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
3
|
+
import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Extracts attestation information from a published L2 block.
|
|
6
|
+
* Returns info for each attestation, preserving array indices.
|
|
7
|
+
*/ export function getAttestationInfoFromPublishedL2Block(block) {
|
|
8
|
+
const payload = ConsensusPayload.fromBlock(block.block);
|
|
9
|
+
const hashedPayload = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
10
|
+
return block.attestations.map((attestation)=>{
|
|
11
|
+
// If signature is empty, check if we have an address directly
|
|
12
|
+
if (attestation.signature.isEmpty()) {
|
|
13
|
+
if (attestation.address.isZero()) {
|
|
14
|
+
// No signature and no address - empty
|
|
15
|
+
return {
|
|
16
|
+
status: 'empty'
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Address provided without signature
|
|
20
|
+
return {
|
|
21
|
+
address: attestation.address,
|
|
22
|
+
status: 'provided-as-address'
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Try to recover address from signature
|
|
26
|
+
try {
|
|
27
|
+
const recoveredAddress = recoverAddress(hashedPayload, attestation.signature);
|
|
28
|
+
return {
|
|
29
|
+
address: recoveredAddress,
|
|
30
|
+
status: 'recovered-from-signature'
|
|
31
|
+
};
|
|
32
|
+
} catch {
|
|
33
|
+
// Signature present but recovery failed
|
|
34
|
+
return {
|
|
35
|
+
status: 'invalid-signature'
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
package/dest/block/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
package/dest/block/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
2
2
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
5
4
|
import { L2Block } from './l2_block.js';
|
|
6
5
|
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
7
6
|
export declare class L1PublishedData {
|
|
@@ -141,5 +140,4 @@ export declare class PublishedL2Block {
|
|
|
141
140
|
static fromFields(fields: FieldsOf<PublishedL2Block>): PublishedL2Block;
|
|
142
141
|
toBuffer(): Buffer;
|
|
143
142
|
}
|
|
144
|
-
export declare function getAttestationsFromPublishedL2Block(block: Pick<PublishedL2Block, 'attestations' | 'block'>): BlockAttestation[];
|
|
145
143
|
//# sourceMappingURL=published_l2_block.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"published_l2_block.d.ts","sourceRoot":"","sources":["../../src/block/published_l2_block.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"published_l2_block.d.ts","sourceRoot":"","sources":["../../src/block/published_l2_block.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,qBAAa,eAAe;IAEjB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;gBAFjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAG1B,MAAM,KAAK,MAAM;;;;;;;;;;;;OAMhB;IAED,MAAM,CAAC,MAAM;IAQb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC;CAGpD;AAED,qBAAa,gBAAgB;IAElB,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,eAAe;IACnB,YAAY,EAAE,oBAAoB,EAAE;gBAFpC,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,oBAAoB,EAAE;IAG7C,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAU1E,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAI7C,QAAQ,IAAI,MAAM;CAU1B"}
|
|
@@ -4,8 +4,6 @@ import { randomBigInt } from '@aztec/foundation/crypto';
|
|
|
4
4
|
import { schemas } from '@aztec/foundation/schemas';
|
|
5
5
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
8
|
-
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
9
7
|
import { L2Block } from './l2_block.js';
|
|
10
8
|
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
11
9
|
export class L1PublishedData {
|
|
@@ -63,7 +61,3 @@ export class PublishedL2Block {
|
|
|
63
61
|
return serializeToBuffer(this.block, this.l1.blockNumber, this.l1.blockHash, this.l1.timestamp, this.attestations.length, this.attestations);
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
export function getAttestationsFromPublishedL2Block(block) {
|
|
67
|
-
const payload = ConsensusPayload.fromBlock(block.block);
|
|
68
|
-
return block.attestations.filter((attestation)=>!attestation.signature.isEmpty()).map((attestation)=>new BlockAttestation(block.block.number, payload, attestation.signature));
|
|
69
|
-
}
|
|
@@ -96,6 +96,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
96
96
|
secondsBeforeInvalidatingBlockAsCommitteeMember: z.ZodNumber;
|
|
97
97
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember: z.ZodNumber;
|
|
98
98
|
broadcastInvalidBlockProposal: z.ZodOptional<z.ZodBoolean>;
|
|
99
|
+
injectFakeAttestation: z.ZodOptional<z.ZodBoolean>;
|
|
99
100
|
} & {
|
|
100
101
|
nodeUrl: z.ZodOptional<z.ZodString>;
|
|
101
102
|
realProofs: z.ZodBoolean;
|
|
@@ -202,6 +203,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
202
203
|
attestationPropagationTime?: number | undefined;
|
|
203
204
|
skipCollectingAttestations?: boolean | undefined;
|
|
204
205
|
broadcastInvalidBlockProposal?: boolean | undefined;
|
|
206
|
+
injectFakeAttestation?: boolean | undefined;
|
|
205
207
|
archiverPollingIntervalMS?: number | undefined;
|
|
206
208
|
archiverBatchSize?: number | undefined;
|
|
207
209
|
skipValidateBlockAttestations?: boolean | undefined;
|
|
@@ -271,6 +273,7 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<{
|
|
|
271
273
|
attestationPropagationTime?: number | undefined;
|
|
272
274
|
skipCollectingAttestations?: boolean | undefined;
|
|
273
275
|
broadcastInvalidBlockProposal?: boolean | undefined;
|
|
276
|
+
injectFakeAttestation?: boolean | undefined;
|
|
274
277
|
archiverPollingIntervalMS?: string | number | bigint | undefined;
|
|
275
278
|
archiverBatchSize?: string | number | bigint | undefined;
|
|
276
279
|
skipValidateBlockAttestations?: boolean | 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,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
|
|
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"}
|
|
@@ -51,6 +51,8 @@ export interface SequencerConfig {
|
|
|
51
51
|
skipInvalidateBlockAsProposer?: boolean;
|
|
52
52
|
/** Broadcast invalid block proposals with corrupted state (for testing only) */
|
|
53
53
|
broadcastInvalidBlockProposal?: boolean;
|
|
54
|
+
/** Inject a fake attestation (for testing only) */
|
|
55
|
+
injectFakeAttestation?: 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
|
broadcastInvalidBlockProposal: z.ZodOptional<z.ZodBoolean>;
|
|
109
|
+
injectFakeAttestation: 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
|
broadcastInvalidBlockProposal?: boolean | undefined;
|
|
142
|
+
injectFakeAttestation?: 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
|
broadcastInvalidBlockProposal?: boolean | undefined;
|
|
175
|
+
injectFakeAttestation?: 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,gFAAgF;IAChF,6BAA6B,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,gFAAgF;IAChF,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mDAAmD;IACnD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;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
|
-
broadcastInvalidBlockProposal: z.boolean().optional()
|
|
25
|
+
broadcastInvalidBlockProposal: z.boolean().optional(),
|
|
26
|
+
injectFakeAttestation: z.boolean().optional()
|
|
26
27
|
});
|
package/dest/interfaces/p2p.d.ts
CHANGED
|
@@ -48,6 +48,8 @@ export interface P2PApiWithAttestations extends P2PApiWithoutAttestations {
|
|
|
48
48
|
* @returns BlockAttestations
|
|
49
49
|
*/
|
|
50
50
|
getAttestationsForSlot(slot: bigint, proposalId?: string): Promise<BlockAttestation[]>;
|
|
51
|
+
/** Deletes a given attestation manually from the p2p client attestation pool. */
|
|
52
|
+
deleteAttestation(attestation: BlockAttestation): Promise<void>;
|
|
51
53
|
}
|
|
52
54
|
export interface P2PClient extends P2PApiWithAttestations {
|
|
53
55
|
/** Manually adds an attestation to the p2p client attestation pool. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p.d.ts","sourceRoot":"","sources":["../../src/interfaces/p2p.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,MAAM,MAAM,QAAQ,GAChB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAc7F,qCAAqC;AACrC,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7D,4DAA4D;IAC5D,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE;;;;;;OAMG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"p2p.d.ts","sourceRoot":"","sources":["../../src/interfaces/p2p.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,MAAM,MAAM,QAAQ,GAChB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAc7F,qCAAqC;AACrC,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7D,4DAA4D;IAC5D,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE;;;;;;OAMG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEvF,iFAAiF;IACjF,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,SAAU,SAAQ,sBAAsB;IACvD,uEAAuE;IACvE,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,aAAa,CAAC,IAAI,GAC3F,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,aAAa,CAAC,IAAI,GAC/F,sBAAsB,GAAG,SAAS,GAClC,yBAAyB,CAAC;AAE9B,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,MAAM,CAc7C,CAAC"}
|
package/dest/interfaces/p2p.js
CHANGED
|
@@ -29,5 +29,6 @@ export const P2PApiSchema = {
|
|
|
29
29
|
getPendingTxs: z.function().args(optional(z.number().gte(1).lte(MAX_RPC_TXS_LEN).default(MAX_RPC_TXS_LEN)), optional(TxHash.schema)).returns(z.array(Tx.schema)),
|
|
30
30
|
getPendingTxCount: z.function().returns(schemas.Integer),
|
|
31
31
|
getEncodedEnr: z.function().returns(z.string().optional()),
|
|
32
|
-
getPeers: z.function().args(optional(z.boolean())).returns(z.array(PeerInfoSchema))
|
|
32
|
+
getPeers: z.function().args(optional(z.boolean())).returns(z.array(PeerInfoSchema)),
|
|
33
|
+
deleteAttestation: z.function().args(BlockAttestation.schema).returns(z.void())
|
|
33
34
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
3
3
|
import { type ZodFor } from '../schemas/index.js';
|
|
4
|
-
import { TxHash } from '../tx/tx_hash.js';
|
|
5
4
|
import { NoteStatus } from './note_status.js';
|
|
6
5
|
/**
|
|
7
6
|
* A filter used to fetch notes.
|
|
@@ -13,12 +12,8 @@ export type NotesFilter = {
|
|
|
13
12
|
* @remarks Providing a contract address is required as we need that information to trigger private state sync.
|
|
14
13
|
*/
|
|
15
14
|
contractAddress: AztecAddress;
|
|
16
|
-
/** Hash of a transaction from which to fetch the notes. */
|
|
17
|
-
txHash?: TxHash;
|
|
18
15
|
/** The specific storage location of the note on the contract. */
|
|
19
16
|
storageSlot?: Fr;
|
|
20
|
-
/** The recipient of the note (whose public key was used to encrypt the note). */
|
|
21
|
-
recipient?: AztecAddress;
|
|
22
17
|
/** The status of the note. Defaults to 'ACTIVE'. */
|
|
23
18
|
status?: NoteStatus;
|
|
24
19
|
/** The siloed nullifier for the note. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes_filter.d.ts","sourceRoot":"","sources":["../../src/note/notes_filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"notes_filter.d.ts","sourceRoot":"","sources":["../../src/note/notes_filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,eAAe,EAAE,YAAY,CAAC;IAC9B,iEAAiE;IACjE,WAAW,CAAC,EAAE,EAAE,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,yCAAyC;IACzC,eAAe,CAAC,EAAE,EAAE,CAAC;IACrB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAMhD,CAAC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { schemas } from '../schemas/index.js';
|
|
3
|
-
import { TxHash } from '../tx/tx_hash.js';
|
|
4
3
|
import { NoteStatus } from './note_status.js';
|
|
5
4
|
export const NotesFilterSchema = z.object({
|
|
6
5
|
contractAddress: schemas.AztecAddress,
|
|
7
|
-
txHash: TxHash.schema.optional(),
|
|
8
6
|
storageSlot: schemas.Fr.optional(),
|
|
9
|
-
recipient: schemas.AztecAddress.optional(),
|
|
10
7
|
status: z.nativeEnum(NoteStatus).optional(),
|
|
11
8
|
siloedNullifier: schemas.Fr.optional(),
|
|
12
9
|
scopes: z.array(schemas.AztecAddress).optional()
|
|
@@ -24,29 +24,70 @@ export declare class BlockAttestation extends Gossipable {
|
|
|
24
24
|
readonly payload: ConsensusPayload;
|
|
25
25
|
/** The signature of the block attester */
|
|
26
26
|
readonly signature: Signature;
|
|
27
|
+
/** The signature from the block proposer */
|
|
28
|
+
readonly proposerSignature: Signature;
|
|
27
29
|
static p2pTopic: TopicType;
|
|
28
30
|
private sender;
|
|
31
|
+
private proposer;
|
|
29
32
|
constructor(
|
|
30
33
|
/** The block number of the attestation. */
|
|
31
34
|
blockNumber: UInt32,
|
|
32
35
|
/** The payload of the message, and what the signature is over */
|
|
33
36
|
payload: ConsensusPayload,
|
|
34
37
|
/** The signature of the block attester */
|
|
35
|
-
signature: Signature
|
|
38
|
+
signature: Signature,
|
|
39
|
+
/** The signature from the block proposer */
|
|
40
|
+
proposerSignature: Signature);
|
|
36
41
|
static get schema(): ZodFor<BlockAttestation>;
|
|
37
42
|
generateP2PMessageIdentifier(): Promise<Buffer32>;
|
|
38
43
|
get archive(): Fr;
|
|
39
44
|
get slotNumber(): Fr;
|
|
40
45
|
/**
|
|
41
46
|
* Lazily evaluate and cache the signer of the attestation
|
|
42
|
-
* @returns The signer of the attestation
|
|
47
|
+
* @returns The signer of the attestation, or undefined if signature recovery fails
|
|
43
48
|
*/
|
|
44
|
-
getSender(): EthAddress;
|
|
49
|
+
getSender(): EthAddress | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Lazily evaluate and cache the proposer of the block
|
|
52
|
+
* @returns The proposer of the block
|
|
53
|
+
*/
|
|
54
|
+
getProposer(): EthAddress;
|
|
45
55
|
getPayload(): Buffer;
|
|
46
56
|
toBuffer(): Buffer;
|
|
47
57
|
static fromBuffer(buf: Buffer | BufferReader): BlockAttestation;
|
|
48
58
|
static empty(): BlockAttestation;
|
|
49
59
|
static random(): BlockAttestation;
|
|
50
60
|
getSize(): number;
|
|
61
|
+
toInspect(): {
|
|
62
|
+
blockNumber: number;
|
|
63
|
+
payload: {
|
|
64
|
+
header: {
|
|
65
|
+
lastArchive: `0x${string}`;
|
|
66
|
+
contentCommitment: {
|
|
67
|
+
blobsHash: `0x${string}`;
|
|
68
|
+
inHash: `0x${string}`;
|
|
69
|
+
outHash: `0x${string}`;
|
|
70
|
+
};
|
|
71
|
+
slotNumber: bigint;
|
|
72
|
+
timestamp: bigint;
|
|
73
|
+
coinbase: `0x${string}`;
|
|
74
|
+
feeRecipient: `0x${string}`;
|
|
75
|
+
gasFees: {
|
|
76
|
+
feePerDaGas: bigint;
|
|
77
|
+
feePerL2Gas: bigint;
|
|
78
|
+
};
|
|
79
|
+
totalManaUsed: bigint;
|
|
80
|
+
};
|
|
81
|
+
archive: `0x${string}`;
|
|
82
|
+
stateReference: {
|
|
83
|
+
l1ToL2MessageTree: `0x${string}`;
|
|
84
|
+
noteHashTree: `0x${string}`;
|
|
85
|
+
nullifierTree: `0x${string}`;
|
|
86
|
+
publicDataTree: `0x${string}`;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
signature: `0x${string}`;
|
|
90
|
+
proposerSignature: `0x${string}`;
|
|
91
|
+
};
|
|
51
92
|
}
|
|
52
93
|
//# sourceMappingURL=block_attestation.d.ts.map
|
|
@@ -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,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,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;
|
|
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,EAAE,KAAK,MAAM,EAAW,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,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;IAO5C,2CAA2C;aAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;aAC1B,SAAS,EAAE,SAAS;IAEpC,4CAA4C;aAC5B,iBAAiB,EAAE,SAAS;IAhB9C,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAyB;;IAGvC,2CAA2C;IAC3B,WAAW,EAAE,MAAM;IAEnC,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAEpC,4CAA4C;IAC5B,iBAAiB,EAAE,SAAS;IAK9C,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAS5C;IAEQ,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS;IAWnC;;;OAGG;IACH,WAAW,IAAI,UAAU;IAWzB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAU/D,MAAM,CAAC,KAAK,IAAI,gBAAgB;IAIhC,MAAM,CAAC,MAAM,IAAI,gBAAgB;IASjC,OAAO,IAAI,MAAM;IAIjB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQV"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import { keccak256,
|
|
2
|
+
import { keccak256, tryRecoverAddress } from '@aztec/foundation/crypto';
|
|
3
3
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
4
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
5
|
import { z } from 'zod';
|
|
@@ -22,17 +22,20 @@ export class BlockAttestationHash extends Buffer32 {
|
|
|
22
22
|
blockNumber;
|
|
23
23
|
payload;
|
|
24
24
|
signature;
|
|
25
|
+
proposerSignature;
|
|
25
26
|
static p2pTopic = TopicType.block_attestation;
|
|
26
27
|
sender;
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
proposer;
|
|
29
|
+
constructor(/** The block number of the attestation. */ blockNumber, /** The payload of the message, and what the signature is over */ payload, /** The signature of the block attester */ signature, /** The signature from the block proposer */ proposerSignature){
|
|
30
|
+
super(), this.blockNumber = blockNumber, this.payload = payload, this.signature = signature, this.proposerSignature = proposerSignature;
|
|
29
31
|
}
|
|
30
32
|
static get schema() {
|
|
31
33
|
return z.object({
|
|
32
34
|
blockNumber: schemas.UInt32,
|
|
33
35
|
payload: ConsensusPayload.schema,
|
|
34
|
-
signature: Signature.schema
|
|
35
|
-
|
|
36
|
+
signature: Signature.schema,
|
|
37
|
+
proposerSignature: Signature.schema
|
|
38
|
+
}).transform((obj)=>new BlockAttestation(obj.blockNumber, obj.payload, obj.signature, obj.proposerSignature));
|
|
36
39
|
}
|
|
37
40
|
generateP2PMessageIdentifier() {
|
|
38
41
|
return Promise.resolve(new BlockAttestationHash(keccak256(this.signature.toBuffer())));
|
|
@@ -45,16 +48,28 @@ export class BlockAttestationHash extends Buffer32 {
|
|
|
45
48
|
}
|
|
46
49
|
/**
|
|
47
50
|
* Lazily evaluate and cache the signer of the attestation
|
|
48
|
-
* @returns The signer of the attestation
|
|
51
|
+
* @returns The signer of the attestation, or undefined if signature recovery fails
|
|
49
52
|
*/ getSender() {
|
|
50
53
|
if (!this.sender) {
|
|
51
54
|
// Recover the sender from the attestation
|
|
52
55
|
const hashed = getHashedSignaturePayloadEthSignedMessage(this.payload, SignatureDomainSeparator.blockAttestation);
|
|
53
56
|
// Cache the sender for later use
|
|
54
|
-
this.sender =
|
|
57
|
+
this.sender = tryRecoverAddress(hashed, this.signature);
|
|
55
58
|
}
|
|
56
59
|
return this.sender;
|
|
57
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Lazily evaluate and cache the proposer of the block
|
|
63
|
+
* @returns The proposer of the block
|
|
64
|
+
*/ getProposer() {
|
|
65
|
+
if (!this.proposer) {
|
|
66
|
+
// Recover the proposer from the proposal signature
|
|
67
|
+
const hashed = getHashedSignaturePayloadEthSignedMessage(this.payload, SignatureDomainSeparator.blockProposal);
|
|
68
|
+
// Cache the proposer for later use
|
|
69
|
+
this.proposer = tryRecoverAddress(hashed, this.proposerSignature);
|
|
70
|
+
}
|
|
71
|
+
return this.proposer;
|
|
72
|
+
}
|
|
58
73
|
getPayload() {
|
|
59
74
|
return this.payload.getPayloadToSign(SignatureDomainSeparator.blockAttestation);
|
|
60
75
|
}
|
|
@@ -62,20 +77,29 @@ export class BlockAttestationHash extends Buffer32 {
|
|
|
62
77
|
return serializeToBuffer([
|
|
63
78
|
this.blockNumber,
|
|
64
79
|
this.payload,
|
|
65
|
-
this.signature
|
|
80
|
+
this.signature,
|
|
81
|
+
this.proposerSignature
|
|
66
82
|
]);
|
|
67
83
|
}
|
|
68
84
|
static fromBuffer(buf) {
|
|
69
85
|
const reader = BufferReader.asReader(buf);
|
|
70
|
-
return new BlockAttestation(reader.readNumber(), reader.readObject(ConsensusPayload), reader.readObject(Signature));
|
|
86
|
+
return new BlockAttestation(reader.readNumber(), reader.readObject(ConsensusPayload), reader.readObject(Signature), reader.readObject(Signature));
|
|
71
87
|
}
|
|
72
88
|
static empty() {
|
|
73
|
-
return new BlockAttestation(0, ConsensusPayload.empty(), Signature.empty());
|
|
89
|
+
return new BlockAttestation(0, ConsensusPayload.empty(), Signature.empty(), Signature.empty());
|
|
74
90
|
}
|
|
75
91
|
static random() {
|
|
76
|
-
return new BlockAttestation(Math.floor(Math.random() * 1000) + 1, ConsensusPayload.random(), Signature.random());
|
|
92
|
+
return new BlockAttestation(Math.floor(Math.random() * 1000) + 1, ConsensusPayload.random(), Signature.random(), Signature.random());
|
|
77
93
|
}
|
|
78
94
|
getSize() {
|
|
79
|
-
return 4 /* blockNumber */ + this.payload.getSize() + this.signature.getSize();
|
|
95
|
+
return 4 /* blockNumber */ + this.payload.getSize() + this.signature.getSize() + this.proposerSignature.getSize();
|
|
96
|
+
}
|
|
97
|
+
toInspect() {
|
|
98
|
+
return {
|
|
99
|
+
blockNumber: this.blockNumber,
|
|
100
|
+
payload: this.payload.toInspect(),
|
|
101
|
+
signature: this.signature.toString(),
|
|
102
|
+
proposerSignature: this.proposerSignature.toString()
|
|
103
|
+
};
|
|
80
104
|
}
|
|
81
105
|
}
|
|
@@ -55,8 +55,9 @@ export declare class BlockProposal extends Gossipable {
|
|
|
55
55
|
static createProposalFromSigner(blockNumber: UInt32, payload: ConsensusPayload, txHashes: TxHash[], txs: Tx[] | undefined, payloadSigner: (payload: Buffer32) => Promise<Signature>): Promise<BlockProposal>;
|
|
56
56
|
/**Get Sender
|
|
57
57
|
* Lazily evaluate the sender of the proposal; result is cached
|
|
58
|
+
* @returns The sender address, or undefined if signature recovery fails
|
|
58
59
|
*/
|
|
59
|
-
getSender(): EthAddress;
|
|
60
|
+
getSender(): EthAddress | undefined;
|
|
60
61
|
getPayload(): Buffer<ArrayBufferLike>;
|
|
61
62
|
toBuffer(): Buffer;
|
|
62
63
|
static fromBuffer(buf: Buffer | BufferReader): BlockProposal;
|
|
@@ -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,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,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;IACxB,4FAA4F;IAC5F,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAMzC,8BAA8B;aACd,WAAW,EAAE,MAAM;IAEnC,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;aACtD,SAAS,EAAE,SAAS;IAEpC,gDAAgD;aAChC,QAAQ,EAAE,MAAM,EAAE;IAGlC,oCAAoC;aACpB,GAAG,CAAC,EAAE,EAAE,EAAE;IAnB5B,OAAgB,QAAQ,YAA4B;IAEpD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,8BAA8B;IACd,WAAW,EAAE,MAAM;IAEnC,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;IACtD,SAAS,EAAE,SAAS;IAEpC,gDAAgD;IAChC,QAAQ,EAAE,MAAM,EAAE;IAGlC,oCAAoC;IACpB,GAAG,CAAC,EAAE,EAAE,EAAE,YAAA;IAKnB,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED,WAAW,IAAI,WAAW;WAWb,wBAAwB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAAE,EAElB,GAAG,EAAE,EAAE,EAAE,GAAG,SAAS,EACrB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;IAQ1D
|
|
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,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,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;IACxB,4FAA4F;IAC5F,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAMzC,8BAA8B;aACd,WAAW,EAAE,MAAM;IAEnC,iEAAiE;aACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;aACtD,SAAS,EAAE,SAAS;IAEpC,gDAAgD;aAChC,QAAQ,EAAE,MAAM,EAAE;IAGlC,oCAAoC;aACpB,GAAG,CAAC,EAAE,EAAE,EAAE;IAnB5B,OAAgB,QAAQ,YAA4B;IAEpD,OAAO,CAAC,MAAM,CAAyB;;IAGrC,8BAA8B;IACd,WAAW,EAAE,MAAM;IAEnC,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,sEAAsE;IACtD,SAAS,EAAE,SAAS;IAEpC,gDAAgD;IAChC,QAAQ,EAAE,MAAM,EAAE;IAGlC,oCAAoC;IACpB,GAAG,CAAC,EAAE,EAAE,EAAE,YAAA;IAKnB,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,EAAE,CAEnB;IAED,WAAW,IAAI,WAAW;WAWb,wBAAwB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAAE,EAElB,GAAG,EAAE,EAAE,EAAE,GAAG,SAAS,EACrB,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;IAQ1D;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS;IAUnC,UAAU;IAIV,QAAQ,IAAI,MAAM;IASlB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa;IAgB5D,OAAO,IAAI,MAAM;CAUlB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import { keccak256,
|
|
2
|
+
import { keccak256, tryRecoverAddress } from '@aztec/foundation/crypto';
|
|
3
3
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
4
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
5
|
import { TxHash } from '../tx/index.js';
|
|
@@ -57,11 +57,12 @@ export class BlockProposalHash extends Buffer32 {
|
|
|
57
57
|
}
|
|
58
58
|
/**Get Sender
|
|
59
59
|
* Lazily evaluate the sender of the proposal; result is cached
|
|
60
|
+
* @returns The sender address, or undefined if signature recovery fails
|
|
60
61
|
*/ getSender() {
|
|
61
62
|
if (!this.sender) {
|
|
62
63
|
const hashed = getHashedSignaturePayloadEthSignedMessage(this.payload, SignatureDomainSeparator.blockProposal);
|
|
63
64
|
// Cache the sender for later use
|
|
64
|
-
this.sender =
|
|
65
|
+
this.sender = tryRecoverAddress(hashed, this.signature);
|
|
65
66
|
}
|
|
66
67
|
return this.sender;
|
|
67
68
|
}
|
package/dest/tests/mocks.d.ts
CHANGED
|
@@ -46,6 +46,8 @@ export declare const randomDeployedContract: () => Promise<{
|
|
|
46
46
|
}>;
|
|
47
47
|
export interface MakeConsensusPayloadOptions {
|
|
48
48
|
signer?: Secp256k1Signer;
|
|
49
|
+
attesterSigner?: Secp256k1Signer;
|
|
50
|
+
proposerSigner?: Secp256k1Signer;
|
|
49
51
|
header?: L2BlockHeader;
|
|
50
52
|
archive?: Fr;
|
|
51
53
|
stateReference?: StateReference;
|
|
@@ -55,7 +57,7 @@ export interface MakeConsensusPayloadOptions {
|
|
|
55
57
|
export declare const makeAndSignCommitteeAttestationsAndSigners: (attestationsAndSigners: CommitteeAttestationsAndSigners, signer?: Secp256k1Signer) => import("../block/index.js").Signature;
|
|
56
58
|
export declare const makeBlockProposal: (options?: MakeConsensusPayloadOptions) => BlockProposal;
|
|
57
59
|
export declare const makeBlockAttestation: (options?: MakeConsensusPayloadOptions) => BlockAttestation;
|
|
58
|
-
export declare const makeBlockAttestationFromBlock: (block: L2Block,
|
|
60
|
+
export declare const makeBlockAttestationFromBlock: (block: L2Block, attesterSigner?: Secp256k1Signer, proposerSigner?: Secp256k1Signer) => BlockAttestation;
|
|
59
61
|
export declare function randomPublishedL2Block(l2BlockNumber: number, opts?: {
|
|
60
62
|
signers?: Secp256k1Signer[];
|
|
61
63
|
}): Promise<PublishedL2Block>;
|
|
@@ -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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"}
|
package/dest/tests/mocks.js
CHANGED
|
@@ -168,17 +168,39 @@ export const makeBlockProposal = (options)=>{
|
|
|
168
168
|
};
|
|
169
169
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028)
|
|
170
170
|
export const makeBlockAttestation = (options)=>{
|
|
171
|
-
const
|
|
172
|
-
|
|
171
|
+
const header = options?.header ?? makeL2BlockHeader(1);
|
|
172
|
+
const { signer, attesterSigner = signer ?? Secp256k1Signer.random(), proposerSigner = signer ?? Secp256k1Signer.random(), archive = Fr.random(), stateReference = header.state } = options ?? {};
|
|
173
|
+
const payload = ConsensusPayload.fromFields({
|
|
174
|
+
header: header.toCheckpointHeader(),
|
|
175
|
+
archive,
|
|
176
|
+
stateReference
|
|
177
|
+
});
|
|
178
|
+
// Sign as attester
|
|
179
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
180
|
+
const attestationSignature = attesterSigner.sign(attestationHash);
|
|
181
|
+
// Sign as proposer
|
|
182
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
|
|
183
|
+
const proposerSignature = proposerSigner.sign(proposalHash);
|
|
184
|
+
return new BlockAttestation(header.globalVariables.blockNumber, payload, attestationSignature, proposerSignature);
|
|
173
185
|
};
|
|
174
|
-
export const makeBlockAttestationFromBlock = (block,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
186
|
+
export const makeBlockAttestationFromBlock = (block, attesterSigner, proposerSigner)=>{
|
|
187
|
+
const header = block.header;
|
|
188
|
+
const archive = block.archive.root;
|
|
189
|
+
const stateReference = block.header.state;
|
|
190
|
+
const payload = ConsensusPayload.fromFields({
|
|
191
|
+
header: header.toCheckpointHeader(),
|
|
192
|
+
archive,
|
|
193
|
+
stateReference
|
|
181
194
|
});
|
|
195
|
+
// Sign as attester
|
|
196
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
197
|
+
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
198
|
+
const attestationSignature = attestationSigner.sign(attestationHash);
|
|
199
|
+
// Sign as proposer
|
|
200
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
|
|
201
|
+
const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
|
|
202
|
+
const proposerSignature = proposalSignerToUse.sign(proposalHash);
|
|
203
|
+
return new BlockAttestation(header.globalVariables.blockNumber, payload, attestationSignature, proposerSignature);
|
|
182
204
|
};
|
|
183
205
|
export async function randomPublishedL2Block(l2BlockNumber, opts = {}) {
|
|
184
206
|
const block = await L2Block.random(l2BlockNumber);
|
package/dest/tx/tx.d.ts
CHANGED
|
@@ -87,6 +87,12 @@ export declare class Tx extends Gossipable {
|
|
|
87
87
|
static computeTxHash(fields: Pick<FieldsOf<Tx>, 'data'>): Promise<TxHash>;
|
|
88
88
|
static create(fields: Omit<FieldsOf<Tx>, 'txHash'>): Promise<Tx>;
|
|
89
89
|
static from(fields: FieldsOf<Tx>): Tx;
|
|
90
|
+
/**
|
|
91
|
+
* Validates that the tx hash matches the computed hash from the tx data.
|
|
92
|
+
* This should be called when deserializing a tx from an untrusted source.
|
|
93
|
+
* @returns true if the hash is valid, false otherwise
|
|
94
|
+
*/
|
|
95
|
+
validateTxHash(): Promise<boolean>;
|
|
90
96
|
/**
|
|
91
97
|
* Gets public logs emitted by this tx.
|
|
92
98
|
* @param logsSource - An instance of `L2LogsSource` which can be used to obtain the logs.
|