@aztec/stdlib 6.0.0-nightly.20260810 → 6.0.0-nightly.20260821
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/abi.d.ts +4 -3
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +5 -1
- package/dest/abi/contract_artifact.d.ts +7 -2
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +18 -19
- package/dest/avm/avm.d.ts +3 -2
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +9 -3
- package/dest/avm/avm_proving_request.d.ts +70 -70
- package/dest/block/l2_block.d.ts +1 -2
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +2 -3
- package/dest/block/l2_block_source.d.ts +3 -6
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +11 -20
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +12 -116
- package/dest/checkpoint/checkpoint_data.d.ts +14 -2
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint_data.js +2 -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/checkpoint/previous_checkpoint_inbox_rolling_hash.d.ts +21 -0
- package/dest/checkpoint/previous_checkpoint_inbox_rolling_hash.d.ts.map +1 -0
- package/dest/checkpoint/previous_checkpoint_inbox_rolling_hash.js +34 -0
- package/dest/checkpoint/simulation_overrides.d.ts +2 -2
- package/dest/checkpoint/simulation_overrides.d.ts.map +1 -1
- package/dest/checkpoint/simulation_overrides.js +11 -8
- package/dest/config/network-consensus-config.d.ts +4 -3
- package/dest/config/network-consensus-config.d.ts.map +1 -1
- package/dest/config/network-consensus-config.js +9 -4
- package/dest/config/node-rpc-config.d.ts +13 -1
- package/dest/config/node-rpc-config.d.ts.map +1 -1
- package/dest/config/node-rpc-config.js +34 -1
- package/dest/deserialization/index.d.ts +17 -17
- package/dest/deserialization/index.d.ts.map +1 -1
- package/dest/deserialization/index.js +18 -18
- package/dest/gas/gas_settings.d.ts +17 -5
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +4 -4
- package/dest/gas/tx_gas_limits.d.ts +3 -4
- package/dest/gas/tx_gas_limits.d.ts.map +1 -1
- package/dest/gas/tx_gas_limits.js +4 -5
- package/dest/interfaces/archiver.d.ts +2 -2
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +32 -5
- package/dest/interfaces/aztec-node-admin.d.ts +2 -1
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.d.ts +22 -4
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +11 -9
- package/dest/interfaces/block-builder.d.ts +11 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +7 -1
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +2 -1
- package/dest/interfaces/p2p.d.ts +18 -1
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +8 -0
- package/dest/interfaces/proving-job.d.ts +17 -42
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +16 -47
- package/dest/interfaces/server_circuit_prover.d.ts +8 -15
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +7 -7
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/messaging/append_l1_to_l2_messages.d.ts +5 -5
- package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -1
- package/dest/messaging/append_l1_to_l2_messages.js +4 -8
- package/dest/messaging/inbox_bucket.d.ts +77 -0
- package/dest/messaging/inbox_bucket.d.ts.map +1 -0
- package/dest/messaging/inbox_bucket.js +73 -0
- package/dest/messaging/inbox_consumption.d.ts +55 -0
- package/dest/messaging/inbox_consumption.d.ts.map +1 -0
- package/dest/messaging/inbox_consumption.js +53 -0
- package/dest/messaging/inbox_rolling_hash.d.ts +16 -0
- package/dest/messaging/inbox_rolling_hash.d.ts.map +1 -0
- package/dest/messaging/inbox_rolling_hash.js +23 -0
- package/dest/messaging/index.d.ts +6 -3
- package/dest/messaging/index.d.ts.map +1 -1
- package/dest/messaging/index.js +5 -2
- package/dest/messaging/l1_to_l2_message_bundle.d.ts +31 -0
- package/dest/messaging/l1_to_l2_message_bundle.d.ts.map +1 -0
- package/dest/messaging/l1_to_l2_message_bundle.js +51 -0
- package/dest/messaging/l1_to_l2_message_source.d.ts +44 -10
- package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message_sponge.d.ts +40 -0
- package/dest/messaging/l1_to_l2_message_sponge.d.ts.map +1 -0
- package/dest/messaging/l1_to_l2_message_sponge.js +56 -0
- package/dest/noir/index.d.ts +3 -3
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/p2p/block_proposal.d.ts +24 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +42 -20
- package/dest/p2p/checkpoint_attestation.d.ts +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +13 -3
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +26 -8
- package/dest/p2p/consensus_payload.d.ts +1 -1
- package/dest/p2p/index.d.ts +2 -1
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +1 -0
- package/dest/p2p/validated_proposal.d.ts +35 -0
- package/dest/p2p/validated_proposal.d.ts.map +1 -0
- package/dest/p2p/validated_proposal.js +17 -0
- package/dest/p2p/wire_compat_fixtures.d.ts +7 -0
- package/dest/p2p/wire_compat_fixtures.d.ts.map +1 -0
- package/dest/p2p/wire_compat_fixtures.js +14 -0
- package/dest/parity/inbox_parity_private_inputs.d.ts +61 -0
- package/dest/parity/inbox_parity_private_inputs.d.ts.map +1 -0
- package/dest/parity/inbox_parity_private_inputs.js +79 -0
- package/dest/parity/index.d.ts +2 -3
- package/dest/parity/index.d.ts.map +1 -1
- package/dest/parity/index.js +1 -2
- package/dest/parity/parity_public_inputs.d.ts +15 -14
- package/dest/parity/parity_public_inputs.d.ts.map +1 -1
- package/dest/parity/parity_public_inputs.js +13 -15
- package/dest/proofs/proving_request_type.d.ts +11 -14
- package/dest/proofs/proving_request_type.d.ts.map +1 -1
- package/dest/proofs/proving_request_type.js +10 -13
- package/dest/rollup/block_constant_data.d.ts +8 -8
- package/dest/rollup/block_constant_data.js +4 -4
- package/dest/rollup/block_rollup_public_inputs.d.ts +18 -6
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.js +14 -7
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +109 -113
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/block_root_rollup_private_inputs.js +79 -130
- package/dest/rollup/checkpoint_header.d.ts +14 -6
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +18 -14
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +22 -2
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +14 -3
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +27 -6
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +17 -4
- package/dest/rollup/root_rollup_public_inputs.d.ts +10 -2
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +9 -3
- package/dest/stats/stats.d.ts +2 -2
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +7 -7
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +26 -22
- package/dest/tests/fixtures.d.ts +1 -1
- package/dest/tests/fixtures.d.ts.map +1 -1
- package/dest/tests/fixtures.js +2 -0
- package/dest/tests/mocks.d.ts +4 -2
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +4 -7
- package/dest/tx/state_reference.d.ts +5 -2
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +5 -5
- package/package.json +8 -8
- package/src/abi/abi.ts +7 -2
- package/src/abi/contract_artifact.ts +20 -23
- package/src/avm/avm.ts +11 -1
- package/src/block/l2_block.ts +2 -3
- package/src/block/l2_block_source.ts +2 -5
- package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +17 -143
- package/src/checkpoint/checkpoint_data.ts +14 -1
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/previous_checkpoint_inbox_rolling_hash.ts +46 -0
- package/src/checkpoint/simulation_overrides.ts +11 -8
- package/src/config/network-consensus-config.ts +17 -4
- package/src/config/node-rpc-config.ts +51 -1
- package/src/deserialization/index.ts +18 -18
- package/src/gas/README.md +4 -3
- package/src/gas/gas_settings.ts +7 -3
- package/src/gas/tx_gas_limits.ts +4 -12
- package/src/interfaces/archiver.ts +19 -2
- package/src/interfaces/aztec-node.ts +33 -12
- package/src/interfaces/block-builder.ts +10 -1
- package/src/interfaces/configs.ts +6 -0
- package/src/interfaces/p2p.ts +21 -0
- package/src/interfaces/proving-job.ts +19 -70
- package/src/interfaces/server_circuit_prover.ts +13 -37
- package/src/interfaces/validator.ts +6 -5
- package/src/kernel/private_kernel_reset_dimensions.ts +1 -1
- package/src/messaging/append_l1_to_l2_messages.ts +5 -13
- package/src/messaging/inbox_bucket.ts +125 -0
- package/src/messaging/inbox_consumption.ts +74 -0
- package/src/messaging/inbox_rolling_hash.ts +24 -0
- package/src/messaging/index.ts +5 -2
- package/src/messaging/l1_to_l2_message_bundle.ts +65 -0
- package/src/messaging/l1_to_l2_message_source.ts +48 -10
- package/src/messaging/l1_to_l2_message_sponge.ts +69 -0
- package/src/noir/index.ts +1 -2
- package/src/p2p/block_proposal.ts +41 -28
- package/src/p2p/checkpoint_proposal.ts +31 -6
- package/src/p2p/index.ts +1 -0
- package/src/p2p/validated_proposal.ts +43 -0
- package/src/p2p/wire_compat_fixtures.ts +23 -0
- package/src/parity/inbox_parity_private_inputs.ts +116 -0
- package/src/parity/index.ts +1 -2
- package/src/parity/parity_public_inputs.ts +12 -14
- package/src/proofs/proving_request_type.ts +2 -5
- package/src/rollup/block_constant_data.ts +4 -4
- package/src/rollup/block_rollup_public_inputs.ts +14 -5
- package/src/rollup/block_root_rollup_private_inputs.ts +117 -153
- package/src/rollup/checkpoint_header.ts +17 -13
- package/src/rollup/checkpoint_rollup_public_inputs.ts +15 -0
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +16 -3
- package/src/rollup/root_rollup_public_inputs.ts +10 -0
- package/src/stats/stats.ts +4 -5
- package/src/tests/factories.ts +38 -32
- package/src/tests/fixtures.ts +3 -0
- package/src/tests/mocks.ts +6 -7
- package/src/tx/state_reference.ts +5 -12
- package/dest/messaging/in_hash.d.ts +0 -6
- package/dest/messaging/in_hash.d.ts.map +0 -1
- package/dest/messaging/in_hash.js +0 -10
- package/dest/messaging/inbox_leaf.d.ts +0 -25
- package/dest/messaging/inbox_leaf.d.ts.map +0 -1
- package/dest/messaging/inbox_leaf.js +0 -42
- package/dest/parity/parity_base_private_inputs.d.ts +0 -39
- package/dest/parity/parity_base_private_inputs.d.ts.map +0 -1
- package/dest/parity/parity_base_private_inputs.js +0 -51
- package/dest/parity/parity_root_private_inputs.d.ts +0 -39
- package/dest/parity/parity_root_private_inputs.d.ts.map +0 -1
- package/dest/parity/parity_root_private_inputs.js +0 -46
- package/src/messaging/in_hash.ts +0 -12
- package/src/messaging/inbox_leaf.ts +0 -44
- package/src/parity/parity_base_private_inputs.ts +0 -71
- package/src/parity/parity_root_private_inputs.ts +0 -64
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { AvmCircuitInputs } from '../avm/avm.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { InboxParityPrivateInputs } from '../parity/inbox_parity_private_inputs.js';
|
|
4
4
|
import type { ParityPublicInputs } from '../parity/parity_public_inputs.js';
|
|
5
|
-
import type { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js';
|
|
6
5
|
import type { RecursiveProof } from '../proofs/recursive_proof.js';
|
|
7
6
|
import type { BlockMergeRollupPrivateInputs } from '../rollup/block_merge_rollup_private_inputs.js';
|
|
8
7
|
import type { BlockRollupPublicInputs } from '../rollup/block_rollup_public_inputs.js';
|
|
9
|
-
import type {
|
|
8
|
+
import type { BlockRootNoTxsRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs } from '../rollup/block_root_rollup_private_inputs.js';
|
|
10
9
|
import type { CheckpointMergeRollupPrivateInputs } from '../rollup/checkpoint_merge_rollup_private_inputs.js';
|
|
11
10
|
import type { CheckpointRollupPublicInputs } from '../rollup/checkpoint_rollup_public_inputs.js';
|
|
12
11
|
import type { CheckpointPaddingRollupPrivateInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '../rollup/checkpoint_root_rollup_private_inputs.js';
|
|
@@ -25,15 +24,11 @@ import type { PublicInputsAndRecursiveProof } from './proving-job.js';
|
|
|
25
24
|
*/
|
|
26
25
|
export interface ServerCircuitProver {
|
|
27
26
|
/**
|
|
28
|
-
* Creates
|
|
29
|
-
*
|
|
30
|
-
|
|
31
|
-
getBaseParityProof(inputs: ParityBasePrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
32
|
-
/**
|
|
33
|
-
* Creates a proof for the given input.
|
|
34
|
-
* @param input - Input to the circuit.
|
|
27
|
+
* Creates the checkpoint's single InboxParity proof. The circuit variant (ladder size) is selected from
|
|
28
|
+
* `inputs.size`.
|
|
29
|
+
* @param inputs - Input to the circuit.
|
|
35
30
|
*/
|
|
36
|
-
|
|
31
|
+
getInboxParityProof(inputs: InboxParityPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
37
32
|
getPublicChonkVerifierProof(inputs: PublicChonkVerifierPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
38
33
|
/**
|
|
39
34
|
* Creates a proof for the given input.
|
|
@@ -50,11 +45,9 @@ export interface ServerCircuitProver {
|
|
|
50
45
|
* Creates a proof for the given input.
|
|
51
46
|
* @param input - Input to the circuit.
|
|
52
47
|
*/
|
|
53
|
-
getBlockRootFirstRollupProof(input: BlockRootFirstRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
54
|
-
getBlockRootSingleTxFirstRollupProof(input: BlockRootSingleTxFirstRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
55
|
-
getBlockRootEmptyTxFirstRollupProof(input: BlockRootEmptyTxFirstRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
56
48
|
getBlockRootRollupProof(input: BlockRootRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
57
49
|
getBlockRootSingleTxRollupProof(input: BlockRootSingleTxRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
50
|
+
getBlockRootNoTxsRollupProof(input: BlockRootNoTxsRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
58
51
|
/**
|
|
59
52
|
* Creates a proof for the given input.
|
|
60
53
|
* @param input - Input to the circuit.
|
|
@@ -95,4 +88,4 @@ export interface ClientProtocolCircuitVerifier {
|
|
|
95
88
|
*/
|
|
96
89
|
stop(): Promise<void>;
|
|
97
90
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyX2NpcmN1aXRfcHJvdmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zZXJ2ZXJfY2lyY3VpdF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQ1YsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFDekMsc0JBQXNCLEVBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEcsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFDVixpQ0FBaUMsRUFDakMsNEJBQTRCLEVBQzVCLG9DQUFvQyxFQUNyQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDOUcsT0FBTyxLQUFLLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixvQ0FBb0MsRUFDcEMsaUNBQWlDLEVBQ2pDLDRDQUE0QyxFQUM3QyxNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0csT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRyxPQUFPLEtB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/interfaces/server_circuit_prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"server_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/interfaces/server_circuit_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import type { Signature } from '@aztec/foundation/eth-signature';
|
|
6
6
|
import type { SequencerConfig, SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import type { BlockProposal, BlockProposalOptions, CheckpointAttestation, CheckpointProposal, CheckpointProposalOptions } from '@aztec/stdlib/p2p';
|
|
7
|
+
import type { BlockProposal, BlockProposalOptions, CheckpointAttestation, CheckpointProposal, CheckpointProposalOptions, ValidatedBlockProposal, ValidatedCheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
8
8
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
9
9
|
import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
10
10
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -155,20 +155,20 @@ export declare const ValidatorClientFullConfigSchema: z.ZodObject<{
|
|
|
155
155
|
export interface Validator {
|
|
156
156
|
start(): Promise<void>;
|
|
157
157
|
updateConfig(config: Partial<ValidatorClientFullConfig>): void;
|
|
158
|
-
createBlockProposal(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: number,
|
|
158
|
+
createBlockProposal(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: number, archive: Fr, txs: Tx[], proposerAddress: EthAddress | undefined, options: BlockProposalOptions): Promise<BlockProposal | undefined>;
|
|
159
159
|
/** Creates a checkpoint proposal for the last block in a checkpoint */
|
|
160
160
|
createCheckpointProposal(checkpointHeader: CheckpointHeader, archive: Fr, checkpointNumber: CheckpointNumber, feeAssetPriceModifier: bigint, lastBlockProposal: BlockProposal | undefined, proposerAddress: EthAddress | undefined, options: CheckpointProposalOptions): Promise<CheckpointProposal>;
|
|
161
161
|
/**
|
|
162
|
-
* Validate a block proposal from a peer.
|
|
162
|
+
* Validate a block proposal from a peer that has already passed p2p ingress validation.
|
|
163
163
|
* Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
|
|
164
164
|
* @returns true if the proposal is valid, false otherwise
|
|
165
165
|
*/
|
|
166
|
-
validateBlockProposal(proposal:
|
|
166
|
+
validateBlockProposal(proposal: ValidatedBlockProposal, sender: PeerId): Promise<boolean>;
|
|
167
167
|
/**
|
|
168
|
-
* Validate and attest to a checkpoint proposal from a peer.
|
|
168
|
+
* Validate and attest to a checkpoint proposal from a peer that has already passed p2p ingress validation.
|
|
169
169
|
* @returns Checkpoint attestations if valid, undefined otherwise
|
|
170
170
|
*/
|
|
171
|
-
attestToCheckpointProposal(proposal:
|
|
171
|
+
attestToCheckpointProposal(proposal: ValidatedCheckpointProposalCore, sender: PeerId): Promise<CheckpointAttestation[] | undefined>;
|
|
172
172
|
broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
|
|
173
173
|
/** Collect own attestations for a checkpoint proposal (used when skipping p2p attestation collection) */
|
|
174
174
|
collectOwnAttestations(proposal: CheckpointProposal, checkpointNumber: CheckpointNumber): Promise<CheckpointAttestation[]>;
|
|
@@ -176,4 +176,4 @@ export interface Validator {
|
|
|
176
176
|
collectAttestations(proposal: CheckpointProposal, required: number, deadline: Date, checkpointNumber: CheckpointNumber): Promise<CheckpointAttestation[]>;
|
|
177
177
|
signAttestationsAndSigners(attestationsAndSigners: CommitteeAttestationsAndSigners, proposer: EthAddress, slot: SlotNumber, checkpointNumber: CheckpointNumber): Promise<Signature>;
|
|
178
178
|
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFDVixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDaEMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sS0FBSyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBRXRCLEtBQUssdUJBQXVCLEVBRTdC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/interfaces/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { MerkleTreeWriteOperations } from '../interfaces/merkle_tree_operations.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Appends a block's real L1→L2 message leaves (unpadded, at compact indices) to the L1→L2 message tree of `db`.
|
|
5
|
+
* Use whenever a fork at "state before a block" needs to mirror what the world-state
|
|
6
|
+
* synchronizer inserts at sync time.
|
|
7
7
|
*/
|
|
8
8
|
export declare function appendL1ToL2MessagesToTree(db: MerkleTreeWriteOperations, l1ToL2Messages: Fr[]): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX2wxX3RvX2wyX21lc3NhZ2VzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVzc2FnaW5nL2FwcGVuZF9sMV90b19sMl9tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3pGOzs7O0dBSUc7QUFDSCx3QkFBc0IsMEJBQTBCLENBQUMsRUFBRSxFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRW5IIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append_l1_to_l2_messages.d.ts","sourceRoot":"","sources":["../../src/messaging/append_l1_to_l2_messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"append_l1_to_l2_messages.d.ts","sourceRoot":"","sources":["../../src/messaging/append_l1_to_l2_messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAGzF;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,yBAAyB,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnH"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
1
|
import { MerkleTreeId } from '../trees/merkle_tree_id.js';
|
|
5
2
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
3
|
+
* Appends a block's real L1→L2 message leaves (unpadded, at compact indices) to the L1→L2 message tree of `db`.
|
|
4
|
+
* Use whenever a fork at "state before a block" needs to mirror what the world-state
|
|
5
|
+
* synchronizer inserts at sync time.
|
|
9
6
|
*/ export async function appendL1ToL2MessagesToTree(db, l1ToL2Messages) {
|
|
10
|
-
|
|
11
|
-
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, padded);
|
|
7
|
+
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
12
8
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { type ZodFor } from '@aztec/foundation/schemas';
|
|
3
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
4
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Snapshot of an Inbox rolling-hash bucket as tracked by the archiver.
|
|
8
|
+
*
|
|
9
|
+
* A bucket accumulates the message leaves inserted into the Inbox within a single L1 block (up to a per-bucket
|
|
10
|
+
* maximum, after which further messages in the same block spill into the next bucket). Buckets are identified by
|
|
11
|
+
* a dense, monotonically increasing sequence number and keyed for recency lookups by the L1 block timestamp at
|
|
12
|
+
* which they were opened. Mirrors the on-chain `InboxBucket` struct plus the fields the archiver derives while
|
|
13
|
+
* syncing.
|
|
14
|
+
*/
|
|
15
|
+
export type InboxBucket = {
|
|
16
|
+
/** Dense, monotonically increasing sequence number of this bucket in the Inbox ring. */
|
|
17
|
+
seq: bigint;
|
|
18
|
+
/** Consensus rolling hash (truncated sha256 chain) after the last message absorbed into this bucket. */
|
|
19
|
+
inboxRollingHash: Fr;
|
|
20
|
+
/** Cumulative number of messages inserted into the Inbox up to and including this bucket. */
|
|
21
|
+
totalMsgCount: bigint;
|
|
22
|
+
/** L1 block timestamp at which this bucket was opened; the recency key for lag/cutoff comparisons, in seconds. */
|
|
23
|
+
timestamp: bigint;
|
|
24
|
+
/** Number of messages absorbed into this bucket. */
|
|
25
|
+
msgCount: number;
|
|
26
|
+
/** Global leaf index of the last message absorbed into this bucket. */
|
|
27
|
+
lastMessageIndex: bigint;
|
|
28
|
+
};
|
|
29
|
+
export declare const InboxBucketSchema: z.ZodObject<{
|
|
30
|
+
seq: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
|
|
31
|
+
inboxRollingHash: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
|
|
32
|
+
totalMsgCount: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
|
|
33
|
+
timestamp: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
|
|
34
|
+
msgCount: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>;
|
|
35
|
+
lastMessageIndex: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
/**
|
|
38
|
+
* Reference to a settled Inbox rolling-hash bucket, carried alongside a block proposal so a
|
|
39
|
+
* validator can look the bucket up in its own Inbox view and derive the consumed-message bundle itself, rather than
|
|
40
|
+
* trusting a proposer-supplied message list. Pins the bucket by its dense sequence number and recency-key timestamp
|
|
41
|
+
* and asserts the expected consensus rolling hash. A wrong reference can only cause a lookup miss or hash mismatch; it
|
|
42
|
+
* can never change what a validator accepts, because the checkpoint header's `inboxRollingHash` remains the signed
|
|
43
|
+
* consensus commitment (mirrors the unsigned bucket hint on L1's `Rollup.propose`).
|
|
44
|
+
*/
|
|
45
|
+
export declare class InboxBucketRef {
|
|
46
|
+
/** Dense, monotonically increasing sequence number of the referenced bucket in the Inbox ring. */
|
|
47
|
+
readonly bucketSeq: bigint;
|
|
48
|
+
/** L1 block timestamp (in seconds) at which the referenced bucket was opened; its recency key. */
|
|
49
|
+
readonly bucketTimestamp: bigint;
|
|
50
|
+
/** Consensus rolling hash (truncated sha256 chain) after the last message absorbed into the referenced bucket. */
|
|
51
|
+
readonly inboxRollingHash: Fr;
|
|
52
|
+
constructor(
|
|
53
|
+
/** Dense, monotonically increasing sequence number of the referenced bucket in the Inbox ring. */
|
|
54
|
+
bucketSeq: bigint,
|
|
55
|
+
/** L1 block timestamp (in seconds) at which the referenced bucket was opened; its recency key. */
|
|
56
|
+
bucketTimestamp: bigint,
|
|
57
|
+
/** Consensus rolling hash (truncated sha256 chain) after the last message absorbed into the referenced bucket. */
|
|
58
|
+
inboxRollingHash: Fr);
|
|
59
|
+
/** Serialized size in bytes: two uint64 fields plus one field element. */
|
|
60
|
+
static readonly SIZE: number;
|
|
61
|
+
static get schema(): ZodFor<InboxBucketRef>;
|
|
62
|
+
static from(fields: FieldsOf<InboxBucketRef>): InboxBucketRef;
|
|
63
|
+
/** Derives a wire reference from a bucket snapshot as tracked by the archiver. */
|
|
64
|
+
static fromBucket(bucket: InboxBucket): InboxBucketRef;
|
|
65
|
+
toBuffer(): Buffer;
|
|
66
|
+
static fromBuffer(buffer: Buffer | BufferReader): InboxBucketRef;
|
|
67
|
+
getSize(): number;
|
|
68
|
+
equals(other: InboxBucketRef): boolean;
|
|
69
|
+
static empty(): InboxBucketRef;
|
|
70
|
+
static random(): InboxBucketRef;
|
|
71
|
+
toInspect(): {
|
|
72
|
+
bucketSeq: string;
|
|
73
|
+
bucketTimestamp: string;
|
|
74
|
+
inboxRollingHash: `0x${string}`;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfYnVja2V0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVzc2FnaW5nL2luYm94X2J1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFXLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBdUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxNQUFNLFdBQVcsR0FBRztJQUN4Qix3RkFBd0Y7SUFDeEYsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUNaLHdHQUF3RztJQUN4RyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7SUFDckIsNkZBQTZGO0lBQzdGLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsa0hBQWtIO0lBQ2xILFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsb0RBQW9EO0lBQ3BELFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsdUVBQXVFO0lBQ3ZFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUMxQixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQjs7Ozs7OztpQkFPSyxDQUFDO0FBRXBDOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxjQUFjO0lBRXZCLGtHQUFrRzthQUNsRixTQUFTLEVBQUUsTUFBTTtJQUNqQyxrR0FBa0c7YUFDbEYsZUFBZSxFQUFFLE1BQU07SUFDdkMsa0hBQWtIO2FBQ2xHLGdCQUFnQixFQUFFLEVBQUU7SUFOdEM7SUFDRSxrR0FBa0c7SUFDbEYsU0FBUyxFQUFFLE1BQU07SUFDakMsa0dBQWtHO0lBQ2xGLGVBQWUsRUFBRSxNQUFNO0lBQ3ZDLGtIQUFrSDtJQUNsRyxnQkFBZ0IsRUFBRSxFQUFFLEVBQ2xDO0lBRUosMEVBQTBFO0lBQzFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUE0QjtJQUVoRCxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FRMUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUU1RDtJQUVELGtGQUFrRjtJQUNsRixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsY0FBYyxDQUVyRDtJQUVELFFBQVEsSUFBSSxNQUFNLENBTWpCO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxjQUFjLENBRy9EO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FFaEI7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBTXJDO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxjQUFjLENBRTdCO0lBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBTTlCO0lBRUQsU0FBUzs7OztNQU1SO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox_bucket.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox_bucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAuC,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC;IACZ,wGAAwG;IACxG,gBAAgB,EAAE,EAAE,CAAC;IACrB,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,kHAAkH;IAClH,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;iBAOK,CAAC;AAEpC;;;;;;;GAOG;AACH,qBAAa,cAAc;IAEvB,kGAAkG;aAClF,SAAS,EAAE,MAAM;IACjC,kGAAkG;aAClF,eAAe,EAAE,MAAM;IACvC,kHAAkH;aAClG,gBAAgB,EAAE,EAAE;IANtC;IACE,kGAAkG;IAClF,SAAS,EAAE,MAAM;IACjC,kGAAkG;IAClF,eAAe,EAAE,MAAM;IACvC,kHAAkH;IAClG,gBAAgB,EAAE,EAAE,EAClC;IAEJ,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,SAA4B;IAEhD,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,CAQ1C;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,cAAc,CAE5D;IAED,kFAAkF;IAClF,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CAErD;IAED,QAAQ,IAAI,MAAM,CAMjB;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,cAAc,CAG/D;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAMrC;IAED,MAAM,CAAC,KAAK,IAAI,cAAc,CAE7B;IAED,MAAM,CAAC,MAAM,IAAI,cAAc,CAM9B;IAED,SAAS;;;;MAMR;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { schemas } from '@aztec/foundation/schemas';
|
|
3
|
+
import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export const InboxBucketSchema = z.object({
|
|
6
|
+
seq: schemas.BigInt,
|
|
7
|
+
inboxRollingHash: Fr.schema,
|
|
8
|
+
totalMsgCount: schemas.BigInt,
|
|
9
|
+
timestamp: schemas.BigInt,
|
|
10
|
+
msgCount: schemas.Integer,
|
|
11
|
+
lastMessageIndex: schemas.BigInt
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Reference to a settled Inbox rolling-hash bucket, carried alongside a block proposal so a
|
|
15
|
+
* validator can look the bucket up in its own Inbox view and derive the consumed-message bundle itself, rather than
|
|
16
|
+
* trusting a proposer-supplied message list. Pins the bucket by its dense sequence number and recency-key timestamp
|
|
17
|
+
* and asserts the expected consensus rolling hash. A wrong reference can only cause a lookup miss or hash mismatch; it
|
|
18
|
+
* can never change what a validator accepts, because the checkpoint header's `inboxRollingHash` remains the signed
|
|
19
|
+
* consensus commitment (mirrors the unsigned bucket hint on L1's `Rollup.propose`).
|
|
20
|
+
*/ export class InboxBucketRef {
|
|
21
|
+
bucketSeq;
|
|
22
|
+
bucketTimestamp;
|
|
23
|
+
inboxRollingHash;
|
|
24
|
+
constructor(/** Dense, monotonically increasing sequence number of the referenced bucket in the Inbox ring. */ bucketSeq, /** L1 block timestamp (in seconds) at which the referenced bucket was opened; its recency key. */ bucketTimestamp, /** Consensus rolling hash (truncated sha256 chain) after the last message absorbed into the referenced bucket. */ inboxRollingHash){
|
|
25
|
+
this.bucketSeq = bucketSeq;
|
|
26
|
+
this.bucketTimestamp = bucketTimestamp;
|
|
27
|
+
this.inboxRollingHash = inboxRollingHash;
|
|
28
|
+
}
|
|
29
|
+
/** Serialized size in bytes: two uint64 fields plus one field element. */ static SIZE = 8 + 8 + Fr.SIZE_IN_BYTES;
|
|
30
|
+
static get schema() {
|
|
31
|
+
return z.object({
|
|
32
|
+
bucketSeq: schemas.BigInt,
|
|
33
|
+
bucketTimestamp: schemas.BigInt,
|
|
34
|
+
inboxRollingHash: Fr.schema
|
|
35
|
+
}).transform(InboxBucketRef.from);
|
|
36
|
+
}
|
|
37
|
+
static from(fields) {
|
|
38
|
+
return new InboxBucketRef(fields.bucketSeq, fields.bucketTimestamp, fields.inboxRollingHash);
|
|
39
|
+
}
|
|
40
|
+
/** Derives a wire reference from a bucket snapshot as tracked by the archiver. */ static fromBucket(bucket) {
|
|
41
|
+
return new InboxBucketRef(bucket.seq, bucket.timestamp, bucket.inboxRollingHash);
|
|
42
|
+
}
|
|
43
|
+
toBuffer() {
|
|
44
|
+
return serializeToBuffer([
|
|
45
|
+
bigintToUInt64BE(this.bucketSeq),
|
|
46
|
+
bigintToUInt64BE(this.bucketTimestamp),
|
|
47
|
+
this.inboxRollingHash
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
static fromBuffer(buffer) {
|
|
51
|
+
const reader = BufferReader.asReader(buffer);
|
|
52
|
+
return new InboxBucketRef(reader.readUInt64(), reader.readUInt64(), reader.readObject(Fr));
|
|
53
|
+
}
|
|
54
|
+
getSize() {
|
|
55
|
+
return InboxBucketRef.SIZE;
|
|
56
|
+
}
|
|
57
|
+
equals(other) {
|
|
58
|
+
return this.bucketSeq === other.bucketSeq && this.bucketTimestamp === other.bucketTimestamp && this.inboxRollingHash.equals(other.inboxRollingHash);
|
|
59
|
+
}
|
|
60
|
+
static empty() {
|
|
61
|
+
return new InboxBucketRef(0n, 0n, Fr.ZERO);
|
|
62
|
+
}
|
|
63
|
+
static random() {
|
|
64
|
+
return new InboxBucketRef(BigInt(Math.floor(Math.random() * 1000)), BigInt(Math.floor(Math.random() * 1_000_000)), Fr.random());
|
|
65
|
+
}
|
|
66
|
+
toInspect() {
|
|
67
|
+
return {
|
|
68
|
+
bucketSeq: this.bucketSeq.toString(),
|
|
69
|
+
bucketTimestamp: this.bucketTimestamp.toString(),
|
|
70
|
+
inboxRollingHash: this.inboxRollingHash.toString()
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { type L1RollupConstants } from '../epoch-helpers/index.js';
|
|
3
|
+
import type { InboxBucket } from './inbox_bucket.js';
|
|
4
|
+
/**
|
|
5
|
+
* Censorship cutoff timestamp for a checkpoint proposed in `slot`, mirroring the cutoff in
|
|
6
|
+
* `ProposeLib.validateInboxConsumption`, which is `TimeLib.getBuildFrameStart(slot)`. A checkpoint proposed in slot
|
|
7
|
+
* `S` is built during slot `S - 1`, and the build frame opens one Ethereum slot before that slot starts, since the
|
|
8
|
+
* builder works from the L1 state as of the preceding L1 block: `cutoff(S) = toTimestamp(S - 1) - E`. Buckets opened
|
|
9
|
+
* at or before the cutoff were visible to every node for the whole build frame and are mandatory to consume by the
|
|
10
|
+
* checkpoint's last block; the strict `>` on the L1 "past cutoff" test (see {@link isInboxConsumptionSufficient})
|
|
11
|
+
* makes a bucket opened exactly at the cutoff mandatory.
|
|
12
|
+
*
|
|
13
|
+
* This is the single source of truth for the cutoff formula shared by the sequencer's streaming bucket selection and
|
|
14
|
+
* the validator's last-block censorship check.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getInboxCutoffTimestamp(slot: SlotNumber, l1Constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'ethereumSlotDuration'>): bigint;
|
|
17
|
+
/**
|
|
18
|
+
* Smallest number of blocks a checkpoint must be able to build for the streaming Inbox to be guaranteed to clear any
|
|
19
|
+
* mandatory backlog, and therefore the floor on a network's `maxBlocksPerCheckpoint`.
|
|
20
|
+
*
|
|
21
|
+
* Blocks consume whole buckets — a bucket is never split — so a block can only consume a bucket prefix whose message
|
|
22
|
+
* count fits `MAX_L1_TO_L2_MSGS_PER_BLOCK`. The worst case alternates a one-message bucket with a full
|
|
23
|
+
* `MAX_L1_TO_L2_MSGS_PER_BLOCK`-message bucket: each such pair needs two blocks (the pair's `cap + 1` messages
|
|
24
|
+
* overflow one block), and the backlog only stops being mandatory once consuming the next bucket would exceed
|
|
25
|
+
* `MAX_L1_TO_L2_MSGS_PER_CHECKPOINT` (the cap-escape). That bounds the backlog at `cap + 1` messages per block-pair
|
|
26
|
+
* and yields `2 * ceil((MAX_L1_TO_L2_MSGS_PER_CHECKPOINT + 1) / (MAX_L1_TO_L2_MSGS_PER_BLOCK + 1)) - 1` blocks (the
|
|
27
|
+
* final pair needs only its first block).
|
|
28
|
+
*
|
|
29
|
+
* A network configured below this floor can be halted permanently: an adversary posts that bucket pattern, no
|
|
30
|
+
* checkpoint can reach the censorship floor within its block budget, every checkpoint is rejected, and because a
|
|
31
|
+
* rejected checkpoint never advances the consumed position the next checkpoint faces the identical backlog.
|
|
32
|
+
*/
|
|
33
|
+
export declare const MIN_BLOCKS_FOR_INBOX_CATCHUP: number;
|
|
34
|
+
/**
|
|
35
|
+
* Whether a checkpoint whose last-consumed bucket is immediately followed by `nextBucket` meets the censorship floor,
|
|
36
|
+
* mirroring the mandatory-consumption assert in `ProposeLib.validateInboxConsumption`.
|
|
37
|
+
* Consumption is sufficient when the first unconsumed bucket:
|
|
38
|
+
* - does not exist (the checkpoint consumed everything the Inbox has), or
|
|
39
|
+
* - was opened strictly after the cutoff (`timestamp > cutoffTimestamp`), or
|
|
40
|
+
* - consuming through it would exceed the per-checkpoint cap (the cap-escape).
|
|
41
|
+
*
|
|
42
|
+
* The strict `>` matches L1: a bucket opened exactly at the cutoff must be consumed. This is the single source of
|
|
43
|
+
* truth for the minimum-consumption / cap-escape rule shared by the sequencer's selection floor and the validator.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isInboxConsumptionSufficient(input: {
|
|
46
|
+
/** The first unconsumed bucket (the one after the checkpoint's last-consumed bucket), or undefined if none exists. */
|
|
47
|
+
nextBucket: Pick<InboxBucket, 'timestamp' | 'totalMsgCount'> | undefined;
|
|
48
|
+
/** Censorship cutoff timestamp from {@link getInboxCutoffTimestamp}. */
|
|
49
|
+
cutoffTimestamp: bigint;
|
|
50
|
+
/** Cumulative Inbox message count consumed as of the parent checkpoint; the per-checkpoint cap origin. */
|
|
51
|
+
checkpointStartTotalMsgCount: bigint;
|
|
52
|
+
/** Maximum number of messages the checkpoint may consume in total (`MAX_L1_TO_L2_MSGS_PER_CHECKPOINT`). */
|
|
53
|
+
perCheckpointCap: number;
|
|
54
|
+
}): boolean;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfY29uc3VtcHRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvaW5ib3hfY29uc3VtcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUF1QixNQUFNLDJCQUEyQixDQUFDO0FBQ3hGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUNyQyxJQUFJLEVBQUUsVUFBVSxFQUNoQixXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsR0FBRyxjQUFjLEdBQUcsc0JBQXNCLENBQUMsR0FDOUYsTUFBTSxDQUVSO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsZUFBTyxNQUFNLDRCQUE0QixRQUNzRCxDQUFDO0FBRWhHOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBZ0IsNEJBQTRCLENBQUMsS0FBSyxFQUFFO0lBQ2xELHNIQUFzSDtJQUN0SCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3pFLHdFQUF3RTtJQUN4RSxlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLDBHQUEwRztJQUMxRyw0QkFBNEIsRUFBRSxNQUFNLENBQUM7SUFDckMsMkdBQTJHO0lBQzNHLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztDQUMxQixHQUFHLE9BQU8sQ0FTViJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox_consumption.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox_consumption.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,sBAAsB,CAAC,GAC9F,MAAM,CAER;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,QACsD,CAAC;AAEhG;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,sHAAsH;IACtH,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe,CAAC,GAAG,SAAS,CAAC;IACzE,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAC;IACxB,0GAA0G;IAC1G,4BAA4B,EAAE,MAAM,CAAC;IACrC,2GAA2G;IAC3G,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CASV"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { MAX_L1_TO_L2_MSGS_PER_BLOCK, MAX_L1_TO_L2_MSGS_PER_CHECKPOINT } from '@aztec/constants';
|
|
2
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { getTimestampForSlot } from '../epoch-helpers/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Censorship cutoff timestamp for a checkpoint proposed in `slot`, mirroring the cutoff in
|
|
6
|
+
* `ProposeLib.validateInboxConsumption`, which is `TimeLib.getBuildFrameStart(slot)`. A checkpoint proposed in slot
|
|
7
|
+
* `S` is built during slot `S - 1`, and the build frame opens one Ethereum slot before that slot starts, since the
|
|
8
|
+
* builder works from the L1 state as of the preceding L1 block: `cutoff(S) = toTimestamp(S - 1) - E`. Buckets opened
|
|
9
|
+
* at or before the cutoff were visible to every node for the whole build frame and are mandatory to consume by the
|
|
10
|
+
* checkpoint's last block; the strict `>` on the L1 "past cutoff" test (see {@link isInboxConsumptionSufficient})
|
|
11
|
+
* makes a bucket opened exactly at the cutoff mandatory.
|
|
12
|
+
*
|
|
13
|
+
* This is the single source of truth for the cutoff formula shared by the sequencer's streaming bucket selection and
|
|
14
|
+
* the validator's last-block censorship check.
|
|
15
|
+
*/ export function getInboxCutoffTimestamp(slot, l1Constants) {
|
|
16
|
+
return getTimestampForSlot(SlotNumber(slot - 1), l1Constants) - BigInt(l1Constants.ethereumSlotDuration);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Smallest number of blocks a checkpoint must be able to build for the streaming Inbox to be guaranteed to clear any
|
|
20
|
+
* mandatory backlog, and therefore the floor on a network's `maxBlocksPerCheckpoint`.
|
|
21
|
+
*
|
|
22
|
+
* Blocks consume whole buckets — a bucket is never split — so a block can only consume a bucket prefix whose message
|
|
23
|
+
* count fits `MAX_L1_TO_L2_MSGS_PER_BLOCK`. The worst case alternates a one-message bucket with a full
|
|
24
|
+
* `MAX_L1_TO_L2_MSGS_PER_BLOCK`-message bucket: each such pair needs two blocks (the pair's `cap + 1` messages
|
|
25
|
+
* overflow one block), and the backlog only stops being mandatory once consuming the next bucket would exceed
|
|
26
|
+
* `MAX_L1_TO_L2_MSGS_PER_CHECKPOINT` (the cap-escape). That bounds the backlog at `cap + 1` messages per block-pair
|
|
27
|
+
* and yields `2 * ceil((MAX_L1_TO_L2_MSGS_PER_CHECKPOINT + 1) / (MAX_L1_TO_L2_MSGS_PER_BLOCK + 1)) - 1` blocks (the
|
|
28
|
+
* final pair needs only its first block).
|
|
29
|
+
*
|
|
30
|
+
* A network configured below this floor can be halted permanently: an adversary posts that bucket pattern, no
|
|
31
|
+
* checkpoint can reach the censorship floor within its block budget, every checkpoint is rejected, and because a
|
|
32
|
+
* rejected checkpoint never advances the consumed position the next checkpoint faces the identical backlog.
|
|
33
|
+
*/ export const MIN_BLOCKS_FOR_INBOX_CATCHUP = 2 * Math.ceil((MAX_L1_TO_L2_MSGS_PER_CHECKPOINT + 1) / (MAX_L1_TO_L2_MSGS_PER_BLOCK + 1)) - 1;
|
|
34
|
+
/**
|
|
35
|
+
* Whether a checkpoint whose last-consumed bucket is immediately followed by `nextBucket` meets the censorship floor,
|
|
36
|
+
* mirroring the mandatory-consumption assert in `ProposeLib.validateInboxConsumption`.
|
|
37
|
+
* Consumption is sufficient when the first unconsumed bucket:
|
|
38
|
+
* - does not exist (the checkpoint consumed everything the Inbox has), or
|
|
39
|
+
* - was opened strictly after the cutoff (`timestamp > cutoffTimestamp`), or
|
|
40
|
+
* - consuming through it would exceed the per-checkpoint cap (the cap-escape).
|
|
41
|
+
*
|
|
42
|
+
* The strict `>` matches L1: a bucket opened exactly at the cutoff must be consumed. This is the single source of
|
|
43
|
+
* truth for the minimum-consumption / cap-escape rule shared by the sequencer's selection floor and the validator.
|
|
44
|
+
*/ export function isInboxConsumptionSufficient(input) {
|
|
45
|
+
const { nextBucket, cutoffTimestamp, checkpointStartTotalMsgCount, perCheckpointCap } = input;
|
|
46
|
+
if (nextBucket === undefined) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (nextBucket.timestamp > cutoffTimestamp) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
return nextBucket.totalMsgCount - checkpointStartTotalMsgCount > BigInt(perCheckpointCap);
|
|
53
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
/**
|
|
3
|
+
* Extends the Inbox rolling-hash chain by a single message leaf, returning the new rolling hash.
|
|
4
|
+
*
|
|
5
|
+
* Each link is `sha256ToField(DOM_SEP__INBOX_ROLLING_HASH || prev || leaf)` over the 4-byte big-endian domain
|
|
6
|
+
* separator followed by the two 32-byte big-endian values, matching the truncated-to-field sha256 the L1 Inbox
|
|
7
|
+
* accumulates and the noir `accumulate_inbox_rolling_hash` helper. The separator distinguishes a chain link from the
|
|
8
|
+
* untagged `outHash` merkle node hash, which absorbs the same two-field preimage shape.
|
|
9
|
+
*/
|
|
10
|
+
export declare function updateInboxRollingHash(prev: Fr, leaf: Fr): Fr;
|
|
11
|
+
/**
|
|
12
|
+
* Extends the Inbox rolling-hash chain by a list of message leaves, in order, returning the new rolling hash.
|
|
13
|
+
* The genesis rolling hash is `Fr.ZERO`, and an empty list returns `start` unchanged.
|
|
14
|
+
*/
|
|
15
|
+
export declare function accumulateInboxRollingHash(start: Fr, leaves: Fr[]): Fr;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfcm9sbGluZ19oYXNoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVzc2FnaW5nL2luYm94X3JvbGxpbmdfaGFzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUU3RDtBQUVEOzs7R0FHRztBQUNILHdCQUFnQiwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBRXRFIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox_rolling_hash.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox_rolling_hash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAE7D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAEtE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
2
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
3
|
+
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
4
|
+
/**
|
|
5
|
+
* Extends the Inbox rolling-hash chain by a single message leaf, returning the new rolling hash.
|
|
6
|
+
*
|
|
7
|
+
* Each link is `sha256ToField(DOM_SEP__INBOX_ROLLING_HASH || prev || leaf)` over the 4-byte big-endian domain
|
|
8
|
+
* separator followed by the two 32-byte big-endian values, matching the truncated-to-field sha256 the L1 Inbox
|
|
9
|
+
* accumulates and the noir `accumulate_inbox_rolling_hash` helper. The separator distinguishes a chain link from the
|
|
10
|
+
* untagged `outHash` merkle node hash, which absorbs the same two-field preimage shape.
|
|
11
|
+
*/ export function updateInboxRollingHash(prev, leaf) {
|
|
12
|
+
return sha256ToField([
|
|
13
|
+
numToUInt32BE(DomainSeparator.INBOX_ROLLING_HASH),
|
|
14
|
+
prev.toBuffer(),
|
|
15
|
+
leaf.toBuffer()
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Extends the Inbox rolling-hash chain by a list of message leaves, in order, returning the new rolling hash.
|
|
20
|
+
* The genesis rolling hash is `Fr.ZERO`, and an empty list returns `start` unchanged.
|
|
21
|
+
*/ export function accumulateInboxRollingHash(start, leaves) {
|
|
22
|
+
return leaves.reduce(updateInboxRollingHash, start);
|
|
23
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export * from './append_l1_to_l2_messages.js';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
2
|
+
export * from './inbox_bucket.js';
|
|
3
|
+
export * from './inbox_consumption.js';
|
|
4
|
+
export * from './inbox_rolling_hash.js';
|
|
5
|
+
export * from './l1_to_l2_message_bundle.js';
|
|
6
|
+
export * from './l1_to_l2_message_sponge.js';
|
|
4
7
|
export * from './l1_to_l2_message.js';
|
|
5
8
|
export * from './l1_to_l2_message_source.js';
|
|
6
9
|
export * from './l1_actor.js';
|
|
@@ -8,4 +11,4 @@ export * from './l2_actor.js';
|
|
|
8
11
|
export * from './l2_to_l1_message.js';
|
|
9
12
|
export * from './l2_to_l1_membership.js';
|
|
10
13
|
export * from './out_hash.js';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXNzYWdpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGVBQWUsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC"}
|
package/dest/messaging/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export * from './append_l1_to_l2_messages.js';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
2
|
+
export * from './inbox_bucket.js';
|
|
3
|
+
export * from './inbox_consumption.js';
|
|
4
|
+
export * from './inbox_rolling_hash.js';
|
|
5
|
+
export * from './l1_to_l2_message_bundle.js';
|
|
6
|
+
export * from './l1_to_l2_message_sponge.js';
|
|
4
7
|
export * from './l1_to_l2_message.js';
|
|
5
8
|
export * from './l1_to_l2_message_source.js';
|
|
6
9
|
export * from './l1_actor.js';
|