@aztec/stdlib 0.0.1-commit.993d240 → 0.0.1-commit.9a89641
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 +32 -7
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +11 -2
- package/dest/abi/buffer.d.ts +6 -2
- package/dest/abi/buffer.d.ts.map +1 -1
- package/dest/abi/buffer.js +13 -1
- package/dest/abi/contract_artifact.d.ts +1 -1
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +35 -19
- package/dest/abi/decoder.d.ts +12 -5
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +18 -21
- package/dest/abi/function_call.d.ts +17 -8
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +28 -9
- package/dest/avm/avm.d.ts +212 -211
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +4 -2
- package/dest/avm/index.d.ts +1 -6
- package/dest/avm/index.d.ts.map +1 -1
- package/dest/avm/index.js +0 -5
- package/dest/aztec-address/index.d.ts +35 -5
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +32 -8
- package/dest/block/attestation_info.d.ts +1 -1
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -4
- package/dest/block/l2_block_source.d.ts +57 -28
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +20 -2
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
- 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 +83 -11
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/interfaces.js +25 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +24 -15
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +175 -151
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +6 -12
- 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 +8 -32
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +17 -18
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.js +70 -58
- package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +47 -7
- 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 +301 -37
- package/dest/block/validate_block_result.d.ts +16 -1
- package/dest/block/validate_block_result.d.ts.map +1 -1
- package/dest/block/validate_block_result.js +18 -3
- package/dest/checkpoint/checkpoint.js +2 -2
- 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/simulation_overrides.d.ts +61 -0
- package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
- package/dest/checkpoint/simulation_overrides.js +98 -0
- package/dest/checkpoint/validate.d.ts +11 -3
- package/dest/checkpoint/validate.d.ts.map +1 -1
- package/dest/checkpoint/validate.js +9 -6
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/config/network-consensus-config.d.ts +72 -0
- package/dest/config/network-consensus-config.d.ts.map +1 -0
- package/dest/config/network-consensus-config.js +223 -0
- package/dest/config/node-rpc-config.d.ts +1 -1
- package/dest/config/node-rpc-config.d.ts.map +1 -1
- package/dest/config/node-rpc-config.js +1 -1
- package/dest/config/sequencer-config.d.ts +4 -2
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +22 -3
- package/dest/contract/artifact_hash.d.ts +2 -2
- package/dest/contract/artifact_hash.d.ts.map +1 -1
- package/dest/contract/artifact_hash.js +10 -2
- package/dest/contract/contract_address.d.ts +5 -4
- package/dest/contract/contract_address.d.ts.map +1 -1
- package/dest/contract/contract_class.d.ts +1 -1
- package/dest/contract/contract_class.d.ts.map +1 -1
- package/dest/contract/contract_class.js +3 -2
- package/dest/contract/contract_instance.d.ts +16 -2
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +45 -0
- package/dest/contract/index.d.ts +1 -2
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +0 -1
- package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
- package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.d.ts +71 -10
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +7 -2
- package/dest/contract/interfaces/node-info.d.ts +11 -1
- package/dest/contract/interfaces/node-info.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.js +7 -1
- package/dest/contract/partial_address.d.ts +9 -3
- package/dest/contract/partial_address.d.ts.map +1 -1
- package/dest/contract/partial_address.js +8 -2
- package/dest/database-version/version_manager.d.ts +18 -4
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +76 -6
- package/dest/deserialization/index.d.ts +35 -3
- package/dest/deserialization/index.d.ts.map +1 -1
- package/dest/deserialization/index.js +32 -1
- package/dest/file-store/factory.d.ts +1 -1
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +7 -0
- package/dest/file-store/index.d.ts +2 -1
- package/dest/file-store/index.d.ts.map +1 -1
- package/dest/file-store/index.js +1 -0
- package/dest/file-store/memory.d.ts +24 -0
- package/dest/file-store/memory.d.ts.map +1 -0
- package/dest/file-store/memory.js +80 -0
- package/dest/gas/gas_settings.d.ts +7 -13
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +9 -16
- package/dest/gas/index.d.ts +2 -1
- package/dest/gas/index.d.ts.map +1 -1
- package/dest/gas/index.js +1 -0
- package/dest/gas/tx_gas_limits.d.ts +72 -0
- package/dest/gas/tx_gas_limits.d.ts.map +1 -0
- package/dest/gas/tx_gas_limits.js +85 -0
- package/dest/ha-signing/config.d.ts +19 -5
- package/dest/ha-signing/config.d.ts.map +1 -1
- package/dest/ha-signing/config.js +9 -3
- package/dest/ha-signing/local_config.d.ts +10 -2
- package/dest/ha-signing/local_config.d.ts.map +1 -1
- package/dest/ha-signing/local_config.js +8 -2
- package/dest/hash/hash.d.ts +1 -2
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +0 -7
- package/dest/interfaces/api_limit.d.ts +6 -1
- package/dest/interfaces/api_limit.d.ts.map +1 -1
- package/dest/interfaces/api_limit.js +3 -0
- package/dest/interfaces/archiver.d.ts +12 -7
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +13 -6
- package/dest/interfaces/aztec-node-admin.d.ts +25 -17
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +1 -1
- package/dest/interfaces/aztec-node-debug.d.ts +40 -2
- package/dest/interfaces/aztec-node-debug.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-debug.js +29 -1
- package/dest/interfaces/aztec-node.d.ts +100 -33
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +72 -23
- package/dest/interfaces/block-builder.d.ts +9 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block_response.d.ts +5 -5
- package/dest/interfaces/block_response.d.ts.map +1 -1
- package/dest/interfaces/chain_tips.d.ts +8 -47
- package/dest/interfaces/chain_tips.d.ts.map +1 -1
- package/dest/interfaces/chain_tips.js +1 -6
- package/dest/interfaces/checkpoint_parameter.d.ts +3 -3
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -1
- package/dest/interfaces/checkpoint_parameter.js +3 -3
- package/dest/interfaces/checkpoint_response.d.ts +5 -5
- package/dest/interfaces/checkpoint_response.d.ts.map +1 -1
- package/dest/interfaces/client.d.ts +2 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +33 -6
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +6 -1
- package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
- package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
- package/dest/interfaces/get_tx_by_hash_options.js +4 -0
- package/dest/interfaces/merkle_tree_operations.d.ts +8 -3
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +38 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +14 -2
- package/dest/interfaces/private_kernel_prover.d.ts +71 -12
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/prover-client.d.ts +2 -3
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-node.d.ts +12 -8
- package/dest/interfaces/prover-node.d.ts.map +1 -1
- package/dest/interfaces/prover-node.js +24 -17
- package/dest/interfaces/proving-job.d.ts +17 -4
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +13 -4
- package/dest/interfaces/server.d.ts +1 -3
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +0 -2
- package/dest/interfaces/server_circuit_prover.d.ts +3 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/tx_provider.d.ts +5 -1
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +15 -4
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +3 -1
- package/dest/interfaces/world_state.d.ts +14 -1
- package/dest/interfaces/world_state.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
- package/dest/kernel/hints/index.d.ts +1 -2
- package/dest/kernel/hints/index.d.ts.map +1 -1
- package/dest/kernel/hints/index.js +0 -1
- package/dest/kernel/hints/read_request.js +1 -1
- package/dest/kernel/index.d.ts +6 -2
- package/dest/kernel/index.d.ts.map +1 -1
- package/dest/kernel/index.js +5 -1
- package/dest/kernel/log_hash.d.ts +1 -1
- package/dest/kernel/log_hash.d.ts.map +1 -1
- package/dest/kernel/log_hash.js +2 -2
- package/dest/kernel/note_hash.js +1 -1
- package/dest/kernel/nullifier.js +1 -1
- package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +14 -7
- package/dest/kernel/private_context_inputs.d.ts +4 -3
- package/dest/kernel/private_context_inputs.d.ts.map +1 -1
- package/dest/kernel/private_context_inputs.js +7 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -9
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +10 -7
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts +24 -0
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.js +37 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts +25 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.js +39 -0
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts +18 -0
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.js +27 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts +19 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.js +29 -0
- package/dest/kernel/private_kernel_prover_output.d.ts +4 -1
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_prover_output.js +4 -1
- package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
- package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
- package/dest/kernel/private_kernel_simulated_output.d.ts +1 -7
- package/dest/kernel/private_kernel_simulated_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_simulated_output.js +2 -1
- package/dest/kernel/private_log_data.d.ts +1 -1
- package/dest/kernel/private_log_data.d.ts.map +1 -1
- package/dest/kernel/private_log_data.js +1 -1
- package/dest/kernel/utils/index.d.ts +1 -2
- package/dest/kernel/utils/index.d.ts.map +1 -1
- package/dest/kernel/utils/index.js +0 -1
- package/dest/keys/derivation.d.ts +41 -6
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +49 -26
- package/dest/logs/app_tagging_secret.d.ts +30 -7
- package/dest/logs/app_tagging_secret.d.ts.map +1 -1
- package/dest/logs/app_tagging_secret.js +46 -39
- package/dest/logs/app_tagging_secret_kind.d.ts +2 -1
- package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -1
- package/dest/logs/app_tagging_secret_kind.js +13 -0
- package/dest/logs/contract_class_log.d.ts +1 -2
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +0 -4
- package/dest/logs/log_result.d.ts +3 -3
- package/dest/logs/log_result.d.ts.map +1 -1
- package/dest/logs/logs_query.d.ts +2 -2
- package/dest/logs/message_context.d.ts +4 -13
- package/dest/logs/message_context.d.ts.map +1 -1
- package/dest/logs/message_context.js +1 -62
- package/dest/logs/pending_tagged_log.d.ts +6 -8
- package/dest/logs/pending_tagged_log.d.ts.map +1 -1
- package/dest/logs/pending_tagged_log.js +1 -31
- package/dest/logs/shared_secret_derivation.d.ts +29 -6
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +44 -11
- package/dest/messaging/l1_to_l2_message.d.ts +23 -2
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +36 -11
- package/dest/messaging/l2_to_l1_membership.d.ts +11 -4
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +22 -7
- package/dest/noir/index.d.ts +3 -3
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.d.ts +1 -1
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +8 -1
- package/dest/p2p/checkpoint_attestation.d.ts +10 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +10 -0
- package/dest/p2p/checkpoint_proposal.d.ts +2 -1
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.d.ts +2 -1
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/index.d.ts +1 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +0 -1
- package/dest/p2p/signature_utils.d.ts +10 -1
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +9 -1
- package/dest/rollup/avm_proof_data.d.ts +3 -3
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.d.ts +8 -3
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +20 -10
- package/dest/stats/stats.d.ts +2 -2
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +1 -27
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +10 -45
- package/dest/tests/mocks.d.ts +1 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +3 -2
- package/dest/timetable/budgets.d.ts +57 -0
- package/dest/timetable/budgets.d.ts.map +1 -0
- package/dest/timetable/budgets.js +56 -0
- package/dest/timetable/build_proposer_timetable.d.ts +21 -0
- package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/build_proposer_timetable.js +17 -0
- package/dest/timetable/consensus_timetable.d.ts +70 -0
- package/dest/timetable/consensus_timetable.d.ts.map +1 -0
- package/dest/timetable/consensus_timetable.js +89 -0
- package/dest/timetable/index.d.ts +5 -87
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +4 -243
- package/dest/timetable/proposer_timetable.d.ts +106 -0
- package/dest/timetable/proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/proposer_timetable.js +132 -0
- package/dest/trees/nullifier_membership_witness.d.ts +5 -8
- package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
- package/dest/trees/nullifier_membership_witness.js +0 -9
- package/dest/trees/public_data_witness.d.ts +7 -17
- package/dest/trees/public_data_witness.d.ts.map +1 -1
- package/dest/trees/public_data_witness.js +0 -27
- package/dest/tx/execution_payload.d.ts +1 -1
- package/dest/tx/execution_payload.d.ts.map +1 -1
- package/dest/tx/execution_payload.js +1 -1
- package/dest/tx/fee_provider.d.ts +2 -2
- package/dest/tx/fee_provider.d.ts.map +1 -1
- package/dest/tx/global_variable_builder.d.ts +2 -12
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.js +2 -2
- package/dest/tx/hashed_values.d.ts +7 -1
- package/dest/tx/hashed_values.d.ts.map +1 -1
- package/dest/tx/hashed_values.js +9 -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/indexed_tx_effect.d.ts +5 -2
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +8 -4
- package/dest/tx/offchain_effect.js +1 -1
- package/dest/tx/private_tx_constant_data.d.ts +18 -2
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
- package/dest/tx/private_tx_constant_data.js +13 -4
- package/dest/tx/profiling.d.ts +1 -1
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +2 -0
- package/dest/tx/simulated_tx.d.ts +10 -6
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/simulated_tx.js +7 -2
- package/dest/tx/tx.d.ts +23 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +32 -3
- package/dest/tx/tx_receipt.d.ts +143 -60
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +141 -45
- package/dest/tx/validator/error_texts.d.ts +2 -2
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/validators/errors.d.ts +16 -1
- package/dest/validators/errors.d.ts.map +1 -1
- package/dest/validators/errors.js +12 -0
- package/dest/world-state/genesis_data.d.ts +9 -1
- package/dest/world-state/genesis_data.d.ts.map +1 -1
- package/dest/world-state/genesis_data.js +1 -0
- package/dest/world-state/world_state_revision.d.ts +1 -18
- package/dest/world-state/world_state_revision.d.ts.map +1 -1
- package/dest/world-state/world_state_revision.js +0 -20
- package/package.json +8 -8
- package/src/abi/abi.ts +32 -4
- package/src/abi/buffer.ts +13 -1
- package/src/abi/contract_artifact.ts +40 -16
- package/src/abi/decoder.ts +20 -24
- package/src/abi/function_call.ts +19 -7
- package/src/avm/avm.ts +5 -2
- package/src/avm/index.ts +0 -5
- package/src/aztec-address/index.ts +36 -6
- package/src/block/attestation_info.ts +7 -2
- package/src/block/l2_block_source.ts +95 -19
- package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
- package/src/block/l2_block_stream/index.ts +1 -0
- package/src/block/l2_block_stream/interfaces.ts +98 -10
- package/src/block/l2_block_stream/l2_block_stream.ts +255 -177
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +12 -41
- package/src/block/l2_block_stream/l2_tips_store_base.ts +84 -93
- package/src/block/proposal/attestations_and_signers.ts +53 -7
- package/src/block/test/l2_tips_store_test_suite.ts +275 -28
- package/src/block/validate_block_result.ts +48 -2
- package/src/checkpoint/checkpoint.ts +2 -2
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/simulation_overrides.ts +171 -0
- package/src/checkpoint/validate.ts +16 -6
- package/src/config/index.ts +1 -1
- package/src/config/network-consensus-config.ts +291 -0
- package/src/config/node-rpc-config.ts +2 -1
- package/src/config/sequencer-config.ts +36 -5
- package/src/contract/artifact_hash.ts +15 -3
- package/src/contract/contract_address.ts +4 -3
- package/src/contract/contract_class.ts +3 -2
- package/src/contract/contract_instance.ts +62 -1
- package/src/contract/index.ts +0 -1
- package/src/contract/interfaces/contract_data_source.ts +2 -4
- package/src/contract/interfaces/contract_instance.ts +26 -8
- package/src/contract/interfaces/node-info.ts +11 -0
- package/src/contract/partial_address.ts +8 -2
- package/src/database-version/version_manager.ts +96 -6
- package/src/deserialization/index.ts +35 -2
- package/src/file-store/factory.ts +7 -0
- package/src/file-store/index.ts +1 -0
- package/src/file-store/memory.ts +94 -0
- package/src/gas/README.md +199 -35
- package/src/gas/gas_settings.ts +11 -21
- package/src/gas/index.ts +1 -0
- package/src/gas/tx_gas_limits.ts +123 -0
- package/src/ha-signing/config.ts +23 -5
- package/src/ha-signing/local_config.ts +20 -1
- package/src/hash/hash.ts +0 -8
- package/src/interfaces/api_limit.ts +5 -0
- package/src/interfaces/archiver.ts +22 -9
- package/src/interfaces/aztec-node-admin.ts +1 -1
- package/src/interfaces/aztec-node-debug.ts +54 -2
- package/src/interfaces/aztec-node.ts +175 -49
- package/src/interfaces/block-builder.ts +8 -1
- package/src/interfaces/block_response.ts +4 -4
- package/src/interfaces/chain_tips.ts +8 -16
- package/src/interfaces/checkpoint_parameter.ts +3 -3
- package/src/interfaces/checkpoint_response.ts +4 -4
- package/src/interfaces/client.ts +1 -0
- package/src/interfaces/configs.ts +33 -6
- package/src/interfaces/get_tx_by_hash_options.ts +14 -0
- package/src/interfaces/merkle_tree_operations.ts +8 -2
- package/src/interfaces/p2p.ts +29 -9
- package/src/interfaces/private_kernel_prover.ts +104 -13
- package/src/interfaces/prover-client.ts +1 -3
- package/src/interfaces/prover-node.ts +32 -17
- package/src/interfaces/proving-job.ts +15 -3
- package/src/interfaces/server.ts +0 -2
- package/src/interfaces/server_circuit_prover.ts +2 -2
- package/src/interfaces/tx_provider.ts +4 -0
- package/src/interfaces/validator.ts +11 -0
- package/src/interfaces/world_state.ts +14 -0
- package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
- package/src/kernel/hints/index.ts +0 -1
- package/src/kernel/hints/read_request.ts +1 -1
- package/src/kernel/index.ts +5 -1
- package/src/kernel/log_hash.ts +5 -2
- package/src/kernel/note_hash.ts +1 -1
- package/src/kernel/nullifier.ts +1 -1
- package/src/kernel/private_circuit_public_inputs.ts +12 -1
- package/src/kernel/private_context_inputs.ts +10 -3
- package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -7
- package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
- package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
- package/src/kernel/private_kernel_init_4_circuit_private_inputs.ts +52 -0
- package/src/kernel/private_kernel_init_5_circuit_private_inputs.ts +55 -0
- package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
- package/src/kernel/private_kernel_inner_4_circuit_private_inputs.ts +39 -0
- package/src/kernel/private_kernel_inner_5_circuit_private_inputs.ts +42 -0
- package/src/kernel/private_kernel_prover_output.ts +4 -0
- package/src/kernel/private_kernel_reset_dimensions.ts +16 -6
- package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
- package/src/kernel/private_kernel_simulated_output.ts +0 -7
- package/src/kernel/private_log_data.ts +4 -1
- package/src/kernel/utils/index.ts +0 -1
- package/src/keys/derivation.ts +69 -24
- package/src/logs/app_tagging_secret.ts +62 -39
- package/src/logs/app_tagging_secret_kind.ts +15 -0
- package/src/logs/contract_class_log.ts +0 -9
- package/src/logs/log_result.ts +2 -2
- package/src/logs/logs_query.ts +2 -2
- package/src/logs/message_context.ts +6 -60
- package/src/logs/pending_tagged_log.ts +6 -33
- package/src/logs/shared_secret_derivation.ts +47 -14
- package/src/messaging/l1_to_l2_message.ts +51 -13
- package/src/messaging/l2_to_l1_membership.ts +28 -11
- package/src/noir/index.ts +2 -1
- package/src/p2p/attestation_utils.ts +8 -1
- package/src/p2p/checkpoint_attestation.ts +12 -0
- package/src/p2p/index.ts +0 -1
- package/src/p2p/signature_utils.ts +9 -0
- package/src/rollup/avm_proof_data.ts +2 -2
- package/src/rollup/checkpoint_header.ts +16 -2
- package/src/stats/stats.ts +6 -2
- package/src/tests/factories.ts +13 -51
- package/src/tests/mocks.ts +7 -2
- package/src/timetable/README.md +609 -0
- package/src/timetable/budgets.ts +87 -0
- package/src/timetable/build_proposer_timetable.ts +42 -0
- package/src/timetable/consensus_timetable.ts +126 -0
- package/src/timetable/index.ts +4 -361
- package/src/timetable/proposer_timetable.ts +190 -0
- package/src/timetable/timetable-example.svg +108 -0
- package/src/trees/nullifier_membership_witness.ts +0 -11
- package/src/trees/public_data_witness.ts +0 -31
- package/src/tx/execution_payload.ts +2 -1
- package/src/tx/fee_provider.ts +1 -1
- package/src/tx/global_variable_builder.ts +1 -17
- package/src/tx/global_variables.ts +2 -2
- package/src/tx/hashed_values.ts +11 -6
- package/src/tx/index.ts +0 -1
- package/src/tx/indexed_tx_effect.ts +17 -4
- package/src/tx/offchain_effect.ts +1 -1
- package/src/tx/private_tx_constant_data.ts +25 -2
- package/src/tx/profiling.ts +2 -0
- package/src/tx/simulated_tx.ts +13 -2
- package/src/tx/tx.ts +46 -3
- package/src/tx/tx_receipt.ts +263 -71
- package/src/tx/validator/error_texts.ts +2 -1
- package/src/validators/errors.ts +17 -0
- package/src/world-state/genesis_data.ts +10 -0
- package/src/world-state/world_state_revision.ts +0 -33
- package/dest/avm/contract_storage_read.d.ts +0 -58
- package/dest/avm/contract_storage_read.d.ts.map +0 -1
- package/dest/avm/contract_storage_read.js +0 -65
- package/dest/avm/contract_storage_update_request.d.ts +0 -65
- package/dest/avm/contract_storage_update_request.d.ts.map +0 -1
- package/dest/avm/contract_storage_update_request.js +0 -80
- package/dest/avm/public_call_stack_item_compressed.d.ts +0 -43
- package/dest/avm/public_call_stack_item_compressed.d.ts.map +0 -1
- package/dest/avm/public_call_stack_item_compressed.js +0 -70
- package/dest/avm/public_data_update_request.d.ts +0 -62
- package/dest/avm/public_data_update_request.d.ts.map +0 -1
- package/dest/avm/public_data_update_request.js +0 -67
- package/dest/avm/public_inner_call_request.d.ts +0 -50
- package/dest/avm/public_inner_call_request.d.ts.map +0 -1
- package/dest/avm/public_inner_call_request.js +0 -74
- package/dest/config/pipelining-config.d.ts +0 -15
- package/dest/config/pipelining-config.d.ts.map +0 -1
- package/dest/config/pipelining-config.js +0 -18
- package/dest/contract/deployment_info.d.ts +0 -24
- package/dest/contract/deployment_info.d.ts.map +0 -1
- package/dest/contract/deployment_info.js +0 -3
- package/dest/interfaces/epoch-prover.d.ts +0 -57
- package/dest/interfaces/epoch-prover.d.ts.map +0 -1
- package/dest/interfaces/epoch-prover.js +0 -1
- package/dest/interfaces/prover-coordination.d.ts +0 -15
- package/dest/interfaces/prover-coordination.d.ts.map +0 -1
- package/dest/interfaces/prover-coordination.js +0 -1
- package/dest/kernel/hints/tree_leaf_read_request.d.ts +0 -14
- package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +0 -1
- package/dest/kernel/hints/tree_leaf_read_request.js +0 -33
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
- package/dest/kernel/utils/optional_number.d.ts +0 -31
- package/dest/kernel/utils/optional_number.d.ts.map +0 -1
- package/dest/kernel/utils/optional_number.js +0 -42
- package/dest/p2p/interface.d.ts +0 -5
- package/dest/p2p/interface.d.ts.map +0 -1
- package/dest/p2p/interface.js +0 -1
- package/dest/tx/validator/empty_validator.d.ts +0 -5
- package/dest/tx/validator/empty_validator.d.ts.map +0 -1
- package/dest/tx/validator/empty_validator.js +0 -7
- package/src/avm/contract_storage_read.ts +0 -77
- package/src/avm/contract_storage_update_request.ts +0 -93
- package/src/avm/public_call_stack_item_compressed.ts +0 -113
- package/src/avm/public_data_update_request.ts +0 -106
- package/src/avm/public_inner_call_request.ts +0 -85
- package/src/config/pipelining-config.ts +0 -31
- package/src/contract/deployment_info.ts +0 -25
- package/src/interfaces/epoch-prover.ts +0 -72
- package/src/interfaces/prover-coordination.ts +0 -17
- package/src/kernel/hints/tree_leaf_read_request.ts +0 -35
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
- package/src/kernel/utils/optional_number.ts +0 -50
- package/src/p2p/interface.ts +0 -4
- package/src/tx/validator/empty_validator.ts +0 -7
|
@@ -3,6 +3,7 @@ import { times } from '@aztec/foundation/collection';
|
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { GENESIS_CHECKPOINT_HEADER_HASH, L2Block } from '@aztec/stdlib/block';
|
|
5
5
|
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
6
|
+
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
6
7
|
import { expect } from 'vitest';
|
|
7
8
|
import { GENESIS_BLOCK_HEADER_HASH } from '../block_hash.js';
|
|
8
9
|
export function testL2TipsStore(makeTipsStore) {
|
|
@@ -62,12 +63,11 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
62
63
|
block: makeTip(blockNumber),
|
|
63
64
|
checkpoint: makeCheckpointIdForBlock(blockNumber)
|
|
64
65
|
});
|
|
65
|
-
const makeTips = (proposed, proven, finalized, checkpointed = 0
|
|
66
|
+
const makeTips = (proposed, proven, finalized, checkpointed = 0)=>({
|
|
66
67
|
proposed: makeTip(proposed),
|
|
67
68
|
proven: makeTipId(proven),
|
|
68
69
|
finalized: makeTipId(finalized),
|
|
69
|
-
checkpointed: makeTipId(checkpointed)
|
|
70
|
-
proposedCheckpoint: makeTipId(proposedCheckpoint)
|
|
70
|
+
checkpointed: makeTipId(checkpointed)
|
|
71
71
|
});
|
|
72
72
|
const makeCheckpoint = async (checkpointNumber, blocks)=>{
|
|
73
73
|
const checkpoint = await Checkpoint.random(CheckpointNumber(checkpointNumber), {
|
|
@@ -84,15 +84,19 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
84
84
|
}
|
|
85
85
|
return new PublishedCheckpoint(checkpoint, L1PublishedData.random(), []);
|
|
86
86
|
};
|
|
87
|
-
/** Creates a chain-checkpointed event
|
|
88
|
-
const lastBlock =
|
|
87
|
+
/** Creates a thin chain-checkpointed event carrying the block + checkpoint ids of the checkpoint's last block. */ const makeCheckpointedEvent = async (published)=>{
|
|
88
|
+
const lastBlock = published.checkpoint.blocks.at(-1);
|
|
89
89
|
const blockId = {
|
|
90
90
|
number: lastBlock.number,
|
|
91
91
|
hash: (await lastBlock.hash()).toString()
|
|
92
92
|
};
|
|
93
|
+
const checkpointId = {
|
|
94
|
+
number: published.checkpoint.number,
|
|
95
|
+
hash: published.checkpoint.hash().toString()
|
|
96
|
+
};
|
|
93
97
|
return {
|
|
94
98
|
type: 'chain-checkpointed',
|
|
95
|
-
checkpoint,
|
|
99
|
+
checkpoint: checkpointId,
|
|
96
100
|
block: blockId
|
|
97
101
|
};
|
|
98
102
|
};
|
|
@@ -111,6 +115,97 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
111
115
|
expect(await tipsStore.getL2BlockHash(2)).toEqual(blockHashes.get(2));
|
|
112
116
|
expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
|
|
113
117
|
});
|
|
118
|
+
it('records the proposed tip number and hash from a chain-proposed event', async ()=>{
|
|
119
|
+
// chain-proposed is the sole writer of proposed-tip history in tips-only mode: no preceding blocks-added.
|
|
120
|
+
await tipsStore.handleBlockStreamEvent({
|
|
121
|
+
type: 'chain-proposed',
|
|
122
|
+
block: {
|
|
123
|
+
number: BlockNumber(5),
|
|
124
|
+
hash: new Fr(500).toString()
|
|
125
|
+
},
|
|
126
|
+
header: BlockHeader.empty()
|
|
127
|
+
});
|
|
128
|
+
const tips = await tipsStore.getL2Tips();
|
|
129
|
+
expect(tips.proposed).toEqual({
|
|
130
|
+
number: BlockNumber(5),
|
|
131
|
+
hash: new Fr(500).toString()
|
|
132
|
+
});
|
|
133
|
+
// The hash is recorded in the same index the walk-back reads, so it resolves as a sparse anchor.
|
|
134
|
+
expect(await tipsStore.getL2BlockHash(5)).toEqual(new Fr(500).toString());
|
|
135
|
+
});
|
|
136
|
+
it('serves sparse proposed anchors from chain-proposed events for the walk-back', async ()=>{
|
|
137
|
+
// Two tip-moving polls in tips-only mode, with no blocks in between (sparse history).
|
|
138
|
+
await tipsStore.handleBlockStreamEvent({
|
|
139
|
+
type: 'chain-proposed',
|
|
140
|
+
block: {
|
|
141
|
+
number: BlockNumber(4),
|
|
142
|
+
hash: new Fr(400).toString()
|
|
143
|
+
},
|
|
144
|
+
header: BlockHeader.empty()
|
|
145
|
+
});
|
|
146
|
+
await tipsStore.handleBlockStreamEvent({
|
|
147
|
+
type: 'chain-proposed',
|
|
148
|
+
block: {
|
|
149
|
+
number: BlockNumber(9),
|
|
150
|
+
hash: new Fr(900).toString()
|
|
151
|
+
},
|
|
152
|
+
header: BlockHeader.empty()
|
|
153
|
+
});
|
|
154
|
+
// Both recorded heights resolve; the heights between them were never seen and stay undefined.
|
|
155
|
+
expect(await tipsStore.getL2BlockHash(4)).toEqual(new Fr(400).toString());
|
|
156
|
+
expect(await tipsStore.getL2BlockHash(9)).toEqual(new Fr(900).toString());
|
|
157
|
+
expect(await tipsStore.getL2BlockHash(6)).toBeUndefined();
|
|
158
|
+
const tips = await tipsStore.getL2Tips();
|
|
159
|
+
expect(tips.proposed).toEqual({
|
|
160
|
+
number: BlockNumber(9),
|
|
161
|
+
hash: new Fr(900).toString()
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
it('records block-hash witnesses without moving any tip cursor', async ()=>{
|
|
165
|
+
// Establish a proposed tip at 9 in tips-only fashion (sole writer of proposed history).
|
|
166
|
+
await tipsStore.handleBlockStreamEvent({
|
|
167
|
+
type: 'chain-proposed',
|
|
168
|
+
block: {
|
|
169
|
+
number: BlockNumber(9),
|
|
170
|
+
hash: new Fr(900).toString()
|
|
171
|
+
},
|
|
172
|
+
header: BlockHeader.empty()
|
|
173
|
+
});
|
|
174
|
+
// Record sparse witnesses at heights below the tip (e.g. a consumer materializing per-height state).
|
|
175
|
+
await tipsStore.recordBlockHashes([
|
|
176
|
+
{
|
|
177
|
+
number: BlockNumber(4),
|
|
178
|
+
hash: new Fr(404).toString()
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
number: BlockNumber(6),
|
|
182
|
+
hash: new Fr(606).toString()
|
|
183
|
+
}
|
|
184
|
+
]);
|
|
185
|
+
// Each recorded height resolves; an unrecorded gap stays undefined.
|
|
186
|
+
expect(await tipsStore.getL2BlockHash(4)).toEqual(new Fr(404).toString());
|
|
187
|
+
expect(await tipsStore.getL2BlockHash(6)).toEqual(new Fr(606).toString());
|
|
188
|
+
expect(await tipsStore.getL2BlockHash(5)).toBeUndefined();
|
|
189
|
+
// No tip cursor moved: the proposed tip is still 9, and every other tier is at genesis.
|
|
190
|
+
const tips = await tipsStore.getL2Tips();
|
|
191
|
+
expect(tips.proposed).toEqual({
|
|
192
|
+
number: BlockNumber(9),
|
|
193
|
+
hash: new Fr(900).toString()
|
|
194
|
+
});
|
|
195
|
+
expect(tips.checkpointed.block).toEqual(makeTip(0));
|
|
196
|
+
expect(tips.proven.block).toEqual(makeTip(0));
|
|
197
|
+
expect(tips.finalized.block).toEqual(makeTip(0));
|
|
198
|
+
});
|
|
199
|
+
it('skips witnesses with no hash and tolerates an empty list', async ()=>{
|
|
200
|
+
await tipsStore.recordBlockHashes([]);
|
|
201
|
+
await tipsStore.recordBlockHashes([
|
|
202
|
+
{
|
|
203
|
+
number: BlockNumber(3),
|
|
204
|
+
hash: ''
|
|
205
|
+
}
|
|
206
|
+
]);
|
|
207
|
+
expect(await tipsStore.getL2BlockHash(3)).toBeUndefined();
|
|
208
|
+
});
|
|
114
209
|
it('checkpoints all proposed blocks', async ()=>{
|
|
115
210
|
// Propose blocks 1-5
|
|
116
211
|
const blocks = await Promise.all(times(5, (i)=>makeBlock(i + 1)));
|
|
@@ -139,7 +234,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
139
234
|
// Prove up to block 5
|
|
140
235
|
await tipsStore.handleBlockStreamEvent({
|
|
141
236
|
type: 'chain-proven',
|
|
142
|
-
block: makeBlockId(5)
|
|
237
|
+
block: makeBlockId(5),
|
|
238
|
+
checkpoint: makeCheckpointIdForBlock(5)
|
|
143
239
|
});
|
|
144
240
|
const tips = await tipsStore.getL2Tips();
|
|
145
241
|
expect(tips.proposed).toEqual(makeTip(5));
|
|
@@ -161,11 +257,13 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
161
257
|
// Prove and finalize
|
|
162
258
|
await tipsStore.handleBlockStreamEvent({
|
|
163
259
|
type: 'chain-proven',
|
|
164
|
-
block: makeBlockId(5)
|
|
260
|
+
block: makeBlockId(5),
|
|
261
|
+
checkpoint: makeCheckpointIdForBlock(5)
|
|
165
262
|
});
|
|
166
263
|
await tipsStore.handleBlockStreamEvent({
|
|
167
264
|
type: 'chain-finalized',
|
|
168
|
-
block: makeBlockId(5)
|
|
265
|
+
block: makeBlockId(5),
|
|
266
|
+
checkpoint: makeCheckpointIdForBlock(5)
|
|
169
267
|
});
|
|
170
268
|
const tips = await tipsStore.getL2Tips();
|
|
171
269
|
expect(tips.proposed).toEqual(makeTip(5));
|
|
@@ -223,11 +321,13 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
223
321
|
// Prove and finalize up to block 3 (checkpoint 1)
|
|
224
322
|
await tipsStore.handleBlockStreamEvent({
|
|
225
323
|
type: 'chain-proven',
|
|
226
|
-
block: makeBlockId(3)
|
|
324
|
+
block: makeBlockId(3),
|
|
325
|
+
checkpoint: makeCheckpointIdForBlock(3)
|
|
227
326
|
});
|
|
228
327
|
await tipsStore.handleBlockStreamEvent({
|
|
229
328
|
type: 'chain-finalized',
|
|
230
|
-
block: makeBlockId(3)
|
|
329
|
+
block: makeBlockId(3),
|
|
330
|
+
checkpoint: makeCheckpointIdForBlock(3)
|
|
231
331
|
});
|
|
232
332
|
// Blocks before finalized should be cleared
|
|
233
333
|
expect(await tipsStore.getL2BlockHash(1)).toBeUndefined();
|
|
@@ -247,10 +347,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
247
347
|
await tipsStore.handleBlockStreamEvent({
|
|
248
348
|
type: 'chain-pruned',
|
|
249
349
|
block: makeBlockId(5),
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
253
|
-
}
|
|
350
|
+
checkpointed: makeTipId(0),
|
|
351
|
+
proven: makeTipId(0)
|
|
254
352
|
});
|
|
255
353
|
const tips = await tipsStore.getL2Tips();
|
|
256
354
|
expect(tips.proposed).toEqual(makeTip(5));
|
|
@@ -272,10 +370,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
272
370
|
await tipsStore.handleBlockStreamEvent({
|
|
273
371
|
type: 'chain-pruned',
|
|
274
372
|
block: makeTip(0),
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
278
|
-
}
|
|
373
|
+
checkpointed: makeTipId(0),
|
|
374
|
+
proven: makeTipId(0)
|
|
279
375
|
});
|
|
280
376
|
tips = await tipsStore.getL2Tips();
|
|
281
377
|
expect(tips.proposed).toEqual(makeTip(0));
|
|
@@ -336,10 +432,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
336
432
|
await tipsStore.handleBlockStreamEvent({
|
|
337
433
|
type: 'chain-pruned',
|
|
338
434
|
block: makeBlockId(5),
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
342
|
-
}
|
|
435
|
+
checkpointed: makeTipId(5),
|
|
436
|
+
proven: makeTipId(0)
|
|
343
437
|
});
|
|
344
438
|
tips = await tipsStore.getL2Tips();
|
|
345
439
|
expect(tips.proposed).toEqual(makeTip(5));
|
|
@@ -399,10 +493,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
399
493
|
await tipsStore.handleBlockStreamEvent({
|
|
400
494
|
type: 'chain-pruned',
|
|
401
495
|
block: makeBlockId(3),
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
405
|
-
}
|
|
496
|
+
checkpointed: makeTipId(3),
|
|
497
|
+
proven: makeTipId(0)
|
|
406
498
|
});
|
|
407
499
|
tips = await tipsStore.getL2Tips();
|
|
408
500
|
expect(tips.proposed).toEqual(makeTip(3));
|
|
@@ -439,7 +531,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
439
531
|
// Prove up to block 3
|
|
440
532
|
await tipsStore.handleBlockStreamEvent({
|
|
441
533
|
type: 'chain-proven',
|
|
442
|
-
block: makeBlockId(3)
|
|
534
|
+
block: makeBlockId(3),
|
|
535
|
+
checkpoint: makeCheckpointIdForBlock(3)
|
|
443
536
|
});
|
|
444
537
|
let tips = await tipsStore.getL2Tips();
|
|
445
538
|
expect(tips.proposed).toEqual(makeTip(3));
|
|
@@ -479,10 +572,8 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
479
572
|
await tipsStore.handleBlockStreamEvent({
|
|
480
573
|
type: 'chain-pruned',
|
|
481
574
|
block: makeBlockId(3),
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
485
|
-
}
|
|
575
|
+
checkpointed: makeTipId(3),
|
|
576
|
+
proven: makeTipId(3)
|
|
486
577
|
});
|
|
487
578
|
tips = await tipsStore.getL2Tips();
|
|
488
579
|
expect(tips.proposed).toEqual(makeTip(3));
|
|
@@ -525,22 +616,195 @@ export function testL2TipsStore(makeTipsStore) {
|
|
|
525
616
|
expect(await tipsStore.getL2BlockHash(6)).not.toEqual(originalHash6);
|
|
526
617
|
expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
|
|
527
618
|
});
|
|
528
|
-
// Regression test for #13142
|
|
529
|
-
|
|
619
|
+
// Regression test for #13142: proving an unseen block number (one with no local block->checkpoint
|
|
620
|
+
// mapping) must not blow up. With per-cursor checkpoint ids, the proven tip resolves to the
|
|
621
|
+
// checkpoint id carried by the event rather than falling back to checkpoint zero.
|
|
622
|
+
it('resolves the proven checkpoint from the carried id when setting proven on an unseen block number', async ()=>{
|
|
530
623
|
await tipsStore.handleBlockStreamEvent({
|
|
531
624
|
type: 'blocks-added',
|
|
532
625
|
blocks: [
|
|
533
626
|
await makeBlock(5)
|
|
534
627
|
]
|
|
535
628
|
});
|
|
629
|
+
// Block 3 has no local block->checkpoint mapping, but the event carries a real checkpoint id.
|
|
630
|
+
const carriedCheckpoint = {
|
|
631
|
+
number: CheckpointNumber(1),
|
|
632
|
+
hash: new Fr(42).toString()
|
|
633
|
+
};
|
|
536
634
|
await tipsStore.handleBlockStreamEvent({
|
|
537
635
|
type: 'chain-proven',
|
|
538
|
-
block: makeBlockId(3)
|
|
636
|
+
block: makeBlockId(3),
|
|
637
|
+
checkpoint: carriedCheckpoint
|
|
539
638
|
});
|
|
540
639
|
const tips = await tipsStore.getL2Tips();
|
|
541
640
|
expect(tips.proposed).toEqual(makeTip(5));
|
|
542
641
|
expect(tips.proven.block).toEqual(makeTip(3));
|
|
543
|
-
//
|
|
544
|
-
expect(tips.proven.checkpoint
|
|
642
|
+
// Resolved from the carried id, not the (missing) local mapping.
|
|
643
|
+
expect(tips.proven.checkpoint).toEqual(carriedCheckpoint);
|
|
644
|
+
});
|
|
645
|
+
// proven/finalized resolve to the carried checkpoint id even when the block has no local
|
|
646
|
+
// block->checkpoint mapping (the cursor legitimately leads the locally-checkpointed frontier).
|
|
647
|
+
it('resolves proven and finalized checkpoints from carried ids without a local mapping', async ()=>{
|
|
648
|
+
await tipsStore.handleBlockStreamEvent({
|
|
649
|
+
type: 'blocks-added',
|
|
650
|
+
blocks: [
|
|
651
|
+
await makeBlock(7)
|
|
652
|
+
]
|
|
653
|
+
});
|
|
654
|
+
const provenCheckpoint = {
|
|
655
|
+
number: CheckpointNumber(2),
|
|
656
|
+
hash: new Fr(101).toString()
|
|
657
|
+
};
|
|
658
|
+
const finalizedCheckpoint = {
|
|
659
|
+
number: CheckpointNumber(1),
|
|
660
|
+
hash: new Fr(100).toString()
|
|
661
|
+
};
|
|
662
|
+
await tipsStore.handleBlockStreamEvent({
|
|
663
|
+
type: 'chain-proven',
|
|
664
|
+
block: makeBlockId(5),
|
|
665
|
+
checkpoint: provenCheckpoint
|
|
666
|
+
});
|
|
667
|
+
await tipsStore.handleBlockStreamEvent({
|
|
668
|
+
type: 'chain-finalized',
|
|
669
|
+
block: makeBlockId(3),
|
|
670
|
+
checkpoint: finalizedCheckpoint
|
|
671
|
+
});
|
|
672
|
+
const tips = await tipsStore.getL2Tips();
|
|
673
|
+
expect(tips.proven.checkpoint).toEqual(provenCheckpoint);
|
|
674
|
+
expect(tips.finalized.checkpoint).toEqual(finalizedCheckpoint);
|
|
675
|
+
});
|
|
676
|
+
// Genuine corruption: a cursor points at a real (non-genesis) block that has a block hash but
|
|
677
|
+
// neither a stored per-cursor checkpoint id nor a block->checkpoint mapping. getL2Tips must throw
|
|
678
|
+
// loudly rather than silently report checkpoint zero. We reach this state by reaching past the
|
|
679
|
+
// event API to place the tip directly, since the normal writers always record an id.
|
|
680
|
+
it('throws when a cursor points at a real block with neither a stored id nor a mapping', async ()=>{
|
|
681
|
+
// blocks-added records the block hash for block 5 (so getBlockId succeeds) but no checkpoint id.
|
|
682
|
+
await tipsStore.handleBlockStreamEvent({
|
|
683
|
+
type: 'blocks-added',
|
|
684
|
+
blocks: [
|
|
685
|
+
await makeBlock(5)
|
|
686
|
+
]
|
|
687
|
+
});
|
|
688
|
+
// Corrupt the proven cursor to point at block 5 without any id or mapping.
|
|
689
|
+
const internal = tipsStore;
|
|
690
|
+
await internal.setTip('proven', BlockNumber(5));
|
|
691
|
+
await expect(tipsStore.getL2Tips()).rejects.toThrow(/checkpoint/i);
|
|
692
|
+
});
|
|
693
|
+
// Backward prune of a leading cursor: a checkpoint-bearing cursor that legitimately leads the source's
|
|
694
|
+
// confirmed checkpointed tip is clamped down to that tip, resolving to the id the prune event carries
|
|
695
|
+
// (never genesis, never a throw). This is the skipped-history shape where the cursor sits on a block
|
|
696
|
+
// ahead of the checkpointed frontier.
|
|
697
|
+
it('clamps a leading checkpoint cursor down to the source checkpointed tip carried by the prune event', async ()=>{
|
|
698
|
+
// Checkpoint blocks 1-5 (checkpointed = block 5 / ckpt 1), then add uncheckpointed blocks 6-10.
|
|
699
|
+
const blocks1to5 = await Promise.all(times(5, (i)=>makeBlock(i + 1)));
|
|
700
|
+
await tipsStore.handleBlockStreamEvent({
|
|
701
|
+
type: 'blocks-added',
|
|
702
|
+
blocks: blocks1to5
|
|
703
|
+
});
|
|
704
|
+
const checkpoint1 = await makeCheckpoint(1, blocks1to5);
|
|
705
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
706
|
+
const blocks6to10 = await Promise.all(times(5, (i)=>makeBlock(i + 6)));
|
|
707
|
+
await tipsStore.handleBlockStreamEvent({
|
|
708
|
+
type: 'blocks-added',
|
|
709
|
+
blocks: blocks6to10
|
|
710
|
+
});
|
|
711
|
+
// Advance the proven cursor onto an uncheckpointed block (8) via a carried id, so it LEADS the
|
|
712
|
+
// source checkpointed tip (block 5) and will be clamped down to it on prune.
|
|
713
|
+
await tipsStore.handleBlockStreamEvent({
|
|
714
|
+
type: 'chain-proven',
|
|
715
|
+
block: makeBlockId(8),
|
|
716
|
+
checkpoint: {
|
|
717
|
+
number: CheckpointNumber(2),
|
|
718
|
+
hash: new Fr(202).toString()
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
// Prune to block 7, carrying the source's confirmed checkpointed and proven tips (both block 5 / ckpt 1
|
|
722
|
+
// here, the source's proven tip having rolled back together with its checkpointed tip).
|
|
723
|
+
await tipsStore.handleBlockStreamEvent({
|
|
724
|
+
type: 'chain-pruned',
|
|
725
|
+
block: makeBlockId(7),
|
|
726
|
+
checkpointed: makeTipId(5),
|
|
727
|
+
proven: makeTipId(5)
|
|
728
|
+
});
|
|
729
|
+
// Must not throw; the proven cursor is clamped to the carried proven tip, resolving to ckpt 1.
|
|
730
|
+
const tips = await tipsStore.getL2Tips();
|
|
731
|
+
expect(tips.proposed).toEqual(makeTip(7));
|
|
732
|
+
expect(tips.proven.block).toEqual(makeTip(5));
|
|
733
|
+
expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
734
|
+
});
|
|
735
|
+
it('keeps the checkpointed tip when pruning to an uncheckpointed block ahead of it', async ()=>{
|
|
736
|
+
const blocks1to5 = await Promise.all(times(5, (i)=>makeBlock(i + 1)));
|
|
737
|
+
await tipsStore.handleBlockStreamEvent({
|
|
738
|
+
type: 'blocks-added',
|
|
739
|
+
blocks: blocks1to5
|
|
740
|
+
});
|
|
741
|
+
const checkpoint1 = await makeCheckpoint(1, blocks1to5);
|
|
742
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1)); // checkpointed = block 5 / ckpt 1
|
|
743
|
+
const blocks6to7 = await Promise.all(times(2, (i)=>makeBlock(i + 6)));
|
|
744
|
+
await tipsStore.handleBlockStreamEvent({
|
|
745
|
+
type: 'blocks-added',
|
|
746
|
+
blocks: blocks6to7
|
|
747
|
+
}); // proposed = 7
|
|
748
|
+
// Prune to block 6: an uncheckpointed block AHEAD of the checkpointed tip (block 5). The source
|
|
749
|
+
// checkpointed tip is still block 5 / ckpt 1, so the checkpointed cursor must not move.
|
|
750
|
+
await tipsStore.handleBlockStreamEvent({
|
|
751
|
+
type: 'chain-pruned',
|
|
752
|
+
block: makeBlockId(6),
|
|
753
|
+
checkpointed: makeTipId(5),
|
|
754
|
+
proven: makeTipId(0)
|
|
755
|
+
});
|
|
756
|
+
const tips = await tipsStore.getL2Tips();
|
|
757
|
+
expect(tips.proposed).toEqual(makeTip(6));
|
|
758
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5));
|
|
759
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1)); // must NOT be zero
|
|
760
|
+
});
|
|
761
|
+
// Per-cursor clamping on prune: when the source rolls back its proven tip below its checkpointed tip
|
|
762
|
+
// (e.g. a proof tx dropped by an L1 reorg), the prune event carries both source tips and each local
|
|
763
|
+
// cursor must clamp to its OWN source tip. Clamping the proven cursor onto the (higher) checkpointed
|
|
764
|
+
// tip would transiently report unproven blocks as proven until the corrective chain-proven event lands.
|
|
765
|
+
it('clamps the proven cursor to the source proven tip, separately from the checkpointed cursor, on prune', async ()=>{
|
|
766
|
+
// Checkpoint blocks 1-15 across three checkpoints (ckpt 1 = 1-5, ckpt 2 = 6-10, ckpt 3 = 11-15).
|
|
767
|
+
const blocks1to5 = await Promise.all(times(5, (i)=>makeBlock(i + 1)));
|
|
768
|
+
await tipsStore.handleBlockStreamEvent({
|
|
769
|
+
type: 'blocks-added',
|
|
770
|
+
blocks: blocks1to5
|
|
771
|
+
});
|
|
772
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(1, blocks1to5)));
|
|
773
|
+
const blocks6to10 = await Promise.all(times(5, (i)=>makeBlock(i + 6)));
|
|
774
|
+
await tipsStore.handleBlockStreamEvent({
|
|
775
|
+
type: 'blocks-added',
|
|
776
|
+
blocks: blocks6to10
|
|
777
|
+
});
|
|
778
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(2, blocks6to10)));
|
|
779
|
+
const blocks11to15 = await Promise.all(times(5, (i)=>makeBlock(i + 11)));
|
|
780
|
+
await tipsStore.handleBlockStreamEvent({
|
|
781
|
+
type: 'blocks-added',
|
|
782
|
+
blocks: blocks11to15
|
|
783
|
+
});
|
|
784
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(3, blocks11to15)));
|
|
785
|
+
// Prove the whole chain up to block 15 (ckpt 3), so the local proven cursor leads both source tips below.
|
|
786
|
+
await tipsStore.handleBlockStreamEvent({
|
|
787
|
+
type: 'chain-proven',
|
|
788
|
+
block: makeBlockId(15),
|
|
789
|
+
checkpoint: makeCheckpointIdForBlock(15)
|
|
790
|
+
});
|
|
791
|
+
let tips = await tipsStore.getL2Tips();
|
|
792
|
+
expect(tips.checkpointed.block).toEqual(makeTip(15));
|
|
793
|
+
expect(tips.proven.block).toEqual(makeTip(15));
|
|
794
|
+
// Prune arrives with the source's proven tip (block 5 / ckpt 1) BELOW its checkpointed tip (block 10 /
|
|
795
|
+
// ckpt 2) and below the local proven cursor (block 15). Each cursor must clamp to its own source tip.
|
|
796
|
+
await tipsStore.handleBlockStreamEvent({
|
|
797
|
+
type: 'chain-pruned',
|
|
798
|
+
block: makeBlockId(10),
|
|
799
|
+
checkpointed: makeTipId(10),
|
|
800
|
+
proven: makeTipId(5)
|
|
801
|
+
});
|
|
802
|
+
tips = await tipsStore.getL2Tips();
|
|
803
|
+
// The proven cursor lands exactly on the source proven tip, NOT on the (higher) checkpointed tip.
|
|
804
|
+
expect(tips.proven.block).toEqual(makeTip(5));
|
|
805
|
+
expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
806
|
+
// The checkpointed cursor lands on the source checkpointed tip.
|
|
807
|
+
expect(tips.checkpointed.block).toEqual(makeTip(10));
|
|
808
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
|
|
545
809
|
});
|
|
546
810
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ViemCommitteeAttestations } from '@aztec/ethereum/contracts';
|
|
1
2
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import { type ZodFor } from '@aztec/foundation/schemas';
|
|
@@ -19,6 +20,14 @@ export type ValidateCheckpointNegativeResult = {
|
|
|
19
20
|
attestors: EthAddress[];
|
|
20
21
|
/** Committee attestations for this checkpoint as they were posted to L1 */
|
|
21
22
|
attestations: CommitteeAttestation[];
|
|
23
|
+
/**
|
|
24
|
+
* The exact packed `CommitteeAttestations` tuple as posted to L1 calldata, carried verbatim so the
|
|
25
|
+
* invalidation evidence is byte-faithful to the stored `attestationsHash`. A repack via
|
|
26
|
+
* `packAttestations` is not a round-trip inverse of `fromPacked`, so it would diverge from the hash
|
|
27
|
+
* and revert `invalidateBadAttestation`/`invalidateInsufficientAttestations`. Always populated on the
|
|
28
|
+
* calldata validation path, the only production source of invalidation evidence.
|
|
29
|
+
*/
|
|
30
|
+
verbatimAttestations: ViemCommitteeAttestations;
|
|
22
31
|
/** Reason for the checkpoint being invalid: not enough attestations were posted */
|
|
23
32
|
reason: 'insufficient-attestations';
|
|
24
33
|
} | {
|
|
@@ -35,6 +44,12 @@ export type ValidateCheckpointNegativeResult = {
|
|
|
35
44
|
attestors: EthAddress[];
|
|
36
45
|
/** Committee attestations for this checkpoint as they were posted to L1 */
|
|
37
46
|
attestations: CommitteeAttestation[];
|
|
47
|
+
/**
|
|
48
|
+
* The exact packed `CommitteeAttestations` tuple as posted to L1 calldata, carried verbatim so the
|
|
49
|
+
* invalidation evidence is byte-faithful to the stored `attestationsHash`. See the same field on the
|
|
50
|
+
* insufficient-attestations variant for why a repack cannot be used.
|
|
51
|
+
*/
|
|
52
|
+
verbatimAttestations: ViemCommitteeAttestations;
|
|
38
53
|
/** Reason for the checkpoint being invalid: an invalid attestation was posted */
|
|
39
54
|
reason: 'invalid-attestation';
|
|
40
55
|
/** Index in the attestations array of the invalid attestation posted */
|
|
@@ -47,4 +62,4 @@ export type ValidateCheckpointResult = {
|
|
|
47
62
|
export declare const ValidateCheckpointResultSchema: ZodFor<ValidateCheckpointResult>;
|
|
48
63
|
export declare function serializeValidateCheckpointResult(result: ValidateCheckpointResult): Buffer;
|
|
49
64
|
export declare function deserializeValidateCheckpointResult(bufferOrReader: Buffer | BufferReader): ValidateCheckpointResult;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVfYmxvY2tfcmVzdWx0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2svdmFsaWRhdGVfYmxvY2tfcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFXLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUs5RSxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBSXBCLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0Usd0RBQXdEO0FBQ3hELE1BQU0sTUFBTSxnQ0FBZ0MsR0FDeEM7SUFDRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ2IsOENBQThDO0lBQzlDLFVBQVUsRUFBRSxjQUFjLENBQUM7SUFDM0Isa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN4QixrREFBa0Q7SUFDbEQsS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUNuQiw0Q0FBNEM7SUFDNUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLG9FQUFvRTtJQUNwRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDeEIsMkVBQTJFO0lBQzNFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7Ozs7T0FNRztJQUNILG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO0lBQ2hELG1GQUFtRjtJQUNuRixNQUFNLEVBQUUsMkJBQTJCLENBQUM7Q0FDckMsR0FDRDtJQUNFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDYiw4Q0FBOEM7SUFDOUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztJQUMzQixrRUFBa0U7SUFDbEUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3hCLGtEQUFrRDtJQUNsRCxLQUFLLEVBQUUsV0FBVyxDQUFDO0lBQ25CLDRDQUE0QztJQUM1QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2Isb0VBQW9FO0lBQ3BFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN4QiwyRUFBMkU7SUFDM0UsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7SUFDckM7Ozs7T0FJRztJQUNILG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO0lBQ2hELGlGQUFpRjtJQUNqRixNQUFNLEVBQUUscUJBQXFCLENBQUM7SUFDOUIsd0VBQXdFO0lBQ3hFLFlBQVksRUFBRSxNQUFNLENBQUM7Q0FDdEIsQ0FBQztBQUVOLHlEQUF5RDtBQUN6RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFBO0NBQUUsR0FBRyxnQ0FBZ0MsQ0FBQztBQVExRixlQUFPLE1BQU0sOEJBQThCLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQXlCMUUsQ0FBQztBQUVILHdCQUFnQixpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEdBQUcsTUFBTSxDQTJCMUY7QUFFRCx3QkFBZ0IsbUNBQW1DLENBQUMsY0FBYyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsd0JBQXdCLENBc0NuSCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate_block_result.d.ts","sourceRoot":"","sources":["../../src/block/validate_block_result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"validate_block_result.d.ts","sourceRoot":"","sources":["../../src/block/validate_block_result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAqB,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAK9E,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,wDAAwD;AACxD,MAAM,MAAM,gCAAgC,GACxC;IACE,KAAK,EAAE,KAAK,CAAC;IACb,8CAA8C;IAC9C,UAAU,EAAE,cAAc,CAAC;IAC3B,kEAAkE;IAClE,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,2EAA2E;IAC3E,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC;;;;;;OAMG;IACH,oBAAoB,EAAE,yBAAyB,CAAC;IAChD,mFAAmF;IACnF,MAAM,EAAE,2BAA2B,CAAC;CACrC,GACD;IACE,KAAK,EAAE,KAAK,CAAC;IACb,8CAA8C;IAC9C,UAAU,EAAE,cAAc,CAAC;IAC3B,kEAAkE;IAClE,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,2EAA2E;IAC3E,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC;;;;OAIG;IACH,oBAAoB,EAAE,yBAAyB,CAAC;IAChD,iFAAiF;IACjF,MAAM,EAAE,qBAAqB,CAAC;IAC9B,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,yDAAyD;AACzD,MAAM,MAAM,wBAAwB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,gCAAgC,CAAC;AAQ1F,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,wBAAwB,CAyB1E,CAAC;AAEH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CA2B1F;AAED,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,wBAAwB,CAsCnH"}
|
|
@@ -2,10 +2,15 @@ import { EpochNumber, EpochNumberSchema } from '@aztec/foundation/branded-types'
|
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import { schemas } from '@aztec/foundation/schemas';
|
|
4
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
|
+
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
5
6
|
import { z } from 'zod';
|
|
6
7
|
import { CheckpointInfoSchema, deserializeCheckpointInfo, serializeCheckpointInfo } from '../checkpoint/checkpoint_info.js';
|
|
7
8
|
import { MAX_COMMITTEE_SIZE } from '../deserialization/index.js';
|
|
8
9
|
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
10
|
+
/** Zod schema for the raw packed `CommitteeAttestations` viem tuple (two 0x-prefixed hex strings). */ const ViemCommitteeAttestationsSchema = z.object({
|
|
11
|
+
signatureIndices: schemas.HexStringWith0x,
|
|
12
|
+
signaturesOrAddresses: schemas.HexStringWith0x
|
|
13
|
+
});
|
|
9
14
|
export const ValidateCheckpointResultSchema = z.union([
|
|
10
15
|
z.object({
|
|
11
16
|
valid: z.literal(true)
|
|
@@ -18,6 +23,7 @@ export const ValidateCheckpointResultSchema = z.union([
|
|
|
18
23
|
seed: schemas.BigInt,
|
|
19
24
|
attestors: z.array(schemas.EthAddress),
|
|
20
25
|
attestations: z.array(CommitteeAttestation.schema),
|
|
26
|
+
verbatimAttestations: ViemCommitteeAttestationsSchema,
|
|
21
27
|
reason: z.literal('insufficient-attestations')
|
|
22
28
|
}),
|
|
23
29
|
z.object({
|
|
@@ -28,6 +34,7 @@ export const ValidateCheckpointResultSchema = z.union([
|
|
|
28
34
|
seed: schemas.BigInt,
|
|
29
35
|
attestors: z.array(schemas.EthAddress),
|
|
30
36
|
attestations: z.array(CommitteeAttestation.schema),
|
|
37
|
+
verbatimAttestations: ViemCommitteeAttestationsSchema,
|
|
31
38
|
reason: z.literal('invalid-attestation'),
|
|
32
39
|
invalidIndex: z.number()
|
|
33
40
|
})
|
|
@@ -37,7 +44,9 @@ export function serializeValidateCheckpointResult(result) {
|
|
|
37
44
|
return serializeToBuffer(true);
|
|
38
45
|
}
|
|
39
46
|
const checkpointBuffer = serializeCheckpointInfo(result.checkpoint);
|
|
40
|
-
|
|
47
|
+
const signatureIndices = hexToBuffer(result.verbatimAttestations.signatureIndices);
|
|
48
|
+
const signaturesOrAddresses = hexToBuffer(result.verbatimAttestations.signaturesOrAddresses);
|
|
49
|
+
return serializeToBuffer(result.valid, result.reason, checkpointBuffer.length, checkpointBuffer, result.committee.length, result.committee, result.epoch, result.seed ?? 0n, result.attestors.length, result.attestors, result.attestations.length, result.attestations, result.reason === 'invalid-attestation' ? result.invalidIndex : 0, signatureIndices.length, signatureIndices, signaturesOrAddresses.length, signaturesOrAddresses);
|
|
41
50
|
}
|
|
42
51
|
export function deserializeValidateCheckpointResult(bufferOrReader) {
|
|
43
52
|
const reader = BufferReader.asReader(bufferOrReader);
|
|
@@ -55,6 +64,10 @@ export function deserializeValidateCheckpointResult(bufferOrReader) {
|
|
|
55
64
|
const attestors = reader.readVector(EthAddress, MAX_COMMITTEE_SIZE);
|
|
56
65
|
const attestations = reader.readVector(CommitteeAttestation, MAX_COMMITTEE_SIZE);
|
|
57
66
|
const invalidIndex = reader.readNumber();
|
|
67
|
+
const verbatimAttestations = {
|
|
68
|
+
signatureIndices: bufferToHex(reader.readBuffer()),
|
|
69
|
+
signaturesOrAddresses: bufferToHex(reader.readBuffer())
|
|
70
|
+
};
|
|
58
71
|
if (reason === 'insufficient-attestations') {
|
|
59
72
|
return {
|
|
60
73
|
valid,
|
|
@@ -64,7 +77,8 @@ export function deserializeValidateCheckpointResult(bufferOrReader) {
|
|
|
64
77
|
epoch,
|
|
65
78
|
seed,
|
|
66
79
|
attestors,
|
|
67
|
-
attestations
|
|
80
|
+
attestations,
|
|
81
|
+
verbatimAttestations
|
|
68
82
|
};
|
|
69
83
|
} else if (reason === 'invalid-attestation') {
|
|
70
84
|
return {
|
|
@@ -76,7 +90,8 @@ export function deserializeValidateCheckpointResult(bufferOrReader) {
|
|
|
76
90
|
seed,
|
|
77
91
|
attestors,
|
|
78
92
|
invalidIndex,
|
|
79
|
-
attestations
|
|
93
|
+
attestations,
|
|
94
|
+
verbatimAttestations
|
|
80
95
|
};
|
|
81
96
|
} else {
|
|
82
97
|
const _ = reason;
|
|
@@ -4,7 +4,7 @@ import { pick, sum } from '@aztec/foundation/collection';
|
|
|
4
4
|
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import { L2Block } from '../block/l2_block.js';
|
|
7
|
-
import {
|
|
7
|
+
import { MAX_CAPACITY_BLOCKS_PER_CHECKPOINT } from '../deserialization/index.js';
|
|
8
8
|
import { computeCheckpointOutHash } from '../messaging/out_hash.js';
|
|
9
9
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
10
10
|
import { schemas } from '../schemas/schemas.js';
|
|
@@ -50,7 +50,7 @@ export class Checkpoint {
|
|
|
50
50
|
const reader = BufferReader.asReader(buf);
|
|
51
51
|
const archive = reader.readObject(AppendOnlyTreeSnapshot);
|
|
52
52
|
const header = reader.readObject(CheckpointHeader);
|
|
53
|
-
const blocks = reader.readVector(L2Block,
|
|
53
|
+
const blocks = reader.readVector(L2Block, MAX_CAPACITY_BLOCKS_PER_CHECKPOINT);
|
|
54
54
|
const number = CheckpointNumber(reader.readNumber());
|
|
55
55
|
const feeAssetPriceModifier = reader.readInt256();
|
|
56
56
|
return new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier);
|
|
@@ -5,5 +5,6 @@ export * from './checkpoint_reexecution_tracker.js';
|
|
|
5
5
|
export * from './digest.js';
|
|
6
6
|
export * from './previous_checkpoint_out_hashes.js';
|
|
7
7
|
export * from './published_checkpoint.js';
|
|
8
|
+
export * from './simulation_overrides.js';
|
|
8
9
|
export * from './validate.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGVja3BvaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkpoint/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkpoint/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC"}
|
package/dest/checkpoint/index.js
CHANGED