@aztec/stdlib 0.0.1-commit.08c5969dc → 0.0.1-commit.0c875d939
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/checkpoint/checkpoint.d.ts +16 -7
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +19 -9
- package/dest/checkpoint/published_checkpoint.d.ts +7 -1
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/contract/contract_class_id.d.ts +1 -1
- package/dest/contract/contract_class_id.d.ts.map +1 -1
- package/dest/contract/contract_class_id.js +3 -2
- package/dest/interfaces/block-builder.d.ts +2 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +2 -2
- package/dest/interfaces/validator.d.ts +2 -2
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/note/index.d.ts +1 -2
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +0 -1
- package/dest/p2p/checkpoint_attestation.d.ts +2 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +10 -5
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +20 -15
- package/dest/p2p/consensus_payload.d.ts +12 -3
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +22 -15
- package/dest/tests/mocks.d.ts +4 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +11 -6
- package/package.json +9 -9
- package/src/checkpoint/checkpoint.ts +27 -11
- package/src/contract/contract_class_id.ts +3 -2
- package/src/interfaces/block-builder.ts +1 -0
- package/src/interfaces/validator.ts +1 -0
- package/src/note/index.ts +0 -1
- package/src/p2p/checkpoint_attestation.ts +6 -1
- package/src/p2p/checkpoint_proposal.ts +35 -13
- package/src/p2p/consensus_payload.ts +25 -12
- package/src/tests/mocks.ts +18 -7
- package/dest/note/notes_filter.d.ts +0 -30
- package/dest/note/notes_filter.d.ts.map +0 -1
- package/dest/note/notes_filter.js +0 -11
- package/src/note/notes_filter.ts +0 -41
|
@@ -4,7 +4,7 @@ import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
|
4
4
|
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
7
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
7
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
8
8
|
import { DutyType } from '@aztec/validator-ha-signer/types';
|
|
9
9
|
import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
|
|
10
10
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
@@ -28,12 +28,13 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
28
28
|
*/ export class CheckpointProposal extends Gossipable {
|
|
29
29
|
checkpointHeader;
|
|
30
30
|
archive;
|
|
31
|
+
feeAssetPriceModifier;
|
|
31
32
|
signature;
|
|
32
33
|
lastBlock;
|
|
33
34
|
static p2pTopic = TopicType.checkpoint_proposal;
|
|
34
35
|
sender;
|
|
35
|
-
constructor(/** The aggregated checkpoint header for consensus */ checkpointHeader, /** Archive root after this checkpoint is applied */ archive, /** The proposer's signature over the checkpoint payload (checkpointHeader + archive) */ signature, /** Optional last block info, including its own signature for BlockProposal extraction */ lastBlock){
|
|
36
|
-
super(), this.checkpointHeader = checkpointHeader, this.archive = archive, this.signature = signature, this.lastBlock = lastBlock;
|
|
36
|
+
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, /** Optional last block info, including its own signature for BlockProposal extraction */ lastBlock){
|
|
37
|
+
super(), this.checkpointHeader = checkpointHeader, this.archive = archive, this.feeAssetPriceModifier = feeAssetPriceModifier, this.signature = signature, this.lastBlock = lastBlock;
|
|
37
38
|
}
|
|
38
39
|
generateP2PMessageIdentifier() {
|
|
39
40
|
return Promise.resolve(new CheckpointProposalHash(keccak256(this.signature.toBuffer())));
|
|
@@ -85,17 +86,18 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Get the payload to sign for this checkpoint proposal.
|
|
88
|
-
* The signature is over the checkpoint header + archive root (for consensus).
|
|
89
|
+
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
89
90
|
*/ getPayloadToSign(domainSeparator) {
|
|
90
91
|
return serializeToBuffer([
|
|
91
92
|
domainSeparator,
|
|
92
93
|
this.checkpointHeader,
|
|
93
|
-
this.archive
|
|
94
|
+
this.archive,
|
|
95
|
+
serializeSignedBigInt(this.feeAssetPriceModifier)
|
|
94
96
|
]);
|
|
95
97
|
}
|
|
96
|
-
static async createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, payloadSigner) {
|
|
98
|
+
static async createProposalFromSigner(checkpointHeader, archiveRoot, feeAssetPriceModifier, lastBlockInfo, payloadSigner) {
|
|
97
99
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
98
|
-
const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, Signature.empty()
|
|
100
|
+
const tempProposal = new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, Signature.empty());
|
|
99
101
|
const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
100
102
|
const checkpointContext = {
|
|
101
103
|
slot: checkpointHeader.slotNumber,
|
|
@@ -104,10 +106,10 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
104
106
|
};
|
|
105
107
|
const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
|
|
106
108
|
if (!lastBlockInfo) {
|
|
107
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature);
|
|
109
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature);
|
|
108
110
|
}
|
|
109
111
|
const lastBlockProposal = await BlockProposal.createProposalFromSigner(lastBlockInfo.blockHeader, lastBlockInfo.indexWithinCheckpoint, checkpointHeader.inHash, archiveRoot, lastBlockInfo.txHashes, lastBlockInfo.txs, payloadSigner);
|
|
110
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
|
|
112
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, {
|
|
111
113
|
blockHeader: lastBlockInfo.blockHeader,
|
|
112
114
|
indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
|
|
113
115
|
txHashes: lastBlockInfo.txHashes,
|
|
@@ -143,6 +145,7 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
143
145
|
const buffer = [
|
|
144
146
|
this.checkpointHeader,
|
|
145
147
|
this.archive,
|
|
148
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
146
149
|
this.signature
|
|
147
150
|
];
|
|
148
151
|
if (this.lastBlock) {
|
|
@@ -167,6 +170,7 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
167
170
|
const reader = BufferReader.asReader(buf);
|
|
168
171
|
const checkpointHeader = reader.readObject(CheckpointHeader);
|
|
169
172
|
const archive = reader.readObject(Fr);
|
|
173
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
170
174
|
const signature = reader.readObject(Signature);
|
|
171
175
|
const hasLastBlock = reader.readNumber();
|
|
172
176
|
if (hasLastBlock) {
|
|
@@ -185,7 +189,7 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
185
189
|
signedTxs = SignedTxs.fromBuffer(reader);
|
|
186
190
|
}
|
|
187
191
|
}
|
|
188
|
-
return new CheckpointProposal(checkpointHeader, archive, signature, {
|
|
192
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
|
|
189
193
|
blockHeader,
|
|
190
194
|
indexWithinCheckpoint,
|
|
191
195
|
txHashes,
|
|
@@ -193,20 +197,20 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
193
197
|
signedTxs
|
|
194
198
|
});
|
|
195
199
|
}
|
|
196
|
-
return new CheckpointProposal(checkpointHeader, archive, signature);
|
|
200
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
|
|
197
201
|
}
|
|
198
202
|
getSize() {
|
|
199
|
-
let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 4; /* hasLastBlock flag */
|
|
203
|
+
let size = this.checkpointHeader.toBuffer().length + this.archive.size + this.signature.getSize() + 8 /* feeAssetPriceModifier */ + 4; /* hasLastBlock flag */
|
|
200
204
|
if (this.lastBlock) {
|
|
201
205
|
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);
|
|
202
206
|
}
|
|
203
207
|
return size;
|
|
204
208
|
}
|
|
205
209
|
static empty() {
|
|
206
|
-
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, Signature.empty());
|
|
210
|
+
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
|
|
207
211
|
}
|
|
208
212
|
static random() {
|
|
209
|
-
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), Signature.random(), {
|
|
213
|
+
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
|
|
210
214
|
blockHeader: BlockHeader.random(),
|
|
211
215
|
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
212
216
|
txHashes: [
|
|
@@ -221,6 +225,7 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
221
225
|
checkpointHeader: this.checkpointHeader.toInspect(),
|
|
222
226
|
archive: this.archive.toString(),
|
|
223
227
|
signature: this.signature.toString(),
|
|
228
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
224
229
|
lastBlock: this.lastBlock ? {
|
|
225
230
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
226
231
|
indexWithinCheckpoint: this.lastBlock.indexWithinCheckpoint,
|
|
@@ -233,6 +238,6 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
233
238
|
* Returns a copy of this proposal without lastBlock info, as a CheckpointProposalCore.
|
|
234
239
|
* Used when the lastBlock has been extracted and stored separately.
|
|
235
240
|
*/ toCore() {
|
|
236
|
-
return new CheckpointProposal(this.checkpointHeader, this.archive, this.signature);
|
|
241
|
+
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
|
|
237
242
|
}
|
|
238
243
|
}
|
|
@@ -12,26 +12,34 @@ export declare class ConsensusPayload implements Signable {
|
|
|
12
12
|
readonly header: CheckpointHeader;
|
|
13
13
|
/** The archive root after the block is added */
|
|
14
14
|
readonly archive: Fr;
|
|
15
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
16
|
+
readonly feeAssetPriceModifier: bigint;
|
|
15
17
|
private size;
|
|
16
18
|
constructor(
|
|
17
19
|
/** The proposed block header the attestation is made over */
|
|
18
20
|
header: CheckpointHeader,
|
|
19
21
|
/** The archive root after the block is added */
|
|
20
|
-
archive: Fr
|
|
22
|
+
archive: Fr,
|
|
23
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
24
|
+
feeAssetPriceModifier?: bigint);
|
|
21
25
|
static get schema(): z.ZodEffects<z.ZodObject<{
|
|
22
26
|
header: import("@aztec/foundation/schemas").ZodFor<CheckpointHeader>;
|
|
23
27
|
archive: z.ZodType<Fr, any, string>;
|
|
28
|
+
feeAssetPriceModifier: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
|
|
24
29
|
}, "strip", z.ZodTypeAny, {
|
|
25
30
|
header: CheckpointHeader;
|
|
26
31
|
archive: Fr;
|
|
32
|
+
feeAssetPriceModifier: bigint;
|
|
27
33
|
}, {
|
|
28
34
|
header?: any;
|
|
29
35
|
archive: string;
|
|
36
|
+
feeAssetPriceModifier: string | number | bigint;
|
|
30
37
|
}>, ConsensusPayload, {
|
|
31
38
|
header?: any;
|
|
32
39
|
archive: string;
|
|
40
|
+
feeAssetPriceModifier: string | number | bigint;
|
|
33
41
|
}>;
|
|
34
|
-
static getFields(fields: FieldsOf<ConsensusPayload>): readonly [CheckpointHeader, Fr];
|
|
42
|
+
static getFields(fields: FieldsOf<ConsensusPayload>): readonly [CheckpointHeader, Fr, bigint];
|
|
35
43
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer;
|
|
36
44
|
toBuffer(): Buffer;
|
|
37
45
|
equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean;
|
|
@@ -63,7 +71,8 @@ export declare class ConsensusPayload implements Signable {
|
|
|
63
71
|
totalManaUsed: bigint;
|
|
64
72
|
};
|
|
65
73
|
archive: `0x${string}`;
|
|
74
|
+
feeAssetPriceModifier: string;
|
|
66
75
|
};
|
|
67
76
|
toString(): string;
|
|
68
77
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2Vuc3VzX3BheWxvYWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvY29uc2Vuc3VzX3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQTRDLE1BQU0sNkJBQTZCLENBQUM7QUFFckcsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9FLCtFQUErRTtBQUMvRSxxQkFBYSxnQkFBaUIsWUFBVyxRQUFRO0lBSTdDLDZEQUE2RDthQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDthQUNoQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixpRUFBaUU7YUFDakQscUJBQXFCLEVBQUUsTUFBTTtJQVIvQyxPQUFPLENBQUMsSUFBSSxDQUFxQjtJQUVqQztJQUNFLDZEQUE2RDtJQUM3QyxNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hDLGdEQUFnRDtJQUNoQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixpRUFBaUU7SUFDakQscUJBQXFCLEdBQUUsTUFBVyxFQUNoRDtJQUVKLE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7O09BUWhCO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDJDQUVsRDtJQUVELGdCQUFnQixDQUFDLGVBQWUsRUFBRSx3QkFBd0IsR0FBRyxNQUFNLENBa0JsRTtJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRU0sTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBUTVGO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxnQkFBZ0IsQ0FROUQ7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBZ0IsQ0FFdEU7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsZ0JBQWdCLENBRTlEO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FFL0I7SUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLGdCQUFnQixDQUVoQztJQUVEOzs7T0FHRztJQUNILE9BQU8sSUFBSSxNQUFNLENBT2hCO0lBRUQsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQU1SO0lBRUQsUUFBUSxXQUVQO0NBQ0YifQ==
|
|
@@ -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,
|
|
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,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,+EAA+E;AAC/E,qBAAa,gBAAiB,YAAW,QAAQ;IAI7C,6DAA6D;aAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;aAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;aACjD,qBAAqB,EAAE,MAAM;IAR/C,OAAO,CAAC,IAAI,CAAqB;IAEjC;IACE,6DAA6D;IAC7C,MAAM,EAAE,gBAAgB;IACxC,gDAAgD;IAChC,OAAO,EAAE,EAAE;IAC3B,iEAAiE;IACjD,qBAAqB,GAAE,MAAW,EAChD;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAElD;IAED,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,GAAG,MAAM,CAkBlE;IAED,QAAQ,IAAI,MAAM,CAEjB;IAEM,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,OAAO,CAQ5F;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAQ9D;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAEtE;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAE9D;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;IAED,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAEhC;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAOhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;MAMR;IAED,QAAQ,WAEP;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
4
|
import { hexToBuffer } from '@aztec/foundation/string';
|
|
5
5
|
import { encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
6
6
|
import { z } from 'zod';
|
|
@@ -8,21 +8,25 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
8
8
|
/** Checkpoint consensus payload as signed by validators and verified on L1. */ export class ConsensusPayload {
|
|
9
9
|
header;
|
|
10
10
|
archive;
|
|
11
|
+
feeAssetPriceModifier;
|
|
11
12
|
size;
|
|
12
|
-
constructor(/** The proposed block header the attestation is made over */ header, /** The archive root after the block is added */ archive){
|
|
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 = 0n){
|
|
13
14
|
this.header = header;
|
|
14
15
|
this.archive = archive;
|
|
16
|
+
this.feeAssetPriceModifier = feeAssetPriceModifier;
|
|
15
17
|
}
|
|
16
18
|
static get schema() {
|
|
17
19
|
return z.object({
|
|
18
20
|
header: CheckpointHeader.schema,
|
|
19
|
-
archive: schemas.Fr
|
|
20
|
-
|
|
21
|
+
archive: schemas.Fr,
|
|
22
|
+
feeAssetPriceModifier: schemas.BigInt
|
|
23
|
+
}).transform((obj)=>new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier));
|
|
21
24
|
}
|
|
22
25
|
static getFields(fields) {
|
|
23
26
|
return [
|
|
24
27
|
fields.header,
|
|
25
|
-
fields.archive
|
|
28
|
+
fields.archive,
|
|
29
|
+
fields.feeAssetPriceModifier
|
|
26
30
|
];
|
|
27
31
|
}
|
|
28
32
|
getPayloadToSign(domainSeparator) {
|
|
@@ -38,7 +42,7 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
38
42
|
[
|
|
39
43
|
archiveRoot,
|
|
40
44
|
[
|
|
41
|
-
|
|
45
|
+
this.feeAssetPriceModifier
|
|
42
46
|
],
|
|
43
47
|
headerHash
|
|
44
48
|
]
|
|
@@ -48,29 +52,31 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
48
52
|
toBuffer() {
|
|
49
53
|
return serializeToBuffer([
|
|
50
54
|
this.header,
|
|
51
|
-
this.archive
|
|
55
|
+
this.archive,
|
|
56
|
+
serializeSignedBigInt(this.feeAssetPriceModifier)
|
|
52
57
|
]);
|
|
53
58
|
}
|
|
54
59
|
equals(other) {
|
|
55
60
|
const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
|
|
56
|
-
|
|
61
|
+
const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
|
|
62
|
+
return this.header.equals(otherHeader) && this.archive.equals(other.archive) && this.feeAssetPriceModifier === otherModifier;
|
|
57
63
|
}
|
|
58
64
|
static fromBuffer(buf) {
|
|
59
65
|
const reader = BufferReader.asReader(buf);
|
|
60
|
-
const payload = new ConsensusPayload(reader.readObject(CheckpointHeader), reader.readObject(Fr));
|
|
66
|
+
const payload = new ConsensusPayload(reader.readObject(CheckpointHeader), reader.readObject(Fr), reader.readInt256());
|
|
61
67
|
return payload;
|
|
62
68
|
}
|
|
63
69
|
static fromFields(fields) {
|
|
64
|
-
return new ConsensusPayload(fields.header, fields.archive);
|
|
70
|
+
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier);
|
|
65
71
|
}
|
|
66
72
|
static fromCheckpoint(checkpoint) {
|
|
67
|
-
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root);
|
|
73
|
+
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier);
|
|
68
74
|
}
|
|
69
75
|
static empty() {
|
|
70
|
-
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO);
|
|
76
|
+
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n);
|
|
71
77
|
}
|
|
72
78
|
static random() {
|
|
73
|
-
return new ConsensusPayload(CheckpointHeader.random(), Fr.random());
|
|
79
|
+
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n);
|
|
74
80
|
}
|
|
75
81
|
/**
|
|
76
82
|
* Get the size of the consensus payload in bytes.
|
|
@@ -86,10 +92,11 @@ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
|
86
92
|
toInspect() {
|
|
87
93
|
return {
|
|
88
94
|
header: this.header.toInspect(),
|
|
89
|
-
archive: this.archive.toString()
|
|
95
|
+
archive: this.archive.toString(),
|
|
96
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString()
|
|
90
97
|
};
|
|
91
98
|
}
|
|
92
99
|
toString() {
|
|
93
|
-
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}}`;
|
|
100
|
+
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}}`;
|
|
94
101
|
}
|
|
95
102
|
}
|
package/dest/tests/mocks.d.ts
CHANGED
|
@@ -104,6 +104,7 @@ export interface MakeConsensusPayloadOptions {
|
|
|
104
104
|
archive?: Fr;
|
|
105
105
|
txHashes?: TxHash[];
|
|
106
106
|
txs?: Tx[];
|
|
107
|
+
feeAssetPriceModifier?: bigint;
|
|
107
108
|
}
|
|
108
109
|
export interface MakeBlockProposalOptions {
|
|
109
110
|
signer?: Secp256k1Signer;
|
|
@@ -118,6 +119,7 @@ export interface MakeCheckpointProposalOptions {
|
|
|
118
119
|
signer?: Secp256k1Signer;
|
|
119
120
|
checkpointHeader?: CheckpointHeader;
|
|
120
121
|
archiveRoot?: Fr;
|
|
122
|
+
feeAssetPriceModifier?: bigint;
|
|
121
123
|
/** Options for the lastBlock - if undefined, no lastBlock is included */
|
|
122
124
|
lastBlock?: {
|
|
123
125
|
blockHeader?: BlockHeader;
|
|
@@ -135,6 +137,7 @@ export declare const makeCheckpointProposal: (options?: MakeCheckpointProposalOp
|
|
|
135
137
|
export type MakeCheckpointAttestationOptions = {
|
|
136
138
|
header?: CheckpointHeader;
|
|
137
139
|
archive?: Fr;
|
|
140
|
+
feeAssetPriceModifier?: bigint;
|
|
138
141
|
attesterSigner?: Secp256k1Signer;
|
|
139
142
|
proposerSigner?: Secp256k1Signer;
|
|
140
143
|
signer?: Secp256k1Signer;
|
|
@@ -159,4 +162,4 @@ export declare const makeCheckpointAttestationFromBlock: (block: L2Block, attest
|
|
|
159
162
|
export declare function randomPublishedL2Block(l2BlockNumber: number, opts?: {
|
|
160
163
|
signers?: Secp256k1Signer[];
|
|
161
164
|
}): Promise<CheckpointedL2Block>;
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0cy9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFjLE1BQU0saUNBQWlDLENBQUM7QUFJbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBd0IsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLekQsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFB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
|
|
@@ -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
|
@@ -298,10 +298,11 @@ export const randomDeployedContract = async ()=>{
|
|
|
298
298
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
299
299
|
const makeAndSignConsensusPayload = (domainSeparator, options)=>{
|
|
300
300
|
const header = options?.header ?? makeCheckpointHeader(1);
|
|
301
|
-
const { signer = Secp256k1Signer.random(), archive = Fr.random() } = options ?? {};
|
|
301
|
+
const { signer = Secp256k1Signer.random(), archive = Fr.random(), feeAssetPriceModifier = 0n } = options ?? {};
|
|
302
302
|
const payload = ConsensusPayload.fromFields({
|
|
303
303
|
header,
|
|
304
|
-
archive
|
|
304
|
+
archive,
|
|
305
|
+
feeAssetPriceModifier
|
|
305
306
|
});
|
|
306
307
|
const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
|
|
307
308
|
const signature = signer.sign(hash);
|
|
@@ -336,6 +337,7 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
336
337
|
const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
|
|
337
338
|
const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
|
|
338
339
|
const archiveRoot = options?.archiveRoot ?? Fr.random();
|
|
340
|
+
const feeAssetPriceModifier = options?.feeAssetPriceModifier ?? 0n;
|
|
339
341
|
const signer = options?.signer ?? Secp256k1Signer.random();
|
|
340
342
|
// Build lastBlock info if provided
|
|
341
343
|
const lastBlockInfo = options?.lastBlock ? {
|
|
@@ -351,15 +353,16 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
351
353
|
].map(()=>TxHash.random()),
|
|
352
354
|
txs: options.lastBlock.txs
|
|
353
355
|
} : undefined;
|
|
354
|
-
return CheckpointProposal.createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, (payload)=>Promise.resolve(signer.signMessage(payload)));
|
|
356
|
+
return CheckpointProposal.createProposalFromSigner(checkpointHeader, archiveRoot, feeAssetPriceModifier, lastBlockInfo, (payload)=>Promise.resolve(signer.signMessage(payload)));
|
|
355
357
|
};
|
|
356
358
|
/**
|
|
357
359
|
* Create a checkpoint attestation for testing
|
|
358
360
|
*/ export const makeCheckpointAttestation = (options = {})=>{
|
|
359
361
|
const header = options.header ?? makeCheckpointHeader(1);
|
|
360
362
|
const archive = options.archive ?? Fr.random();
|
|
363
|
+
const feeAssetPriceModifier = options.feeAssetPriceModifier ?? 0n;
|
|
361
364
|
const { signer, attesterSigner = signer, proposerSigner = signer } = options;
|
|
362
|
-
const payload = new ConsensusPayload(header, archive);
|
|
365
|
+
const payload = new ConsensusPayload(header, archive, feeAssetPriceModifier);
|
|
363
366
|
// Sign as attester
|
|
364
367
|
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointAttestation);
|
|
365
368
|
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
@@ -367,7 +370,7 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
367
370
|
// Sign as proposer - use CheckpointProposal's payload format (serializeToBuffer)
|
|
368
371
|
// This is different from ConsensusPayload's format (ABI encoding)
|
|
369
372
|
const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
|
|
370
|
-
const tempProposal = new CheckpointProposal(header, archive, Signature.empty());
|
|
373
|
+
const tempProposal = new CheckpointProposal(header, archive, feeAssetPriceModifier, Signature.empty());
|
|
371
374
|
const proposalHash = getHashedSignaturePayloadEthSignedMessage(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
372
375
|
const proposerSignature = proposalSignerToUse.sign(proposalHash);
|
|
373
376
|
return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
|
|
@@ -375,7 +378,7 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
375
378
|
/**
|
|
376
379
|
* Create a checkpoint attestation from a checkpoint proposal
|
|
377
380
|
*/ export const makeCheckpointAttestationFromProposal = (proposal, attesterSigner)=>{
|
|
378
|
-
const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive);
|
|
381
|
+
const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive, proposal.feeAssetPriceModifier);
|
|
379
382
|
// Sign as attester
|
|
380
383
|
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointAttestation);
|
|
381
384
|
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
@@ -388,9 +391,11 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
388
391
|
*/ export const makeCheckpointAttestationFromCheckpoint = (checkpoint, attesterSigner, proposerSigner)=>{
|
|
389
392
|
const header = checkpoint.header;
|
|
390
393
|
const archive = checkpoint.archive.root;
|
|
394
|
+
const feeAssetPriceModifier = checkpoint.feeAssetPriceModifier;
|
|
391
395
|
return makeCheckpointAttestation({
|
|
392
396
|
header,
|
|
393
397
|
archive,
|
|
398
|
+
feeAssetPriceModifier,
|
|
394
399
|
attesterSigner,
|
|
395
400
|
proposerSigner
|
|
396
401
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.0c875d939",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -90,14 +90,14 @@
|
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
92
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
93
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
94
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
95
|
-
"@aztec/constants": "0.0.1-commit.
|
|
96
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
97
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
98
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
99
|
-
"@aztec/noir-noirc_abi": "0.0.1-commit.
|
|
100
|
-
"@aztec/validator-ha-signer": "0.0.1-commit.
|
|
93
|
+
"@aztec/bb.js": "0.0.1-commit.0c875d939",
|
|
94
|
+
"@aztec/blob-lib": "0.0.1-commit.0c875d939",
|
|
95
|
+
"@aztec/constants": "0.0.1-commit.0c875d939",
|
|
96
|
+
"@aztec/ethereum": "0.0.1-commit.0c875d939",
|
|
97
|
+
"@aztec/foundation": "0.0.1-commit.0c875d939",
|
|
98
|
+
"@aztec/l1-artifacts": "0.0.1-commit.0c875d939",
|
|
99
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.0c875d939",
|
|
100
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.0c875d939",
|
|
101
101
|
"@google-cloud/storage": "^7.15.0",
|
|
102
102
|
"axios": "^1.12.0",
|
|
103
103
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from '@aztec/foundation/branded-types';
|
|
9
9
|
import { sum } from '@aztec/foundation/collection';
|
|
10
10
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
11
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
11
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
12
12
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
13
13
|
|
|
14
14
|
import { z } from 'zod';
|
|
@@ -17,6 +17,7 @@ import { L2Block } from '../block/l2_block.js';
|
|
|
17
17
|
import { MAX_BLOCKS_PER_CHECKPOINT } from '../deserialization/index.js';
|
|
18
18
|
import { computeCheckpointOutHash } from '../messaging/out_hash.js';
|
|
19
19
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
20
|
+
import { schemas } from '../schemas/schemas.js';
|
|
20
21
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
21
22
|
import type { CheckpointInfo } from './checkpoint_info.js';
|
|
22
23
|
|
|
@@ -32,6 +33,8 @@ export class Checkpoint {
|
|
|
32
33
|
public blocks: L2Block[],
|
|
33
34
|
/** Number of the checkpoint. */
|
|
34
35
|
public number: CheckpointNumber,
|
|
36
|
+
/** Fee asset price modifier in basis points (from oracle). Defaults to 0 (no change). */
|
|
37
|
+
public feeAssetPriceModifier: bigint = 0n,
|
|
35
38
|
) {}
|
|
36
39
|
|
|
37
40
|
get slot(): SlotNumber {
|
|
@@ -45,8 +48,12 @@ export class Checkpoint {
|
|
|
45
48
|
header: CheckpointHeader.schema,
|
|
46
49
|
blocks: z.array(L2Block.schema),
|
|
47
50
|
number: CheckpointNumberSchema,
|
|
51
|
+
feeAssetPriceModifier: schemas.BigInt,
|
|
48
52
|
})
|
|
49
|
-
.transform(
|
|
53
|
+
.transform(
|
|
54
|
+
({ archive, header, blocks, number, feeAssetPriceModifier }) =>
|
|
55
|
+
new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier),
|
|
56
|
+
);
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
static from(fields: FieldsOfCheckpoint) {
|
|
@@ -54,21 +61,28 @@ export class Checkpoint {
|
|
|
54
61
|
}
|
|
55
62
|
|
|
56
63
|
static getFields(fields: FieldsOfCheckpoint) {
|
|
57
|
-
return [fields.archive, fields.header, fields.blocks, fields.number] as const;
|
|
64
|
+
return [fields.archive, fields.header, fields.blocks, fields.number, fields.feeAssetPriceModifier] as const;
|
|
58
65
|
}
|
|
59
66
|
|
|
60
67
|
static fromBuffer(buf: Buffer | BufferReader) {
|
|
61
68
|
const reader = BufferReader.asReader(buf);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
);
|
|
69
|
+
const archive = reader.readObject(AppendOnlyTreeSnapshot);
|
|
70
|
+
const header = reader.readObject(CheckpointHeader);
|
|
71
|
+
const blocks = reader.readVector(L2Block, MAX_BLOCKS_PER_CHECKPOINT);
|
|
72
|
+
const number = CheckpointNumber(reader.readNumber());
|
|
73
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
74
|
+
return new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier);
|
|
68
75
|
}
|
|
69
76
|
|
|
70
77
|
public toBuffer() {
|
|
71
|
-
return serializeToBuffer(
|
|
78
|
+
return serializeToBuffer(
|
|
79
|
+
this.archive,
|
|
80
|
+
this.header,
|
|
81
|
+
this.blocks.length,
|
|
82
|
+
this.blocks,
|
|
83
|
+
this.number,
|
|
84
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
85
|
+
);
|
|
72
86
|
}
|
|
73
87
|
|
|
74
88
|
public toBlobFields(): Fr[] {
|
|
@@ -129,11 +143,13 @@ export class Checkpoint {
|
|
|
129
143
|
numBlocks = 1,
|
|
130
144
|
startBlockNumber = 1,
|
|
131
145
|
previousArchive,
|
|
146
|
+
feeAssetPriceModifier = 0n,
|
|
132
147
|
...options
|
|
133
148
|
}: {
|
|
134
149
|
numBlocks?: number;
|
|
135
150
|
startBlockNumber?: number;
|
|
136
151
|
previousArchive?: AppendOnlyTreeSnapshot;
|
|
152
|
+
feeAssetPriceModifier?: bigint;
|
|
137
153
|
} & Partial<Parameters<typeof CheckpointHeader.random>[0]> &
|
|
138
154
|
Partial<Parameters<typeof L2Block.random>[1]> = {},
|
|
139
155
|
) {
|
|
@@ -153,6 +169,6 @@ export class Checkpoint {
|
|
|
153
169
|
blocks.push(block);
|
|
154
170
|
}
|
|
155
171
|
|
|
156
|
-
return new Checkpoint(AppendOnlyTreeSnapshot.random(), header, blocks, checkpointNumber);
|
|
172
|
+
return new Checkpoint(AppendOnlyTreeSnapshot.random(), header, blocks, checkpointNumber, feeAssetPriceModifier);
|
|
157
173
|
}
|
|
158
174
|
}
|
|
@@ -60,7 +60,7 @@ export type ContractClassIdPreimage = {
|
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
export async function computePublicBytecodeCommitment(packedBytecode: Buffer) {
|
|
63
|
-
// Encode the buffer into field elements (chunked into
|
|
63
|
+
// Encode the buffer into field elements (chunked into 31 bytes each)
|
|
64
64
|
// The first element is the length of the bytecode (in bytes)
|
|
65
65
|
const [bytecodeLengthAsField, ...bytecodeAsFields] = bufferAsFields(
|
|
66
66
|
packedBytecode,
|
|
@@ -72,5 +72,6 @@ export async function computePublicBytecodeCommitment(packedBytecode: Buffer) {
|
|
|
72
72
|
|
|
73
73
|
// NOTE: hash the bytecode here only up to the actual length of the bytecode.
|
|
74
74
|
// We do not hash the entire max bytecode length!
|
|
75
|
-
|
|
75
|
+
const sep = BigInt(GeneratorIndex.PUBLIC_BYTECODE) + (bytecodeLengthAsField.toBigInt() << 32n);
|
|
76
|
+
return await poseidon2HashWithSeparator(bytecodeAsFields.slice(0, bytecodeLength), new Fr(sep).toNumber());
|
|
76
77
|
}
|
|
@@ -98,6 +98,7 @@ export interface ICheckpointsBuilder {
|
|
|
98
98
|
startCheckpoint(
|
|
99
99
|
checkpointNumber: CheckpointNumber,
|
|
100
100
|
constants: CheckpointGlobalVariables,
|
|
101
|
+
feeAssetPriceModifier: bigint,
|
|
101
102
|
l1ToL2Messages: Fr[],
|
|
102
103
|
previousCheckpointOutHashes: Fr[],
|
|
103
104
|
fork: MerkleTreeWriteOperations,
|
|
@@ -121,6 +121,7 @@ export interface Validator {
|
|
|
121
121
|
createCheckpointProposal(
|
|
122
122
|
checkpointHeader: CheckpointHeader,
|
|
123
123
|
archive: Fr,
|
|
124
|
+
feeAssetPriceModifier: bigint,
|
|
124
125
|
lastBlockInfo: CreateCheckpointProposalLastBlockData | undefined,
|
|
125
126
|
proposerAddress: EthAddress | undefined,
|
|
126
127
|
options: CheckpointProposalOptions,
|
package/src/note/index.ts
CHANGED
|
@@ -96,7 +96,12 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
96
96
|
// Create a temporary CheckpointProposal to recover the proposer address.
|
|
97
97
|
// We need to use CheckpointProposal because it has a different getPayloadToSign()
|
|
98
98
|
// implementation than ConsensusPayload (uses serializeToBuffer vs ABI encoding).
|
|
99
|
-
const proposal = new CheckpointProposal(
|
|
99
|
+
const proposal = new CheckpointProposal(
|
|
100
|
+
this.payload.header,
|
|
101
|
+
this.payload.archive,
|
|
102
|
+
this.payload.feeAssetPriceModifier,
|
|
103
|
+
this.proposerSignature,
|
|
104
|
+
);
|
|
100
105
|
// Cache the proposer for later use
|
|
101
106
|
this.proposer = proposal.getSender();
|
|
102
107
|
}
|