@aztec/stdlib 0.0.1-commit.d3ec352c → 0.0.1-commit.f295ac2
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 +603 -5
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +7 -7
- package/dest/abi/authorization_selector.d.ts +2 -2
- package/dest/abi/authorization_selector.d.ts.map +1 -1
- package/dest/abi/authorization_selector.js +2 -1
- package/dest/abi/buffer.d.ts +2 -2
- package/dest/abi/buffer.d.ts.map +1 -1
- package/dest/abi/buffer.js +1 -1
- package/dest/abi/contract_artifact.d.ts +2 -2
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +1 -1
- package/dest/abi/decoder.d.ts +2 -2
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/encoder.d.ts +2 -2
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +1 -1
- package/dest/abi/event_selector.d.ts +2 -2
- package/dest/abi/event_selector.d.ts.map +1 -1
- package/dest/abi/event_selector.js +2 -1
- package/dest/abi/function_call.d.ts +10 -2
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_selector.d.ts +3 -2
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +9 -1
- package/dest/abi/note_selector.d.ts +2 -2
- package/dest/abi/note_selector.d.ts.map +1 -1
- package/dest/abi/note_selector.js +2 -2
- package/dest/abi/selector.d.ts +2 -2
- package/dest/abi/selector.d.ts.map +1 -1
- package/dest/abi/selector.js +4 -2
- package/dest/abi/utils.d.ts +7 -1
- package/dest/abi/utils.d.ts.map +1 -1
- package/dest/abi/utils.js +7 -0
- package/dest/auth_witness/auth_witness.d.ts +3 -2
- package/dest/auth_witness/auth_witness.d.ts.map +1 -1
- package/dest/auth_witness/auth_witness.js +2 -2
- package/dest/avm/avm.d.ts +418 -369
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +87 -25
- package/dest/avm/avm_accumulated_data.d.ts +31 -4
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_accumulated_data.js +6 -3
- package/dest/avm/avm_circuit_public_inputs.d.ts +11 -11
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.js +4 -2
- package/dest/avm/avm_proving_request.d.ts +299 -299
- package/dest/avm/contract_storage_read.d.ts +14 -2
- package/dest/avm/contract_storage_read.d.ts.map +1 -1
- package/dest/avm/contract_storage_read.js +1 -1
- package/dest/avm/contract_storage_update_request.d.ts +14 -2
- package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
- package/dest/avm/contract_storage_update_request.js +1 -1
- package/dest/avm/message_pack.d.ts +1 -1
- package/dest/avm/message_pack.d.ts.map +1 -1
- package/dest/avm/message_pack.js +2 -1
- package/dest/avm/public_call_stack_item_compressed.d.ts +4 -2
- package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
- package/dest/avm/public_call_stack_item_compressed.js +1 -1
- package/dest/avm/public_data_read.d.ts +11 -2
- package/dest/avm/public_data_read.d.ts.map +1 -1
- package/dest/avm/public_data_read.js +1 -1
- package/dest/avm/public_data_update_request.d.ts +11 -2
- package/dest/avm/public_data_update_request.d.ts.map +1 -1
- package/dest/avm/public_data_update_request.js +4 -2
- package/dest/avm/public_data_write.d.ts +8 -2
- package/dest/avm/public_data_write.d.ts.map +1 -1
- package/dest/avm/public_data_write.js +1 -1
- package/dest/avm/public_inner_call_request.d.ts +5 -2
- package/dest/avm/public_inner_call_request.d.ts.map +1 -1
- package/dest/avm/public_inner_call_request.js +3 -1
- package/dest/avm/revert_code.d.ts +5 -5
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +4 -2
- package/dest/aztec-address/index.d.ts +3 -2
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +5 -2
- package/dest/block/attestation_info.d.ts +5 -5
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +5 -5
- package/dest/block/block_hash.d.ts +8 -2
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +13 -1
- package/dest/block/block_parameter.d.ts +4 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -0
- package/dest/block/body.d.ts +1 -1
- package/dest/block/body.d.ts.map +1 -1
- package/dest/block/body.js +5 -2
- package/dest/block/checkpointed_l2_block.d.ts +150 -0
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
- package/dest/block/checkpointed_l2_block.js +46 -0
- package/dest/block/in_block.d.ts +24 -8
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/in_block.js +14 -5
- package/dest/block/index.d.ts +2 -4
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -3
- package/dest/block/l2_block_info.d.ts +2 -2
- package/dest/block/l2_block_info.d.ts.map +1 -1
- package/dest/block/l2_block_info.js +1 -1
- package/dest/block/l2_block_new.d.ts +44 -12
- package/dest/block/l2_block_new.d.ts.map +1 -1
- package/dest/block/l2_block_new.js +43 -23
- package/dest/block/l2_block_source.d.ts +337 -92
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +25 -6
- 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 +15 -5
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +9 -2
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +102 -31
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
- package/dest/block/proposal/attestations_and_signers.d.ts +2 -2
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/committee_attestation.d.ts +2 -2
- package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
- 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 +479 -42
- package/dest/block/validate_block_result.d.ts +24 -24
- package/dest/block/validate_block_result.d.ts.map +1 -1
- package/dest/block/validate_block_result.js +18 -17
- package/dest/checkpoint/checkpoint.d.ts +48 -9
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +58 -7
- package/dest/checkpoint/checkpoint_info.d.ts +38 -0
- package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_info.js +34 -0
- 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/published_checkpoint.d.ts +37 -11
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +15 -4
- 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 +2 -2
- package/dest/contract/complete_address.d.ts +5 -2
- package/dest/contract/complete_address.d.ts.map +1 -1
- package/dest/contract/complete_address.js +1 -1
- package/dest/contract/contract_address.d.ts +2 -2
- package/dest/contract/contract_address.d.ts.map +1 -1
- package/dest/contract/contract_address.js +2 -2
- package/dest/contract/contract_class.d.ts +2 -2
- package/dest/contract/contract_class.d.ts.map +1 -1
- package/dest/contract/contract_class.js +1 -1
- package/dest/contract/contract_class_id.d.ts +2 -2
- package/dest/contract/contract_class_id.d.ts.map +1 -1
- package/dest/contract/contract_class_id.js +3 -3
- package/dest/contract/contract_deployment_data.d.ts +5 -5
- package/dest/contract/contract_instance.d.ts +2 -2
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +1 -1
- package/dest/contract/contract_instance_update.d.ts +2 -2
- package/dest/contract/contract_instance_update.d.ts.map +1 -1
- package/dest/contract/contract_instance_update.js +1 -1
- package/dest/contract/deployment_info.d.ts +2 -2
- package/dest/contract/deployment_info.d.ts.map +1 -1
- package/dest/contract/index.d.ts +1 -3
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +0 -2
- package/dest/contract/interfaces/contract_class.d.ts +19 -14
- package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_class.js +35 -18
- package/dest/contract/interfaces/contract_data_source.d.ts +2 -2
- package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.d.ts +40 -31
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +30 -5
- package/dest/contract/interfaces/contract_instance_update.d.ts +7 -8
- package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance_update.js +5 -5
- package/dest/contract/partial_address.d.ts +2 -2
- package/dest/contract/partial_address.d.ts.map +1 -1
- package/dest/contract/private_function.d.ts +2 -2
- package/dest/contract/private_function.d.ts.map +1 -1
- package/dest/contract/private_function.js +3 -2
- package/dest/contract/private_function_membership_proof.js +2 -2
- package/dest/contract/utility_function_membership_proof.js +1 -1
- package/dest/database-version/version_manager.d.ts +4 -2
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +3 -1
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
- package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
- package/dest/delayed_public_mutable/delayed_public_mutable_values.js +2 -2
- package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts +2 -2
- package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts.map +1 -1
- package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.js +1 -1
- package/dest/delayed_public_mutable/scheduled_value_change.d.ts +2 -2
- package/dest/delayed_public_mutable/scheduled_value_change.d.ts.map +1 -1
- package/dest/delayed_public_mutable/scheduled_value_change.js +1 -1
- package/dest/deserialization/index.d.ts +11 -0
- package/dest/deserialization/index.d.ts.map +1 -0
- package/dest/deserialization/index.js +10 -0
- package/dest/epoch-helpers/index.d.ts +1 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +3 -3
- package/dest/errors/proving_error.d.ts +2 -2
- package/dest/errors/proving_error.d.ts.map +1 -1
- package/dest/errors/simulation_error.d.ts +2 -2
- package/dest/errors/simulation_error.d.ts.map +1 -1
- package/dest/fees/transaction_fee.d.ts +2 -2
- package/dest/fees/transaction_fee.d.ts.map +1 -1
- package/dest/gas/gas.d.ts +2 -2
- package/dest/gas/gas.d.ts.map +1 -1
- package/dest/gas/gas.js +4 -2
- package/dest/gas/gas_fees.d.ts +2 -2
- package/dest/gas/gas_fees.d.ts.map +1 -1
- package/dest/gas/gas_fees.js +3 -1
- package/dest/gas/gas_settings.d.ts +2 -2
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +1 -1
- package/dest/hash/hash.d.ts +2 -10
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +3 -14
- package/dest/hash/map_slot.d.ts +2 -2
- package/dest/hash/map_slot.d.ts.map +1 -1
- package/dest/hash/map_slot.js +1 -1
- package/dest/interfaces/allowed_element.d.ts +8 -9
- package/dest/interfaces/allowed_element.d.ts.map +1 -1
- package/dest/interfaces/allowed_element.js +3 -3
- package/dest/interfaces/api_limit.d.ts +2 -1
- package/dest/interfaces/api_limit.d.ts.map +1 -1
- package/dest/interfaces/api_limit.js +1 -0
- package/dest/interfaces/archiver.d.ts +12 -7
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +25 -18
- package/dest/interfaces/aztec-node-admin.d.ts +93 -41
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +3 -3
- package/dest/interfaces/aztec-node.d.ts +55 -67
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +20 -19
- package/dest/interfaces/block-builder.d.ts +20 -17
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +9 -1
- package/dest/interfaces/configs.d.ts +56 -27
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +12 -6
- package/dest/interfaces/epoch-prover.d.ts +2 -2
- package/dest/interfaces/epoch-prover.d.ts.map +1 -1
- package/dest/interfaces/get_logs_response.d.ts +20 -5
- package/dest/interfaces/get_logs_response.d.ts.map +1 -1
- package/dest/interfaces/get_logs_response.js +5 -4
- package/dest/interfaces/l2_logs_source.d.ts +10 -14
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +3 -3
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +7 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +3 -4
- package/dest/interfaces/prover-client.d.ts +5 -3
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +5 -4
- package/dest/interfaces/proving-job.d.ts +184 -184
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +1 -7
- package/dest/interfaces/public_state_source.d.ts +2 -2
- package/dest/interfaces/public_state_source.d.ts.map +1 -1
- package/dest/interfaces/server_circuit_prover.d.ts +4 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/slasher.d.ts +1 -1
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +3 -3
- package/dest/interfaces/validator.d.ts +115 -26
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +9 -7
- package/dest/interfaces/world_state.d.ts +17 -8
- package/dest/interfaces/world_state.d.ts.map +1 -1
- package/dest/kernel/claimed_length_array.d.ts +2 -2
- package/dest/kernel/claimed_length_array.d.ts.map +1 -1
- package/dest/kernel/claimed_length_array.js +3 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +2 -2
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +14 -4
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -3
- package/dest/kernel/hints/key_validation_hint.d.ts +3 -2
- package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_hint.js +1 -1
- package/dest/kernel/hints/key_validation_request.d.ts +5 -3
- package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request.js +2 -1
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts +7 -2
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_request_and_generator.js +1 -1
- package/dest/kernel/hints/note_hash_read_request_hints.d.ts +2 -2
- package/dest/kernel/hints/note_hash_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/note_hash_read_request_hints.js +1 -1
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
- package/dest/kernel/hints/read_request.d.ts +8 -2
- package/dest/kernel/hints/read_request.d.ts.map +1 -1
- package/dest/kernel/hints/read_request.js +1 -1
- package/dest/kernel/hints/read_request_hints.d.ts +7 -1
- package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts +2 -2
- package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts.map +1 -1
- package/dest/kernel/hints/scoped_value_cache.d.ts +2 -2
- package/dest/kernel/hints/scoped_value_cache.d.ts.map +1 -1
- package/dest/kernel/hints/transient_data_squashing_hint.d.ts +2 -2
- package/dest/kernel/hints/transient_data_squashing_hint.d.ts.map +1 -1
- package/dest/kernel/hints/transient_data_squashing_hint.js +4 -2
- package/dest/kernel/hints/tree_leaf_read_request.d.ts +2 -2
- package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +1 -1
- package/dest/kernel/hints/tree_leaf_read_request.js +1 -1
- package/dest/kernel/log_hash.d.ts +2 -2
- package/dest/kernel/log_hash.d.ts.map +1 -1
- package/dest/kernel/log_hash.js +4 -2
- package/dest/kernel/note_hash.d.ts +2 -2
- package/dest/kernel/note_hash.d.ts.map +1 -1
- package/dest/kernel/note_hash.js +1 -1
- package/dest/kernel/nullifier.d.ts +2 -2
- package/dest/kernel/nullifier.d.ts.map +1 -1
- package/dest/kernel/nullifier.js +1 -1
- package/dest/kernel/padded_side_effects.d.ts +2 -2
- package/dest/kernel/padded_side_effects.d.ts.map +1 -1
- package/dest/kernel/padded_side_effects.js +1 -1
- package/dest/kernel/private_accumulated_data.d.ts +23 -1
- package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_call_data.d.ts +26 -2
- package/dest/kernel/private_call_data.d.ts.map +1 -1
- package/dest/kernel/private_call_data.js +1 -1
- package/dest/kernel/private_call_request.d.ts +17 -2
- package/dest/kernel/private_call_request.d.ts.map +1 -1
- package/dest/kernel/private_call_request.js +1 -1
- package/dest/kernel/private_circuit_public_inputs.d.ts +121 -48
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +60 -60
- package/dest/kernel/private_context_inputs.d.ts +2 -2
- package/dest/kernel/private_context_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +32 -2
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +1 -1
- package/dest/kernel/private_kernel_data.d.ts +7 -1
- package/dest/kernel/private_kernel_data.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +23 -2
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.js +1 -1
- package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
- package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +24 -2
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +1 -1
- package/dest/kernel/private_log_data.d.ts +2 -2
- package/dest/kernel/private_log_data.d.ts.map +1 -1
- package/dest/kernel/private_log_data.js +5 -2
- package/dest/kernel/private_to_avm_accumulated_data.d.ts +4 -4
- package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_avm_accumulated_data.js +6 -3
- package/dest/kernel/private_to_public_accumulated_data.d.ts +2 -2
- package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_public_accumulated_data.js +4 -2
- package/dest/kernel/private_to_public_accumulated_data_builder.d.ts +2 -2
- package/dest/kernel/private_to_public_accumulated_data_builder.d.ts.map +1 -1
- package/dest/kernel/private_to_public_accumulated_data_builder.js +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +2 -2
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +1 -1
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts +18 -2
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_accumulated_data.js +4 -2
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +17 -2
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +1 -1
- package/dest/kernel/private_validation_requests.d.ts +10 -1
- package/dest/kernel/private_validation_requests.d.ts.map +1 -1
- package/dest/kernel/private_validation_requests.js +3 -1
- package/dest/kernel/public_call_request.d.ts +23 -2
- package/dest/kernel/public_call_request.d.ts.map +1 -1
- package/dest/kernel/public_call_request.js +6 -3
- package/dest/kernel/utils/optional_number.d.ts +8 -2
- package/dest/kernel/utils/optional_number.d.ts.map +1 -1
- package/dest/keys/derivation.d.ts +4 -3
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +5 -2
- package/dest/keys/public_key.d.ts +2 -2
- package/dest/keys/public_key.d.ts.map +1 -1
- package/dest/keys/public_keys.d.ts +7 -2
- package/dest/keys/public_keys.d.ts.map +1 -1
- package/dest/keys/public_keys.js +3 -2
- package/dest/l1-contracts/slash_factory.d.ts +3 -2
- package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
- package/dest/l1-contracts/slash_factory.js +1 -1
- package/dest/logs/contract_class_log.d.ts +2 -2
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +5 -3
- package/dest/logs/debug_log.d.ts +2 -2
- package/dest/logs/debug_log.d.ts.map +1 -1
- package/dest/logs/debug_log.js +1 -1
- package/dest/logs/directional_app_tagging_secret.d.ts +2 -2
- package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -1
- package/dest/logs/directional_app_tagging_secret.js +3 -2
- package/dest/logs/extended_contract_class_log.d.ts +3 -1
- package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
- package/dest/logs/extended_public_log.d.ts +11 -3
- package/dest/logs/extended_public_log.d.ts.map +1 -1
- package/dest/logs/index.d.ts +3 -2
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +2 -1
- package/dest/logs/log_id.d.ts +13 -1
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +15 -8
- package/dest/logs/message_context.d.ts +2 -2
- package/dest/logs/message_context.d.ts.map +1 -1
- package/dest/logs/message_context.js +1 -1
- package/dest/logs/pending_tagged_log.d.ts +2 -2
- package/dest/logs/pending_tagged_log.d.ts.map +1 -1
- package/dest/logs/pending_tagged_log.js +1 -1
- package/dest/logs/private_log.d.ts +2 -2
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/private_log.js +6 -3
- package/dest/logs/public_log.d.ts +3 -2
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +7 -2
- package/dest/logs/shared_secret_derivation.d.ts +2 -2
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +1 -1
- package/dest/logs/siloed_tag.d.ts +23 -0
- package/dest/logs/siloed_tag.d.ts.map +1 -0
- package/dest/logs/siloed_tag.js +30 -0
- package/dest/logs/tag.d.ts +21 -0
- package/dest/logs/tag.d.ts.map +1 -0
- package/dest/logs/tag.js +30 -0
- package/dest/logs/tx_scoped_l2_log.d.ts +24 -33
- package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
- package/dest/logs/tx_scoped_l2_log.js +37 -43
- package/dest/messaging/in_hash.d.ts +5 -3
- package/dest/messaging/in_hash.d.ts.map +1 -1
- package/dest/messaging/in_hash.js +4 -2
- package/dest/messaging/inbox_leaf.d.ts +10 -7
- package/dest/messaging/inbox_leaf.d.ts.map +1 -1
- package/dest/messaging/inbox_leaf.js +10 -9
- package/dest/messaging/l1_actor.d.ts +8 -2
- package/dest/messaging/l1_actor.d.ts.map +1 -1
- package/dest/messaging/l1_actor.js +2 -2
- package/dest/messaging/l1_to_l2_message.d.ts +7 -2
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +2 -2
- package/dest/messaging/l1_to_l2_message_source.d.ts +4 -15
- package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/messaging/l2_actor.d.ts +8 -2
- package/dest/messaging/l2_actor.d.ts.map +1 -1
- package/dest/messaging/l2_actor.js +2 -2
- package/dest/messaging/l2_to_l1_membership.d.ts +89 -7
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +161 -43
- package/dest/messaging/l2_to_l1_message.d.ts +3 -2
- package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_message.js +4 -1
- package/dest/messaging/out_hash.d.ts +42 -4
- package/dest/messaging/out_hash.d.ts.map +1 -1
- package/dest/messaging/out_hash.js +55 -20
- package/dest/note/note.d.ts +2 -2
- package/dest/note/note.d.ts.map +1 -1
- package/dest/note/note.js +5 -2
- package/dest/note/note_dao.d.ts +41 -6
- package/dest/note/note_dao.d.ts.map +1 -1
- package/dest/note/note_dao.js +21 -12
- package/dest/note/notes_filter.d.ts +2 -2
- package/dest/note/notes_filter.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.d.ts +3 -3
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +1 -1
- package/dest/p2p/block_proposal.d.ts +94 -22
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +142 -40
- package/dest/p2p/checkpoint_attestation.d.ts +81 -0
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
- package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +24 -20
- package/dest/p2p/checkpoint_proposal.d.ts +160 -0
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
- package/dest/p2p/checkpoint_proposal.js +229 -0
- package/dest/p2p/consensus_payload.d.ts +10 -10
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +4 -6
- package/dest/p2p/gossipable.d.ts +4 -3
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +16 -5
- package/dest/p2p/index.d.ts +4 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +3 -1
- package/dest/p2p/signature_utils.d.ts +5 -3
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +5 -2
- package/dest/p2p/signed_txs.d.ts +42 -0
- package/dest/p2p/signed_txs.d.ts.map +1 -0
- package/dest/p2p/signed_txs.js +75 -0
- package/dest/p2p/topic_type.d.ts +3 -2
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +10 -3
- package/dest/parity/parity_base_private_inputs.d.ts +4 -2
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
- package/dest/parity/parity_base_private_inputs.js +1 -1
- package/dest/parity/parity_public_inputs.d.ts +5 -2
- package/dest/parity/parity_public_inputs.d.ts.map +1 -1
- package/dest/parity/parity_public_inputs.js +1 -1
- package/dest/parity/parity_root_private_inputs.d.ts +2 -1
- package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.d.ts +2 -2
- package/dest/proofs/chonk_proof.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.js +11 -6
- package/dest/proofs/proof.d.ts +5 -2
- package/dest/proofs/proof.d.ts.map +1 -1
- package/dest/proofs/proof.js +1 -1
- package/dest/proofs/proof_data.d.ts +13 -1
- package/dest/proofs/proof_data.d.ts.map +1 -1
- package/dest/proofs/proof_data.js +17 -0
- package/dest/proofs/recursive_proof.d.ts +11 -2
- package/dest/proofs/recursive_proof.d.ts.map +1 -1
- package/dest/proofs/recursive_proof.js +1 -1
- package/dest/rollup/avm_proof_data.d.ts +3 -5
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/avm_proof_data.js +1 -9
- package/dest/rollup/base_rollup_hints.d.ts +35 -2
- package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
- package/dest/rollup/base_rollup_hints.js +1 -1
- package/dest/rollup/block_constant_data.d.ts +13 -2
- package/dest/rollup/block_constant_data.d.ts.map +1 -1
- package/dest/rollup/block_constant_data.js +1 -1
- package/dest/rollup/block_headers_hash.d.ts +2 -2
- package/dest/rollup/block_headers_hash.d.ts.map +1 -1
- package/dest/rollup/block_headers_hash.js +2 -2
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.d.ts +48 -12
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/block_rollup_public_inputs.js +9 -13
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +65 -2
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/block_root_rollup_private_inputs.js +1 -1
- package/dest/rollup/checkpoint_constant_data.d.ts +12 -2
- package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
- package/dest/rollup/checkpoint_constant_data.js +5 -2
- package/dest/rollup/checkpoint_header.d.ts +48 -14
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +55 -22
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +42 -2
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +46 -4
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +15 -3
- package/dest/rollup/epoch_constant_data.d.ts +17 -2
- package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
- package/dest/rollup/epoch_constant_data.js +1 -1
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_chonk_verifier_private_inputs.js +1 -1
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
- package/dest/rollup/public_chonk_verifier_public_inputs.js +1 -1
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +1 -1
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/public_tx_base_rollup_private_inputs.js +2 -2
- package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
- package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts +19 -4
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +10 -4
- package/dest/rollup/tree_snapshot_diff_hints.d.ts +25 -2
- package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
- package/dest/rollup/tree_snapshot_diff_hints.js +1 -1
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/tx_rollup_public_inputs.d.ts +30 -2
- package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/tx_rollup_public_inputs.js +1 -1
- package/dest/schemas/schemas.d.ts +7 -4
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +2 -1
- package/dest/slashing/types.d.ts +4 -5
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +5 -5
- package/dest/snapshots/types.d.ts +1 -1
- package/dest/snapshots/types.d.ts.map +1 -1
- package/dest/snapshots/types.js +5 -5
- package/dest/stats/stats.d.ts +10 -6
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +42 -12
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +98 -31
- package/dest/tests/jest.d.ts +4 -4
- package/dest/tests/jest.js +9 -9
- package/dest/tests/mocks.d.ts +81 -18
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +173 -55
- package/dest/trees/append_only_tree_snapshot.d.ts +14 -2
- package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
- package/dest/trees/append_only_tree_snapshot.js +4 -2
- package/dest/trees/database_public_state_source.d.ts +2 -2
- package/dest/trees/database_public_state_source.d.ts.map +1 -1
- package/dest/trees/database_public_state_source.js +1 -1
- package/dest/trees/nullifier_leaf.d.ts +14 -2
- package/dest/trees/nullifier_leaf.d.ts.map +1 -1
- package/dest/trees/nullifier_leaf.js +1 -1
- package/dest/trees/nullifier_membership_witness.d.ts +11 -2
- package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
- package/dest/trees/nullifier_membership_witness.js +1 -1
- package/dest/trees/public_data_leaf.d.ts +17 -2
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_leaf.js +1 -1
- package/dest/trees/public_data_witness.d.ts +12 -2
- package/dest/trees/public_data_witness.d.ts.map +1 -1
- package/dest/trees/public_data_witness.js +1 -1
- package/dest/tx/block_header.d.ts +20 -8
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +14 -4
- package/dest/tx/call_context.d.ts +14 -2
- package/dest/tx/call_context.d.ts.map +1 -1
- package/dest/tx/call_context.js +3 -1
- package/dest/tx/capsule.d.ts +5 -2
- package/dest/tx/capsule.d.ts.map +1 -1
- package/dest/tx/capsule.js +1 -1
- package/dest/tx/execution_payload.d.ts +9 -1
- package/dest/tx/execution_payload.d.ts.map +1 -1
- package/dest/tx/function_data.d.ts +5 -3
- package/dest/tx/function_data.d.ts.map +1 -1
- package/dest/tx/function_data.js +1 -1
- package/dest/tx/global_variable_builder.d.ts +5 -3
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.d.ts +15 -2
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/global_variables.js +5 -3
- package/dest/tx/hashed_values.d.ts +8 -2
- package/dest/tx/hashed_values.d.ts.map +1 -1
- package/dest/tx/hashed_values.js +1 -1
- package/dest/tx/in_tx.d.ts +26 -0
- package/dest/tx/in_tx.d.ts.map +1 -0
- package/dest/tx/in_tx.js +14 -0
- package/dest/tx/index.d.ts +2 -2
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +1 -1
- package/dest/tx/indexed_tx_effect.d.ts +5 -4
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +3 -3
- package/dest/tx/offchain_effect.d.ts +2 -2
- package/dest/tx/offchain_effect.d.ts.map +1 -1
- package/dest/tx/offchain_effect.js +1 -1
- package/dest/tx/partial_state_reference.d.ts +5 -2
- package/dest/tx/partial_state_reference.d.ts.map +1 -1
- package/dest/tx/private_execution_result.d.ts +25 -8
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +6 -23
- package/dest/tx/private_tx_constant_data.d.ts +17 -2
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
- package/dest/tx/private_tx_constant_data.js +1 -1
- package/dest/tx/processed_tx.d.ts +4 -3
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +4 -6
- package/dest/tx/profiling.d.ts +150 -27
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +45 -8
- package/dest/tx/protocol_contracts.d.ts +3 -3
- package/dest/tx/protocol_contracts.d.ts.map +1 -1
- package/dest/tx/protocol_contracts.js +1 -1
- package/dest/tx/public_call_request_with_calldata.d.ts +8 -2
- package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
- package/dest/tx/public_call_request_with_calldata.js +4 -2
- package/dest/tx/public_simulation_output.d.ts +2 -2
- package/dest/tx/public_simulation_output.d.ts.map +1 -1
- package/dest/tx/public_simulation_output.js +1 -1
- package/dest/tx/simulated_tx.d.ts +1031 -7
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/state_reference.d.ts +4 -2
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +3 -1
- package/dest/tx/tree_snapshots.d.ts +2 -2
- package/dest/tx/tree_snapshots.d.ts.map +1 -1
- package/dest/tx/tree_snapshots.js +3 -1
- package/dest/tx/tx.d.ts +33 -4
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +13 -4
- package/dest/tx/tx_constant_data.d.ts +2 -2
- package/dest/tx/tx_constant_data.d.ts.map +1 -1
- package/dest/tx/tx_constant_data.js +1 -1
- package/dest/tx/tx_context.d.ts +3 -2
- package/dest/tx/tx_context.d.ts.map +1 -1
- package/dest/tx/tx_context.js +1 -1
- package/dest/tx/tx_effect.d.ts +33 -7
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +8 -11
- package/dest/tx/tx_execution_request.d.ts +31 -2
- package/dest/tx/tx_execution_request.d.ts.map +1 -1
- package/dest/tx/tx_execution_request.js +7 -3
- package/dest/tx/tx_hash.d.ts +3 -2
- package/dest/tx/tx_hash.d.ts.map +1 -1
- package/dest/tx/tx_hash.js +1 -1
- package/dest/tx/tx_receipt.d.ts +7 -1
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_request.d.ts +7 -2
- package/dest/tx/tx_request.d.ts.map +1 -1
- package/dest/tx/tx_request.js +2 -2
- package/dest/tx/validator/tx_validator.d.ts +1 -4
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/tx/validator/tx_validator.js +4 -4
- package/dest/types/shared.d.ts +4 -1
- package/dest/types/shared.d.ts.map +1 -1
- package/dest/update-checker/update-checker.d.ts +2 -2
- package/dest/update-checker/update-checker.d.ts.map +1 -1
- package/dest/update-checker/update-checker.js +1 -1
- package/dest/validators/errors.d.ts +2 -2
- package/dest/validators/errors.d.ts.map +1 -1
- package/dest/validators/schemas.d.ts +9 -9
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +13 -13
- package/dest/versioning/versioning.d.ts +2 -2
- package/dest/versioning/versioning.d.ts.map +1 -1
- package/dest/vks/verification_key.d.ts +23 -2
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/verification_key.js +1 -1
- package/dest/vks/vk_data.d.ts +8 -2
- package/dest/vks/vk_data.d.ts.map +1 -1
- package/dest/vks/vk_data.js +1 -1
- package/dest/zkpassport/index.d.ts +4 -5
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +11 -11
- package/package.json +17 -10
- package/src/abi/abi.ts +40 -34
- package/src/abi/authorization_selector.ts +3 -2
- package/src/abi/buffer.ts +1 -1
- package/src/abi/contract_artifact.ts +10 -10
- package/src/abi/decoder.ts +1 -1
- package/src/abi/encoder.ts +1 -1
- package/src/abi/event_selector.ts +3 -2
- package/src/abi/function_call.ts +1 -1
- package/src/abi/function_selector.ts +11 -2
- package/src/abi/note_selector.ts +2 -2
- package/src/abi/selector.ts +1 -1
- package/src/abi/utils.ts +17 -0
- package/src/auth_witness/auth_witness.ts +2 -2
- package/src/avm/avm.ts +116 -13
- package/src/avm/avm_accumulated_data.ts +1 -1
- package/src/avm/avm_circuit_public_inputs.ts +1 -1
- package/src/avm/contract_storage_read.ts +1 -1
- package/src/avm/contract_storage_update_request.ts +1 -1
- package/src/avm/message_pack.ts +2 -1
- package/src/avm/public_call_stack_item_compressed.ts +1 -1
- package/src/avm/public_data_read.ts +1 -1
- package/src/avm/public_data_update_request.ts +1 -1
- package/src/avm/public_data_write.ts +1 -1
- package/src/avm/public_inner_call_request.ts +1 -1
- package/src/avm/revert_code.ts +1 -1
- package/src/aztec-address/index.ts +2 -1
- package/src/block/attestation_info.ts +10 -7
- package/src/block/block_hash.ts +23 -1
- package/src/block/block_parameter.ts +4 -2
- package/src/block/body.ts +2 -1
- package/src/block/checkpointed_l2_block.ts +70 -0
- package/src/block/in_block.ts +15 -6
- package/src/block/index.ts +1 -3
- package/src/block/l2_block_info.ts +1 -1
- package/src/block/l2_block_new.ts +71 -19
- package/src/block/l2_block_source.ts +170 -72
- package/src/block/l2_block_stream/index.ts +1 -0
- package/src/block/l2_block_stream/interfaces.ts +15 -4
- package/src/block/l2_block_stream/l2_block_stream.ts +120 -37
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
- package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
- package/src/block/proposal/attestations_and_signers.ts +1 -1
- package/src/block/proposal/committee_attestation.ts +1 -1
- package/src/block/test/l2_tips_store_test_suite.ts +481 -36
- package/src/block/validate_block_result.ts +40 -35
- package/src/checkpoint/checkpoint.ts +80 -10
- package/src/checkpoint/checkpoint_info.ts +52 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +23 -8
- package/src/contract/artifact_hash.ts +2 -2
- package/src/contract/complete_address.ts +1 -1
- package/src/contract/contract_address.ts +2 -2
- package/src/contract/contract_class.ts +2 -2
- package/src/contract/contract_class_id.ts +3 -3
- package/src/contract/contract_instance.ts +1 -1
- package/src/contract/contract_instance_update.ts +1 -1
- package/src/contract/deployment_info.ts +1 -1
- package/src/contract/index.ts +0 -2
- package/src/contract/interfaces/contract_class.ts +78 -47
- package/src/contract/interfaces/contract_data_source.ts +1 -1
- package/src/contract/interfaces/contract_instance.ts +48 -16
- package/src/contract/interfaces/contract_instance_update.ts +12 -10
- package/src/contract/partial_address.ts +1 -1
- package/src/contract/private_function.ts +3 -2
- package/src/contract/private_function_membership_proof.ts +2 -2
- package/src/contract/utility_function_membership_proof.ts +1 -1
- package/src/delayed_public_mutable/delayed_public_mutable_values.ts +2 -2
- package/src/delayed_public_mutable/delayed_public_mutable_values_with_hash.ts +1 -1
- package/src/delayed_public_mutable/scheduled_value_change.ts +1 -1
- package/src/deserialization/index.ts +21 -0
- package/src/epoch-helpers/index.ts +11 -9
- package/src/errors/simulation_error.ts +1 -1
- package/src/fees/transaction_fee.ts +1 -1
- package/src/gas/gas.ts +1 -1
- package/src/gas/gas_fees.ts +1 -1
- package/src/gas/gas_settings.ts +1 -1
- package/src/hash/hash.ts +3 -13
- package/src/hash/map_slot.ts +2 -2
- package/src/interfaces/allowed_element.ts +10 -8
- package/src/interfaces/api_limit.ts +1 -0
- package/src/interfaces/archiver.ts +41 -22
- package/src/interfaces/aztec-node-admin.ts +7 -4
- package/src/interfaces/aztec-node.ts +101 -100
- package/src/interfaces/block-builder.ts +43 -26
- package/src/interfaces/configs.ts +69 -33
- package/src/interfaces/epoch-prover.ts +1 -1
- package/src/interfaces/get_logs_response.ts +13 -9
- package/src/interfaces/l2_logs_source.ts +9 -13
- package/src/interfaces/merkle_tree_operations.ts +5 -2
- package/src/interfaces/p2p.ts +8 -12
- package/src/interfaces/prover-client.ts +13 -10
- package/src/interfaces/proving-job.ts +2 -11
- package/src/interfaces/public_state_source.ts +1 -1
- package/src/interfaces/server_circuit_prover.ts +3 -3
- package/src/interfaces/slasher.ts +24 -22
- package/src/interfaces/validator.ts +85 -31
- package/src/interfaces/world_state.ts +16 -9
- package/src/kernel/claimed_length_array.ts +1 -1
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +23 -11
- package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +2 -4
- package/src/kernel/hints/key_validation_hint.ts +1 -1
- package/src/kernel/hints/key_validation_request.ts +2 -1
- package/src/kernel/hints/key_validation_request_and_generator.ts +1 -1
- package/src/kernel/hints/note_hash_read_request_hints.ts +1 -1
- package/src/kernel/hints/read_request.ts +1 -1
- package/src/kernel/hints/scoped_key_validation_request_and_generator.ts +1 -1
- package/src/kernel/hints/scoped_value_cache.ts +1 -1
- package/src/kernel/hints/transient_data_squashing_hint.ts +1 -1
- package/src/kernel/hints/tree_leaf_read_request.ts +1 -1
- package/src/kernel/log_hash.ts +1 -1
- package/src/kernel/note_hash.ts +1 -1
- package/src/kernel/nullifier.ts +1 -1
- package/src/kernel/padded_side_effects.ts +1 -1
- package/src/kernel/private_call_data.ts +1 -1
- package/src/kernel/private_call_request.ts +1 -1
- package/src/kernel/private_circuit_public_inputs.ts +86 -86
- package/src/kernel/private_context_inputs.ts +1 -1
- package/src/kernel/private_kernel_circuit_public_inputs.ts +1 -1
- package/src/kernel/private_kernel_init_circuit_private_inputs.ts +1 -1
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +1 -1
- package/src/kernel/private_log_data.ts +1 -1
- package/src/kernel/private_to_avm_accumulated_data.ts +1 -1
- package/src/kernel/private_to_public_accumulated_data.ts +1 -1
- package/src/kernel/private_to_public_accumulated_data_builder.ts +1 -1
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +2 -2
- package/src/kernel/private_to_rollup_accumulated_data.ts +1 -1
- package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +2 -2
- package/src/kernel/public_call_request.ts +1 -1
- package/src/kernel/utils/optional_number.ts +1 -1
- package/src/keys/derivation.ts +5 -2
- package/src/keys/public_key.ts +1 -1
- package/src/keys/public_keys.ts +3 -2
- package/src/l1-contracts/slash_factory.ts +3 -1
- package/src/logs/contract_class_log.ts +2 -2
- package/src/logs/debug_log.ts +1 -1
- package/src/logs/directional_app_tagging_secret.ts +4 -2
- package/src/logs/index.ts +2 -1
- package/src/logs/log_id.ts +16 -6
- package/src/logs/message_context.ts +1 -1
- package/src/logs/pending_tagged_log.ts +1 -1
- package/src/logs/private_log.ts +3 -2
- package/src/logs/public_log.ts +8 -1
- package/src/logs/shared_secret_derivation.ts +2 -2
- package/src/logs/siloed_tag.ts +44 -0
- package/src/logs/tag.ts +42 -0
- package/src/logs/tx_scoped_l2_log.ts +45 -43
- package/src/messaging/in_hash.ts +4 -2
- package/src/messaging/inbox_leaf.ts +11 -10
- package/src/messaging/l1_actor.ts +2 -2
- package/src/messaging/l1_to_l2_message.ts +3 -2
- package/src/messaging/l1_to_l2_message_source.ts +3 -16
- package/src/messaging/l2_actor.ts +2 -2
- package/src/messaging/l2_to_l1_membership.ts +179 -53
- package/src/messaging/l2_to_l1_message.ts +5 -1
- package/src/messaging/out_hash.ts +63 -22
- package/src/note/note.ts +5 -2
- package/src/note/note_dao.ts +39 -13
- package/src/note/notes_filter.ts +1 -1
- package/src/p2p/attestation_utils.ts +3 -3
- package/src/p2p/block_proposal.ts +207 -46
- package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +33 -26
- package/src/p2p/checkpoint_proposal.ts +348 -0
- package/src/p2p/consensus_payload.ts +6 -8
- package/src/p2p/gossipable.ts +14 -4
- package/src/p2p/index.ts +3 -1
- package/src/p2p/signature_utils.ts +5 -2
- package/src/p2p/signed_txs.ts +88 -0
- package/src/p2p/topic_type.ts +4 -3
- package/src/parity/parity_base_private_inputs.ts +1 -1
- package/src/parity/parity_public_inputs.ts +1 -1
- package/src/proofs/chonk_proof.ts +11 -7
- package/src/proofs/proof.ts +1 -1
- package/src/proofs/proof_data.ts +24 -0
- package/src/proofs/recursive_proof.ts +1 -1
- package/src/rollup/avm_proof_data.ts +2 -9
- package/src/rollup/base_rollup_hints.ts +1 -1
- package/src/rollup/block_constant_data.ts +1 -1
- package/src/rollup/block_headers_hash.ts +2 -2
- package/src/rollup/block_rollup_public_inputs.ts +6 -12
- package/src/rollup/block_root_rollup_private_inputs.ts +1 -1
- package/src/rollup/checkpoint_constant_data.ts +2 -1
- package/src/rollup/checkpoint_header.ts +70 -23
- package/src/rollup/checkpoint_rollup_public_inputs.ts +13 -1
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +16 -2
- package/src/rollup/epoch_constant_data.ts +1 -1
- package/src/rollup/public_chonk_verifier_private_inputs.ts +1 -1
- package/src/rollup/public_chonk_verifier_public_inputs.ts +1 -1
- package/src/rollup/public_tx_base_rollup_private_inputs.ts +2 -2
- package/src/rollup/root_rollup_public_inputs.ts +10 -1
- package/src/rollup/tree_snapshot_diff_hints.ts +1 -1
- package/src/rollup/tx_rollup_public_inputs.ts +1 -1
- package/src/schemas/schemas.ts +6 -1
- package/src/slashing/types.ts +24 -20
- package/src/snapshots/types.ts +33 -29
- package/src/stats/stats.ts +10 -5
- package/src/tests/factories.ts +128 -46
- package/src/tests/jest.ts +9 -9
- package/src/tests/mocks.ts +267 -79
- package/src/trees/append_only_tree_snapshot.ts +1 -1
- package/src/trees/database_public_state_source.ts +1 -1
- package/src/trees/nullifier_leaf.ts +1 -1
- package/src/trees/nullifier_membership_witness.ts +1 -1
- package/src/trees/public_data_leaf.ts +1 -1
- package/src/trees/public_data_witness.ts +1 -1
- package/src/tx/block_header.ts +20 -9
- package/src/tx/call_context.ts +1 -1
- package/src/tx/capsule.ts +1 -1
- package/src/tx/function_data.ts +1 -1
- package/src/tx/global_variable_builder.ts +9 -2
- package/src/tx/global_variables.ts +8 -2
- package/src/tx/hashed_values.ts +1 -1
- package/src/tx/in_tx.ts +24 -0
- package/src/tx/index.ts +1 -1
- package/src/tx/indexed_tx_effect.ts +3 -3
- package/src/tx/offchain_effect.ts +1 -1
- package/src/tx/partial_state_reference.ts +1 -1
- package/src/tx/private_execution_result.ts +4 -19
- package/src/tx/private_tx_constant_data.ts +1 -1
- package/src/tx/processed_tx.ts +11 -14
- package/src/tx/profiling.ts +47 -5
- package/src/tx/protocol_contracts.ts +2 -2
- package/src/tx/public_call_request_with_calldata.ts +1 -1
- package/src/tx/public_simulation_output.ts +1 -1
- package/src/tx/state_reference.ts +1 -1
- package/src/tx/tree_snapshots.ts +1 -1
- package/src/tx/tx.ts +12 -3
- package/src/tx/tx_constant_data.ts +1 -1
- package/src/tx/tx_context.ts +1 -1
- package/src/tx/tx_effect.ts +5 -12
- package/src/tx/tx_execution_request.ts +3 -1
- package/src/tx/tx_hash.ts +1 -1
- package/src/tx/tx_request.ts +2 -2
- package/src/tx/validator/tx_validator.ts +8 -6
- package/src/update-checker/update-checker.ts +2 -1
- package/src/validators/errors.ts +1 -1
- package/src/validators/schemas.ts +54 -48
- package/src/versioning/versioning.ts +1 -1
- package/src/vks/verification_key.ts +1 -1
- package/src/vks/vk_data.ts +1 -1
- package/src/zkpassport/index.ts +13 -14
- package/dest/block/l2_block.d.ts +0 -143
- package/dest/block/l2_block.d.ts.map +0 -1
- package/dest/block/l2_block.js +0 -196
- package/dest/block/l2_block_code_to_purge.d.ts +0 -12
- package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
- package/dest/block/l2_block_code_to_purge.js +0 -61
- package/dest/block/l2_block_header.d.ts +0 -98
- package/dest/block/l2_block_header.d.ts.map +0 -1
- package/dest/block/l2_block_header.js +0 -153
- package/dest/block/published_l2_block.d.ts +0 -130
- package/dest/block/published_l2_block.d.ts.map +0 -1
- package/dest/block/published_l2_block.js +0 -48
- package/dest/contract/contract_class_metadata.d.ts +0 -8
- package/dest/contract/contract_class_metadata.d.ts.map +0 -1
- package/dest/contract/contract_class_metadata.js +0 -1
- package/dest/contract/contract_metadata.d.ts +0 -7
- package/dest/contract/contract_metadata.d.ts.map +0 -1
- package/dest/contract/contract_metadata.js +0 -1
- package/dest/logs/log_with_tx_data.d.ts +0 -19
- package/dest/logs/log_with_tx_data.d.ts.map +0 -1
- package/dest/logs/log_with_tx_data.js +0 -49
- package/dest/p2p/block_attestation.d.ts +0 -80
- package/dest/p2p/block_attestation.d.ts.map +0 -1
- package/dest/tx/content_commitment.d.ts +0 -49
- package/dest/tx/content_commitment.d.ts.map +0 -1
- package/dest/tx/content_commitment.js +0 -90
- package/src/block/l2_block.ts +0 -263
- package/src/block/l2_block_code_to_purge.ts +0 -88
- package/src/block/l2_block_header.ts +0 -246
- package/src/block/published_l2_block.ts +0 -65
- package/src/contract/contract_class_metadata.ts +0 -8
- package/src/contract/contract_metadata.ts +0 -7
- package/src/logs/log_with_tx_data.ts +0 -46
- package/src/tx/content_commitment.ts +0 -113
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
|
|
2
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { times } from '@aztec/foundation/collection';
|
|
4
|
-
import { Fr } from '@aztec/foundation/
|
|
5
|
-
import {
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import {
|
|
6
|
+
type CheckpointId,
|
|
7
|
+
GENESIS_CHECKPOINT_HEADER_HASH,
|
|
8
|
+
type L2BlockId,
|
|
9
|
+
L2BlockNew,
|
|
10
|
+
type L2TipId,
|
|
11
|
+
} from '@aztec/stdlib/block';
|
|
12
|
+
import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
6
13
|
|
|
7
14
|
import { jestExpect as expect } from '@jest/expect';
|
|
8
15
|
|
|
@@ -10,83 +17,521 @@ import type { L2TipsStore } from '../l2_block_stream/index.js';
|
|
|
10
17
|
|
|
11
18
|
export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
|
|
12
19
|
let tipsStore: L2TipsStore;
|
|
20
|
+
// Track blocks and their hashes for test assertions
|
|
21
|
+
const blockHashes: Map<number, string> = new Map();
|
|
22
|
+
// Track checkpoints and their hashes
|
|
23
|
+
const checkpointHashes: Map<number, string> = new Map();
|
|
24
|
+
// Track which blocks belong to which checkpoint
|
|
25
|
+
const blockToCheckpoint: Map<number, number> = new Map();
|
|
13
26
|
|
|
14
27
|
beforeEach(async () => {
|
|
15
28
|
tipsStore = await makeTipsStore();
|
|
29
|
+
blockHashes.clear();
|
|
30
|
+
checkpointHashes.clear();
|
|
31
|
+
blockToCheckpoint.clear();
|
|
16
32
|
});
|
|
17
33
|
|
|
18
|
-
const makeBlock = (number: number):
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
34
|
+
const makeBlock = async (number: number): Promise<L2BlockNew> => {
|
|
35
|
+
const block = await L2BlockNew.random(BlockNumber(number));
|
|
36
|
+
blockHashes.set(number, (await block.hash()).toString());
|
|
37
|
+
return block;
|
|
38
|
+
};
|
|
24
39
|
|
|
25
40
|
const makeBlockId = (number: number): L2BlockId => ({
|
|
26
41
|
number: BlockNumber(number),
|
|
27
|
-
hash: new Fr(number).toString(),
|
|
42
|
+
hash: blockHashes.get(number) ?? new Fr(number).toString(),
|
|
28
43
|
});
|
|
29
44
|
|
|
30
45
|
const makeTip = (number: number): L2BlockId => ({
|
|
31
46
|
number: BlockNumber(number),
|
|
32
|
-
hash: number === 0 ? GENESIS_BLOCK_HEADER_HASH.toString() : new Fr(number).toString(),
|
|
47
|
+
hash: number === 0 ? GENESIS_BLOCK_HEADER_HASH.toString() : (blockHashes.get(number) ?? new Fr(number).toString()),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const makeCheckpointIdForBlock = (blockNumber: number): CheckpointId => {
|
|
51
|
+
if (blockNumber === 0) {
|
|
52
|
+
return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
|
|
53
|
+
}
|
|
54
|
+
const checkpointNum = blockToCheckpoint.get(blockNumber);
|
|
55
|
+
if (checkpointNum === undefined) {
|
|
56
|
+
return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
|
|
57
|
+
}
|
|
58
|
+
const hash = checkpointHashes.get(checkpointNum);
|
|
59
|
+
if (!hash) {
|
|
60
|
+
return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
|
|
61
|
+
}
|
|
62
|
+
return { number: CheckpointNumber(checkpointNum), hash };
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const makeTipId = (blockNumber: number): L2TipId => ({
|
|
66
|
+
block: makeTip(blockNumber),
|
|
67
|
+
checkpoint: makeCheckpointIdForBlock(blockNumber),
|
|
33
68
|
});
|
|
34
69
|
|
|
35
|
-
const makeTips = (
|
|
36
|
-
|
|
37
|
-
proven:
|
|
38
|
-
finalized:
|
|
70
|
+
const makeTips = (proposed: number, proven: number, finalized: number, checkpointed: number = 0) => ({
|
|
71
|
+
proposed: makeTip(proposed),
|
|
72
|
+
proven: makeTipId(proven),
|
|
73
|
+
finalized: makeTipId(finalized),
|
|
74
|
+
checkpointed: makeTipId(checkpointed),
|
|
39
75
|
});
|
|
40
76
|
|
|
77
|
+
const makeCheckpoint = async (checkpointNumber: number, blocks: L2BlockNew[]): Promise<PublishedCheckpoint> => {
|
|
78
|
+
const checkpoint = await Checkpoint.random(CheckpointNumber(checkpointNumber), {
|
|
79
|
+
numBlocks: blocks.length,
|
|
80
|
+
startBlockNumber: blocks[0].number,
|
|
81
|
+
});
|
|
82
|
+
// Override the blocks with our actual blocks (to keep hashes consistent)
|
|
83
|
+
(checkpoint as any).blocks = blocks;
|
|
84
|
+
|
|
85
|
+
const checkpointHash = checkpoint.hash().toString();
|
|
86
|
+
checkpointHashes.set(checkpointNumber, checkpointHash);
|
|
87
|
+
|
|
88
|
+
// Track which blocks belong to this checkpoint
|
|
89
|
+
for (const block of blocks) {
|
|
90
|
+
blockToCheckpoint.set(block.number, checkpointNumber);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return new PublishedCheckpoint(checkpoint, L1PublishedData.random(), []);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** Creates a chain-checkpointed event with the required block field */
|
|
97
|
+
const makeCheckpointedEvent = async (checkpoint: PublishedCheckpoint) => {
|
|
98
|
+
const lastBlock = checkpoint.checkpoint.blocks.at(-1)!;
|
|
99
|
+
const blockId: L2BlockId = {
|
|
100
|
+
number: lastBlock.number,
|
|
101
|
+
hash: (await lastBlock.hash()).toString(),
|
|
102
|
+
};
|
|
103
|
+
return { type: 'chain-checkpointed' as const, checkpoint, block: blockId };
|
|
104
|
+
};
|
|
105
|
+
|
|
41
106
|
it('returns zero if no tips are stored', async () => {
|
|
42
107
|
const tips = await tipsStore.getL2Tips();
|
|
43
108
|
expect(tips).toEqual(makeTips(0, 0, 0));
|
|
44
109
|
});
|
|
45
110
|
|
|
46
|
-
it('
|
|
47
|
-
await tipsStore.handleBlockStreamEvent({
|
|
111
|
+
it('sets proposed tip from blocks added', async () => {
|
|
112
|
+
await tipsStore.handleBlockStreamEvent({
|
|
113
|
+
type: 'blocks-added',
|
|
114
|
+
blocks: await Promise.all(times(3, i => makeBlock(i + 1))),
|
|
115
|
+
});
|
|
48
116
|
|
|
49
|
-
await tipsStore.
|
|
50
|
-
|
|
51
|
-
|
|
117
|
+
const tips = await tipsStore.getL2Tips();
|
|
118
|
+
expect(tips).toEqual(makeTips(3, 0, 0));
|
|
119
|
+
|
|
120
|
+
expect(await tipsStore.getL2BlockHash(1)).toEqual(blockHashes.get(1));
|
|
121
|
+
expect(await tipsStore.getL2BlockHash(2)).toEqual(blockHashes.get(2));
|
|
122
|
+
expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it('checkpoints all proposed blocks', async () => {
|
|
126
|
+
// Propose blocks 1-5
|
|
127
|
+
const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
|
|
128
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
|
|
129
|
+
|
|
130
|
+
// Checkpoint all proposed blocks (1-5)
|
|
131
|
+
const checkpoint1 = await makeCheckpoint(1, blocks);
|
|
132
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
52
133
|
|
|
53
134
|
const tips = await tipsStore.getL2Tips();
|
|
54
|
-
|
|
135
|
+
// Proposed and checkpointed should be the same
|
|
136
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
137
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5));
|
|
138
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
55
139
|
});
|
|
56
140
|
|
|
57
|
-
it('
|
|
58
|
-
|
|
141
|
+
it('advances proven chain with checkpoint info', async () => {
|
|
142
|
+
// Propose and checkpoint blocks 1-5
|
|
143
|
+
const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
|
|
144
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
|
|
145
|
+
const checkpoint1 = await makeCheckpoint(1, blocks);
|
|
146
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
147
|
+
|
|
148
|
+
// Prove up to block 5
|
|
149
|
+
await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
|
|
59
150
|
|
|
60
151
|
const tips = await tipsStore.getL2Tips();
|
|
61
|
-
expect(tips).toEqual(
|
|
152
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
153
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5));
|
|
154
|
+
expect(tips.proven.block).toEqual(makeTip(5));
|
|
155
|
+
|
|
156
|
+
// Proven tip should have the checkpoint info
|
|
157
|
+
expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
158
|
+
expect(tips.proven.checkpoint.hash).toEqual(checkpointHashes.get(1));
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it('advances finalized chain with checkpoint info', async () => {
|
|
162
|
+
// Propose and checkpoint blocks 1-5
|
|
163
|
+
const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
|
|
164
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
|
|
165
|
+
const checkpoint1 = await makeCheckpoint(1, blocks);
|
|
166
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
167
|
+
|
|
168
|
+
// Prove and finalize
|
|
169
|
+
await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
|
|
170
|
+
await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(5) });
|
|
62
171
|
|
|
63
|
-
|
|
64
|
-
expect(
|
|
65
|
-
expect(
|
|
172
|
+
const tips = await tipsStore.getL2Tips();
|
|
173
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
174
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5));
|
|
175
|
+
expect(tips.proven.block).toEqual(makeTip(5));
|
|
176
|
+
expect(tips.finalized.block).toEqual(makeTip(5));
|
|
177
|
+
|
|
178
|
+
// Finalized tip should have checkpoint info
|
|
179
|
+
expect(tips.finalized.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
180
|
+
expect(tips.finalized.checkpoint.hash).toEqual(checkpointHashes.get(1));
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it('handles multiple checkpoints advancing the chain', async () => {
|
|
184
|
+
// Propose blocks 1-5
|
|
185
|
+
const blocks1 = await Promise.all(times(5, i => makeBlock(i + 1)));
|
|
186
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1 });
|
|
187
|
+
|
|
188
|
+
// Checkpoint 1: all proposed blocks 1-5
|
|
189
|
+
const checkpoint1 = await makeCheckpoint(1, blocks1);
|
|
190
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
191
|
+
|
|
192
|
+
// Propose more blocks 6-10
|
|
193
|
+
const blocks2 = await Promise.all(times(5, i => makeBlock(i + 6)));
|
|
194
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks2 });
|
|
195
|
+
|
|
196
|
+
// Checkpoint 2: all remaining proposed blocks 6-10
|
|
197
|
+
const checkpoint2 = await makeCheckpoint(2, blocks2);
|
|
198
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
|
|
199
|
+
|
|
200
|
+
const tips = await tipsStore.getL2Tips();
|
|
201
|
+
expect(tips.proposed).toEqual(makeTip(10));
|
|
202
|
+
expect(tips.checkpointed.block).toEqual(makeTip(10));
|
|
203
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
|
|
204
|
+
expect(tips.checkpointed.checkpoint.hash).toEqual(checkpointHashes.get(2));
|
|
66
205
|
});
|
|
67
206
|
|
|
68
207
|
it('clears block hashes when setting finalized chain', async () => {
|
|
69
|
-
|
|
208
|
+
// Propose blocks 1-3
|
|
209
|
+
const blocks1to3 = await Promise.all(times(3, i => makeBlock(i + 1)));
|
|
210
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1to3 });
|
|
211
|
+
|
|
212
|
+
// Checkpoint all proposed blocks (1-3)
|
|
213
|
+
const checkpoint1 = await makeCheckpoint(1, blocks1to3);
|
|
214
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
215
|
+
|
|
216
|
+
// Propose more blocks 4-5
|
|
217
|
+
const blocks4to5 = await Promise.all(times(2, i => makeBlock(i + 4)));
|
|
218
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks4to5 });
|
|
219
|
+
|
|
220
|
+
// Checkpoint all remaining proposed blocks (4-5)
|
|
221
|
+
const checkpoint2 = await makeCheckpoint(2, blocks4to5);
|
|
222
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
|
|
223
|
+
|
|
224
|
+
// Prove and finalize up to block 3 (checkpoint 1)
|
|
70
225
|
await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
|
|
71
226
|
await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(3) });
|
|
72
227
|
|
|
73
|
-
|
|
74
|
-
expect(tips).toEqual(makeTips(5, 3, 3));
|
|
75
|
-
|
|
228
|
+
// Blocks before finalized should be cleared
|
|
76
229
|
expect(await tipsStore.getL2BlockHash(1)).toBeUndefined();
|
|
77
230
|
expect(await tipsStore.getL2BlockHash(2)).toBeUndefined();
|
|
78
231
|
|
|
79
|
-
|
|
80
|
-
expect(await tipsStore.getL2BlockHash(
|
|
81
|
-
expect(await tipsStore.getL2BlockHash(
|
|
232
|
+
// Finalized and later blocks should remain
|
|
233
|
+
expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
|
|
234
|
+
expect(await tipsStore.getL2BlockHash(4)).toEqual(blockHashes.get(4));
|
|
235
|
+
expect(await tipsStore.getL2BlockHash(5)).toEqual(blockHashes.get(5));
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
it('handles chain pruning by updating proposed tip', async () => {
|
|
239
|
+
const blocks = await Promise.all(times(10, i => makeBlock(i + 1)));
|
|
240
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
|
|
241
|
+
|
|
242
|
+
// Prune to block 5
|
|
243
|
+
await tipsStore.handleBlockStreamEvent({
|
|
244
|
+
type: 'chain-pruned',
|
|
245
|
+
block: makeBlockId(5),
|
|
246
|
+
checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
const tips = await tipsStore.getL2Tips();
|
|
250
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
it('handles pruning proposed chain to genesis, re-proposing, and checkpointing', async () => {
|
|
254
|
+
// Propose blocks 1-3
|
|
255
|
+
const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
|
|
256
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
|
|
257
|
+
|
|
258
|
+
let tips = await tipsStore.getL2Tips();
|
|
259
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
260
|
+
|
|
261
|
+
// Store original hashes
|
|
262
|
+
const originalHash1 = blockHashes.get(1);
|
|
263
|
+
const originalHash2 = blockHashes.get(2);
|
|
264
|
+
const originalHash3 = blockHashes.get(3);
|
|
265
|
+
|
|
266
|
+
// Prune back to genesis (block 0)
|
|
267
|
+
await tipsStore.handleBlockStreamEvent({
|
|
268
|
+
type: 'chain-pruned',
|
|
269
|
+
block: makeTip(0),
|
|
270
|
+
checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
tips = await tipsStore.getL2Tips();
|
|
274
|
+
expect(tips.proposed).toEqual(makeTip(0));
|
|
275
|
+
expect(tips.checkpointed.block).toEqual(makeTip(0));
|
|
276
|
+
|
|
277
|
+
// Clear hashes and propose new blocks 1-3 (different from original)
|
|
278
|
+
blockHashes.delete(1);
|
|
279
|
+
blockHashes.delete(2);
|
|
280
|
+
blockHashes.delete(3);
|
|
281
|
+
const newBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
|
|
282
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
|
|
283
|
+
|
|
284
|
+
// Verify new blocks have different hashes
|
|
285
|
+
expect(blockHashes.get(1)).not.toEqual(originalHash1);
|
|
286
|
+
expect(blockHashes.get(2)).not.toEqual(originalHash2);
|
|
287
|
+
expect(blockHashes.get(3)).not.toEqual(originalHash3);
|
|
288
|
+
|
|
289
|
+
tips = await tipsStore.getL2Tips();
|
|
290
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
291
|
+
expect(tips.checkpointed.block).toEqual(makeTip(0)); // Not yet checkpointed
|
|
292
|
+
|
|
293
|
+
// Checkpoint all the new proposed blocks (1-3)
|
|
294
|
+
const checkpoint1 = await makeCheckpoint(1, newBlocks);
|
|
295
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
296
|
+
|
|
297
|
+
tips = await tipsStore.getL2Tips();
|
|
298
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
299
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3));
|
|
300
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1));
|
|
301
|
+
|
|
302
|
+
// Verify block hashes in store are the new ones
|
|
303
|
+
expect(await tipsStore.getL2BlockHash(1)).toEqual(blockHashes.get(1));
|
|
304
|
+
expect(await tipsStore.getL2BlockHash(2)).toEqual(blockHashes.get(2));
|
|
305
|
+
expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it('handles reorg: prune proposed blocks back to checkpoint, then re-propose with different blocks', async () => {
|
|
309
|
+
// Propose blocks 1-5
|
|
310
|
+
const firstBlocks = await Promise.all(times(5, i => makeBlock(i + 1)));
|
|
311
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
|
|
312
|
+
|
|
313
|
+
// Checkpoint all proposed blocks (1-5) - these are now committed
|
|
314
|
+
const checkpoint1 = await makeCheckpoint(1, firstBlocks);
|
|
315
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
316
|
+
|
|
317
|
+
// Propose more blocks 6-10 (not yet checkpointed, can be pruned)
|
|
318
|
+
const originalBlocks6to10 = await Promise.all(times(5, i => makeBlock(i + 6)));
|
|
319
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks6to10 });
|
|
320
|
+
|
|
321
|
+
let tips = await tipsStore.getL2Tips();
|
|
322
|
+
expect(tips.proposed).toEqual(makeTip(10));
|
|
323
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5)); // Only blocks 1-5 are checkpointed
|
|
324
|
+
|
|
325
|
+
// Store original hashes for proposed (non-checkpointed) blocks 6-8
|
|
326
|
+
const originalHash6 = blockHashes.get(6);
|
|
327
|
+
const originalHash7 = blockHashes.get(7);
|
|
328
|
+
const originalHash8 = blockHashes.get(8);
|
|
329
|
+
|
|
330
|
+
// Prune proposed blocks back to checkpoint (block 5)
|
|
331
|
+
// This removes proposed blocks 6-10, but checkpoint remains at 5
|
|
332
|
+
await tipsStore.handleBlockStreamEvent({
|
|
333
|
+
type: 'chain-pruned',
|
|
334
|
+
block: makeBlockId(5),
|
|
335
|
+
checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
tips = await tipsStore.getL2Tips();
|
|
339
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
340
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5)); // Checkpoint unchanged
|
|
341
|
+
|
|
342
|
+
// Propose new blocks 6-8 (different from original 6-10)
|
|
343
|
+
blockHashes.delete(6);
|
|
344
|
+
blockHashes.delete(7);
|
|
345
|
+
blockHashes.delete(8);
|
|
346
|
+
const newBlocks = await Promise.all(times(3, i => makeBlock(i + 6)));
|
|
347
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
|
|
348
|
+
|
|
349
|
+
// Verify the new blocks have different hashes than the original ones
|
|
350
|
+
expect(blockHashes.get(6)).not.toEqual(originalHash6);
|
|
351
|
+
expect(blockHashes.get(7)).not.toEqual(originalHash7);
|
|
352
|
+
expect(blockHashes.get(8)).not.toEqual(originalHash8);
|
|
353
|
+
|
|
354
|
+
tips = await tipsStore.getL2Tips();
|
|
355
|
+
expect(tips.proposed).toEqual(makeTip(8));
|
|
356
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5)); // Still at checkpoint 1
|
|
357
|
+
|
|
358
|
+
// Checkpoint all the new proposed blocks (6-8)
|
|
359
|
+
const checkpoint2 = await makeCheckpoint(2, newBlocks);
|
|
360
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
|
|
361
|
+
|
|
362
|
+
tips = await tipsStore.getL2Tips();
|
|
363
|
+
expect(tips.proposed).toEqual(makeTip(8));
|
|
364
|
+
expect(tips.checkpointed.block).toEqual(makeTip(8));
|
|
365
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
|
|
366
|
+
|
|
367
|
+
// Block hashes in the store should reflect the new blocks
|
|
368
|
+
expect(await tipsStore.getL2BlockHash(6)).toEqual(blockHashes.get(6));
|
|
369
|
+
expect(await tipsStore.getL2BlockHash(7)).toEqual(blockHashes.get(7));
|
|
370
|
+
expect(await tipsStore.getL2BlockHash(8)).toEqual(blockHashes.get(8));
|
|
371
|
+
|
|
372
|
+
// And should NOT equal the original hashes
|
|
373
|
+
expect(await tipsStore.getL2BlockHash(6)).not.toEqual(originalHash6);
|
|
374
|
+
expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
|
|
375
|
+
expect(await tipsStore.getL2BlockHash(8)).not.toEqual(originalHash8);
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
it('handles reorg with different chain length after prune', async () => {
|
|
379
|
+
// Propose blocks 1-3
|
|
380
|
+
const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
|
|
381
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
|
|
382
|
+
|
|
383
|
+
// Checkpoint all proposed blocks (1-3) - these are now committed
|
|
384
|
+
const checkpoint1 = await makeCheckpoint(1, firstBlocks);
|
|
385
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
386
|
+
|
|
387
|
+
// Propose more blocks 4-10 (not yet checkpointed, can be pruned)
|
|
388
|
+
const originalBlocks4to10 = await Promise.all(times(7, i => makeBlock(i + 4)));
|
|
389
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks4to10 });
|
|
390
|
+
|
|
391
|
+
let tips = await tipsStore.getL2Tips();
|
|
392
|
+
expect(tips.proposed).toEqual(makeTip(10));
|
|
393
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3)); // Only blocks 1-3 are checkpointed
|
|
394
|
+
|
|
395
|
+
// Prune proposed blocks back to checkpoint (block 3)
|
|
396
|
+
await tipsStore.handleBlockStreamEvent({
|
|
397
|
+
type: 'chain-pruned',
|
|
398
|
+
block: makeBlockId(3),
|
|
399
|
+
checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
tips = await tipsStore.getL2Tips();
|
|
403
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
404
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3)); // Checkpoint unchanged
|
|
405
|
+
|
|
406
|
+
// Now propose only 2 new blocks (4-5) instead of the original 7 blocks (4-10)
|
|
407
|
+
blockHashes.delete(4);
|
|
408
|
+
blockHashes.delete(5);
|
|
409
|
+
const newBlocks = await Promise.all(times(2, i => makeBlock(i + 4)));
|
|
410
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
|
|
411
|
+
|
|
412
|
+
tips = await tipsStore.getL2Tips();
|
|
413
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
414
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3)); // Still at checkpoint 1
|
|
415
|
+
|
|
416
|
+
// Checkpoint all the new proposed blocks (4-5)
|
|
417
|
+
const checkpoint2 = await makeCheckpoint(2, newBlocks);
|
|
418
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
|
|
419
|
+
|
|
420
|
+
tips = await tipsStore.getL2Tips();
|
|
421
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
422
|
+
expect(tips.checkpointed.block).toEqual(makeTip(5));
|
|
423
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
it('handles reorg: prune back to proven tip (including checkpointed blocks), then re-propose and checkpoint', async () => {
|
|
427
|
+
// Propose blocks 1-3
|
|
428
|
+
const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
|
|
429
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
|
|
430
|
+
|
|
431
|
+
// Checkpoint all proposed blocks (1-3)
|
|
432
|
+
const checkpoint1 = await makeCheckpoint(1, firstBlocks);
|
|
433
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
|
|
434
|
+
|
|
435
|
+
// Prove up to block 3
|
|
436
|
+
await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
|
|
437
|
+
|
|
438
|
+
let tips = await tipsStore.getL2Tips();
|
|
439
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
440
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3));
|
|
441
|
+
expect(tips.proven.block).toEqual(makeTip(3));
|
|
442
|
+
|
|
443
|
+
// Propose more blocks 4-6
|
|
444
|
+
const blocks4to6 = await Promise.all(times(3, i => makeBlock(i + 4)));
|
|
445
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks4to6 });
|
|
446
|
+
|
|
447
|
+
// Checkpoint blocks 4-6 (now checkpointed is ahead of proven)
|
|
448
|
+
const checkpoint2 = await makeCheckpoint(2, blocks4to6);
|
|
449
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
|
|
450
|
+
|
|
451
|
+
tips = await tipsStore.getL2Tips();
|
|
452
|
+
expect(tips.proposed).toEqual(makeTip(6));
|
|
453
|
+
expect(tips.checkpointed.block).toEqual(makeTip(6));
|
|
454
|
+
expect(tips.proven.block).toEqual(makeTip(3)); // Proven is behind checkpointed
|
|
455
|
+
|
|
456
|
+
// Propose even more blocks 7-10 (proposed is now ahead of checkpointed)
|
|
457
|
+
const originalBlocks7to10 = await Promise.all(times(4, i => makeBlock(i + 7)));
|
|
458
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks7to10 });
|
|
459
|
+
|
|
460
|
+
tips = await tipsStore.getL2Tips();
|
|
461
|
+
// Now all three tips are different: proposed=10, checkpointed=6, proven=3
|
|
462
|
+
expect(tips.proposed).toEqual(makeTip(10));
|
|
463
|
+
expect(tips.checkpointed.block).toEqual(makeTip(6));
|
|
464
|
+
expect(tips.proven.block).toEqual(makeTip(3));
|
|
465
|
+
|
|
466
|
+
// Store original hashes for blocks 4-7
|
|
467
|
+
const originalHash4 = blockHashes.get(4);
|
|
468
|
+
const originalHash5 = blockHashes.get(5);
|
|
469
|
+
const originalHash6 = blockHashes.get(6);
|
|
470
|
+
const originalHash7 = blockHashes.get(7);
|
|
471
|
+
|
|
472
|
+
// Prune all the way back to proven tip (block 3)
|
|
473
|
+
// This prunes both proposed blocks (7-10) AND checkpointed blocks (4-6)
|
|
474
|
+
await tipsStore.handleBlockStreamEvent({
|
|
475
|
+
type: 'chain-pruned',
|
|
476
|
+
block: makeBlockId(3),
|
|
477
|
+
checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
|
|
478
|
+
});
|
|
479
|
+
|
|
480
|
+
tips = await tipsStore.getL2Tips();
|
|
481
|
+
expect(tips.proposed).toEqual(makeTip(3));
|
|
482
|
+
expect(tips.checkpointed.block).toEqual(makeTip(3)); // Checkpointed also pruned back
|
|
483
|
+
expect(tips.proven.block).toEqual(makeTip(3));
|
|
484
|
+
|
|
485
|
+
// Propose new blocks 4-7 (different from original)
|
|
486
|
+
blockHashes.delete(4);
|
|
487
|
+
blockHashes.delete(5);
|
|
488
|
+
blockHashes.delete(6);
|
|
489
|
+
blockHashes.delete(7);
|
|
490
|
+
const newBlocks = await Promise.all(times(4, i => makeBlock(i + 4)));
|
|
491
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
|
|
492
|
+
|
|
493
|
+
// Verify the new blocks have different hashes than the original ones
|
|
494
|
+
expect(blockHashes.get(4)).not.toEqual(originalHash4);
|
|
495
|
+
expect(blockHashes.get(5)).not.toEqual(originalHash5);
|
|
496
|
+
expect(blockHashes.get(6)).not.toEqual(originalHash6);
|
|
497
|
+
expect(blockHashes.get(7)).not.toEqual(originalHash7);
|
|
498
|
+
|
|
499
|
+
tips = await tipsStore.getL2Tips();
|
|
500
|
+
expect(tips.proposed).toEqual(makeTip(7));
|
|
501
|
+
expect(tips.proven.block).toEqual(makeTip(3));
|
|
502
|
+
|
|
503
|
+
// Checkpoint all the new proposed blocks (4-7)
|
|
504
|
+
const checkpoint3 = await makeCheckpoint(3, newBlocks);
|
|
505
|
+
await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint3));
|
|
506
|
+
|
|
507
|
+
tips = await tipsStore.getL2Tips();
|
|
508
|
+
expect(tips.proposed).toEqual(makeTip(7));
|
|
509
|
+
expect(tips.checkpointed.block).toEqual(makeTip(7));
|
|
510
|
+
expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(3));
|
|
511
|
+
expect(tips.proven.block).toEqual(makeTip(3)); // Proven hasn't moved yet
|
|
512
|
+
|
|
513
|
+
// Block hashes in the store should reflect the new blocks
|
|
514
|
+
expect(await tipsStore.getL2BlockHash(4)).toEqual(blockHashes.get(4));
|
|
515
|
+
expect(await tipsStore.getL2BlockHash(5)).toEqual(blockHashes.get(5));
|
|
516
|
+
expect(await tipsStore.getL2BlockHash(6)).toEqual(blockHashes.get(6));
|
|
517
|
+
expect(await tipsStore.getL2BlockHash(7)).toEqual(blockHashes.get(7));
|
|
518
|
+
|
|
519
|
+
// And should NOT equal the original hashes
|
|
520
|
+
expect(await tipsStore.getL2BlockHash(4)).not.toEqual(originalHash4);
|
|
521
|
+
expect(await tipsStore.getL2BlockHash(5)).not.toEqual(originalHash5);
|
|
522
|
+
expect(await tipsStore.getL2BlockHash(6)).not.toEqual(originalHash6);
|
|
523
|
+
expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
|
|
82
524
|
});
|
|
83
525
|
|
|
84
526
|
// Regression test for #13142
|
|
85
527
|
it('does not blow up when setting proven chain on an unseen block number', async () => {
|
|
86
|
-
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [makeBlock(5)] });
|
|
528
|
+
await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [await makeBlock(5)] });
|
|
87
529
|
await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
|
|
88
530
|
|
|
89
531
|
const tips = await tipsStore.getL2Tips();
|
|
90
|
-
expect(tips).toEqual(
|
|
532
|
+
expect(tips.proposed).toEqual(makeTip(5));
|
|
533
|
+
expect(tips.proven.block).toEqual(makeTip(3));
|
|
534
|
+
// No checkpoint for block 3 since it wasn't checkpointed
|
|
535
|
+
expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber.ZERO);
|
|
91
536
|
});
|
|
92
537
|
}
|