@aztec/stdlib 5.0.0-nightly.20260429 → 5.0.0-nightly.20260430
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/avm/avm.d.ts +300 -300
- package/dest/block/attestation_info.d.ts +3 -2
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -5
- package/dest/block/block_data.d.ts +290 -1
- package/dest/block/block_data.d.ts.map +1 -1
- package/dest/block/block_data.js +14 -0
- package/dest/block/block_parameter.d.ts +30 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +36 -2
- package/dest/block/l2_block_source.d.ts +39 -4
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.d.ts +13 -6
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +26 -18
- package/dest/checkpoint/checkpoint_data.d.ts +7 -1
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_data.js +2 -0
- package/dest/config/chain-config.d.ts +2 -2
- package/dest/config/chain-config.d.ts.map +1 -1
- package/dest/config/chain-config.js +2 -2
- package/dest/config/sequencer-config.d.ts +2 -2
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +6 -6
- package/dest/ha-signing/local_config.d.ts +1 -1
- package/dest/ha-signing/local_config.d.ts.map +1 -1
- package/dest/ha-signing/local_config.js +2 -2
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +7 -3
- package/dest/interfaces/aztec-node-admin.d.ts +11 -1
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +2 -1
- package/dest/interfaces/aztec-node.d.ts +45 -55
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +18 -16
- package/dest/interfaces/block_response.d.ts +156 -0
- package/dest/interfaces/block_response.d.ts.map +1 -0
- package/dest/interfaces/block_response.js +24 -0
- package/dest/interfaces/chain_tips.d.ts +304 -0
- package/dest/interfaces/chain_tips.d.ts.map +1 -0
- package/dest/interfaces/chain_tips.js +11 -0
- package/dest/interfaces/checkpoint_parameter.d.ts +27 -0
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_parameter.js +20 -0
- package/dest/interfaces/checkpoint_response.d.ts +312 -0
- package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_response.js +26 -0
- package/dest/interfaces/client.d.ts +6 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +5 -0
- package/dest/interfaces/configs.d.ts +7 -2
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/interfaces/l1_publish_info.d.ts +43 -0
- package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
- package/dest/interfaces/l1_publish_info.js +26 -0
- package/dest/interfaces/proving-job.d.ts +166 -166
- package/dest/interfaces/server.d.ts +6 -1
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +5 -0
- package/dest/interfaces/validator.d.ts +10 -1
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +1 -0
- package/dest/p2p/block_proposal.d.ts +19 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +42 -32
- package/dest/p2p/checkpoint_attestation.d.ts +7 -3
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +15 -17
- package/dest/p2p/checkpoint_proposal.d.ts +15 -7
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +31 -29
- package/dest/p2p/consensus_payload.d.ts +18 -7
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +31 -19
- package/dest/p2p/signature_utils.d.ts +28 -19
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +118 -21
- package/dest/p2p/signed_txs.d.ts +15 -13
- package/dest/p2p/signed_txs.d.ts.map +1 -1
- package/dest/p2p/signed_txs.js +26 -24
- package/dest/tests/mocks.d.ts +7 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +28 -14
- package/dest/timetable/index.d.ts +1 -1
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +25 -11
- package/dest/tx/profiling.js +4 -4
- package/package.json +8 -8
- package/src/block/attestation_info.ts +11 -11
- package/src/block/block_data.ts +17 -0
- package/src/block/block_parameter.ts +35 -2
- package/src/block/l2_block_source.ts +43 -3
- package/src/block/proposal/attestations_and_signers.ts +32 -17
- package/src/checkpoint/checkpoint_data.ts +4 -0
- package/src/config/chain-config.ts +2 -3
- package/src/config/sequencer-config.ts +10 -6
- package/src/ha-signing/local_config.ts +2 -2
- package/src/interfaces/archiver.ts +13 -3
- package/src/interfaces/aztec-node-admin.ts +3 -1
- package/src/interfaces/aztec-node.ts +105 -95
- package/src/interfaces/block_response.ts +79 -0
- package/src/interfaces/chain_tips.ts +24 -0
- package/src/interfaces/checkpoint_parameter.ts +22 -0
- package/src/interfaces/checkpoint_response.ts +84 -0
- package/src/interfaces/client.ts +5 -0
- package/src/interfaces/configs.ts +5 -1
- package/src/interfaces/l1_publish_info.ts +40 -0
- package/src/interfaces/server.ts +5 -0
- package/src/interfaces/validator.ts +5 -0
- package/src/p2p/block_proposal.ts +84 -28
- package/src/p2p/checkpoint_attestation.ts +15 -20
- package/src/p2p/checkpoint_proposal.ts +69 -37
- package/src/p2p/consensus_payload.ts +50 -28
- package/src/p2p/signature_utils.ts +110 -25
- package/src/p2p/signed_txs.ts +46 -28
- package/src/tests/mocks.ts +46 -26
- package/src/timetable/index.ts +26 -11
- package/src/tx/profiling.ts +4 -4
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import {
|
|
2
|
+
import type { BaseBuffer32 } from '@aztec/foundation/buffer';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
6
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
7
|
+
import type { TypedDataDefinition } from 'viem';
|
|
7
8
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
8
9
|
import { type SigningContext } from '../ha-signing/index.js';
|
|
9
10
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
@@ -12,7 +13,7 @@ import { TxHash } from '../tx/index.js';
|
|
|
12
13
|
import type { Tx } from '../tx/tx.js';
|
|
13
14
|
import { BlockProposal } from './block_proposal.js';
|
|
14
15
|
import { Gossipable } from './gossipable.js';
|
|
15
|
-
import {
|
|
16
|
+
import { type CoordinationSignatureContext, type CoordinationSignatureType, type Signable } from './signature_utils.js';
|
|
16
17
|
import { SignedTxs } from './signed_txs.js';
|
|
17
18
|
import { TopicType } from './topic_type.js';
|
|
18
19
|
export type { CheckpointProposalHash } from '@aztec/foundation/branded-types';
|
|
@@ -51,7 +52,7 @@ export type CheckpointLastBlock = Omit<CheckpointLastBlockData, 'txs'> & {
|
|
|
51
52
|
* It includes the aggregated checkpoint header that validators will attest to, plus optionally
|
|
52
53
|
* the last block's info for nodes to re-execute. This marks the completion of a slot's worth of blocks.
|
|
53
54
|
*/
|
|
54
|
-
export declare class CheckpointProposal extends Gossipable {
|
|
55
|
+
export declare class CheckpointProposal extends Gossipable implements Signable {
|
|
55
56
|
/** The aggregated checkpoint header for consensus */
|
|
56
57
|
readonly checkpointHeader: CheckpointHeader;
|
|
57
58
|
/** Archive root after this checkpoint is applied */
|
|
@@ -60,10 +61,13 @@ export declare class CheckpointProposal extends Gossipable {
|
|
|
60
61
|
readonly feeAssetPriceModifier: bigint;
|
|
61
62
|
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
62
63
|
readonly signature: Signature;
|
|
64
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
65
|
+
readonly signatureContext: CoordinationSignatureContext;
|
|
63
66
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
64
67
|
readonly lastBlock?: CheckpointLastBlock | undefined;
|
|
65
68
|
static p2pTopic: TopicType;
|
|
66
|
-
|
|
69
|
+
readonly primaryType: CoordinationSignatureType;
|
|
70
|
+
private cachedSender;
|
|
67
71
|
constructor(
|
|
68
72
|
/** The aggregated checkpoint header for consensus */
|
|
69
73
|
checkpointHeader: CheckpointHeader,
|
|
@@ -73,6 +77,8 @@ export declare class CheckpointProposal extends Gossipable {
|
|
|
73
77
|
feeAssetPriceModifier: bigint,
|
|
74
78
|
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
75
79
|
signature: Signature,
|
|
80
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
81
|
+
signatureContext: CoordinationSignatureContext,
|
|
76
82
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
77
83
|
lastBlock?: CheckpointLastBlock | undefined);
|
|
78
84
|
generateP2PMessageIdentifier(): Promise<BaseBuffer32>;
|
|
@@ -94,8 +100,8 @@ export declare class CheckpointProposal extends Gossipable {
|
|
|
94
100
|
* Get the payload to sign for this checkpoint proposal.
|
|
95
101
|
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
96
102
|
*/
|
|
97
|
-
getPayloadToSign(
|
|
98
|
-
static createProposalFromSigner(checkpointHeader: CheckpointHeader, archiveRoot: Fr, checkpointNumber: CheckpointNumber, feeAssetPriceModifier: bigint, lastBlockProposal: BlockProposal | undefined, payloadSigner: (
|
|
103
|
+
getPayloadToSign(): Buffer;
|
|
104
|
+
static createProposalFromSigner(checkpointHeader: CheckpointHeader, archiveRoot: Fr, checkpointNumber: CheckpointNumber, feeAssetPriceModifier: bigint, lastBlockProposal: BlockProposal | undefined, signatureContext: CoordinationSignatureContext, payloadSigner: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>): Promise<CheckpointProposal>;
|
|
99
105
|
/**
|
|
100
106
|
* Lazily evaluate the sender of the proposal; result is cached.
|
|
101
107
|
* If there's a lastBlock, also verifies the block proposal sender matches the checkpoint sender.
|
|
@@ -128,6 +134,8 @@ export declare class CheckpointProposal extends Gossipable {
|
|
|
128
134
|
archive: `0x${string}`;
|
|
129
135
|
signature: `0x${string}`;
|
|
130
136
|
feeAssetPriceModifier: string;
|
|
137
|
+
chainId: number;
|
|
138
|
+
rollupAddress: `0x${string}`;
|
|
131
139
|
lastBlock: {
|
|
132
140
|
blockHeader: {
|
|
133
141
|
lastArchive: `0x${string}`;
|
|
@@ -169,4 +177,4 @@ export declare class CheckpointProposal extends Gossipable {
|
|
|
169
177
|
* This type makes it clear that lastBlock and getBlockProposal() are not available.
|
|
170
178
|
*/
|
|
171
179
|
export type CheckpointProposalCore = Omit<CheckpointProposal, 'lastBlock' | 'getBlockProposal' | 'toCore'>;
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3AycC9jaGVja3BvaW50X3Byb3Bvc2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUVyQixxQkFBcUIsRUFDckIsVUFBVSxFQUNYLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUE0QyxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBWSxLQUFLLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsseUJBQXlCLEVBRTlCLEtBQUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAErB,qBAAqB,EACrB,UAAU,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"checkpoint_proposal.d.ts","sourceRoot":"","sources":["../../src/p2p/checkpoint_proposal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CheckpointProposalHash, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
|
-
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
4
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
4
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
5
|
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
@@ -11,7 +10,7 @@ import { BlockHeader } from '../tx/block_header.js';
|
|
|
11
10
|
import { TxHash } from '../tx/index.js';
|
|
12
11
|
import { BlockProposal } from './block_proposal.js';
|
|
13
12
|
import { Gossipable } from './gossipable.js';
|
|
14
|
-
import {
|
|
13
|
+
import { EMPTY_COORDINATION_SIGNATURE_CONTEXT, getCoordinationSignatureTypedData, readCoordinationSignatureContext, recoverCoordinationSigner, serializeCoordinationSignatureContext } from './signature_utils.js';
|
|
15
14
|
import { SignedTxs } from './signed_txs.js';
|
|
16
15
|
import { TopicType } from './topic_type.js';
|
|
17
16
|
/**
|
|
@@ -23,11 +22,13 @@ import { TopicType } from './topic_type.js';
|
|
|
23
22
|
archive;
|
|
24
23
|
feeAssetPriceModifier;
|
|
25
24
|
signature;
|
|
25
|
+
signatureContext;
|
|
26
26
|
lastBlock;
|
|
27
27
|
static p2pTopic = TopicType.checkpoint_proposal;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
primaryType;
|
|
29
|
+
cachedSender;
|
|
30
|
+
constructor(/** The aggregated checkpoint header for consensus */ checkpointHeader, /** Archive root after this checkpoint is applied */ archive, /** The fee asset price modifier in basis points (from oracle) */ feeAssetPriceModifier, /** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */ signature, /** The signing domain (chainId + rollupAddress) the signature is bound to */ signatureContext, /** Optional last block info, including its own signature for BlockProposal extraction */ lastBlock){
|
|
31
|
+
super(), this.checkpointHeader = checkpointHeader, this.archive = archive, this.feeAssetPriceModifier = feeAssetPriceModifier, this.signature = signature, this.signatureContext = signatureContext, this.lastBlock = lastBlock, this.primaryType = 'CheckpointProposal', this.cachedSender = undefined;
|
|
31
32
|
}
|
|
32
33
|
generateP2PMessageIdentifier() {
|
|
33
34
|
return Promise.resolve(CheckpointProposalHash.fromBuffer(keccak256(this.signature.toBuffer())));
|
|
@@ -42,7 +43,7 @@ import { TopicType } from './topic_type.js';
|
|
|
42
43
|
if (!this.lastBlock) {
|
|
43
44
|
return undefined;
|
|
44
45
|
}
|
|
45
|
-
return new BlockProposal(this.lastBlock.blockHeader, this.lastBlock.indexWithinCheckpoint, this.checkpointHeader.inHash, this.archive, this.lastBlock.txHashes, this.lastBlock.signature, this.lastBlock.signedTxs);
|
|
46
|
+
return new BlockProposal(this.lastBlock.blockHeader, this.lastBlock.indexWithinCheckpoint, this.checkpointHeader.inHash, this.archive, this.lastBlock.txHashes, this.lastBlock.signature, this.signatureContext, this.lastBlock.signedTxs);
|
|
46
47
|
}
|
|
47
48
|
toBlockInfo() {
|
|
48
49
|
if (!this.lastBlock) {
|
|
@@ -68,56 +69,54 @@ import { TopicType } from './topic_type.js';
|
|
|
68
69
|
/**
|
|
69
70
|
* Get the payload to sign for this checkpoint proposal.
|
|
70
71
|
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
71
|
-
*/ getPayloadToSign(
|
|
72
|
+
*/ getPayloadToSign() {
|
|
72
73
|
return serializeToBuffer([
|
|
73
|
-
domainSeparator,
|
|
74
74
|
this.checkpointHeader,
|
|
75
75
|
this.archive,
|
|
76
76
|
serializeSignedBigInt(this.feeAssetPriceModifier)
|
|
77
77
|
]);
|
|
78
78
|
}
|
|
79
|
-
static async createProposalFromSigner(checkpointHeader, archiveRoot, checkpointNumber, feeAssetPriceModifier, lastBlockProposal, payloadSigner) {
|
|
79
|
+
static async createProposalFromSigner(checkpointHeader, archiveRoot, checkpointNumber, feeAssetPriceModifier, lastBlockProposal, signatureContext, payloadSigner) {
|
|
80
80
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
81
|
-
const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, Signature.empty());
|
|
82
|
-
const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
81
|
+
const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, Signature.empty(), signatureContext);
|
|
83
82
|
const checkpointContext = {
|
|
84
83
|
slot: checkpointHeader.slotNumber,
|
|
85
84
|
checkpointNumber,
|
|
86
85
|
dutyType: DutyType.CHECKPOINT_PROPOSAL
|
|
87
86
|
};
|
|
88
|
-
const
|
|
89
|
-
|
|
87
|
+
const typedData = getCoordinationSignatureTypedData(tempProposal);
|
|
88
|
+
const checkpointSignature = await payloadSigner(typedData, checkpointContext);
|
|
89
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, signatureContext, lastBlockProposal);
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Lazily evaluate the sender of the proposal; result is cached.
|
|
93
93
|
* If there's a lastBlock, also verifies the block proposal sender matches the checkpoint sender.
|
|
94
94
|
* @returns The sender address, or undefined if signature recovery fails or senders don't match
|
|
95
95
|
*/ getSender() {
|
|
96
|
-
if (
|
|
97
|
-
const
|
|
98
|
-
const checkpointSender = tryRecoverAddress(hashed, this.signature);
|
|
99
|
-
// If there's a lastBlock, verify the block proposal sender matches
|
|
96
|
+
if (this.cachedSender === undefined) {
|
|
97
|
+
const checkpointSender = recoverCoordinationSigner(this, this.signature);
|
|
100
98
|
if (checkpointSender && this.lastBlock) {
|
|
101
99
|
const blockProposal = this.getBlockProposal();
|
|
102
100
|
const blockSender = blockProposal?.getSender();
|
|
103
101
|
if (!blockSender || !blockSender.equals(checkpointSender)) {
|
|
104
|
-
|
|
102
|
+
this.cachedSender = null;
|
|
103
|
+
return undefined;
|
|
105
104
|
}
|
|
106
105
|
}
|
|
107
|
-
|
|
108
|
-
this.sender = checkpointSender;
|
|
106
|
+
this.cachedSender = checkpointSender ?? null;
|
|
109
107
|
}
|
|
110
|
-
return this.
|
|
108
|
+
return this.cachedSender ?? undefined;
|
|
111
109
|
}
|
|
112
110
|
getPayload() {
|
|
113
|
-
return this.getPayloadToSign(
|
|
111
|
+
return this.getPayloadToSign();
|
|
114
112
|
}
|
|
115
113
|
toBuffer() {
|
|
116
114
|
const buffer = [
|
|
117
115
|
this.checkpointHeader,
|
|
118
116
|
this.archive,
|
|
119
117
|
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
120
|
-
this.signature
|
|
118
|
+
this.signature,
|
|
119
|
+
serializeCoordinationSignatureContext(this.signatureContext)
|
|
121
120
|
];
|
|
122
121
|
if (this.lastBlock) {
|
|
123
122
|
buffer.push(1); // hasLastBlock = true
|
|
@@ -143,6 +142,7 @@ import { TopicType } from './topic_type.js';
|
|
|
143
142
|
const archive = reader.readObject(Fr);
|
|
144
143
|
const feeAssetPriceModifier = reader.readInt256();
|
|
145
144
|
const signature = reader.readObject(Signature);
|
|
145
|
+
const signatureContext = readCoordinationSignatureContext(reader);
|
|
146
146
|
const hasLastBlock = reader.readNumber();
|
|
147
147
|
if (hasLastBlock) {
|
|
148
148
|
const blockHeader = reader.readObject(BlockHeader);
|
|
@@ -160,7 +160,7 @@ import { TopicType } from './topic_type.js';
|
|
|
160
160
|
signedTxs = SignedTxs.fromBuffer(reader);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
|
|
163
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, signatureContext, {
|
|
164
164
|
blockHeader,
|
|
165
165
|
indexWithinCheckpoint,
|
|
166
166
|
txHashes,
|
|
@@ -168,20 +168,20 @@ import { TopicType } from './topic_type.js';
|
|
|
168
168
|
signedTxs
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
|
-
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
|
|
171
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, signatureContext);
|
|
172
172
|
}
|
|
173
173
|
getSize() {
|
|
174
|
-
let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 8 /* feeAssetPriceModifier */ + 4; /* hasLastBlock flag */
|
|
174
|
+
let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 8 /* feeAssetPriceModifier */ + 4 /* chainId */ + 20 /* rollupAddress */ + 4; /* hasLastBlock flag */
|
|
175
175
|
if (this.lastBlock) {
|
|
176
176
|
size += this.lastBlock.blockHeader.getSize() + 4 /* indexWithinCheckpoint */ + this.lastBlock.signature.getSize() + 4 /* txHashes.length */ + this.lastBlock.txHashes.length * TxHash.SIZE + 4 /* hasSignedTxs flag */ + (this.lastBlock.signedTxs ? this.lastBlock.signedTxs.getSize() : 0);
|
|
177
177
|
}
|
|
178
178
|
return size;
|
|
179
179
|
}
|
|
180
180
|
static empty() {
|
|
181
|
-
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
|
|
181
|
+
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty(), EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
182
182
|
}
|
|
183
183
|
static random() {
|
|
184
|
-
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
|
|
184
|
+
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), EMPTY_COORDINATION_SIGNATURE_CONTEXT, {
|
|
185
185
|
blockHeader: BlockHeader.random(),
|
|
186
186
|
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
187
187
|
txHashes: [
|
|
@@ -197,6 +197,8 @@ import { TopicType } from './topic_type.js';
|
|
|
197
197
|
archive: this.archive.toString(),
|
|
198
198
|
signature: this.signature.toString(),
|
|
199
199
|
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
200
|
+
chainId: this.signatureContext.chainId,
|
|
201
|
+
rollupAddress: this.signatureContext.rollupAddress.toString(),
|
|
200
202
|
lastBlock: this.lastBlock ? {
|
|
201
203
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
202
204
|
indexWithinCheckpoint: this.lastBlock.indexWithinCheckpoint,
|
|
@@ -209,6 +211,6 @@ import { TopicType } from './topic_type.js';
|
|
|
209
211
|
* Returns a copy of this proposal without lastBlock info, as a CheckpointProposalCore.
|
|
210
212
|
* Used when the lastBlock has been extracted and stored separately.
|
|
211
213
|
*/ toCore() {
|
|
212
|
-
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
|
|
214
|
+
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature, this.signatureContext);
|
|
213
215
|
}
|
|
214
216
|
}
|
|
@@ -5,7 +5,7 @@ import { z } from 'zod';
|
|
|
5
5
|
import type { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
6
6
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
7
7
|
import type { CheckpointProposal, CheckpointProposalCore } from './checkpoint_proposal.js';
|
|
8
|
-
import type
|
|
8
|
+
import { type CoordinationSignatureContext, type CoordinationSignatureType, type Signable } from './signature_utils.js';
|
|
9
9
|
/** Checkpoint consensus payload as signed by validators and verified on L1. */
|
|
10
10
|
export declare class ConsensusPayload implements Signable {
|
|
11
11
|
/** The proposed block header the attestation is made over */
|
|
@@ -14,6 +14,9 @@ export declare class ConsensusPayload implements Signable {
|
|
|
14
14
|
readonly archive: Fr;
|
|
15
15
|
/** The fee asset price modifier in basis points (from oracle) */
|
|
16
16
|
readonly feeAssetPriceModifier: bigint;
|
|
17
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
18
|
+
readonly signatureContext: CoordinationSignatureContext;
|
|
19
|
+
readonly primaryType: CoordinationSignatureType;
|
|
17
20
|
private size;
|
|
18
21
|
constructor(
|
|
19
22
|
/** The proposed block header the attestation is made over */
|
|
@@ -21,31 +24,37 @@ export declare class ConsensusPayload implements Signable {
|
|
|
21
24
|
/** The archive root after the block is added */
|
|
22
25
|
archive: Fr,
|
|
23
26
|
/** The fee asset price modifier in basis points (from oracle) */
|
|
24
|
-
feeAssetPriceModifier
|
|
27
|
+
feeAssetPriceModifier: bigint,
|
|
28
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
29
|
+
signatureContext: CoordinationSignatureContext);
|
|
25
30
|
static get schema(): z.ZodEffects<z.ZodObject<{
|
|
26
31
|
header: import("@aztec/foundation/schemas").ZodFor<CheckpointHeader>;
|
|
27
32
|
archive: z.ZodType<Fr, any, string>;
|
|
28
33
|
feeAssetPriceModifier: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
|
|
34
|
+
signatureContext: import("@aztec/foundation/schemas").ZodFor<CoordinationSignatureContext>;
|
|
29
35
|
}, "strip", z.ZodTypeAny, {
|
|
30
36
|
header: CheckpointHeader;
|
|
31
37
|
archive: Fr;
|
|
32
38
|
feeAssetPriceModifier: bigint;
|
|
39
|
+
signatureContext: CoordinationSignatureContext;
|
|
33
40
|
}, {
|
|
34
41
|
header?: any;
|
|
35
42
|
archive: string;
|
|
36
43
|
feeAssetPriceModifier: string | number | bigint;
|
|
44
|
+
signatureContext?: any;
|
|
37
45
|
}>, ConsensusPayload, {
|
|
38
46
|
header?: any;
|
|
39
47
|
archive: string;
|
|
40
48
|
feeAssetPriceModifier: string | number | bigint;
|
|
49
|
+
signatureContext?: any;
|
|
41
50
|
}>;
|
|
42
|
-
static getFields(fields: FieldsOf<ConsensusPayload>): readonly [CheckpointHeader, Fr, bigint];
|
|
43
|
-
getPayloadToSign(
|
|
51
|
+
static getFields(fields: Omit<FieldsOf<ConsensusPayload>, 'primaryType'>): readonly [CheckpointHeader, Fr, bigint, CoordinationSignatureContext];
|
|
52
|
+
getPayloadToSign(): Buffer;
|
|
44
53
|
toBuffer(): Buffer;
|
|
45
54
|
equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean;
|
|
46
55
|
static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload;
|
|
47
|
-
static fromFields(fields: FieldsOf<ConsensusPayload>): ConsensusPayload;
|
|
48
|
-
static fromCheckpoint(checkpoint: Checkpoint): ConsensusPayload;
|
|
56
|
+
static fromFields(fields: Omit<FieldsOf<ConsensusPayload>, 'primaryType'>): ConsensusPayload;
|
|
57
|
+
static fromCheckpoint(checkpoint: Checkpoint, signatureContext: CoordinationSignatureContext): ConsensusPayload;
|
|
49
58
|
static empty(): ConsensusPayload;
|
|
50
59
|
static random(): ConsensusPayload;
|
|
51
60
|
/**
|
|
@@ -72,7 +81,9 @@ export declare class ConsensusPayload implements Signable {
|
|
|
72
81
|
};
|
|
73
82
|
archive: `0x${string}`;
|
|
74
83
|
feeAssetPriceModifier: string;
|
|
84
|
+
chainId: number;
|
|
85
|
+
rollupAddress: `0x${string}`;
|
|
75
86
|
};
|
|
76
87
|
toString(): string;
|
|
77
88
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2Vuc3VzX3BheWxvYWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY29uc2Vuc3VzX3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQTRDLE1BQU0sNkJBQTZCLENBQUM7QUFFckcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sRUFDTCxLQUFLLDRCQUE0QixFQUNqQyxLQUFLLHlCQUF5QixFQUU5QixLQUFLLFFBQVEsRUFLZCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLCtFQUErRTtBQUMvRSxxQkFBYSxnQkFBaUIsWUFBVyxRQUFRO0lBTTdDLDZEQUE2RDthQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDthQUNoQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixpRUFBaUU7YUFDakQscUJBQXFCLEVBQUUsTUFBTTtJQUM3Qyw2RUFBNkU7YUFDN0QsZ0JBQWdCLEVBQUUsNEJBQTRCO0lBWmhFLFFBQVEsQ0FBQyxXQUFXLEVBQUUseUJBQXlCLENBQTJCO0lBRTFFLE9BQU8sQ0FBQyxJQUFJLENBQXFCO0lBRWpDO0lBQ0UsNkRBQTZEO0lBQzdDLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEMsZ0RBQWdEO0lBQ2hDLE9BQU8sRUFBRSxFQUFFO0lBQzNCLGlFQUFpRTtJQUNqRCxxQkFBcUIsRUFBRSxNQUFNO0lBQzdDLDZFQUE2RTtJQUM3RCxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFDNUQ7SUFFSixNQUFNLEtBQUssTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FTaEI7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsYUFBYSxDQUFDLHlFQUV2RTtJQUVELGdCQUFnQixJQUFJLE1BQU0sQ0FjekI7SUFFRCxRQUFRLElBQUksTUFBTSxDQU9qQjtJQUVNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsa0JBQWtCLEdBQUcsc0JBQXNCLEdBQUcsT0FBTyxDQVM1RjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZ0JBQWdCLENBTzlEO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLGdCQUFnQixDQUUzRjtJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsR0FBRyxnQkFBZ0IsQ0FPOUc7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUUvQjtJQUVELE1BQU0sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxJQUFJLE1BQU0sQ0FPaEI7SUFFRCxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFRUjtJQUVELFFBQVEsV0FFUDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAA4C,MAAM,6BAA6B,CAAC;AAErG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"consensus_payload.d.ts","sourceRoot":"","sources":["../../src/p2p/consensus_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAA4C,MAAM,6BAA6B,CAAC;AAErG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAE9B,KAAK,QAAQ,EAKd,MAAM,sBAAsB,CAAC;AAE9B,+EAA+E;AAC/E,qBAAa,gBAAiB,YAAW,QAAQ;IAM7C,6DAA6D;aAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;aACjD,qBAAqB,EAAE,MAAM;IAC7C,6EAA6E;aAC7D,gBAAgB,EAAE,4BAA4B;IAZhE,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAA2B;IAE1E,OAAO,CAAC,IAAI,CAAqB;IAEjC;IACE,6DAA6D;IAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;IAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;IACjD,qBAAqB,EAAE,MAAM;IAC7C,6EAA6E;IAC7D,gBAAgB,EAAE,4BAA4B,EAC5D;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;OAShB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,yEAEvE;IAED,gBAAgB,IAAI,MAAM,CAczB;IAED,QAAQ,IAAI,MAAM,CAOjB;IAEM,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,OAAO,CAS5F;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAO9D;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAE3F;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,4BAA4B,GAAG,gBAAgB,CAO9G;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;IAED,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAEhC;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAOhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;;;MAQR;IAED,QAAQ,WAEP;CACF"}
|
|
@@ -5,40 +5,46 @@ import { hexToBuffer } from '@aztec/foundation/string';
|
|
|
5
5
|
import { encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
8
|
+
import { EMPTY_COORDINATION_SIGNATURE_CONTEXT, coordinationSignatureContextEquals, coordinationSignatureContextSchema, readCoordinationSignatureContext, serializeCoordinationSignatureContext } from './signature_utils.js';
|
|
8
9
|
/** Checkpoint consensus payload as signed by validators and verified on L1. */ export class ConsensusPayload {
|
|
9
10
|
header;
|
|
10
11
|
archive;
|
|
11
12
|
feeAssetPriceModifier;
|
|
13
|
+
signatureContext;
|
|
14
|
+
primaryType;
|
|
12
15
|
size;
|
|
13
|
-
constructor(/** The proposed block header the attestation is made over */ header, /** The archive root after the block is added */ archive, /** The fee asset price modifier in basis points (from oracle) */ feeAssetPriceModifier
|
|
16
|
+
constructor(/** The proposed block header the attestation is made over */ header, /** The archive root after the block is added */ archive, /** The fee asset price modifier in basis points (from oracle) */ feeAssetPriceModifier, /** The signing domain (chainId + rollupAddress) the signature is bound to */ signatureContext){
|
|
14
17
|
this.header = header;
|
|
15
18
|
this.archive = archive;
|
|
16
19
|
this.feeAssetPriceModifier = feeAssetPriceModifier;
|
|
20
|
+
this.signatureContext = signatureContext;
|
|
21
|
+
this.primaryType = 'CheckpointAttestation';
|
|
17
22
|
}
|
|
18
23
|
static get schema() {
|
|
19
24
|
return z.object({
|
|
20
25
|
header: CheckpointHeader.schema,
|
|
21
26
|
archive: schemas.Fr,
|
|
22
|
-
feeAssetPriceModifier: schemas.BigInt
|
|
23
|
-
|
|
27
|
+
feeAssetPriceModifier: schemas.BigInt,
|
|
28
|
+
signatureContext: coordinationSignatureContextSchema
|
|
29
|
+
}).transform((obj)=>new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier, obj.signatureContext));
|
|
24
30
|
}
|
|
25
31
|
static getFields(fields) {
|
|
26
32
|
return [
|
|
27
33
|
fields.header,
|
|
28
34
|
fields.archive,
|
|
29
|
-
fields.feeAssetPriceModifier
|
|
35
|
+
fields.feeAssetPriceModifier,
|
|
36
|
+
fields.signatureContext
|
|
30
37
|
];
|
|
31
38
|
}
|
|
32
|
-
getPayloadToSign(
|
|
33
|
-
|
|
34
|
-
'(' + 'bytes32, ' + // archive
|
|
39
|
+
getPayloadToSign() {
|
|
40
|
+
// Matches the L1 ProposePayload struct in ProposeLib.sol.
|
|
41
|
+
const abi = parseAbiParameters('(' + 'bytes32, ' + // archive
|
|
35
42
|
'(int256), ' + // oracleInput
|
|
36
43
|
'bytes32' + // headerHash
|
|
37
44
|
')');
|
|
38
45
|
const archiveRoot = this.archive.toString();
|
|
39
46
|
const headerHash = this.header.hash().toString();
|
|
40
47
|
const encodedData = encodeAbiParameters(abi, [
|
|
41
|
-
domainSeparator,
|
|
42
48
|
[
|
|
43
49
|
archiveRoot,
|
|
44
50
|
[
|
|
@@ -53,30 +59,34 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
53
59
|
return serializeToBuffer([
|
|
54
60
|
this.header,
|
|
55
61
|
this.archive,
|
|
56
|
-
serializeSignedBigInt(this.feeAssetPriceModifier)
|
|
62
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
63
|
+
serializeCoordinationSignatureContext(this.signatureContext)
|
|
57
64
|
]);
|
|
58
65
|
}
|
|
59
66
|
equals(other) {
|
|
60
67
|
const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
|
|
61
68
|
const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
|
|
62
|
-
return this.header.equals(otherHeader) && this.archive.equals(other.archive) && this.feeAssetPriceModifier === otherModifier;
|
|
69
|
+
return this.header.equals(otherHeader) && this.archive.equals(other.archive) && this.feeAssetPriceModifier === otherModifier && coordinationSignatureContextEquals(this.signatureContext, other.signatureContext);
|
|
63
70
|
}
|
|
64
71
|
static fromBuffer(buf) {
|
|
65
72
|
const reader = BufferReader.asReader(buf);
|
|
66
|
-
const
|
|
67
|
-
|
|
73
|
+
const header = reader.readObject(CheckpointHeader);
|
|
74
|
+
const archive = reader.readObject(Fr);
|
|
75
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
76
|
+
const signatureContext = readCoordinationSignatureContext(reader);
|
|
77
|
+
return new ConsensusPayload(header, archive, feeAssetPriceModifier, signatureContext);
|
|
68
78
|
}
|
|
69
79
|
static fromFields(fields) {
|
|
70
|
-
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier);
|
|
80
|
+
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier, fields.signatureContext);
|
|
71
81
|
}
|
|
72
|
-
static fromCheckpoint(checkpoint) {
|
|
73
|
-
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier);
|
|
82
|
+
static fromCheckpoint(checkpoint, signatureContext) {
|
|
83
|
+
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier, signatureContext);
|
|
74
84
|
}
|
|
75
85
|
static empty() {
|
|
76
|
-
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n);
|
|
86
|
+
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n, EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
77
87
|
}
|
|
78
88
|
static random() {
|
|
79
|
-
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n);
|
|
89
|
+
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n, EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
80
90
|
}
|
|
81
91
|
/**
|
|
82
92
|
* Get the size of the consensus payload in bytes.
|
|
@@ -93,10 +103,12 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
93
103
|
return {
|
|
94
104
|
header: this.header.toInspect(),
|
|
95
105
|
archive: this.archive.toString(),
|
|
96
|
-
feeAssetPriceModifier: this.feeAssetPriceModifier.toString()
|
|
106
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
107
|
+
chainId: this.signatureContext.chainId,
|
|
108
|
+
rollupAddress: this.signatureContext.rollupAddress.toString()
|
|
97
109
|
};
|
|
98
110
|
}
|
|
99
111
|
toString() {
|
|
100
|
-
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}}`;
|
|
112
|
+
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}, chainId: ${this.signatureContext.chainId}, rollupAddress: ${this.signatureContext.rollupAddress.toString()}`;
|
|
101
113
|
}
|
|
102
114
|
}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import type { Signature } from '@aztec/foundation/eth-signature';
|
|
4
|
+
import { type BufferReader } from '@aztec/foundation/serialize';
|
|
5
|
+
import { type TypedDataDefinition } from 'viem';
|
|
6
|
+
import type { ZodFor } from '../schemas/index.js';
|
|
7
|
+
export type CoordinationSignatureType = 'BlockProposal' | 'CheckpointProposal' | 'CheckpointAttestation' | 'AttestationsAndSigners' | 'SignedTxs';
|
|
8
|
+
export type CoordinationSignatureContext = {
|
|
9
|
+
chainId: number;
|
|
10
|
+
rollupAddress: EthAddress;
|
|
11
|
+
};
|
|
12
|
+
export declare const EMPTY_COORDINATION_SIGNATURE_CONTEXT: CoordinationSignatureContext;
|
|
13
|
+
export declare const coordinationSignatureContextSchema: ZodFor<CoordinationSignatureContext>;
|
|
9
14
|
export interface Signable {
|
|
10
|
-
|
|
15
|
+
readonly primaryType: CoordinationSignatureType;
|
|
16
|
+
readonly signatureContext: CoordinationSignatureContext;
|
|
17
|
+
getPayloadToSign(): Buffer;
|
|
11
18
|
}
|
|
19
|
+
export declare function coordinationSignatureContextEquals(a: CoordinationSignatureContext, b: CoordinationSignatureContext): boolean;
|
|
20
|
+
export declare function serializeCoordinationSignatureContext(ctx: CoordinationSignatureContext): Buffer;
|
|
21
|
+
export declare function readCoordinationSignatureContext(reader: BufferReader): CoordinationSignatureContext;
|
|
12
22
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
export declare function getHashedSignaturePayload(s: Signable, domainSeparator: SignatureDomainSeparator): Buffer32;
|
|
18
|
-
/**
|
|
19
|
-
* Get the hashed payload for the signature of the `Signable` as an Ethereum signed message EIP-712
|
|
20
|
-
* @param s - the `Signable` to sign
|
|
21
|
-
* @returns The hashed payload for the signature of the `Signable` as an Ethereum signed message
|
|
23
|
+
* Returns true if the signable carries a context matching the node's expected context.
|
|
24
|
+
* Use this at the P2P ingress boundary to reject foreign-chain messages cheaply before
|
|
25
|
+
* performing any signature recovery.
|
|
22
26
|
*/
|
|
23
|
-
export declare function
|
|
24
|
-
|
|
27
|
+
export declare function hasValidSignatureContext(signable: Signable, expected: CoordinationSignatureContext): boolean;
|
|
28
|
+
export declare function getCoordinationSignatureTypedDataForPayloadHash(payloadHash: Buffer32, type: CoordinationSignatureType, context: CoordinationSignatureContext): TypedDataDefinition;
|
|
29
|
+
export declare function getCoordinationSignatureTypedData(signable: Signable): TypedDataDefinition;
|
|
30
|
+
export declare function getHashedSignaturePayloadTypedData(signable: Signable): Buffer32;
|
|
31
|
+
export declare function recoverCoordinationSigner(signable: Signable, signature: Signature): EthAddress | undefined;
|
|
32
|
+
export declare function getHashedSignaturePayload(s: Signable): Buffer32;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlX3V0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcDJwL3NpZ25hdHVyZV91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFHL0QsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsTUFBTSxNQUFNLHlCQUF5QixHQUNqQyxlQUFlLEdBQ2Ysb0JBQW9CLEdBQ3BCLHVCQUF1QixHQUN2Qix3QkFBd0IsR0FDeEIsV0FBVyxDQUFDO0FBRWhCLE1BQU0sTUFBTSw0QkFBNEIsR0FBRztJQUN6QyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLGFBQWEsRUFBRSxVQUFVLENBQUM7Q0FDM0IsQ0FBQztBQUVGLGVBQU8sTUFBTSxvQ0FBb0MsRUFBRSw0QkFHbEQsQ0FBQztBQUVGLGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsNEJBQTRCLENBR2xGLENBQUM7QUFFSCxNQUFNLFdBQVcsUUFBUTtJQUN2QixRQUFRLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDO0lBQ2hELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSw0QkFBNEIsQ0FBQztJQUN4RCxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7Q0FDNUI7QUFFRCx3QkFBZ0Isa0NBQWtDLENBQ2hELENBQUMsRUFBRSw0QkFBNEIsRUFDL0IsQ0FBQyxFQUFFLDRCQUE0QixHQUM5QixPQUFPLENBRVQ7QUFFRCx3QkFBZ0IscUNBQXFDLENBQUMsR0FBRyxFQUFFLDRCQUE0QixHQUFHLE1BQU0sQ0FFL0Y7QUFFRCx3QkFBZ0IsZ0NBQWdDLENBQUMsTUFBTSxFQUFFLFlBQVksR0FBRyw0QkFBNEIsQ0FJbkc7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixHQUFHLE9BQU8sQ0FFNUc7QUFxQkQsd0JBQWdCLCtDQUErQyxDQUM3RCxXQUFXLEVBQUUsUUFBUSxFQUNyQixJQUFJLEVBQUUseUJBQXlCLEVBQy9CLE9BQU8sRUFBRSw0QkFBNEIsR0FDcEMsbUJBQW1CLENBY3JCO0FBRUQsd0JBQWdCLGlDQUFpQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsbUJBQW1CLENBR3pGO0FBRUQsd0JBQWdCLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUUvRTtBQUVELHdCQUFnQix5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FHMUc7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxRQUFRLENBRS9EIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"signature_utils.d.ts","sourceRoot":"","sources":["../../src/p2p/signature_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAEnF,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,MAAM,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,wBAAwB,GACxB,WAAW,CAAC;AAEhB,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,4BAGlD,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,4BAA4B,CAGlF,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;IACxD,gBAAgB,IAAI,MAAM,CAAC;CAC5B;AAED,wBAAgB,kCAAkC,CAChD,CAAC,EAAE,4BAA4B,EAC/B,CAAC,EAAE,4BAA4B,GAC9B,OAAO,CAET;AAED,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,4BAA4B,GAAG,MAAM,CAE/F;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,4BAA4B,CAInG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAE5G;AAqBD,wBAAgB,+CAA+C,CAC7D,WAAW,EAAE,QAAQ,EACrB,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,CAcrB;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAGzF;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAG1G;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE/D"}
|