@aztec/stdlib 0.0.1-commit.f295ac2 → 0.0.1-commit.f504929
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/decoder.d.ts +2 -2
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +7 -5
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +37 -6
- package/dest/abi/event_metadata_definition.d.ts +3 -1
- package/dest/abi/event_metadata_definition.d.ts.map +1 -1
- package/dest/abi/event_metadata_definition.js +1 -1
- package/dest/abi/function_call.d.ts +39 -9
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +20 -3
- package/dest/abi/utils.d.ts +14 -1
- package/dest/abi/utils.d.ts.map +1 -1
- package/dest/abi/utils.js +15 -0
- package/dest/auth_witness/auth_witness.js +3 -3
- package/dest/avm/avm.d.ts +300 -300
- package/dest/avm/avm_proving_request.d.ts +166 -166
- package/dest/avm/revert_code.d.ts +16 -1
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +15 -5
- package/dest/block/block_data.d.ts +52 -0
- package/dest/block/block_data.d.ts.map +1 -0
- package/dest/block/block_data.js +12 -0
- package/dest/block/block_hash.d.ts +16 -18
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +21 -31
- package/dest/block/block_parameter.d.ts +4 -4
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +2 -2
- package/dest/block/checkpointed_l2_block.d.ts +6 -6
- package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
- package/dest/block/checkpointed_l2_block.js +3 -3
- package/dest/block/in_block.d.ts +11 -11
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/in_block.js +5 -5
- package/dest/block/index.d.ts +3 -2
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +2 -1
- package/dest/block/{l2_block_new.d.ts → l2_block.d.ts} +8 -7
- package/dest/block/l2_block.d.ts.map +1 -0
- package/dest/block/{l2_block_new.js → l2_block.js} +5 -9
- package/dest/block/l2_block_source.d.ts +58 -30
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_stream/interfaces.d.ts +3 -3
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +6 -3
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +47 -25
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +3 -3
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +2 -2
- package/dest/checkpoint/checkpoint.d.ts +27 -13
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +27 -16
- package/dest/checkpoint/checkpoint_data.d.ts +120 -0
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_data.js +26 -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 +19 -4
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +1 -2
- package/dest/config/index.d.ts +2 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -0
- package/dest/config/node-rpc-config.js +1 -1
- package/dest/config/sequencer-config.d.ts +12 -0
- package/dest/config/sequencer-config.d.ts.map +1 -0
- package/dest/config/sequencer-config.js +25 -0
- package/dest/contract/contract_address.js +4 -4
- package/dest/contract/contract_class.d.ts +2 -3
- package/dest/contract/contract_class.d.ts.map +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 +6 -5
- package/dest/contract/interfaces/node-info.d.ts +3 -1
- package/dest/contract/interfaces/node-info.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.js +2 -1
- package/dest/contract/private_function.d.ts +1 -1
- package/dest/contract/private_function.d.ts.map +1 -1
- package/dest/contract/private_function.js +3 -4
- package/dest/contract/private_function_membership_proof.d.ts +1 -1
- package/dest/contract/private_function_membership_proof.js +1 -1
- package/dest/database-version/database_version.d.ts +58 -0
- package/dest/database-version/database_version.d.ts.map +1 -0
- package/dest/database-version/database_version.js +69 -0
- package/dest/database-version/version_manager.d.ts +2 -50
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +1 -66
- 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 +7 -10
- package/dest/epoch-helpers/index.d.ts +7 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +9 -3
- package/dest/file-store/local.d.ts +3 -3
- package/dest/file-store/local.d.ts.map +1 -1
- package/dest/file-store/local.js +13 -4
- package/dest/file-store/s3.d.ts +1 -1
- package/dest/file-store/s3.d.ts.map +1 -1
- package/dest/file-store/s3.js +11 -3
- package/dest/gas/gas_fees.d.ts +1 -1
- package/dest/gas/gas_fees.d.ts.map +1 -1
- package/dest/gas/gas_fees.js +4 -1
- package/dest/ha-signing/config.d.ts +101 -0
- package/dest/ha-signing/config.d.ts.map +1 -0
- package/dest/ha-signing/config.js +92 -0
- package/dest/ha-signing/index.d.ts +3 -0
- package/dest/ha-signing/index.d.ts.map +1 -0
- package/dest/ha-signing/index.js +2 -0
- package/dest/ha-signing/types.d.ts +85 -0
- package/dest/ha-signing/types.d.ts.map +1 -0
- package/dest/ha-signing/types.js +32 -0
- package/dest/hash/hash.d.ts +2 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +16 -10
- package/dest/hash/map_slot.d.ts +1 -1
- package/dest/hash/map_slot.d.ts.map +1 -1
- package/dest/hash/map_slot.js +4 -3
- package/dest/interfaces/allowed_element.d.ts +2 -20
- package/dest/interfaces/allowed_element.d.ts.map +1 -1
- package/dest/interfaces/allowed_element.js +0 -6
- 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 +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +24 -18
- package/dest/interfaces/aztec-node-admin.d.ts +61 -29
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +12 -4
- package/dest/interfaces/aztec-node.d.ts +65 -63
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +13 -17
- package/dest/interfaces/block-builder.d.ts +14 -8
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +8 -1
- package/dest/interfaces/configs.d.ts +33 -28
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +7 -2
- package/dest/interfaces/get_logs_response.d.ts +15 -8
- package/dest/interfaces/get_logs_response.d.ts.map +1 -1
- package/dest/interfaces/l2_logs_source.d.ts +14 -5
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +4 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/prover-broker.d.ts +16 -1
- package/dest/interfaces/prover-broker.d.ts.map +1 -1
- package/dest/interfaces/prover-broker.js +4 -1
- package/dest/interfaces/prover-client.d.ts +15 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +12 -1
- package/dest/interfaces/proving-job.d.ts +202 -202
- package/dest/interfaces/slasher.d.ts +9 -1
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +2 -0
- package/dest/interfaces/tx_provider.d.ts +3 -3
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +58 -29
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +7 -3
- package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
- 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 +13 -10
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +4 -4
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -15
- package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
- package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_transient_data_hints.js +9 -3
- package/dest/kernel/hints/index.d.ts +2 -2
- package/dest/kernel/hints/index.js +2 -2
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
- package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
- package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
- package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
- package/dest/kernel/private_circuit_public_inputs.d.ts +9 -9
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +16 -16
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +4 -4
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +3 -3
- 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 +7 -7
- package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +3 -3
- 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 +7 -7
- package/dest/kernel/private_validation_requests.d.ts +3 -3
- package/dest/kernel/private_validation_requests.js +9 -9
- package/dest/keys/derivation.d.ts +3 -3
- package/dest/keys/derivation.js +15 -15
- package/dest/keys/key_types.d.ts +3 -3
- package/dest/keys/key_types.d.ts.map +1 -1
- package/dest/keys/public_keys.js +2 -2
- package/dest/keys/utils.d.ts +1 -1
- package/dest/keys/utils.d.ts.map +1 -1
- package/dest/keys/utils.js +8 -4
- package/dest/l1-contracts/slash_factory.d.ts +1 -1
- package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
- package/dest/l1-contracts/slash_factory.js +1 -0
- package/dest/logs/debug_log_store.d.ts +30 -0
- package/dest/logs/debug_log_store.d.ts.map +1 -0
- package/dest/logs/debug_log_store.js +30 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
- package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
- package/dest/logs/extended_public_log.d.ts +13 -7
- 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 +17 -14
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +20 -17
- package/dest/logs/pre_tag.d.ts +16 -11
- package/dest/logs/pre_tag.d.ts.map +1 -1
- package/dest/logs/pre_tag.js +2 -2
- package/dest/logs/private_log.d.ts +2 -2
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/public_log.d.ts +4 -3
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +2 -1
- package/dest/logs/siloed_tag.d.ts +5 -3
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +8 -6
- package/dest/logs/tag.js +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts +2 -2
- package/dest/messaging/l2_to_l1_membership.js +3 -3
- package/dest/note/index.d.ts +1 -2
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +0 -1
- package/dest/p2p/attestation_utils.d.ts +11 -1
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +45 -0
- package/dest/p2p/block_proposal.d.ts +14 -7
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +3 -5
- package/dest/p2p/checkpoint_attestation.d.ts +2 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +1 -1
- package/dest/p2p/checkpoint_proposal.d.ts +27 -8
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +30 -16
- package/dest/p2p/client_type.d.ts +2 -5
- package/dest/p2p/client_type.d.ts.map +1 -1
- package/dest/p2p/client_type.js +0 -7
- package/dest/p2p/consensus_payload.d.ts +12 -3
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +22 -15
- package/dest/p2p/constants.d.ts +5 -0
- package/dest/p2p/constants.d.ts.map +1 -0
- package/dest/p2p/constants.js +3 -0
- package/dest/p2p/index.d.ts +2 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +1 -1
- package/dest/p2p/message_validator.d.ts +18 -3
- package/dest/p2p/message_validator.d.ts.map +1 -1
- package/dest/p2p/message_validator.js +2 -1
- package/dest/p2p/topic_type.d.ts +3 -4
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +7 -24
- package/dest/rollup/checkpoint_header.d.ts +2 -2
- package/dest/rollup/checkpoint_header.js +2 -2
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -6
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/checkpoint_rollup_public_inputs.js +2 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +2 -2
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.d.ts +6 -6
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
- package/dest/rollup/root_rollup_public_inputs.js +3 -3
- package/dest/slashing/empire.d.ts +1 -1
- package/dest/slashing/empire.d.ts.map +1 -1
- package/dest/slashing/empire.js +2 -0
- package/dest/slashing/helpers.d.ts +2 -2
- package/dest/slashing/helpers.d.ts.map +1 -1
- package/dest/slashing/helpers.js +6 -0
- package/dest/slashing/tally.d.ts +9 -2
- package/dest/slashing/tally.d.ts.map +1 -1
- package/dest/slashing/tally.js +26 -3
- package/dest/slashing/types.d.ts +7 -3
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +13 -1
- package/dest/stats/stats.d.ts +1 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +3 -1
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +22 -14
- package/dest/tests/jest.d.ts +4 -4
- package/dest/tests/jest.js +9 -9
- package/dest/tests/mocks.d.ts +19 -11
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +37 -26
- package/dest/timetable/index.d.ts +37 -0
- package/dest/timetable/index.d.ts.map +1 -0
- package/dest/timetable/index.js +39 -0
- package/dest/trees/public_data_leaf.d.ts +2 -1
- package/dest/trees/public_data_leaf.d.ts.map +1 -1
- package/dest/trees/public_data_leaf.js +7 -6
- package/dest/tx/block_header.d.ts +3 -2
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +4 -3
- package/dest/tx/global_variables.d.ts +4 -4
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/in_tx.d.ts +3 -3
- package/dest/tx/indexed_tx_effect.d.ts +5 -5
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +3 -2
- package/dest/tx/profiling.d.ts +4 -4
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +3 -3
- package/dest/tx/protocol_contracts.d.ts +1 -1
- package/dest/tx/protocol_contracts.d.ts.map +1 -1
- package/dest/tx/protocol_contracts.js +2 -2
- package/dest/tx/public_simulation_output.d.ts +4 -2
- package/dest/tx/public_simulation_output.d.ts.map +1 -1
- package/dest/tx/public_simulation_output.js +7 -3
- package/dest/tx/simulated_tx.d.ts +5 -2
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/simulated_tx.js +4 -1
- package/dest/tx/tx.d.ts +2 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +6 -3
- package/dest/tx/tx_receipt.d.ts +57 -15
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +55 -16
- package/dest/tx/tx_request.js +2 -2
- package/dest/tx/validator/empty_validator.d.ts +2 -2
- package/dest/tx/validator/empty_validator.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.d.ts +4 -2
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +4 -1
- package/dest/tx/validator/tx_validator.d.ts +2 -2
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/validators/schemas.d.ts +30 -30
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +4 -3
- package/dest/validators/types.d.ts +3 -3
- package/dest/validators/types.d.ts.map +1 -1
- package/package.json +25 -13
- package/src/abi/decoder.ts +15 -6
- package/src/abi/encoder.ts +49 -6
- package/src/abi/event_metadata_definition.ts +2 -0
- package/src/abi/function_call.ts +25 -3
- package/src/abi/utils.ts +25 -0
- package/src/auth_witness/auth_witness.ts +3 -3
- package/src/avm/revert_code.ts +15 -0
- package/src/block/block_data.ts +26 -0
- package/src/block/block_hash.ts +26 -47
- package/src/block/block_parameter.ts +3 -3
- package/src/block/checkpointed_l2_block.ts +4 -4
- package/src/block/in_block.ts +8 -8
- package/src/block/index.ts +2 -1
- package/src/block/{l2_block_new.ts → l2_block.ts} +8 -12
- package/src/block/l2_block_source.ts +62 -31
- package/src/block/l2_block_stream/interfaces.ts +2 -2
- package/src/block/l2_block_stream/l2_block_stream.ts +65 -27
- package/src/block/l2_block_stream/l2_tips_store_base.ts +2 -2
- package/src/block/test/l2_tips_store_test_suite.ts +4 -4
- package/src/checkpoint/checkpoint.ts +38 -20
- package/src/checkpoint/checkpoint_data.ts +51 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/published_checkpoint.ts +3 -1
- package/src/config/index.ts +1 -0
- package/src/config/node-rpc-config.ts +1 -1
- package/src/config/sequencer-config.ts +37 -0
- package/src/contract/contract_address.ts +4 -4
- package/src/contract/contract_class.ts +3 -3
- package/src/contract/contract_class_id.ts +6 -5
- package/src/contract/interfaces/node-info.ts +3 -0
- package/src/contract/private_function.ts +3 -4
- package/src/contract/private_function_membership_proof.ts +1 -1
- package/src/database-version/database_version.ts +87 -0
- package/src/database-version/version_manager.ts +1 -77
- package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
- package/src/epoch-helpers/index.ts +13 -1
- package/src/file-store/local.ts +15 -5
- package/src/file-store/s3.ts +12 -3
- package/src/gas/gas_fees.ts +7 -1
- package/src/ha-signing/config.ts +149 -0
- package/src/ha-signing/index.ts +18 -0
- package/src/ha-signing/types.ts +112 -0
- package/src/hash/hash.ts +14 -10
- package/src/hash/map_slot.ts +3 -2
- package/src/interfaces/allowed_element.ts +1 -5
- package/src/interfaces/api_limit.ts +1 -0
- package/src/interfaces/archiver.ts +24 -27
- package/src/interfaces/aztec-node-admin.ts +26 -2
- package/src/interfaces/aztec-node.ts +90 -121
- package/src/interfaces/block-builder.ts +21 -7
- package/src/interfaces/configs.ts +23 -8
- package/src/interfaces/l2_logs_source.ts +17 -4
- package/src/interfaces/merkle_tree_operations.ts +1 -1
- package/src/interfaces/p2p.ts +3 -14
- package/src/interfaces/prover-broker.ts +22 -0
- package/src/interfaces/prover-client.ts +22 -0
- package/src/interfaces/slasher.ts +4 -0
- package/src/interfaces/tx_provider.ts +2 -2
- package/src/interfaces/validator.ts +17 -8
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +16 -28
- package/src/kernel/hints/build_transient_data_hints.ts +17 -2
- package/src/kernel/hints/index.ts +2 -2
- package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
- package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
- package/src/kernel/private_circuit_public_inputs.ts +14 -14
- package/src/kernel/private_kernel_circuit_public_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +2 -2
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_validation_requests.ts +8 -8
- package/src/keys/derivation.ts +15 -15
- package/src/keys/key_types.ts +6 -2
- package/src/keys/public_keys.ts +2 -2
- package/src/keys/utils.ts +8 -4
- package/src/l1-contracts/slash_factory.ts +1 -0
- package/src/logs/debug_log_store.ts +54 -0
- package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
- package/src/logs/index.ts +2 -1
- package/src/logs/log_id.ts +22 -18
- package/src/logs/pre_tag.ts +5 -5
- package/src/logs/public_log.ts +4 -2
- package/src/logs/siloed_tag.ts +10 -4
- package/src/logs/tag.ts +1 -1
- package/src/messaging/l2_to_l1_membership.ts +3 -3
- package/src/note/index.ts +0 -1
- package/src/p2p/attestation_utils.ts +56 -0
- package/src/p2p/block_proposal.ts +13 -8
- package/src/p2p/checkpoint_attestation.ts +6 -1
- package/src/p2p/checkpoint_proposal.ts +55 -16
- package/src/p2p/client_type.ts +0 -6
- package/src/p2p/consensus_payload.ts +25 -12
- package/src/p2p/constants.ts +6 -0
- package/src/p2p/index.ts +1 -1
- package/src/p2p/message_validator.ts +14 -2
- package/src/p2p/topic_type.ts +8 -15
- package/src/rollup/checkpoint_header.ts +2 -2
- package/src/rollup/checkpoint_rollup_public_inputs.ts +5 -5
- package/src/rollup/root_rollup_public_inputs.ts +7 -7
- package/src/slashing/empire.ts +3 -1
- package/src/slashing/helpers.ts +8 -0
- package/src/slashing/tally.ts +25 -4
- package/src/slashing/types.ts +14 -0
- package/src/stats/stats.ts +0 -2
- package/src/tests/factories.ts +27 -18
- package/src/tests/jest.ts +9 -9
- package/src/tests/mocks.ts +54 -30
- package/src/timetable/index.ts +66 -0
- package/src/trees/public_data_leaf.ts +11 -5
- package/src/tx/block_header.ts +8 -5
- package/src/tx/global_variables.ts +3 -3
- package/src/tx/indexed_tx_effect.ts +3 -2
- package/src/tx/profiling.ts +5 -5
- package/src/tx/protocol_contracts.ts +2 -2
- package/src/tx/public_simulation_output.ts +4 -0
- package/src/tx/simulated_tx.ts +8 -1
- package/src/tx/tx.ts +8 -9
- package/src/tx/tx_receipt.ts +85 -18
- package/src/tx/tx_request.ts +2 -2
- package/src/tx/validator/empty_validator.ts +1 -1
- package/src/tx/validator/error_texts.ts +5 -1
- package/src/tx/validator/tx_validator.ts +1 -1
- package/src/validators/schemas.ts +8 -1
- package/src/validators/types.ts +5 -4
- package/dest/block/l2_block_new.d.ts.map +0 -1
- package/dest/database-version/index.d.ts +0 -2
- package/dest/database-version/index.d.ts.map +0 -1
- package/dest/database-version/index.js +0 -1
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
- package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
- package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
- package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
- package/dest/note/notes_filter.d.ts +0 -27
- package/dest/note/notes_filter.d.ts.map +0 -1
- package/dest/note/notes_filter.js +0 -11
- package/src/database-version/index.ts +0 -1
- package/src/note/notes_filter.ts +0 -38
package/src/logs/public_log.ts
CHANGED
|
@@ -120,8 +120,8 @@ export class FlatPublicLogs {
|
|
|
120
120
|
|
|
121
121
|
export class PublicLog {
|
|
122
122
|
constructor(
|
|
123
|
-
public contractAddress: AztecAddress,
|
|
124
|
-
public fields: Fr[],
|
|
123
|
+
public readonly contractAddress: AztecAddress,
|
|
124
|
+
public readonly fields: Fr[],
|
|
125
125
|
) {}
|
|
126
126
|
|
|
127
127
|
static from(fields: FieldsOf<PublicLog>) {
|
|
@@ -146,7 +146,9 @@ export class PublicLog {
|
|
|
146
146
|
return this.fields.length + PUBLIC_LOG_HEADER_LENGTH;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
/** Returns the serialized log (field as in noir field and not a struct field). */
|
|
149
150
|
getEmittedFields() {
|
|
151
|
+
// We slice from 0 to return a shallow copy.
|
|
150
152
|
return this.fields.slice(0);
|
|
151
153
|
}
|
|
152
154
|
|
package/src/logs/siloed_tag.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
2
1
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
2
|
import type { ZodFor } from '@aztec/foundation/schemas';
|
|
4
3
|
|
|
5
4
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
5
|
+
import { computeSiloedPrivateLogFirstField } from '../hash/hash.js';
|
|
6
6
|
import { schemas } from '../schemas/schemas.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { PreTag } from './pre_tag.js';
|
|
8
|
+
import { Tag } from './tag.js';
|
|
8
9
|
|
|
9
10
|
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
10
11
|
|
|
@@ -21,8 +22,13 @@ export interface SiloedTag {
|
|
|
21
22
|
export class SiloedTag {
|
|
22
23
|
constructor(public readonly value: Fr) {}
|
|
23
24
|
|
|
24
|
-
static async compute(
|
|
25
|
-
const
|
|
25
|
+
static async compute(preTag: PreTag): Promise<SiloedTag> {
|
|
26
|
+
const tag = await Tag.compute(preTag);
|
|
27
|
+
return SiloedTag.computeFromTagAndApp(tag, preTag.extendedSecret.app);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static async computeFromTagAndApp(tag: Tag, app: AztecAddress): Promise<SiloedTag> {
|
|
31
|
+
const siloedTag = await computeSiloedPrivateLogFirstField(app, tag.value);
|
|
26
32
|
return new SiloedTag(siloedTag);
|
|
27
33
|
}
|
|
28
34
|
|
package/src/logs/tag.ts
CHANGED
|
@@ -20,7 +20,7 @@ export class Tag {
|
|
|
20
20
|
constructor(public readonly value: Fr) {}
|
|
21
21
|
|
|
22
22
|
static async compute(preTag: PreTag): Promise<Tag> {
|
|
23
|
-
const tag = await poseidon2Hash([preTag.secret
|
|
23
|
+
const tag = await poseidon2Hash([preTag.extendedSecret.secret, preTag.index]);
|
|
24
24
|
return new Tag(tag);
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -32,10 +32,10 @@ import { SiblingPath, UnbalancedMerkleTreeCalculator, computeUnbalancedShaRoot }
|
|
|
32
32
|
* - Compression: If a block has no messages (out hash = 0), that branch is ignored
|
|
33
33
|
*
|
|
34
34
|
* 4. **Epoch Tree**
|
|
35
|
-
* - Leaves: Checkpoint out hashes from all checkpoints in an epoch (padded to
|
|
35
|
+
* - Leaves: Checkpoint out hashes from all checkpoints in an epoch (padded to OUT_HASH_TREE_LEAF_COUNT)
|
|
36
36
|
* - Root: Epoch out hash (set in the root rollup's public inputs and inserted into the Outbox on L1 when the epoch is proven)
|
|
37
37
|
* - Type: Unbalanced, non-compressed
|
|
38
|
-
* - **Important**: Padded with zeros up to
|
|
38
|
+
* - **Important**: Padded with zeros up to OUT_HASH_TREE_LEAF_COUNT to allow for proofs of partial epochs
|
|
39
39
|
*
|
|
40
40
|
* ## Combined Membership Proof
|
|
41
41
|
* To prove a message exists in an epoch, we combine the sibling paths from all 4 trees:
|
|
@@ -163,7 +163,7 @@ export function computeL2ToL1MembershipWitnessFromMessagesInEpoch(
|
|
|
163
163
|
}
|
|
164
164
|
return buildCheckpointTree(messagesInCheckpoint).getRoot();
|
|
165
165
|
});
|
|
166
|
-
// Pad to
|
|
166
|
+
// Pad to OUT_HASH_TREE_LEAF_COUNT with zeros.
|
|
167
167
|
checkpointOutHashes = checkpointOutHashes.concat(
|
|
168
168
|
Array.from({ length: OUT_HASH_TREE_LEAF_COUNT - messagesInEpoch.length }, () => Buffer.alloc(32)),
|
|
169
169
|
);
|
package/src/note/index.ts
CHANGED
|
@@ -33,3 +33,59 @@ export function orderAttestations(
|
|
|
33
33
|
|
|
34
34
|
return orderedAttestations;
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Trims attestations to the minimum required number to save L1 calldata gas.
|
|
39
|
+
* Each signature costs 65 bytes of calldata vs 20 bytes for just an address.
|
|
40
|
+
*
|
|
41
|
+
* Priority order for keeping attestations:
|
|
42
|
+
* 1. The proposer's attestation (required by L1 contract - MissingProposerSignature revert)
|
|
43
|
+
* 2. Attestations from the local node's validator keys
|
|
44
|
+
* 3. Remaining attestations filled to reach the required count
|
|
45
|
+
*/
|
|
46
|
+
export function trimAttestations(
|
|
47
|
+
attestations: CheckpointAttestation[],
|
|
48
|
+
required: number,
|
|
49
|
+
proposerAddress: EthAddress,
|
|
50
|
+
localAddresses: EthAddress[],
|
|
51
|
+
): CheckpointAttestation[] {
|
|
52
|
+
if (attestations.length <= required) {
|
|
53
|
+
return attestations;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const proposerAttestation: CheckpointAttestation[] = [];
|
|
57
|
+
const localAttestations: CheckpointAttestation[] = [];
|
|
58
|
+
const otherAttestations: CheckpointAttestation[] = [];
|
|
59
|
+
|
|
60
|
+
for (const attestation of attestations) {
|
|
61
|
+
const sender = attestation.getSender();
|
|
62
|
+
if (!sender) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (sender.equals(proposerAddress)) {
|
|
66
|
+
proposerAttestation.push(attestation);
|
|
67
|
+
} else if (localAddresses.some(addr => addr.equals(sender))) {
|
|
68
|
+
localAttestations.push(attestation);
|
|
69
|
+
} else {
|
|
70
|
+
otherAttestations.push(attestation);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const result: CheckpointAttestation[] = [...proposerAttestation];
|
|
75
|
+
|
|
76
|
+
for (const att of localAttestations) {
|
|
77
|
+
if (result.length >= required) {
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
result.push(att);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
for (const att of otherAttestations) {
|
|
84
|
+
if (result.length >= required) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
result.push(att);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
@@ -6,11 +6,11 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
6
6
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
8
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
9
|
-
import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
|
|
10
9
|
|
|
10
|
+
import type { L2Block } from '../block/l2_block.js';
|
|
11
11
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
12
|
-
import type { L2BlockNew } from '../block/l2_block_new.js';
|
|
13
12
|
import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
|
|
13
|
+
import { DutyType, type SigningContext } from '../ha-signing/index.js';
|
|
14
14
|
import { BlockHeader } from '../tx/block_header.js';
|
|
15
15
|
import { TxHash } from '../tx/index.js';
|
|
16
16
|
import type { Tx } from '../tx/tx.js';
|
|
@@ -30,8 +30,15 @@ export class BlockProposalHash extends Buffer32 {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export type BlockProposalOptions = {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Whether to include the tx objects along with the block proposal.
|
|
35
|
+
* Dramatically increases size of the payload but eliminates failed reexecutions due to missing txs.
|
|
36
|
+
*/
|
|
37
|
+
publishFullTxs?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to generate an invalid block proposal for broadcasting.
|
|
40
|
+
* Use only for testing.
|
|
41
|
+
*/
|
|
35
42
|
broadcastInvalidBlockProposal?: boolean;
|
|
36
43
|
};
|
|
37
44
|
|
|
@@ -49,8 +56,6 @@ export class BlockProposal extends Gossipable {
|
|
|
49
56
|
/** The per-block header containing block state and global variables */
|
|
50
57
|
public readonly blockHeader: BlockHeader,
|
|
51
58
|
|
|
52
|
-
// TODO(palla/mbps): Is this really needed? Can we just derive it from the indexWithinCheckpoint of the parent block and the slot number?
|
|
53
|
-
// See the block-proposal-handler, we have a lot of extra validations to check this is correct, so maybe we can avoid storing it here.
|
|
54
59
|
/** Index of this block within the checkpoint (0-indexed) */
|
|
55
60
|
public readonly indexWithinCheckpoint: IndexWithinCheckpoint,
|
|
56
61
|
|
|
@@ -284,10 +289,10 @@ export class BlockProposal extends Gossipable {
|
|
|
284
289
|
/**
|
|
285
290
|
* Check if this proposal matches the given block.
|
|
286
291
|
* Compares the archive root and block header.
|
|
287
|
-
* @param block - The
|
|
292
|
+
* @param block - The L2Block to compare against
|
|
288
293
|
* @returns True if the proposal matches the block
|
|
289
294
|
*/
|
|
290
|
-
matchesBlock(block:
|
|
295
|
+
matchesBlock(block: L2Block): boolean {
|
|
291
296
|
return this.archiveRoot.equals(block.archive.root) && this.blockHeader.equals(block.header);
|
|
292
297
|
}
|
|
293
298
|
|
|
@@ -96,7 +96,12 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
96
96
|
// Create a temporary CheckpointProposal to recover the proposer address.
|
|
97
97
|
// We need to use CheckpointProposal because it has a different getPayloadToSign()
|
|
98
98
|
// implementation than ConsensusPayload (uses serializeToBuffer vs ABI encoding).
|
|
99
|
-
const proposal = new CheckpointProposal(
|
|
99
|
+
const proposal = new CheckpointProposal(
|
|
100
|
+
this.payload.header,
|
|
101
|
+
this.payload.archive,
|
|
102
|
+
this.payload.feeAssetPriceModifier,
|
|
103
|
+
this.proposerSignature,
|
|
104
|
+
);
|
|
100
105
|
// Cache the proposer for later use
|
|
101
106
|
this.proposer = proposal.getSender();
|
|
102
107
|
}
|
|
@@ -5,11 +5,11 @@ import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
9
|
-
import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
|
|
8
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
10
9
|
|
|
11
10
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
12
11
|
import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
|
|
12
|
+
import { DutyType, type SigningContext } from '../ha-signing/index.js';
|
|
13
13
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
14
14
|
import { BlockHeader } from '../tx/block_header.js';
|
|
15
15
|
import { TxHash } from '../tx/index.js';
|
|
@@ -32,8 +32,15 @@ export class CheckpointProposalHash extends Buffer32 {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export type CheckpointProposalOptions = {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Whether to include the tx objects along with the block proposal.
|
|
37
|
+
* Dramatically increases size of the payload but eliminates failed reexecutions due to missing txs.
|
|
38
|
+
*/
|
|
39
|
+
publishFullTxs?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to generate an invalid checkpoint proposal for broadcasting.
|
|
42
|
+
* Use only for testing.
|
|
43
|
+
*/
|
|
37
44
|
broadcastInvalidCheckpointProposal?: boolean;
|
|
38
45
|
};
|
|
39
46
|
|
|
@@ -74,7 +81,10 @@ export class CheckpointProposal extends Gossipable {
|
|
|
74
81
|
/** Archive root after this checkpoint is applied */
|
|
75
82
|
public readonly archive: Fr,
|
|
76
83
|
|
|
77
|
-
/** The
|
|
84
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
85
|
+
public readonly feeAssetPriceModifier: bigint,
|
|
86
|
+
|
|
87
|
+
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
78
88
|
public readonly signature: Signature,
|
|
79
89
|
|
|
80
90
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
@@ -141,22 +151,43 @@ export class CheckpointProposal extends Gossipable {
|
|
|
141
151
|
};
|
|
142
152
|
}
|
|
143
153
|
|
|
154
|
+
toCheckpointInfo() {
|
|
155
|
+
return {
|
|
156
|
+
slotNumber: this.slotNumber,
|
|
157
|
+
archive: this.archive,
|
|
158
|
+
lastBlockNumber: this.lastBlock?.blockHeader.getBlockNumber(),
|
|
159
|
+
lastBlockIndex: this.lastBlock?.indexWithinCheckpoint,
|
|
160
|
+
blockHeadersHash: this.checkpointHeader.blockHeadersHash,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
144
164
|
/**
|
|
145
165
|
* Get the payload to sign for this checkpoint proposal.
|
|
146
|
-
* The signature is over the checkpoint header + archive root (for consensus).
|
|
166
|
+
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
147
167
|
*/
|
|
148
168
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
149
|
-
return serializeToBuffer([
|
|
169
|
+
return serializeToBuffer([
|
|
170
|
+
domainSeparator,
|
|
171
|
+
this.checkpointHeader,
|
|
172
|
+
this.archive,
|
|
173
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
174
|
+
]);
|
|
150
175
|
}
|
|
151
176
|
|
|
152
177
|
static async createProposalFromSigner(
|
|
153
178
|
checkpointHeader: CheckpointHeader,
|
|
154
179
|
archiveRoot: Fr,
|
|
180
|
+
feeAssetPriceModifier: bigint,
|
|
155
181
|
lastBlockInfo: CheckpointLastBlockData | undefined,
|
|
156
182
|
payloadSigner: (payload: Buffer32, context: SigningContext) => Promise<Signature>,
|
|
157
183
|
): Promise<CheckpointProposal> {
|
|
158
184
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
159
|
-
const tempProposal = new CheckpointProposal(
|
|
185
|
+
const tempProposal = new CheckpointProposal(
|
|
186
|
+
checkpointHeader,
|
|
187
|
+
archiveRoot,
|
|
188
|
+
feeAssetPriceModifier,
|
|
189
|
+
Signature.empty(),
|
|
190
|
+
);
|
|
160
191
|
const checkpointHash = getHashedSignaturePayload(tempProposal, SignatureDomainSeparator.checkpointProposal);
|
|
161
192
|
|
|
162
193
|
const checkpointContext: SigningContext = {
|
|
@@ -167,7 +198,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
167
198
|
const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
|
|
168
199
|
|
|
169
200
|
if (!lastBlockInfo) {
|
|
170
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature);
|
|
201
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature);
|
|
171
202
|
}
|
|
172
203
|
|
|
173
204
|
const lastBlockProposal = await BlockProposal.createProposalFromSigner(
|
|
@@ -180,7 +211,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
180
211
|
payloadSigner,
|
|
181
212
|
);
|
|
182
213
|
|
|
183
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
|
|
214
|
+
return new CheckpointProposal(checkpointHeader, archiveRoot, feeAssetPriceModifier, checkpointSignature, {
|
|
184
215
|
blockHeader: lastBlockInfo.blockHeader,
|
|
185
216
|
indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
|
|
186
217
|
txHashes: lastBlockInfo.txHashes,
|
|
@@ -220,7 +251,12 @@ export class CheckpointProposal extends Gossipable {
|
|
|
220
251
|
}
|
|
221
252
|
|
|
222
253
|
toBuffer(): Buffer {
|
|
223
|
-
const buffer: any[] = [
|
|
254
|
+
const buffer: any[] = [
|
|
255
|
+
this.checkpointHeader,
|
|
256
|
+
this.archive,
|
|
257
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
258
|
+
this.signature,
|
|
259
|
+
];
|
|
224
260
|
|
|
225
261
|
if (this.lastBlock) {
|
|
226
262
|
buffer.push(1); // hasLastBlock = true
|
|
@@ -247,6 +283,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
247
283
|
|
|
248
284
|
const checkpointHeader = reader.readObject(CheckpointHeader);
|
|
249
285
|
const archive = reader.readObject(Fr);
|
|
286
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
250
287
|
const signature = reader.readObject(Signature);
|
|
251
288
|
|
|
252
289
|
const hasLastBlock = reader.readNumber();
|
|
@@ -269,7 +306,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
269
306
|
}
|
|
270
307
|
}
|
|
271
308
|
|
|
272
|
-
return new CheckpointProposal(checkpointHeader, archive, signature, {
|
|
309
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, {
|
|
273
310
|
blockHeader,
|
|
274
311
|
indexWithinCheckpoint,
|
|
275
312
|
txHashes,
|
|
@@ -278,7 +315,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
278
315
|
});
|
|
279
316
|
}
|
|
280
317
|
|
|
281
|
-
return new CheckpointProposal(checkpointHeader, archive, signature);
|
|
318
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature);
|
|
282
319
|
}
|
|
283
320
|
|
|
284
321
|
getSize(): number {
|
|
@@ -286,6 +323,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
286
323
|
this.checkpointHeader.toBuffer().length +
|
|
287
324
|
this.archive.size +
|
|
288
325
|
this.signature.getSize() +
|
|
326
|
+
8 /* feeAssetPriceModifier */ +
|
|
289
327
|
4; /* hasLastBlock flag */
|
|
290
328
|
|
|
291
329
|
if (this.lastBlock) {
|
|
@@ -303,11 +341,11 @@ export class CheckpointProposal extends Gossipable {
|
|
|
303
341
|
}
|
|
304
342
|
|
|
305
343
|
static empty(): CheckpointProposal {
|
|
306
|
-
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, Signature.empty());
|
|
344
|
+
return new CheckpointProposal(CheckpointHeader.empty(), Fr.ZERO, 0n, Signature.empty());
|
|
307
345
|
}
|
|
308
346
|
|
|
309
347
|
static random(): CheckpointProposal {
|
|
310
|
-
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), Signature.random(), {
|
|
348
|
+
return new CheckpointProposal(CheckpointHeader.random(), Fr.random(), 0n, Signature.random(), {
|
|
311
349
|
blockHeader: BlockHeader.random(),
|
|
312
350
|
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
313
351
|
txHashes: [TxHash.random(), TxHash.random()],
|
|
@@ -320,6 +358,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
320
358
|
checkpointHeader: this.checkpointHeader.toInspect(),
|
|
321
359
|
archive: this.archive.toString(),
|
|
322
360
|
signature: this.signature.toString(),
|
|
361
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
323
362
|
lastBlock: this.lastBlock
|
|
324
363
|
? {
|
|
325
364
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
@@ -336,7 +375,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
336
375
|
* Used when the lastBlock has been extracted and stored separately.
|
|
337
376
|
*/
|
|
338
377
|
toCore(): CheckpointProposalCore {
|
|
339
|
-
return new CheckpointProposal(this.checkpointHeader, this.archive, this.signature);
|
|
378
|
+
return new CheckpointProposal(this.checkpointHeader, this.archive, this.feeAssetPriceModifier, this.signature);
|
|
340
379
|
}
|
|
341
380
|
}
|
|
342
381
|
|
package/src/p2p/client_type.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { schemas } from '@aztec/foundation/schemas';
|
|
3
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
4
|
import { hexToBuffer } from '@aztec/foundation/string';
|
|
5
5
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
6
6
|
|
|
@@ -21,6 +21,8 @@ export class ConsensusPayload implements Signable {
|
|
|
21
21
|
public readonly header: CheckpointHeader,
|
|
22
22
|
/** The archive root after the block is added */
|
|
23
23
|
public readonly archive: Fr,
|
|
24
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
25
|
+
public readonly feeAssetPriceModifier: bigint = 0n,
|
|
24
26
|
) {}
|
|
25
27
|
|
|
26
28
|
static get schema() {
|
|
@@ -28,12 +30,13 @@ export class ConsensusPayload implements Signable {
|
|
|
28
30
|
.object({
|
|
29
31
|
header: CheckpointHeader.schema,
|
|
30
32
|
archive: schemas.Fr,
|
|
33
|
+
feeAssetPriceModifier: schemas.BigInt,
|
|
31
34
|
})
|
|
32
|
-
.transform(obj => new ConsensusPayload(obj.header, obj.archive));
|
|
35
|
+
.transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier));
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
static getFields(fields: FieldsOf<ConsensusPayload>) {
|
|
36
|
-
return [fields.header, fields.archive] as const;
|
|
39
|
+
return [fields.header, fields.archive, fields.feeAssetPriceModifier] as const;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
@@ -50,41 +53,50 @@ export class ConsensusPayload implements Signable {
|
|
|
50
53
|
const headerHash = this.header.hash().toString();
|
|
51
54
|
const encodedData = encodeAbiParameters(abi, [
|
|
52
55
|
domainSeparator,
|
|
53
|
-
[archiveRoot, [
|
|
56
|
+
[archiveRoot, [this.feeAssetPriceModifier], headerHash],
|
|
54
57
|
] as const);
|
|
55
58
|
|
|
56
59
|
return hexToBuffer(encodedData);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
toBuffer(): Buffer {
|
|
60
|
-
return serializeToBuffer([this.header, this.archive]);
|
|
63
|
+
return serializeToBuffer([this.header, this.archive, serializeSignedBigInt(this.feeAssetPriceModifier)]);
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
public equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean {
|
|
64
67
|
const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
|
|
65
|
-
|
|
68
|
+
const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
|
|
69
|
+
return (
|
|
70
|
+
this.header.equals(otherHeader) &&
|
|
71
|
+
this.archive.equals(other.archive) &&
|
|
72
|
+
this.feeAssetPriceModifier === otherModifier
|
|
73
|
+
);
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload {
|
|
69
77
|
const reader = BufferReader.asReader(buf);
|
|
70
|
-
const payload = new ConsensusPayload(
|
|
78
|
+
const payload = new ConsensusPayload(
|
|
79
|
+
reader.readObject(CheckpointHeader),
|
|
80
|
+
reader.readObject(Fr),
|
|
81
|
+
reader.readInt256(),
|
|
82
|
+
);
|
|
71
83
|
return payload;
|
|
72
84
|
}
|
|
73
85
|
|
|
74
86
|
static fromFields(fields: FieldsOf<ConsensusPayload>): ConsensusPayload {
|
|
75
|
-
return new ConsensusPayload(fields.header, fields.archive);
|
|
87
|
+
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier);
|
|
76
88
|
}
|
|
77
89
|
|
|
78
90
|
static fromCheckpoint(checkpoint: Checkpoint): ConsensusPayload {
|
|
79
|
-
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root);
|
|
91
|
+
return new ConsensusPayload(checkpoint.header, checkpoint.archive.root, checkpoint.feeAssetPriceModifier);
|
|
80
92
|
}
|
|
81
93
|
|
|
82
94
|
static empty(): ConsensusPayload {
|
|
83
|
-
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO);
|
|
95
|
+
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n);
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
static random(): ConsensusPayload {
|
|
87
|
-
return new ConsensusPayload(CheckpointHeader.random(), Fr.random());
|
|
99
|
+
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n);
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
/**
|
|
@@ -104,10 +116,11 @@ export class ConsensusPayload implements Signable {
|
|
|
104
116
|
return {
|
|
105
117
|
header: this.header.toInspect(),
|
|
106
118
|
archive: this.archive.toString(),
|
|
119
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
107
120
|
};
|
|
108
121
|
}
|
|
109
122
|
|
|
110
123
|
toString() {
|
|
111
|
-
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}}`;
|
|
124
|
+
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}}`;
|
|
112
125
|
}
|
|
113
126
|
}
|
package/src/p2p/index.ts
CHANGED
|
@@ -8,6 +8,6 @@ export * from './interface.js';
|
|
|
8
8
|
export * from './signature_utils.js';
|
|
9
9
|
export * from './signed_txs.js';
|
|
10
10
|
export * from './topic_type.js';
|
|
11
|
-
export * from './client_type.js';
|
|
12
11
|
export * from './message_validator.js';
|
|
13
12
|
export * from './peer_error.js';
|
|
13
|
+
export * from './constants.js';
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import type { PeerErrorSeverity } from './peer_error.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Result of validating a P2P message.
|
|
5
|
+
* - 'accept': Message is valid and should be accepted and processed
|
|
6
|
+
* - 'ignore': Message should be ignored (not propagated or processed, but sender not penalized)
|
|
7
|
+
* - 'reject': Message is invalid (rejected and sender penalized)
|
|
8
|
+
*/
|
|
9
|
+
export type ValidationResult =
|
|
10
|
+
| { result: 'accept' }
|
|
11
|
+
| { result: 'ignore' }
|
|
12
|
+
| { result: 'reject'; severity: PeerErrorSeverity };
|
|
13
|
+
|
|
3
14
|
/**
|
|
4
15
|
* P2PValidator
|
|
5
16
|
*
|
|
6
|
-
* A validator for P2P messages, which returns a
|
|
17
|
+
* A validator for P2P messages, which returns a ValidationResult indicating
|
|
18
|
+
* whether to accept, ignore, or reject the message
|
|
7
19
|
*/
|
|
8
20
|
export interface P2PValidator<T> {
|
|
9
|
-
validate(message: T): Promise<
|
|
21
|
+
validate(message: T): Promise<ValidationResult>;
|
|
10
22
|
}
|
package/src/p2p/topic_type.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { P2PClientType } from './client_type.js';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Creates the topic channel identifier string from a given topic type
|
|
5
3
|
*/
|
|
@@ -27,19 +25,14 @@ export enum TopicType {
|
|
|
27
25
|
checkpoint_attestation = 'checkpoint_attestation',
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function getTopicsForClientAndConfig(clientType: P2PClientType, disableTransactions: boolean) {
|
|
42
|
-
const topics = getTopicTypeForClientType(clientType);
|
|
28
|
+
/** Returns all gossip topics, optionally filtering out transactions. */
|
|
29
|
+
export function getTopicsForConfig(disableTransactions: boolean) {
|
|
30
|
+
const topics = [
|
|
31
|
+
TopicType.tx,
|
|
32
|
+
TopicType.block_proposal,
|
|
33
|
+
TopicType.checkpoint_proposal,
|
|
34
|
+
TopicType.checkpoint_attestation,
|
|
35
|
+
];
|
|
43
36
|
if (disableTransactions) {
|
|
44
37
|
return topics.filter(topic => topic !== TopicType.tx);
|
|
45
38
|
}
|
|
@@ -19,8 +19,8 @@ import type { UInt64 } from '../types/shared.js';
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
|
|
23
|
+
* and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
|
|
24
24
|
*/
|
|
25
25
|
export class CheckpointHeader {
|
|
26
26
|
constructor(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
|
-
import {
|
|
2
|
+
import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
@@ -38,11 +38,11 @@ export class CheckpointRollupPublicInputs {
|
|
|
38
38
|
/**
|
|
39
39
|
* The hashes of the headers of the constituent checkpoints.
|
|
40
40
|
*/
|
|
41
|
-
public checkpointHeaderHashes: Tuple<Fr, typeof
|
|
41
|
+
public checkpointHeaderHashes: Tuple<Fr, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
42
42
|
/**
|
|
43
43
|
* The summed transaction fees and recipients of the constituent checkpoints.
|
|
44
44
|
*/
|
|
45
|
-
public fees: Tuple<FeeRecipient, typeof
|
|
45
|
+
public fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>,
|
|
46
46
|
/**
|
|
47
47
|
* Accumulated opening proofs for all blobs before this checkpoint range.
|
|
48
48
|
*/
|
|
@@ -65,8 +65,8 @@ export class CheckpointRollupPublicInputs {
|
|
|
65
65
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
66
66
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
67
67
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
68
|
-
reader.readArray(
|
|
69
|
-
reader.readArray(
|
|
68
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, Fr),
|
|
69
|
+
reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient),
|
|
70
70
|
reader.readObject(BlobAccumulator),
|
|
71
71
|
reader.readObject(BlobAccumulator),
|
|
72
72
|
reader.readObject(FinalBlobBatchingChallenges),
|