@aztec/stdlib 4.0.0-nightly.20260119 → 4.0.0-nightly.20260120
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/block_parameter.d.ts +4 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -0
- package/dest/block/checkpointed_l2_block.d.ts +10 -127
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
- package/dest/block/checkpointed_l2_block.js +2 -41
- package/dest/block/in_block.d.ts +3 -3
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/index.d.ts +1 -3
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +0 -2
- package/dest/block/l2_block_new.d.ts +11 -9
- package/dest/block/l2_block_new.d.ts.map +1 -1
- package/dest/block/l2_block_new.js +5 -5
- package/dest/block/l2_block_source.d.ts +20 -11
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.d.ts +10 -8
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +2 -2
- package/dest/checkpoint/published_checkpoint.d.ts +11 -9
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +9 -8
- package/dest/interfaces/aztec-node.d.ts +35 -40
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +6 -8
- package/dest/interfaces/block-builder.d.ts +18 -17
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +166 -166
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +1 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.js +16 -6
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +14 -4
- package/dest/p2p/block_proposal.d.ts +9 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +6 -5
- package/dest/p2p/checkpoint_proposal.d.ts +4 -4
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +3 -3
- package/dest/p2p/consensus_payload.d.ts +1 -3
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +0 -3
- package/dest/tests/factories.d.ts +2 -4
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +3 -13
- package/dest/tests/jest.d.ts +4 -4
- package/dest/tests/jest.js +9 -9
- package/dest/tests/mocks.d.ts +12 -12
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +33 -21
- package/package.json +9 -9
- package/src/block/block_parameter.ts +4 -2
- package/src/block/checkpointed_l2_block.ts +2 -53
- package/src/block/in_block.ts +2 -2
- package/src/block/index.ts +0 -2
- package/src/block/l2_block_new.ts +14 -7
- package/src/block/l2_block_source.ts +21 -11
- package/src/checkpoint/checkpoint.ts +8 -2
- package/src/interfaces/archiver.ts +9 -8
- package/src/interfaces/aztec-node.ts +39 -57
- package/src/interfaces/block-builder.ts +33 -28
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +17 -6
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +22 -10
- package/src/p2p/block_proposal.ts +10 -10
- package/src/p2p/checkpoint_proposal.ts +4 -4
- package/src/p2p/consensus_payload.ts +0 -5
- package/src/tests/factories.ts +2 -25
- package/src/tests/jest.ts +9 -9
- package/src/tests/mocks.ts +35 -28
- package/dest/block/l2_block.d.ts +0 -150
- package/dest/block/l2_block.d.ts.map +0 -1
- package/dest/block/l2_block.js +0 -201
- package/dest/block/l2_block_code_to_purge.d.ts +0 -11
- package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
- package/dest/block/l2_block_code_to_purge.js +0 -55
- package/dest/block/l2_block_header.d.ts +0 -106
- package/dest/block/l2_block_header.d.ts.map +0 -1
- package/dest/block/l2_block_header.js +0 -167
- package/src/block/l2_block.ts +0 -274
- package/src/block/l2_block_code_to_purge.ts +0 -81
- package/src/block/l2_block_header.ts +0 -268
package/dest/tests/jest.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { L2BlockNew } from '../block/l2_block_new.js';
|
|
2
2
|
/**
|
|
3
|
-
* Checks if two objects are the same
|
|
3
|
+
* Checks if two objects are the same L2BlockNew.
|
|
4
4
|
*
|
|
5
|
-
* Sometimes we might be comparing two
|
|
5
|
+
* Sometimes we might be comparing two L2BlockNew instances that represent the same block but one of them might not have
|
|
6
6
|
* calculated and filled its `blockHash` property (which is computed on demand). This function ensures both objects
|
|
7
|
-
* are really the same
|
|
7
|
+
* are really the same L2BlockNew.
|
|
8
8
|
*
|
|
9
9
|
* @param a - An object
|
|
10
10
|
* @param b - Another object
|
|
11
|
-
* @returns True if both a and b are the same
|
|
11
|
+
* @returns True if both a and b are the same L2BlockNew
|
|
12
12
|
*/ export function equalL2Blocks(a, b) {
|
|
13
|
-
const aAsL2Block = a && a instanceof
|
|
14
|
-
const bAsL2Block = b && b instanceof
|
|
13
|
+
const aAsL2Block = a && a instanceof L2BlockNew ? a : undefined;
|
|
14
|
+
const bAsL2Block = b && b instanceof L2BlockNew ? b : undefined;
|
|
15
15
|
if (aAsL2Block && bAsL2Block) {
|
|
16
|
-
// we got two
|
|
16
|
+
// we got two L2BlockNew instances, so we can compare them
|
|
17
17
|
// use a custom comparator because the blockHash property is lazily computed and one instance might not have it
|
|
18
18
|
return aAsL2Block.toBuffer().equals(bAsL2Block.toBuffer());
|
|
19
19
|
} else if (aAsL2Block || bAsL2Block) {
|
|
20
|
-
// one value is an
|
|
20
|
+
// one value is an L2BlockNew and the other isn't. Definitely not equal.
|
|
21
21
|
return false;
|
|
22
22
|
} else {
|
|
23
23
|
// we don't know what they are, tell Jest to keep looking
|
package/dest/tests/mocks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FieldsOf } from '@aztec/foundation/array';
|
|
2
|
-
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
@@ -7,8 +7,7 @@ import type { ContractArtifact } from '../abi/abi.js';
|
|
|
7
7
|
import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
|
|
8
8
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
9
9
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
10
|
-
import {
|
|
11
|
-
import { L2Block } from '../block/l2_block.js';
|
|
10
|
+
import { CheckpointedL2Block, L2BlockNew } from '../block/index.js';
|
|
12
11
|
import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
|
|
13
12
|
import { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
14
13
|
import type { ContractInstanceWithAddress } from '../contract/index.js';
|
|
@@ -96,15 +95,15 @@ export interface MakeConsensusPayloadOptions {
|
|
|
96
95
|
signer?: Secp256k1Signer;
|
|
97
96
|
attesterSigner?: Secp256k1Signer;
|
|
98
97
|
proposerSigner?: Secp256k1Signer;
|
|
99
|
-
header?:
|
|
98
|
+
header?: CheckpointHeader;
|
|
100
99
|
archive?: Fr;
|
|
101
100
|
txHashes?: TxHash[];
|
|
102
101
|
txs?: Tx[];
|
|
103
102
|
}
|
|
104
103
|
export interface MakeBlockProposalOptions {
|
|
105
104
|
signer?: Secp256k1Signer;
|
|
106
|
-
blockHeader?:
|
|
107
|
-
indexWithinCheckpoint?:
|
|
105
|
+
blockHeader?: BlockHeader;
|
|
106
|
+
indexWithinCheckpoint?: IndexWithinCheckpoint;
|
|
108
107
|
inHash?: Fr;
|
|
109
108
|
archiveRoot?: Fr;
|
|
110
109
|
txHashes?: TxHash[];
|
|
@@ -116,8 +115,8 @@ export interface MakeCheckpointProposalOptions {
|
|
|
116
115
|
archiveRoot?: Fr;
|
|
117
116
|
/** Options for the lastBlock - if undefined, no lastBlock is included */
|
|
118
117
|
lastBlock?: {
|
|
119
|
-
blockHeader?:
|
|
120
|
-
indexWithinCheckpoint?:
|
|
118
|
+
blockHeader?: BlockHeader;
|
|
119
|
+
indexWithinCheckpoint?: IndexWithinCheckpoint;
|
|
121
120
|
txHashes?: TxHash[];
|
|
122
121
|
txs?: Tx[];
|
|
123
122
|
};
|
|
@@ -148,10 +147,11 @@ export declare const makeCheckpointAttestationFromProposal: (proposal: Checkpoin
|
|
|
148
147
|
*/
|
|
149
148
|
export declare const makeCheckpointAttestationFromCheckpoint: (checkpoint: Checkpoint, attesterSigner?: Secp256k1Signer | undefined, proposerSigner?: Secp256k1Signer | undefined) => CheckpointAttestation;
|
|
150
149
|
/**
|
|
151
|
-
* Create a checkpoint attestation from an
|
|
150
|
+
* Create a checkpoint attestation from an L2BlockNew
|
|
151
|
+
* Note: This is a compatibility function for tests. L2BlockNew doesn't have a checkpoint header directly.
|
|
152
152
|
*/
|
|
153
|
-
export declare const makeCheckpointAttestationFromBlock: (block:
|
|
153
|
+
export declare const makeCheckpointAttestationFromBlock: (block: L2BlockNew, attesterSigner?: Secp256k1Signer | undefined, proposerSigner?: Secp256k1Signer | undefined) => CheckpointAttestation;
|
|
154
154
|
export declare function randomPublishedL2Block(l2BlockNumber: number, opts?: {
|
|
155
155
|
signers?: Secp256k1Signer[];
|
|
156
|
-
}): Promise<
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
156
|
+
}): Promise<CheckpointedL2Block>;
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0cy9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFjLE1BQU0saUNBQWlDLENBQUM7QUFJbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBd0IsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLekQsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/tests/mocks.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,MAAM,iCAAiC,CAAC;
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FIXED_DA_GAS, FIXED_L2_GAS, MAX_ENQUEUED_CALLS_PER_TX, MAX_INCLUDE_BY_TIMESTAMP_DURATION, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX } from '@aztec/constants';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
5
5
|
import { padArrayEnd, times } from '@aztec/foundation/collection';
|
|
6
6
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
@@ -12,8 +12,7 @@ import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
|
|
|
12
12
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
13
13
|
import { RevertCode } from '../avm/revert_code.js';
|
|
14
14
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
15
|
-
import { CommitteeAttestation, L2BlockNew
|
|
16
|
-
import { L2Block } from '../block/l2_block.js';
|
|
15
|
+
import { CheckpointedL2Block, CommitteeAttestation, L2BlockNew } from '../block/index.js';
|
|
17
16
|
import { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
18
17
|
import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
|
|
19
18
|
import { computeContractAddressFromInstance } from '../contract/contract_address.js';
|
|
@@ -37,13 +36,14 @@ import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
|
37
36
|
import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
|
|
38
37
|
import { ChonkProof } from '../proofs/chonk_proof.js';
|
|
39
38
|
import { ProvingRequestType } from '../proofs/proving_request_type.js';
|
|
39
|
+
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
40
40
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
41
41
|
import { GlobalVariables, HashedValues, PrivateCallExecutionResult, PrivateExecutionResult, Tx, TxConstantData, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '../tx/index.js';
|
|
42
42
|
import { NestedProcessReturnValues, PublicSimulationOutput } from '../tx/public_simulation_output.js';
|
|
43
43
|
import { TxSimulationResult } from '../tx/simulated_tx.js';
|
|
44
44
|
import { TxEffect } from '../tx/tx_effect.js';
|
|
45
45
|
import { TxHash } from '../tx/tx_hash.js';
|
|
46
|
-
import { makeAvmCircuitInputs, makeAztecAddress, makeBlockHeader, makeGas, makeGlobalVariables,
|
|
46
|
+
import { makeAvmCircuitInputs, makeAztecAddress, makeBlockHeader, makeCheckpointHeader, makeGas, makeGlobalVariables, makePrivateToPublicAccumulatedData, makePrivateToRollupAccumulatedData, makeProtocolContracts, makePublicCallRequest, makePublicDataWrite } from './factories.js';
|
|
47
47
|
export const randomTxHash = ()=>TxHash.random();
|
|
48
48
|
export const mockTx = async (seed = 1, { numberOfNonRevertiblePublicCallRequests = MAX_ENQUEUED_CALLS_PER_TX / 2, numberOfRevertiblePublicCallRequests = MAX_ENQUEUED_CALLS_PER_TX / 2, numberOfRevertibleNullifiers = 0, hasPublicTeardownCallRequest = false, publicCalldataSize = 2, feePayer, chonkProof = ChonkProof.random(), maxPriorityFeesPerGas, gasUsed = Gas.empty(), chainId = Fr.ZERO, version = Fr.ZERO, vkTreeRoot = Fr.ZERO, protocolContractsHash = Fr.ZERO } = {})=>{
|
|
49
49
|
const totalPublicCallRequests = numberOfNonRevertiblePublicCallRequests + numberOfRevertiblePublicCallRequests + (hasPublicTeardownCallRequest ? 1 : 0);
|
|
@@ -223,7 +223,7 @@ export async function mockCheckpointAndMessages(checkpointNumber, { startBlockNu
|
|
|
223
223
|
const { block, messages } = {
|
|
224
224
|
block: blocks?.[i] ?? await L2BlockNew.random(blockNumber, {
|
|
225
225
|
checkpointNumber,
|
|
226
|
-
indexWithinCheckpoint: i,
|
|
226
|
+
indexWithinCheckpoint: IndexWithinCheckpoint(i),
|
|
227
227
|
txsPerBlock: numTxsPerBlock,
|
|
228
228
|
slotNumber,
|
|
229
229
|
...options,
|
|
@@ -291,16 +291,16 @@ export const randomDeployedContract = async ()=>{
|
|
|
291
291
|
};
|
|
292
292
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
293
293
|
const makeAndSignConsensusPayload = (domainSeparator, options)=>{
|
|
294
|
-
const header = options?.header ??
|
|
294
|
+
const header = options?.header ?? makeCheckpointHeader(1);
|
|
295
295
|
const { signer = Secp256k1Signer.random(), archive = Fr.random() } = options ?? {};
|
|
296
296
|
const payload = ConsensusPayload.fromFields({
|
|
297
|
-
header
|
|
297
|
+
header,
|
|
298
298
|
archive
|
|
299
299
|
});
|
|
300
300
|
const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
|
|
301
301
|
const signature = signer.sign(hash);
|
|
302
302
|
return {
|
|
303
|
-
blockNumber: header.
|
|
303
|
+
blockNumber: header.slotNumber,
|
|
304
304
|
payload,
|
|
305
305
|
signature
|
|
306
306
|
};
|
|
@@ -310,9 +310,8 @@ export const makeAndSignCommitteeAttestationsAndSigners = (attestationsAndSigner
|
|
|
310
310
|
return signer.sign(hash);
|
|
311
311
|
};
|
|
312
312
|
export const makeBlockProposal = (options)=>{
|
|
313
|
-
const
|
|
314
|
-
const
|
|
315
|
-
const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? 0;
|
|
313
|
+
const blockHeader = options?.blockHeader ?? makeBlockHeader(1);
|
|
314
|
+
const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? IndexWithinCheckpoint(0);
|
|
316
315
|
const inHash = options?.inHash ?? Fr.random();
|
|
317
316
|
const archiveRoot = options?.archiveRoot ?? Fr.random();
|
|
318
317
|
const txHashes = options?.txHashes ?? [
|
|
@@ -328,14 +327,14 @@ export const makeBlockProposal = (options)=>{
|
|
|
328
327
|
return BlockProposal.createProposalFromSigner(blockHeader, indexWithinCheckpoint, inHash, archiveRoot, txHashes, txs, (_payload, _context)=>Promise.resolve(signer.signMessage(_payload)));
|
|
329
328
|
};
|
|
330
329
|
export const makeCheckpointProposal = (options)=>{
|
|
331
|
-
const
|
|
332
|
-
const checkpointHeader = options?.checkpointHeader ??
|
|
330
|
+
const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
|
|
331
|
+
const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
|
|
333
332
|
const archiveRoot = options?.archiveRoot ?? Fr.random();
|
|
334
333
|
const signer = options?.signer ?? Secp256k1Signer.random();
|
|
335
334
|
// Build lastBlock info if provided
|
|
336
335
|
const lastBlockInfo = options?.lastBlock ? {
|
|
337
|
-
blockHeader
|
|
338
|
-
indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? 4,
|
|
336
|
+
blockHeader,
|
|
337
|
+
indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4),
|
|
339
338
|
txHashes: options.lastBlock.txHashes ?? [
|
|
340
339
|
0,
|
|
341
340
|
1,
|
|
@@ -351,7 +350,7 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
351
350
|
/**
|
|
352
351
|
* Create a checkpoint attestation for testing
|
|
353
352
|
*/ export const makeCheckpointAttestation = (options = {})=>{
|
|
354
|
-
const header = options.header ??
|
|
353
|
+
const header = options.header ?? makeCheckpointHeader(1);
|
|
355
354
|
const archive = options.archive ?? Fr.random();
|
|
356
355
|
const { signer, attesterSigner = signer, proposerSigner = signer } = options;
|
|
357
356
|
const payload = new ConsensusPayload(header, archive);
|
|
@@ -391,9 +390,16 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
391
390
|
});
|
|
392
391
|
};
|
|
393
392
|
/**
|
|
394
|
-
* Create a checkpoint attestation from an
|
|
393
|
+
* Create a checkpoint attestation from an L2BlockNew
|
|
394
|
+
* Note: This is a compatibility function for tests. L2BlockNew doesn't have a checkpoint header directly.
|
|
395
395
|
*/ export const makeCheckpointAttestationFromBlock = (block, attesterSigner, proposerSigner)=>{
|
|
396
|
-
|
|
396
|
+
// For L2BlockNew, we create a minimal checkpoint header for testing purposes
|
|
397
|
+
const header = CheckpointHeader.empty({
|
|
398
|
+
lastArchiveRoot: block.header.lastArchive.root,
|
|
399
|
+
slotNumber: block.slot,
|
|
400
|
+
timestamp: block.timestamp,
|
|
401
|
+
blockHeadersHash: Fr.ZERO
|
|
402
|
+
});
|
|
397
403
|
const archive = block.archive.root;
|
|
398
404
|
return makeCheckpointAttestation({
|
|
399
405
|
header,
|
|
@@ -403,18 +409,24 @@ export const makeCheckpointProposal = (options)=>{
|
|
|
403
409
|
});
|
|
404
410
|
};
|
|
405
411
|
export async function randomPublishedL2Block(l2BlockNumber, opts = {}) {
|
|
406
|
-
const block = await
|
|
412
|
+
const block = await L2BlockNew.random(BlockNumber(l2BlockNumber));
|
|
407
413
|
const l1 = L1PublishedData.fromFields({
|
|
408
414
|
blockNumber: BigInt(block.number),
|
|
409
415
|
timestamp: block.header.globalVariables.timestamp,
|
|
410
416
|
blockHash: Buffer32.random().toString()
|
|
411
417
|
});
|
|
412
418
|
const signers = opts.signers ?? times(3, ()=>Secp256k1Signer.random());
|
|
419
|
+
const checkpoint = await Checkpoint.random(CheckpointNumber(l2BlockNumber), {
|
|
420
|
+
numBlocks: 0
|
|
421
|
+
});
|
|
422
|
+
checkpoint.blocks = [
|
|
423
|
+
block
|
|
424
|
+
];
|
|
413
425
|
const atts = signers.map((signer)=>makeCheckpointAttestation({
|
|
414
426
|
signer,
|
|
415
427
|
archive: block.archive.root,
|
|
416
|
-
header:
|
|
428
|
+
header: checkpoint.header
|
|
417
429
|
}));
|
|
418
430
|
const attestations = atts.map((attestation, i)=>new CommitteeAttestation(signers[i].address, attestation.signature));
|
|
419
|
-
return new
|
|
431
|
+
return new CheckpointedL2Block(CheckpointNumber(l2BlockNumber), block, l1, attestations);
|
|
420
432
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "4.0.0-nightly.
|
|
3
|
+
"version": "4.0.0-nightly.20260120",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -78,14 +78,14 @@
|
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
81
|
-
"@aztec/bb.js": "4.0.0-nightly.
|
|
82
|
-
"@aztec/blob-lib": "4.0.0-nightly.
|
|
83
|
-
"@aztec/constants": "4.0.0-nightly.
|
|
84
|
-
"@aztec/ethereum": "4.0.0-nightly.
|
|
85
|
-
"@aztec/foundation": "4.0.0-nightly.
|
|
86
|
-
"@aztec/l1-artifacts": "4.0.0-nightly.
|
|
87
|
-
"@aztec/noir-noirc_abi": "4.0.0-nightly.
|
|
88
|
-
"@aztec/validator-ha-signer": "4.0.0-nightly.
|
|
81
|
+
"@aztec/bb.js": "4.0.0-nightly.20260120",
|
|
82
|
+
"@aztec/blob-lib": "4.0.0-nightly.20260120",
|
|
83
|
+
"@aztec/constants": "4.0.0-nightly.20260120",
|
|
84
|
+
"@aztec/ethereum": "4.0.0-nightly.20260120",
|
|
85
|
+
"@aztec/foundation": "4.0.0-nightly.20260120",
|
|
86
|
+
"@aztec/l1-artifacts": "4.0.0-nightly.20260120",
|
|
87
|
+
"@aztec/noir-noirc_abi": "4.0.0-nightly.20260120",
|
|
88
|
+
"@aztec/validator-ha-signer": "4.0.0-nightly.20260120",
|
|
89
89
|
"@google-cloud/storage": "^7.15.0",
|
|
90
90
|
"axios": "^1.12.0",
|
|
91
91
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -2,7 +2,9 @@ import { BlockNumberSchema } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { L2BlockHash } from './block_hash.js';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
export const BlockParameterSchema = z.union([L2BlockHash.schema, BlockNumberSchema, z.literal('latest')]);
|
|
8
|
+
|
|
9
|
+
/** Block parameter - either a specific BlockNumber, block hash (L2BlockHash), or 'latest' */
|
|
8
10
|
export type BlockParameter = z.infer<typeof BlockParameterSchema>;
|
|
@@ -5,9 +5,8 @@ import type { FieldsOf } from '@aztec/foundation/types';
|
|
|
5
5
|
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
|
|
8
|
-
import { L1PublishedData
|
|
8
|
+
import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
|
|
9
9
|
import { MAX_BLOCK_HASH_STRING_LENGTH, MAX_COMMITTEE_SIZE } from '../deserialization/index.js';
|
|
10
|
-
import { L2Block } from './l2_block.js';
|
|
11
10
|
import { L2BlockNew } from './l2_block_new.js';
|
|
12
11
|
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
13
12
|
|
|
@@ -59,6 +58,7 @@ export class CheckpointedL2Block {
|
|
|
59
58
|
|
|
60
59
|
public toBuffer(): Buffer {
|
|
61
60
|
return serializeToBuffer(
|
|
61
|
+
this.checkpointNumber,
|
|
62
62
|
this.block,
|
|
63
63
|
this.l1.blockNumber,
|
|
64
64
|
this.l1.blockHash,
|
|
@@ -68,54 +68,3 @@ export class CheckpointedL2Block {
|
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
export class PublishedL2Block {
|
|
73
|
-
constructor(
|
|
74
|
-
public block: L2Block,
|
|
75
|
-
public l1: L1PublishedData,
|
|
76
|
-
public attestations: CommitteeAttestation[],
|
|
77
|
-
) {}
|
|
78
|
-
|
|
79
|
-
static get schema() {
|
|
80
|
-
return z
|
|
81
|
-
.object({
|
|
82
|
-
block: L2Block.schema,
|
|
83
|
-
l1: L1PublishedData.schema,
|
|
84
|
-
attestations: z.array(CommitteeAttestation.schema),
|
|
85
|
-
})
|
|
86
|
-
.transform(obj => PublishedL2Block.fromFields(obj));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
static fromBuffer(bufferOrReader: Buffer | BufferReader): PublishedL2Block {
|
|
90
|
-
const reader = BufferReader.asReader(bufferOrReader);
|
|
91
|
-
const block = reader.readObject(L2Block);
|
|
92
|
-
const l1BlockNumber = reader.readBigInt();
|
|
93
|
-
const l1BlockHash = reader.readString(MAX_BLOCK_HASH_STRING_LENGTH);
|
|
94
|
-
const l1Timestamp = reader.readBigInt();
|
|
95
|
-
const attestations = reader.readVector(CommitteeAttestation, MAX_COMMITTEE_SIZE);
|
|
96
|
-
return new PublishedL2Block(block, new L1PublishedData(l1BlockNumber, l1Timestamp, l1BlockHash), attestations);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
static fromFields(fields: FieldsOf<PublishedL2Block>) {
|
|
100
|
-
return new PublishedL2Block(fields.block, fields.l1, fields.attestations);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
public toBuffer(): Buffer {
|
|
104
|
-
return serializeToBuffer(
|
|
105
|
-
this.block,
|
|
106
|
-
this.l1.blockNumber,
|
|
107
|
-
this.l1.blockHash,
|
|
108
|
-
this.l1.timestamp,
|
|
109
|
-
this.attestations.length,
|
|
110
|
-
this.attestations,
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
public toPublishedCheckpoint() {
|
|
115
|
-
return new PublishedCheckpoint(this.block.toCheckpoint(), this.l1, this.attestations);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
static fromPublishedCheckpoint(checkpoint: PublishedCheckpoint) {
|
|
119
|
-
return new PublishedL2Block(L2Block.fromCheckpoint(checkpoint.checkpoint), checkpoint.l1, checkpoint.attestations);
|
|
120
|
-
}
|
|
121
|
-
}
|
package/src/block/in_block.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { BlockNumber, BlockNumberSchema } from '@aztec/foundation/branded-types'
|
|
|
3
3
|
import { type ZodTypeAny, z } from 'zod';
|
|
4
4
|
|
|
5
5
|
import { L2BlockHash } from './block_hash.js';
|
|
6
|
-
import type {
|
|
6
|
+
import type { L2BlockNew } from './l2_block_new.js';
|
|
7
7
|
|
|
8
8
|
export type InBlock = {
|
|
9
9
|
l2BlockNumber: BlockNumber;
|
|
@@ -29,7 +29,7 @@ export function randomDataInBlock<T>(data: T): DataInBlock<T> {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export async function wrapDataInBlock<T>(data: T, block:
|
|
32
|
+
export async function wrapDataInBlock<T>(data: T, block: L2BlockNew): Promise<DataInBlock<T>> {
|
|
33
33
|
return {
|
|
34
34
|
data,
|
|
35
35
|
l2BlockNumber: block.number,
|
package/src/block/index.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { type BlockBlobData, encodeBlockBlobData } from '@aztec/blob-lib/encoding';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BlockNumber,
|
|
4
|
+
CheckpointNumber,
|
|
5
|
+
CheckpointNumberSchema,
|
|
6
|
+
IndexWithinCheckpoint,
|
|
7
|
+
IndexWithinCheckpointSchema,
|
|
8
|
+
SlotNumber,
|
|
9
|
+
} from '@aztec/foundation/branded-types';
|
|
3
10
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
11
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
12
|
|
|
@@ -30,7 +37,7 @@ export class L2BlockNew {
|
|
|
30
37
|
/** Number of the checkpoint that the block belongs to. */
|
|
31
38
|
public checkpointNumber: CheckpointNumber,
|
|
32
39
|
/** Index of the block within the checkpoint. */
|
|
33
|
-
public indexWithinCheckpoint:
|
|
40
|
+
public indexWithinCheckpoint: IndexWithinCheckpoint,
|
|
34
41
|
) {}
|
|
35
42
|
|
|
36
43
|
get number(): BlockNumber {
|
|
@@ -52,7 +59,7 @@ export class L2BlockNew {
|
|
|
52
59
|
header: BlockHeader.schema,
|
|
53
60
|
body: Body.schema,
|
|
54
61
|
checkpointNumber: CheckpointNumberSchema,
|
|
55
|
-
indexWithinCheckpoint:
|
|
62
|
+
indexWithinCheckpoint: IndexWithinCheckpointSchema,
|
|
56
63
|
})
|
|
57
64
|
.transform(
|
|
58
65
|
({ archive, header, body, checkpointNumber, indexWithinCheckpoint }) =>
|
|
@@ -70,7 +77,7 @@ export class L2BlockNew {
|
|
|
70
77
|
const archive = reader.readObject(AppendOnlyTreeSnapshot);
|
|
71
78
|
const body = reader.readObject(Body);
|
|
72
79
|
const checkpointNumber = CheckpointNumber(reader.readNumber());
|
|
73
|
-
const indexWithinCheckpoint = reader.readNumber();
|
|
80
|
+
const indexWithinCheckpoint = IndexWithinCheckpoint(reader.readNumber());
|
|
74
81
|
|
|
75
82
|
return new L2BlockNew(archive, header, body, checkpointNumber, indexWithinCheckpoint);
|
|
76
83
|
}
|
|
@@ -141,7 +148,7 @@ export class L2BlockNew {
|
|
|
141
148
|
header ?? BlockHeader.empty(),
|
|
142
149
|
Body.empty(),
|
|
143
150
|
CheckpointNumber(0),
|
|
144
|
-
0,
|
|
151
|
+
IndexWithinCheckpoint(0),
|
|
145
152
|
);
|
|
146
153
|
}
|
|
147
154
|
|
|
@@ -158,14 +165,14 @@ export class L2BlockNew {
|
|
|
158
165
|
blockNumber: BlockNumber,
|
|
159
166
|
{
|
|
160
167
|
checkpointNumber = CheckpointNumber(Number(blockNumber)),
|
|
161
|
-
indexWithinCheckpoint = 0,
|
|
168
|
+
indexWithinCheckpoint = IndexWithinCheckpoint(0),
|
|
162
169
|
txsPerBlock = 1,
|
|
163
170
|
txOptions = {},
|
|
164
171
|
makeTxOptions,
|
|
165
172
|
...blockHeaderOverrides
|
|
166
173
|
}: {
|
|
167
174
|
checkpointNumber?: CheckpointNumber;
|
|
168
|
-
indexWithinCheckpoint?:
|
|
175
|
+
indexWithinCheckpoint?: IndexWithinCheckpoint;
|
|
169
176
|
txsPerBlock?: number;
|
|
170
177
|
txOptions?: Partial<Parameters<typeof Body.random>[0]>;
|
|
171
178
|
makeTxOptions?: (txIndex: number) => Partial<Parameters<typeof Body.random>[0]>;
|
|
@@ -20,8 +20,7 @@ import type { BlockHeader } from '../tx/block_header.js';
|
|
|
20
20
|
import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
|
|
21
21
|
import type { TxHash } from '../tx/tx_hash.js';
|
|
22
22
|
import type { TxReceipt } from '../tx/tx_receipt.js';
|
|
23
|
-
import {
|
|
24
|
-
import type { L2Block } from './l2_block.js';
|
|
23
|
+
import type { CheckpointedL2Block } from './checkpointed_l2_block.js';
|
|
25
24
|
import type { L2BlockNew } from './l2_block_new.js';
|
|
26
25
|
import type { ValidateCheckpointNegativeResult, ValidateCheckpointResult } from './validate_block_result.js';
|
|
27
26
|
|
|
@@ -105,6 +104,20 @@ export interface L2BlockSource {
|
|
|
105
104
|
*/
|
|
106
105
|
getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
107
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Gets an L2 block by its hash.
|
|
109
|
+
* @param blockHash - The block hash to retrieve.
|
|
110
|
+
* @returns The requested L2 block (or undefined if not found).
|
|
111
|
+
*/
|
|
112
|
+
getL2BlockNewByHash(blockHash: Fr): Promise<L2BlockNew | undefined>;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Gets an L2 block by its archive root.
|
|
116
|
+
* @param archive - The archive root to retrieve.
|
|
117
|
+
* @returns The requested L2 block (or undefined if not found).
|
|
118
|
+
*/
|
|
119
|
+
getL2BlockNewByArchive(archive: Fr): Promise<L2BlockNew | undefined>;
|
|
120
|
+
|
|
108
121
|
/**
|
|
109
122
|
* Gets a tx effect.
|
|
110
123
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -179,11 +192,8 @@ export interface L2BlockSource {
|
|
|
179
192
|
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
180
193
|
* @param number - The block number to return (inclusive).
|
|
181
194
|
* @returns The requested L2 block.
|
|
182
|
-
* @deprecated Use getL2BlockNew instead.
|
|
183
195
|
*/
|
|
184
|
-
getBlock(number: BlockNumber): Promise<
|
|
185
|
-
|
|
186
|
-
getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
196
|
+
getBlock(number: BlockNumber): Promise<L2BlockNew | undefined>;
|
|
187
197
|
|
|
188
198
|
getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
|
|
189
199
|
|
|
@@ -192,7 +202,7 @@ export interface L2BlockSource {
|
|
|
192
202
|
* @dev Use this method only with recent epochs, since it walks the block list backwards.
|
|
193
203
|
* @param epochNumber - The epoch number to return blocks for.
|
|
194
204
|
*/
|
|
195
|
-
getBlocksForEpoch(epochNumber: EpochNumber): Promise<
|
|
205
|
+
getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2BlockNew[]>;
|
|
196
206
|
|
|
197
207
|
/**
|
|
198
208
|
* Returns all blocks for a given slot.
|
|
@@ -206,14 +216,14 @@ export interface L2BlockSource {
|
|
|
206
216
|
* @param blockHash - The block hash to retrieve.
|
|
207
217
|
* @returns The requested block (or undefined if not found).
|
|
208
218
|
*/
|
|
209
|
-
getPublishedBlockByHash(blockHash: Fr): Promise<
|
|
219
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
210
220
|
|
|
211
221
|
/**
|
|
212
222
|
* Gets a published block by its archive root.
|
|
213
223
|
* @param archive - The archive root to retrieve.
|
|
214
224
|
* @returns The requested block (or undefined if not found).
|
|
215
225
|
*/
|
|
216
|
-
getPublishedBlockByArchive(archive: Fr): Promise<
|
|
226
|
+
getPublishedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
|
|
217
227
|
|
|
218
228
|
/**
|
|
219
229
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
@@ -222,10 +232,10 @@ export interface L2BlockSource {
|
|
|
222
232
|
* @param proven - If true, only return blocks that have been proven.
|
|
223
233
|
* @returns The requested L2 blocks.
|
|
224
234
|
*/
|
|
225
|
-
getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<
|
|
235
|
+
getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]>;
|
|
226
236
|
|
|
227
237
|
/** Equivalent to getBlocks but includes publish data. */
|
|
228
|
-
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<
|
|
238
|
+
getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<CheckpointedL2Block[]>;
|
|
229
239
|
}
|
|
230
240
|
|
|
231
241
|
/**
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { encodeCheckpointBlobDataFromBlocks } from '@aztec/blob-lib/encoding';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BlockNumber,
|
|
4
|
+
CheckpointNumber,
|
|
5
|
+
CheckpointNumberSchema,
|
|
6
|
+
IndexWithinCheckpoint,
|
|
7
|
+
SlotNumber,
|
|
8
|
+
} from '@aztec/foundation/branded-types';
|
|
3
9
|
import { sum } from '@aztec/foundation/collection';
|
|
4
10
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
11
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
@@ -139,7 +145,7 @@ export class Checkpoint {
|
|
|
139
145
|
let lastArchive = previousArchive;
|
|
140
146
|
for (let i = 0; i < numBlocks; i++) {
|
|
141
147
|
const block = await L2BlockNew.random(BlockNumber(startBlockNumber + i), {
|
|
142
|
-
indexWithinCheckpoint: i,
|
|
148
|
+
indexWithinCheckpoint: IndexWithinCheckpoint(i),
|
|
143
149
|
...options,
|
|
144
150
|
...(lastArchive ? { lastArchive } : {}),
|
|
145
151
|
});
|