@aztec/stdlib 0.0.1-commit.03f7ef2 → 0.0.1-commit.1142ef1
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 +16 -10
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +3 -3
- 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/interfaces/world_state.d.ts +8 -6
- package/dest/interfaces/world_state.d.ts.map +1 -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/index.d.ts +1 -2
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +0 -1
- package/dest/logs/private_log.js +3 -1
- package/dest/logs/public_log.js +3 -1
- package/dest/logs/tx_scoped_l2_log.d.ts +18 -39
- package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
- package/dest/logs/tx_scoped_l2_log.js +29 -50
- 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 +38 -7
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +77 -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 +10 -3
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +12 -3
- package/dest/tx/tx_effect.d.ts +1 -1
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +6 -2
- 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 +7 -4
- 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/interfaces/world_state.ts +9 -7
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +5 -8
- package/src/logs/index.ts +0 -1
- package/src/logs/tx_scoped_l2_log.ts +37 -53
- 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 +98 -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 +11 -2
- package/src/tx/tx_effect.ts +3 -1
- package/src/tx/tx_execution_request.ts +2 -0
- package/dest/logs/log_with_tx_data.d.ts +0 -19
- package/dest/logs/log_with_tx_data.d.ts.map +0 -1
- package/dest/logs/log_with_tx_data.js +0 -49
- 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/logs/log_with_tx_data.ts +0 -46
- 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,
|
|
@@ -131,6 +132,7 @@ import { PublicKeys, computeAddress } from '../keys/index.js';
|
|
|
131
132
|
import { ContractClassLog, ContractClassLogFields } from '../logs/index.js';
|
|
132
133
|
import { PrivateLog } from '../logs/private_log.js';
|
|
133
134
|
import { FlatPublicLogs, PublicLog } from '../logs/public_log.js';
|
|
135
|
+
import { TxScopedL2Log } from '../logs/tx_scoped_l2_log.js';
|
|
134
136
|
import { CountedL2ToL1Message, L2ToL1Message, ScopedL2ToL1Message } from '../messaging/l2_to_l1_message.js';
|
|
135
137
|
import { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js';
|
|
136
138
|
import { ParityPublicInputs } from '../parity/parity_public_inputs.js';
|
|
@@ -163,7 +165,6 @@ import { NullifierLeaf, NullifierLeafPreimage } from '../trees/nullifier_leaf.js
|
|
|
163
165
|
import { PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '../trees/public_data_leaf.js';
|
|
164
166
|
import { BlockHeader } from '../tx/block_header.js';
|
|
165
167
|
import { CallContext } from '../tx/call_context.js';
|
|
166
|
-
import { ContentCommitment } from '../tx/content_commitment.js';
|
|
167
168
|
import { FunctionData } from '../tx/function_data.js';
|
|
168
169
|
import { GlobalVariables } from '../tx/global_variables.js';
|
|
169
170
|
import { PartialStateReference } from '../tx/partial_state_reference.js';
|
|
@@ -173,6 +174,7 @@ import { StateReference } from '../tx/state_reference.js';
|
|
|
173
174
|
import { TreeSnapshots } from '../tx/tree_snapshots.js';
|
|
174
175
|
import { TxConstantData } from '../tx/tx_constant_data.js';
|
|
175
176
|
import { TxContext } from '../tx/tx_context.js';
|
|
177
|
+
import { TxHash } from '../tx/tx_hash.js';
|
|
176
178
|
import { TxRequest } from '../tx/tx_request.js';
|
|
177
179
|
import { Vector } from '../types/index.js';
|
|
178
180
|
import { VkData } from '../vks/index.js';
|
|
@@ -835,7 +837,6 @@ export function makeBlockRollupPublicInputs(seed = 0): BlockRollupPublicInputs {
|
|
|
835
837
|
makeSpongeBlob(seed + 0x600),
|
|
836
838
|
makeSpongeBlob(seed + 0x700),
|
|
837
839
|
BigInt(seed + 0x800),
|
|
838
|
-
BigInt(seed + 0x810),
|
|
839
840
|
fr(seed + 0x820),
|
|
840
841
|
fr(seed + 0x830),
|
|
841
842
|
fr(seed + 0x840),
|
|
@@ -850,10 +851,11 @@ export function makeCheckpointRollupPublicInputs(seed = 0) {
|
|
|
850
851
|
makeAppendOnlyTreeSnapshot(seed + 0x100),
|
|
851
852
|
makeAppendOnlyTreeSnapshot(seed + 0x200),
|
|
852
853
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
|
|
853
|
-
makeTuple(AZTEC_MAX_EPOCH_DURATION, () =>
|
|
854
|
-
|
|
854
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
|
|
855
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
855
856
|
makeBlobAccumulator(seed + 0x600),
|
|
856
|
-
|
|
857
|
+
makeBlobAccumulator(seed + 0x700),
|
|
858
|
+
makeFinalBlobBatchingChallenges(seed + 0x800),
|
|
857
859
|
);
|
|
858
860
|
}
|
|
859
861
|
|
|
@@ -885,20 +887,14 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
|
|
|
885
887
|
return new RootRollupPublicInputs(
|
|
886
888
|
fr(seed + 0x100),
|
|
887
889
|
fr(seed + 0x200),
|
|
888
|
-
|
|
890
|
+
fr(seed + 0x300),
|
|
891
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
|
|
889
892
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
890
893
|
makeEpochConstantData(seed + 0x600),
|
|
891
894
|
makeFinalBlobAccumulator(seed + 0x700),
|
|
892
895
|
);
|
|
893
896
|
}
|
|
894
897
|
|
|
895
|
-
/**
|
|
896
|
-
* Makes content commitment
|
|
897
|
-
*/
|
|
898
|
-
export function makeContentCommitment(seed = 0): ContentCommitment {
|
|
899
|
-
return new ContentCommitment(fr(seed + 0x100), fr(seed + 0x200), fr(seed + 0x300));
|
|
900
|
-
}
|
|
901
|
-
|
|
902
898
|
export function makeBlockHeader(
|
|
903
899
|
seed = 0,
|
|
904
900
|
overrides: Partial<FieldsOf<Omit<BlockHeader, 'globalVariables'>>> & Partial<FieldsOf<GlobalVariables>> = {},
|
|
@@ -922,7 +918,8 @@ export function makeL2BlockHeader(
|
|
|
922
918
|
) {
|
|
923
919
|
return new L2BlockHeader(
|
|
924
920
|
makeAppendOnlyTreeSnapshot(seed + 0x100),
|
|
925
|
-
overrides?.
|
|
921
|
+
overrides?.blobsHash ?? fr(seed + 0x200),
|
|
922
|
+
overrides?.inHash ?? fr(seed + 0x300),
|
|
926
923
|
overrides?.state ?? makeStateReference(seed + 0x600),
|
|
927
924
|
makeGlobalVariables((seed += 0x700), {
|
|
928
925
|
...(blockNumber !== undefined ? { blockNumber: BlockNumber(blockNumber) } : {}),
|
|
@@ -939,7 +936,8 @@ export function makeCheckpointHeader(seed = 0) {
|
|
|
939
936
|
return CheckpointHeader.from({
|
|
940
937
|
lastArchiveRoot: fr(seed + 0x100),
|
|
941
938
|
blockHeadersHash: fr(seed + 0x150),
|
|
942
|
-
|
|
939
|
+
blobsHash: fr(seed + 0x200),
|
|
940
|
+
inHash: fr(seed + 0x210),
|
|
943
941
|
slotNumber: SlotNumber(seed + 0x300),
|
|
944
942
|
timestamp: BigInt(seed + 0x400),
|
|
945
943
|
coinbase: makeEthAddress(seed + 0x500),
|
|
@@ -986,7 +984,7 @@ function makeCountedL2ToL1Message(seed = 0) {
|
|
|
986
984
|
return new CountedL2ToL1Message(makeL2ToL1Message(seed), seed + 2);
|
|
987
985
|
}
|
|
988
986
|
|
|
989
|
-
function makeScopedL2ToL1Message(seed = 1) {
|
|
987
|
+
export function makeScopedL2ToL1Message(seed = 1) {
|
|
990
988
|
return new ScopedL2ToL1Message(makeL2ToL1Message(seed), makeAztecAddress(seed + 3));
|
|
991
989
|
}
|
|
992
990
|
|
|
@@ -1696,3 +1694,86 @@ export async function makeAvmCircuitInputs(
|
|
|
1696
1694
|
export function fr(n: number): Fr {
|
|
1697
1695
|
return new Fr(BigInt(n));
|
|
1698
1696
|
}
|
|
1697
|
+
|
|
1698
|
+
/**
|
|
1699
|
+
* Creates a random TxScopedL2Log with private log data.
|
|
1700
|
+
*/
|
|
1701
|
+
export function randomTxScopedPrivateL2Log(opts?: {
|
|
1702
|
+
tag?: Fr;
|
|
1703
|
+
txHash?: TxHash;
|
|
1704
|
+
blockNumber?: number;
|
|
1705
|
+
blockTimestamp?: bigint;
|
|
1706
|
+
noteHashes?: Fr[];
|
|
1707
|
+
firstNullifier?: Fr;
|
|
1708
|
+
}) {
|
|
1709
|
+
const log = PrivateLog.random(opts?.tag);
|
|
1710
|
+
return new TxScopedL2Log(
|
|
1711
|
+
opts?.txHash ?? TxHash.random(),
|
|
1712
|
+
BlockNumber(opts?.blockNumber ?? 1),
|
|
1713
|
+
opts?.blockTimestamp ?? 1n,
|
|
1714
|
+
log.getEmittedFields(),
|
|
1715
|
+
opts?.noteHashes ?? [Fr.random(), Fr.random()],
|
|
1716
|
+
opts?.firstNullifier ?? Fr.random(),
|
|
1717
|
+
);
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* Creates a random TxScopedL2Log with public log data.
|
|
1722
|
+
*/
|
|
1723
|
+
export async function randomTxScopedPublicL2Log(opts?: {
|
|
1724
|
+
txHash?: TxHash;
|
|
1725
|
+
blockNumber?: number;
|
|
1726
|
+
blockTimestamp?: bigint;
|
|
1727
|
+
noteHashes?: Fr[];
|
|
1728
|
+
firstNullifier?: Fr;
|
|
1729
|
+
}) {
|
|
1730
|
+
const log = await PublicLog.random();
|
|
1731
|
+
return new TxScopedL2Log(
|
|
1732
|
+
opts?.txHash ?? TxHash.random(),
|
|
1733
|
+
BlockNumber(opts?.blockNumber ?? 1),
|
|
1734
|
+
opts?.blockTimestamp ?? 1n,
|
|
1735
|
+
log.getEmittedFields(),
|
|
1736
|
+
opts?.noteHashes ?? [Fr.random(), Fr.random()],
|
|
1737
|
+
opts?.firstNullifier ?? Fr.random(),
|
|
1738
|
+
);
|
|
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
|
+
}
|