@aztec/stdlib 0.0.1-commit.6c91f13 → 0.0.1-commit.96bb3f7
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/abi/contract_artifact.d.ts +2 -2
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +1 -1
- package/dest/abi/selector.js +3 -1
- package/dest/avm/avm_accumulated_data.js +5 -2
- package/dest/avm/avm_circuit_public_inputs.js +3 -1
- package/dest/avm/public_data_update_request.js +3 -1
- package/dest/avm/public_inner_call_request.js +3 -1
- package/dest/avm/revert_code.js +3 -1
- package/dest/aztec-address/index.js +4 -2
- package/dest/block/attestation_info.d.ts +5 -5
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +4 -4
- package/dest/block/body.js +3 -1
- package/dest/block/l2_block.d.ts +6 -3
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +6 -4
- package/dest/block/l2_block_code_to_purge.d.ts +2 -3
- package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
- package/dest/block/l2_block_code_to_purge.js +2 -8
- package/dest/block/l2_block_header.d.ts +8 -12
- package/dest/block/l2_block_header.d.ts.map +1 -1
- package/dest/block/l2_block_header.js +25 -18
- package/dest/block/l2_block_new.d.ts +1 -2
- package/dest/block/l2_block_new.d.ts.map +1 -1
- package/dest/block/l2_block_new.js +4 -1
- package/dest/block/l2_block_source.d.ts +245 -41
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +23 -5
- package/dest/block/l2_block_stream/index.d.ts +2 -1
- package/dest/block/l2_block_stream/index.d.ts.map +1 -1
- package/dest/block/l2_block_stream/index.js +1 -0
- package/dest/block/l2_block_stream/interfaces.d.ts +12 -5
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +4 -2
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +102 -30
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
- package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +483 -38
- package/dest/block/validate_block_result.d.ts +24 -24
- package/dest/block/validate_block_result.d.ts.map +1 -1
- package/dest/block/validate_block_result.js +13 -13
- package/dest/checkpoint/checkpoint.d.ts +1 -1
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +1 -0
- package/dest/checkpoint/checkpoint_info.d.ts +32 -3
- package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_info.js +34 -1
- package/dest/checkpoint/index.d.ts +2 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +1 -0
- package/dest/database-version/version_manager.js +3 -1
- package/dest/gas/gas.js +3 -1
- package/dest/gas/gas_fees.js +3 -1
- package/dest/interfaces/api_limit.d.ts +2 -1
- package/dest/interfaces/api_limit.d.ts.map +1 -1
- package/dest/interfaces/api_limit.js +1 -0
- package/dest/interfaces/archiver.d.ts +6 -6
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +6 -4
- package/dest/interfaces/aztec-node-admin.d.ts +12 -6
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +2 -2
- package/dest/interfaces/aztec-node.d.ts +11 -10
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +10 -5
- package/dest/interfaces/configs.d.ts +6 -1
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/interfaces/p2p.d.ts +7 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +3 -4
- package/dest/interfaces/proving-job.d.ts +170 -170
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +1 -7
- package/dest/interfaces/server_circuit_prover.d.ts +4 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +41 -7
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +3 -1
- package/dest/kernel/claimed_length_array.js +3 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
- 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 +5 -6
- package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
- package/dest/kernel/log_hash.js +3 -1
- package/dest/kernel/private_log_data.js +5 -2
- package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
- package/dest/kernel/private_to_public_accumulated_data.js +3 -1
- package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
- package/dest/kernel/private_validation_requests.js +3 -1
- package/dest/kernel/public_call_request.js +5 -2
- package/dest/logs/contract_class_log.js +3 -1
- package/dest/logs/private_log.js +3 -1
- package/dest/logs/public_log.js +3 -1
- package/dest/messaging/in_hash.d.ts +4 -2
- package/dest/messaging/in_hash.d.ts.map +1 -1
- package/dest/messaging/in_hash.js +3 -1
- package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +158 -42
- package/dest/messaging/out_hash.d.ts +2 -1
- package/dest/messaging/out_hash.d.ts.map +1 -1
- package/dest/messaging/out_hash.js +13 -4
- package/dest/p2p/attestation_utils.d.ts +3 -3
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +1 -1
- package/dest/p2p/block_proposal.d.ts +85 -21
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +120 -37
- package/dest/p2p/checkpoint_attestation.d.ts +77 -0
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
- package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
- package/dest/p2p/checkpoint_proposal.d.ts +154 -0
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
- package/dest/p2p/checkpoint_proposal.js +217 -0
- package/dest/p2p/consensus_payload.d.ts +6 -7
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +3 -2
- package/dest/p2p/gossipable.d.ts +4 -3
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +16 -5
- package/dest/p2p/index.d.ts +4 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +3 -1
- package/dest/p2p/signature_utils.d.ts +5 -3
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +3 -1
- package/dest/p2p/signed_txs.d.ts +40 -0
- package/dest/p2p/signed_txs.d.ts.map +1 -0
- package/dest/p2p/signed_txs.js +70 -0
- package/dest/p2p/topic_type.d.ts +3 -2
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +8 -2
- package/dest/rollup/block_rollup_public_inputs.d.ts +4 -9
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.js +6 -10
- package/dest/rollup/checkpoint_constant_data.js +3 -1
- package/dest/rollup/checkpoint_header.d.ts +15 -12
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +33 -19
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +6 -2
- package/dest/rollup/root_rollup_public_inputs.d.ts +8 -3
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +6 -3
- package/dest/tests/factories.d.ts +15 -7
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +57 -13
- package/dest/tests/mocks.d.ts +59 -10
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +89 -41
- package/dest/trees/append_only_tree_snapshot.js +3 -1
- package/dest/tx/block_header.js +3 -1
- package/dest/tx/call_context.js +3 -1
- package/dest/tx/global_variable_builder.d.ts +2 -2
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.js +3 -1
- package/dest/tx/index.d.ts +1 -2
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +0 -1
- package/dest/tx/private_execution_result.d.ts +1 -5
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +3 -20
- package/dest/tx/public_call_request_with_calldata.js +3 -1
- package/dest/tx/state_reference.js +3 -1
- package/dest/tx/tree_snapshots.js +3 -1
- package/dest/tx/tx.d.ts +1 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +3 -1
- package/dest/tx/tx_effect.js +3 -1
- package/dest/tx/tx_execution_request.d.ts +1 -1
- package/dest/tx/tx_execution_request.d.ts.map +1 -1
- package/dest/tx/tx_execution_request.js +6 -2
- package/package.json +8 -8
- package/src/abi/contract_artifact.ts +10 -10
- package/src/block/attestation_info.ts +9 -6
- package/src/block/l2_block.ts +6 -5
- package/src/block/l2_block_code_to_purge.ts +3 -11
- package/src/block/l2_block_header.ts +26 -17
- package/src/block/l2_block_new.ts +5 -1
- package/src/block/l2_block_source.ts +66 -16
- package/src/block/l2_block_stream/index.ts +1 -0
- package/src/block/l2_block_stream/interfaces.ts +12 -4
- package/src/block/l2_block_stream/l2_block_stream.ts +121 -38
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
- package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
- package/src/block/test/l2_tips_store_test_suite.ts +485 -36
- package/src/block/validate_block_result.ts +35 -31
- package/src/checkpoint/checkpoint.ts +1 -0
- package/src/checkpoint/checkpoint_info.ts +45 -2
- package/src/checkpoint/index.ts +1 -0
- package/src/interfaces/api_limit.ts +1 -0
- package/src/interfaces/archiver.ts +14 -6
- package/src/interfaces/aztec-node-admin.ts +5 -2
- package/src/interfaces/aztec-node.ts +43 -13
- package/src/interfaces/configs.ts +5 -0
- package/src/interfaces/p2p.ts +8 -12
- package/src/interfaces/proving-job.ts +2 -11
- package/src/interfaces/server_circuit_prover.ts +3 -2
- package/src/interfaces/validator.ts +57 -7
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +5 -8
- package/src/messaging/in_hash.ts +3 -1
- package/src/messaging/l2_to_l1_membership.ts +176 -52
- package/src/messaging/out_hash.ts +17 -7
- package/src/p2p/attestation_utils.ts +3 -3
- package/src/p2p/block_proposal.ts +185 -41
- package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
- package/src/p2p/checkpoint_proposal.ts +337 -0
- package/src/p2p/consensus_payload.ts +5 -2
- package/src/p2p/gossipable.ts +14 -4
- package/src/p2p/index.ts +3 -1
- package/src/p2p/signature_utils.ts +3 -1
- package/src/p2p/signed_txs.ts +83 -0
- package/src/p2p/topic_type.ts +3 -2
- package/src/rollup/block_rollup_public_inputs.ts +3 -9
- package/src/rollup/checkpoint_header.ts +43 -20
- package/src/rollup/checkpoint_rollup_public_inputs.ts +6 -0
- package/src/rollup/root_rollup_public_inputs.ts +6 -0
- package/src/tests/factories.ts +53 -17
- package/src/tests/mocks.ts +166 -64
- package/src/tx/global_variable_builder.ts +1 -1
- package/src/tx/index.ts +0 -1
- package/src/tx/private_execution_result.ts +0 -15
- package/src/tx/tx.ts +2 -0
- package/src/tx/tx_execution_request.ts +2 -0
- package/dest/p2p/block_attestation.d.ts +0 -80
- package/dest/p2p/block_attestation.d.ts.map +0 -1
- package/dest/tx/content_commitment.d.ts +0 -49
- package/dest/tx/content_commitment.d.ts.map +0 -1
- package/dest/tx/content_commitment.js +0 -90
- package/src/tx/content_commitment.ts +0 -113
|
@@ -14,12 +14,13 @@ import { z } from 'zod';
|
|
|
14
14
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
15
15
|
import { GasFees } from '../gas/index.js';
|
|
16
16
|
import { schemas } from '../schemas/index.js';
|
|
17
|
-
import {
|
|
17
|
+
import type { GlobalVariables } from '../tx/global_variables.js';
|
|
18
18
|
import type { UInt64 } from '../types/shared.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
|
|
22
22
|
* TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
|
|
23
|
+
* TODO(palla/mbps): What about CheckpointNumber?
|
|
23
24
|
*/
|
|
24
25
|
export class CheckpointHeader {
|
|
25
26
|
constructor(
|
|
@@ -27,8 +28,10 @@ export class CheckpointHeader {
|
|
|
27
28
|
public lastArchiveRoot: Fr,
|
|
28
29
|
/** Hash of the headers of all blocks in this checkpoint. */
|
|
29
30
|
public blockHeadersHash: Fr,
|
|
30
|
-
/**
|
|
31
|
-
public
|
|
31
|
+
/** Hash of the blobs in the checkpoint. */
|
|
32
|
+
public blobsHash: Fr,
|
|
33
|
+
/** Root of the l1 to l2 messages subtree. */
|
|
34
|
+
public inHash: Fr,
|
|
32
35
|
/** Slot number of the L2 block */
|
|
33
36
|
public slotNumber: SlotNumber,
|
|
34
37
|
/** Timestamp of the L2 block. */
|
|
@@ -48,7 +51,8 @@ export class CheckpointHeader {
|
|
|
48
51
|
.object({
|
|
49
52
|
lastArchiveRoot: schemas.Fr,
|
|
50
53
|
blockHeadersHash: schemas.Fr,
|
|
51
|
-
|
|
54
|
+
blobsHash: schemas.Fr,
|
|
55
|
+
inHash: schemas.Fr,
|
|
52
56
|
slotNumber: schemas.SlotNumber,
|
|
53
57
|
timestamp: schemas.BigInt,
|
|
54
58
|
coinbase: schemas.EthAddress,
|
|
@@ -63,7 +67,8 @@ export class CheckpointHeader {
|
|
|
63
67
|
return [
|
|
64
68
|
fields.lastArchiveRoot,
|
|
65
69
|
fields.blockHeadersHash,
|
|
66
|
-
fields.
|
|
70
|
+
fields.blobsHash,
|
|
71
|
+
fields.inHash,
|
|
67
72
|
fields.slotNumber,
|
|
68
73
|
fields.timestamp,
|
|
69
74
|
fields.coinbase,
|
|
@@ -83,7 +88,8 @@ export class CheckpointHeader {
|
|
|
83
88
|
return new CheckpointHeader(
|
|
84
89
|
reader.readObject(Fr),
|
|
85
90
|
reader.readObject(Fr),
|
|
86
|
-
reader.readObject(
|
|
91
|
+
reader.readObject(Fr),
|
|
92
|
+
reader.readObject(Fr),
|
|
87
93
|
SlotNumber(Fr.fromBuffer(reader).toNumber()),
|
|
88
94
|
reader.readUInt64(),
|
|
89
95
|
reader.readObject(EthAddress),
|
|
@@ -97,7 +103,8 @@ export class CheckpointHeader {
|
|
|
97
103
|
return (
|
|
98
104
|
this.lastArchiveRoot.equals(other.lastArchiveRoot) &&
|
|
99
105
|
this.blockHeadersHash.equals(other.blockHeadersHash) &&
|
|
100
|
-
this.
|
|
106
|
+
this.blobsHash.equals(other.blobsHash) &&
|
|
107
|
+
this.inHash.equals(other.inHash) &&
|
|
101
108
|
this.slotNumber === other.slotNumber &&
|
|
102
109
|
this.timestamp === other.timestamp &&
|
|
103
110
|
this.coinbase.equals(other.coinbase) &&
|
|
@@ -107,12 +114,24 @@ export class CheckpointHeader {
|
|
|
107
114
|
);
|
|
108
115
|
}
|
|
109
116
|
|
|
117
|
+
/** Returns true if the global variables match those in the checkpoint header. */
|
|
118
|
+
matchesGlobalVariables(other: GlobalVariables) {
|
|
119
|
+
return (
|
|
120
|
+
this.coinbase.equals(other.coinbase) &&
|
|
121
|
+
this.feeRecipient.equals(other.feeRecipient) &&
|
|
122
|
+
this.gasFees.equals(other.gasFees) &&
|
|
123
|
+
this.slotNumber === other.slotNumber &&
|
|
124
|
+
this.timestamp === other.timestamp
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
110
128
|
toBuffer() {
|
|
111
129
|
// Note: The order here must match the order in the ProposedHeaderLib solidity library.
|
|
112
130
|
return serializeToBuffer([
|
|
113
131
|
this.lastArchiveRoot,
|
|
114
132
|
this.blockHeadersHash,
|
|
115
|
-
this.
|
|
133
|
+
this.blobsHash,
|
|
134
|
+
this.inHash,
|
|
116
135
|
new Fr(this.slotNumber),
|
|
117
136
|
bigintToUInt64BE(this.timestamp),
|
|
118
137
|
this.coinbase,
|
|
@@ -130,7 +149,8 @@ export class CheckpointHeader {
|
|
|
130
149
|
return CheckpointHeader.from({
|
|
131
150
|
lastArchiveRoot: Fr.ZERO,
|
|
132
151
|
blockHeadersHash: Fr.ZERO,
|
|
133
|
-
|
|
152
|
+
blobsHash: Fr.ZERO,
|
|
153
|
+
inHash: Fr.ZERO,
|
|
134
154
|
slotNumber: SlotNumber.ZERO,
|
|
135
155
|
timestamp: 0n,
|
|
136
156
|
coinbase: EthAddress.ZERO,
|
|
@@ -141,13 +161,12 @@ export class CheckpointHeader {
|
|
|
141
161
|
});
|
|
142
162
|
}
|
|
143
163
|
|
|
144
|
-
static random(
|
|
145
|
-
overrides: Partial<FieldsOf<CheckpointHeader>> & Partial<FieldsOf<ContentCommitment>> = {},
|
|
146
|
-
): CheckpointHeader {
|
|
164
|
+
static random(overrides: Partial<FieldsOf<CheckpointHeader>> = {}): CheckpointHeader {
|
|
147
165
|
return CheckpointHeader.from({
|
|
148
166
|
lastArchiveRoot: Fr.random(),
|
|
149
167
|
blockHeadersHash: Fr.random(),
|
|
150
|
-
|
|
168
|
+
blobsHash: Fr.random(),
|
|
169
|
+
inHash: Fr.random(),
|
|
151
170
|
slotNumber: SlotNumber(Math.floor(Math.random() * 1000) + 1),
|
|
152
171
|
timestamp: BigInt(Math.floor(Date.now() / 1000)),
|
|
153
172
|
coinbase: EthAddress.random(),
|
|
@@ -162,7 +181,8 @@ export class CheckpointHeader {
|
|
|
162
181
|
return (
|
|
163
182
|
this.lastArchiveRoot.isZero() &&
|
|
164
183
|
this.blockHeadersHash.isZero() &&
|
|
165
|
-
this.
|
|
184
|
+
this.blobsHash.isZero() &&
|
|
185
|
+
this.inHash.isZero() &&
|
|
166
186
|
this.slotNumber === 0 &&
|
|
167
187
|
this.timestamp === 0n &&
|
|
168
188
|
this.coinbase.isZero() &&
|
|
@@ -188,7 +208,8 @@ export class CheckpointHeader {
|
|
|
188
208
|
return new CheckpointHeader(
|
|
189
209
|
Fr.fromString(header.lastArchiveRoot),
|
|
190
210
|
Fr.fromString(header.blockHeadersHash),
|
|
191
|
-
|
|
211
|
+
Fr.fromString(header.blobsHash),
|
|
212
|
+
Fr.fromString(header.inHash),
|
|
192
213
|
SlotNumber.fromBigInt(header.slotNumber),
|
|
193
214
|
header.timestamp,
|
|
194
215
|
new EthAddress(hexToBuffer(header.coinbase)),
|
|
@@ -210,7 +231,8 @@ export class CheckpointHeader {
|
|
|
210
231
|
return {
|
|
211
232
|
lastArchiveRoot: this.lastArchiveRoot.toString(),
|
|
212
233
|
blockHeadersHash: this.blockHeadersHash.toString(),
|
|
213
|
-
|
|
234
|
+
blobsHash: this.blobsHash.toString(),
|
|
235
|
+
inHash: this.inHash.toString(),
|
|
214
236
|
slotNumber: BigInt(this.slotNumber),
|
|
215
237
|
timestamp: this.timestamp,
|
|
216
238
|
coinbase: this.coinbase.toString(),
|
|
@@ -227,7 +249,8 @@ export class CheckpointHeader {
|
|
|
227
249
|
return {
|
|
228
250
|
lastArchive: this.lastArchiveRoot.toString(),
|
|
229
251
|
blockHeadersHash: this.blockHeadersHash.toString(),
|
|
230
|
-
|
|
252
|
+
blobsHash: this.blobsHash.toString(),
|
|
253
|
+
inHash: this.inHash.toString(),
|
|
231
254
|
slotNumber: this.slotNumber,
|
|
232
255
|
timestamp: this.timestamp,
|
|
233
256
|
coinbase: this.coinbase.toString(),
|
|
@@ -238,16 +261,16 @@ export class CheckpointHeader {
|
|
|
238
261
|
}
|
|
239
262
|
|
|
240
263
|
[inspect.custom]() {
|
|
241
|
-
const gasfees = `da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas}`;
|
|
242
264
|
return `Header {
|
|
243
265
|
lastArchiveRoot: ${this.lastArchiveRoot.toString()},
|
|
244
266
|
blockHeadersHash: ${this.blockHeadersHash.toString()},
|
|
245
|
-
|
|
267
|
+
blobsHash: ${inspect(this.blobsHash)},
|
|
268
|
+
inHash: ${inspect(this.inHash)},
|
|
246
269
|
slotNumber: ${this.slotNumber},
|
|
247
270
|
timestamp: ${this.timestamp},
|
|
248
271
|
coinbase: ${this.coinbase.toString()},
|
|
249
272
|
feeRecipient: ${this.feeRecipient.toString()},
|
|
250
|
-
gasFees:
|
|
273
|
+
gasFees: { da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas} },
|
|
251
274
|
totalManaUsed: ${this.totalManaUsed.toBigInt()},
|
|
252
275
|
}`;
|
|
253
276
|
}
|
|
@@ -31,6 +31,10 @@ export class CheckpointRollupPublicInputs {
|
|
|
31
31
|
* The hashes of the headers of the constituent checkpoints.
|
|
32
32
|
*/
|
|
33
33
|
public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
34
|
+
/**
|
|
35
|
+
* The `out_hash` values from all checkpoints in this checkpoint range.
|
|
36
|
+
*/
|
|
37
|
+
public outHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
34
38
|
/**
|
|
35
39
|
* The summed transaction fees and recipients of the constituent checkpoints.
|
|
36
40
|
*/
|
|
@@ -56,6 +60,7 @@ export class CheckpointRollupPublicInputs {
|
|
|
56
60
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
57
61
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
58
62
|
reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
|
|
63
|
+
reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
|
|
59
64
|
reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
|
|
60
65
|
reader.readObject(BlobAccumulator),
|
|
61
66
|
reader.readObject(BlobAccumulator),
|
|
@@ -69,6 +74,7 @@ export class CheckpointRollupPublicInputs {
|
|
|
69
74
|
this.previousArchive,
|
|
70
75
|
this.newArchive,
|
|
71
76
|
this.checkpointHeaderHashes,
|
|
77
|
+
this.outHashes,
|
|
72
78
|
this.fees,
|
|
73
79
|
this.startBlobAccumulator,
|
|
74
80
|
this.endBlobAccumulator,
|
|
@@ -21,6 +21,9 @@ export class RootRollupPublicInputs {
|
|
|
21
21
|
public previousArchiveRoot: Fr,
|
|
22
22
|
/** Root of the archive tree after this rollup is processed */
|
|
23
23
|
public endArchiveRoot: Fr,
|
|
24
|
+
/** Root of the unbalanced merkle tree consisting of the `out_hash` values from all checkpoints in this rollup. */
|
|
25
|
+
public outHash: Fr,
|
|
26
|
+
/** Hashes of checkpoint headers for this rollup. */
|
|
24
27
|
public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
25
28
|
public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
26
29
|
public constants: EpochConstantData,
|
|
@@ -31,6 +34,7 @@ export class RootRollupPublicInputs {
|
|
|
31
34
|
return [
|
|
32
35
|
fields.previousArchiveRoot,
|
|
33
36
|
fields.endArchiveRoot,
|
|
37
|
+
fields.outHash,
|
|
34
38
|
fields.checkpointHeaderHashes,
|
|
35
39
|
fields.fees,
|
|
36
40
|
fields.constants,
|
|
@@ -58,6 +62,7 @@ export class RootRollupPublicInputs {
|
|
|
58
62
|
public static fromBuffer(buffer: Buffer | BufferReader): RootRollupPublicInputs {
|
|
59
63
|
const reader = BufferReader.asReader(buffer);
|
|
60
64
|
return new RootRollupPublicInputs(
|
|
65
|
+
Fr.fromBuffer(reader),
|
|
61
66
|
Fr.fromBuffer(reader),
|
|
62
67
|
Fr.fromBuffer(reader),
|
|
63
68
|
reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
|
|
@@ -88,6 +93,7 @@ export class RootRollupPublicInputs {
|
|
|
88
93
|
/** Creates a random instance. Used for testing only - will not prove/verify. */
|
|
89
94
|
static random() {
|
|
90
95
|
return new RootRollupPublicInputs(
|
|
96
|
+
Fr.random(),
|
|
91
97
|
Fr.random(),
|
|
92
98
|
Fr.random(),
|
|
93
99
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
|
package/src/tests/factories.ts
CHANGED
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
VK_TREE_HEIGHT,
|
|
44
44
|
} from '@aztec/constants';
|
|
45
45
|
import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
|
|
46
|
-
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
46
|
+
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
47
47
|
import { compact } from '@aztec/foundation/collection';
|
|
48
48
|
import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
|
|
49
49
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
@@ -88,6 +88,7 @@ import { PublicDataRead } from '../avm/public_data_read.js';
|
|
|
88
88
|
import { PublicDataWrite } from '../avm/public_data_write.js';
|
|
89
89
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
90
90
|
import { L2BlockHeader } from '../block/l2_block_header.js';
|
|
91
|
+
import type { L2Tips } from '../block/l2_block_source.js';
|
|
91
92
|
import {
|
|
92
93
|
type ContractClassPublic,
|
|
93
94
|
ContractDeploymentData,
|
|
@@ -164,7 +165,6 @@ import { NullifierLeaf, NullifierLeafPreimage } from '../trees/nullifier_leaf.js
|
|
|
164
165
|
import { PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '../trees/public_data_leaf.js';
|
|
165
166
|
import { BlockHeader } from '../tx/block_header.js';
|
|
166
167
|
import { CallContext } from '../tx/call_context.js';
|
|
167
|
-
import { ContentCommitment } from '../tx/content_commitment.js';
|
|
168
168
|
import { FunctionData } from '../tx/function_data.js';
|
|
169
169
|
import { GlobalVariables } from '../tx/global_variables.js';
|
|
170
170
|
import { PartialStateReference } from '../tx/partial_state_reference.js';
|
|
@@ -837,7 +837,6 @@ export function makeBlockRollupPublicInputs(seed = 0): BlockRollupPublicInputs {
|
|
|
837
837
|
makeSpongeBlob(seed + 0x600),
|
|
838
838
|
makeSpongeBlob(seed + 0x700),
|
|
839
839
|
BigInt(seed + 0x800),
|
|
840
|
-
BigInt(seed + 0x810),
|
|
841
840
|
fr(seed + 0x820),
|
|
842
841
|
fr(seed + 0x830),
|
|
843
842
|
fr(seed + 0x840),
|
|
@@ -852,10 +851,11 @@ export function makeCheckpointRollupPublicInputs(seed = 0) {
|
|
|
852
851
|
makeAppendOnlyTreeSnapshot(seed + 0x100),
|
|
853
852
|
makeAppendOnlyTreeSnapshot(seed + 0x200),
|
|
854
853
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
|
|
855
|
-
makeTuple(AZTEC_MAX_EPOCH_DURATION, () =>
|
|
856
|
-
|
|
854
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
|
|
855
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
857
856
|
makeBlobAccumulator(seed + 0x600),
|
|
858
|
-
|
|
857
|
+
makeBlobAccumulator(seed + 0x700),
|
|
858
|
+
makeFinalBlobBatchingChallenges(seed + 0x800),
|
|
859
859
|
);
|
|
860
860
|
}
|
|
861
861
|
|
|
@@ -887,20 +887,14 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
|
|
|
887
887
|
return new RootRollupPublicInputs(
|
|
888
888
|
fr(seed + 0x100),
|
|
889
889
|
fr(seed + 0x200),
|
|
890
|
-
|
|
890
|
+
fr(seed + 0x300),
|
|
891
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
|
|
891
892
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
892
893
|
makeEpochConstantData(seed + 0x600),
|
|
893
894
|
makeFinalBlobAccumulator(seed + 0x700),
|
|
894
895
|
);
|
|
895
896
|
}
|
|
896
897
|
|
|
897
|
-
/**
|
|
898
|
-
* Makes content commitment
|
|
899
|
-
*/
|
|
900
|
-
export function makeContentCommitment(seed = 0): ContentCommitment {
|
|
901
|
-
return new ContentCommitment(fr(seed + 0x100), fr(seed + 0x200), fr(seed + 0x300));
|
|
902
|
-
}
|
|
903
|
-
|
|
904
898
|
export function makeBlockHeader(
|
|
905
899
|
seed = 0,
|
|
906
900
|
overrides: Partial<FieldsOf<Omit<BlockHeader, 'globalVariables'>>> & Partial<FieldsOf<GlobalVariables>> = {},
|
|
@@ -924,7 +918,8 @@ export function makeL2BlockHeader(
|
|
|
924
918
|
) {
|
|
925
919
|
return new L2BlockHeader(
|
|
926
920
|
makeAppendOnlyTreeSnapshot(seed + 0x100),
|
|
927
|
-
overrides?.
|
|
921
|
+
overrides?.blobsHash ?? fr(seed + 0x200),
|
|
922
|
+
overrides?.inHash ?? fr(seed + 0x300),
|
|
928
923
|
overrides?.state ?? makeStateReference(seed + 0x600),
|
|
929
924
|
makeGlobalVariables((seed += 0x700), {
|
|
930
925
|
...(blockNumber !== undefined ? { blockNumber: BlockNumber(blockNumber) } : {}),
|
|
@@ -941,7 +936,8 @@ export function makeCheckpointHeader(seed = 0) {
|
|
|
941
936
|
return CheckpointHeader.from({
|
|
942
937
|
lastArchiveRoot: fr(seed + 0x100),
|
|
943
938
|
blockHeadersHash: fr(seed + 0x150),
|
|
944
|
-
|
|
939
|
+
blobsHash: fr(seed + 0x200),
|
|
940
|
+
inHash: fr(seed + 0x210),
|
|
945
941
|
slotNumber: SlotNumber(seed + 0x300),
|
|
946
942
|
timestamp: BigInt(seed + 0x400),
|
|
947
943
|
coinbase: makeEthAddress(seed + 0x500),
|
|
@@ -988,7 +984,7 @@ function makeCountedL2ToL1Message(seed = 0) {
|
|
|
988
984
|
return new CountedL2ToL1Message(makeL2ToL1Message(seed), seed + 2);
|
|
989
985
|
}
|
|
990
986
|
|
|
991
|
-
function makeScopedL2ToL1Message(seed = 1) {
|
|
987
|
+
export function makeScopedL2ToL1Message(seed = 1) {
|
|
992
988
|
return new ScopedL2ToL1Message(makeL2ToL1Message(seed), makeAztecAddress(seed + 3));
|
|
993
989
|
}
|
|
994
990
|
|
|
@@ -1741,3 +1737,43 @@ export async function randomTxScopedPublicL2Log(opts?: {
|
|
|
1741
1737
|
opts?.firstNullifier ?? Fr.random(),
|
|
1742
1738
|
);
|
|
1743
1739
|
}
|
|
1740
|
+
|
|
1741
|
+
/**
|
|
1742
|
+
* Creates L2Tips with all tips pointing to the same block number.
|
|
1743
|
+
* Useful for mocking aztecNode.getL2Tips() in tests.
|
|
1744
|
+
* @param blockNumber - The block number to use for all tips.
|
|
1745
|
+
* @param hash - Optional hash for the block (defaults to empty string).
|
|
1746
|
+
* @param checkpointNumber - Optional checkpoint number (defaults to blockNumber).
|
|
1747
|
+
* @param checkpointHash - Optional checkpoint hash (defaults to block hash).
|
|
1748
|
+
* @returns L2Tips object with all tips at the same block.
|
|
1749
|
+
*/
|
|
1750
|
+
export function makeL2Tips(
|
|
1751
|
+
blockNumber: number | BlockNumber,
|
|
1752
|
+
hash = '',
|
|
1753
|
+
checkpointNumber?: number | CheckpointNumber,
|
|
1754
|
+
checkpointHash?: string,
|
|
1755
|
+
): L2Tips {
|
|
1756
|
+
const bn = typeof blockNumber === 'number' ? BlockNumber(blockNumber) : blockNumber;
|
|
1757
|
+
const cpn =
|
|
1758
|
+
checkpointNumber !== undefined
|
|
1759
|
+
? typeof checkpointNumber === 'number'
|
|
1760
|
+
? CheckpointNumber(checkpointNumber)
|
|
1761
|
+
: checkpointNumber
|
|
1762
|
+
: CheckpointNumber(bn);
|
|
1763
|
+
const cph = checkpointHash ?? hash;
|
|
1764
|
+
return {
|
|
1765
|
+
proposed: { number: bn, hash },
|
|
1766
|
+
checkpointed: {
|
|
1767
|
+
block: { number: bn, hash },
|
|
1768
|
+
checkpoint: { number: cpn, hash: cph },
|
|
1769
|
+
},
|
|
1770
|
+
proven: {
|
|
1771
|
+
block: { number: bn, hash },
|
|
1772
|
+
checkpoint: { number: cpn, hash: cph },
|
|
1773
|
+
},
|
|
1774
|
+
finalized: {
|
|
1775
|
+
block: { number: bn, hash },
|
|
1776
|
+
checkpoint: { number: cpn, hash: cph },
|
|
1777
|
+
},
|
|
1778
|
+
};
|
|
1779
|
+
}
|