@aztec/stdlib 0.0.1-commit.9372f48 → 0.0.1-commit.949a33fd8
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 +138 -1
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +10 -2
- package/dest/abi/authorization_selector.d.ts +3 -6
- package/dest/abi/authorization_selector.d.ts.map +1 -1
- package/dest/abi/buffer.d.ts +14 -4
- package/dest/abi/buffer.d.ts.map +1 -1
- package/dest/abi/buffer.js +25 -4
- package/dest/abi/decoder.d.ts +6 -45
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +17 -70
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +64 -7
- 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/event_selector.d.ts +3 -6
- package/dest/abi/event_selector.d.ts.map +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/function_selector.d.ts +3 -6
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +2 -4
- package/dest/abi/function_signature_decoder.d.ts +43 -0
- package/dest/abi/function_signature_decoder.d.ts.map +1 -0
- package/dest/abi/function_signature_decoder.js +66 -0
- package/dest/abi/index.d.ts +2 -1
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +1 -0
- package/dest/abi/note_selector.d.ts +3 -6
- package/dest/abi/note_selector.d.ts.map +1 -1
- package/dest/abi/note_selector.js +1 -3
- package/dest/abi/selector.d.ts +2 -2
- package/dest/abi/selector.d.ts.map +1 -1
- package/dest/abi/selector.js +1 -1
- 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_proving_request.d.ts +166 -166
- package/dest/avm/revert_code.d.ts +9 -4
- package/dest/avm/revert_code.d.ts.map +1 -1
- package/dest/avm/revert_code.js +16 -21
- package/dest/aztec-address/index.d.ts +3 -6
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +2 -4
- package/dest/block/attestation_info.d.ts +3 -2
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -5
- package/dest/block/block_data.d.ts +341 -0
- package/dest/block/block_data.d.ts.map +1 -0
- package/dest/block/block_data.js +26 -0
- package/dest/block/block_hash.d.ts +11 -10
- package/dest/block/block_hash.d.ts.map +1 -1
- package/dest/block/block_hash.js +10 -9
- package/dest/block/block_parameter.d.ts +30 -3
- package/dest/block/block_parameter.d.ts.map +1 -1
- package/dest/block/block_parameter.js +36 -2
- package/dest/block/in_block.js +1 -1
- package/dest/block/index.d.ts +2 -1
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -0
- package/dest/block/l2_block.d.ts +9 -1
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +12 -2
- package/dest/block/l2_block_info.d.ts +6 -5
- package/dest/block/l2_block_info.d.ts.map +1 -1
- package/dest/block/l2_block_info.js +6 -5
- package/dest/block/l2_block_source.d.ts +149 -10
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +1 -0
- package/dest/block/l2_block_stream/interfaces.d.ts +6 -3
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.js +18 -5
- package/dest/block/proposal/attestations_and_signers.d.ts +13 -6
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +26 -18
- 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 +4 -3
- package/dest/checkpoint/checkpoint.d.ts +28 -7
- package/dest/checkpoint/checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/checkpoint.js +41 -17
- package/dest/checkpoint/checkpoint_data.d.ts +192 -0
- package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_data.js +38 -0
- package/dest/checkpoint/index.d.ts +3 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +2 -0
- package/dest/checkpoint/published_checkpoint.d.ts +17 -2
- package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
- package/dest/checkpoint/published_checkpoint.js +1 -2
- package/dest/checkpoint/validate.d.ts +36 -0
- package/dest/checkpoint/validate.d.ts.map +1 -0
- package/dest/checkpoint/validate.js +120 -0
- package/dest/config/chain-config.d.ts +2 -2
- package/dest/config/chain-config.d.ts.map +1 -1
- package/dest/config/chain-config.js +9 -3
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +2 -0
- package/dest/config/pipelining-config.d.ts +19 -0
- package/dest/config/pipelining-config.d.ts.map +1 -0
- package/dest/config/pipelining-config.js +18 -0
- 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 +31 -0
- package/dest/contract/contract_address.d.ts +3 -3
- package/dest/contract/contract_address.js +7 -7
- 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 +3 -3
- package/dest/contract/contract_class_id.d.ts.map +1 -1
- package/dest/contract/contract_class_id.js +7 -6
- 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 +3 -156
- package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_class.js +1 -28
- 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 +4 -6
- package/dest/epoch-helpers/index.d.ts +15 -1
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +18 -2
- package/dest/file-store/factory.d.ts +4 -3
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +2 -2
- package/dest/file-store/http.d.ts +9 -2
- package/dest/file-store/http.d.ts.map +1 -1
- package/dest/file-store/http.js +20 -9
- package/dest/file-store/index.d.ts +2 -1
- package/dest/file-store/index.d.ts.map +1 -1
- 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/fee_math.d.ts +49 -0
- package/dest/gas/fee_math.d.ts.map +1 -0
- package/dest/gas/fee_math.js +80 -0
- package/dest/gas/gas_fees.d.ts +5 -1
- package/dest/gas/gas_fees.d.ts.map +1 -1
- package/dest/gas/gas_fees.js +13 -1
- package/dest/gas/gas_settings.d.ts +40 -3
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +50 -6
- package/dest/gas/index.d.ts +2 -1
- package/dest/gas/index.d.ts.map +1 -1
- package/dest/gas/index.js +1 -0
- package/dest/ha-signing/config.d.ts +136 -0
- package/dest/ha-signing/config.d.ts.map +1 -0
- package/dest/ha-signing/config.js +98 -0
- package/dest/ha-signing/index.d.ts +4 -0
- package/dest/ha-signing/index.d.ts.map +1 -0
- package/dest/ha-signing/index.js +3 -0
- package/dest/ha-signing/local_config.d.ts +63 -0
- package/dest/ha-signing/local_config.d.ts.map +1 -0
- package/dest/ha-signing/local_config.js +24 -0
- package/dest/ha-signing/types.d.ts +90 -0
- package/dest/ha-signing/types.d.ts.map +1 -0
- package/dest/ha-signing/types.js +39 -0
- package/dest/hash/hash.d.ts +35 -1
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +77 -10
- package/dest/hash/map_slot.js +2 -2
- package/dest/interfaces/allowed_element.d.ts +26 -20
- package/dest/interfaces/allowed_element.d.ts.map +1 -1
- package/dest/interfaces/allowed_element.js +8 -8
- package/dest/interfaces/archiver.d.ts +11 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +17 -3
- package/dest/interfaces/aztec-node-admin.d.ts +139 -48
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +17 -8
- package/dest/interfaces/aztec-node-debug.d.ts +21 -0
- package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
- package/dest/interfaces/aztec-node-debug.js +18 -0
- package/dest/interfaces/aztec-node.d.ts +59 -54
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +23 -16
- package/dest/interfaces/block-builder.d.ts +39 -12
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +13 -6
- package/dest/interfaces/block_response.d.ts +156 -0
- package/dest/interfaces/block_response.d.ts.map +1 -0
- package/dest/interfaces/block_response.js +24 -0
- package/dest/interfaces/chain_tips.d.ts +304 -0
- package/dest/interfaces/chain_tips.d.ts.map +1 -0
- package/dest/interfaces/chain_tips.js +11 -0
- package/dest/interfaces/checkpoint_parameter.d.ts +27 -0
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_parameter.js +20 -0
- package/dest/interfaces/checkpoint_response.d.ts +312 -0
- package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
- package/dest/interfaces/checkpoint_response.js +26 -0
- package/dest/interfaces/client.d.ts +7 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +6 -0
- package/dest/interfaces/configs.d.ts +82 -32
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +11 -3
- package/dest/interfaces/get_logs_response.d.ts +8 -1
- package/dest/interfaces/get_logs_response.d.ts.map +1 -1
- package/dest/interfaces/l1_publish_info.d.ts +43 -0
- package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
- package/dest/interfaces/l1_publish_info.js +26 -0
- package/dest/interfaces/l2_logs_source.d.ts +5 -3
- package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +13 -22
- 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 +11 -1
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-client.js +12 -4
- package/dest/interfaces/proving-job.d.ts +202 -202
- package/dest/interfaces/server.d.ts +6 -1
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +5 -0
- package/dest/interfaces/slasher.d.ts +9 -10
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +2 -2
- package/dest/interfaces/validator.d.ts +170 -64
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +12 -5
- package/dest/interfaces/world_state.d.ts +5 -4
- package/dest/interfaces/world_state.d.ts.map +1 -1
- 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 +3 -3
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/build_nullifier_read_request_hints.js +13 -10
- 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 +4 -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 +11 -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.js +8 -8
- 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.js +5 -5
- package/dest/kv-store/config.d.ts +17 -0
- package/dest/kv-store/config.d.ts.map +1 -0
- package/dest/kv-store/config.js +26 -0
- package/dest/kv-store/index.d.ts +2 -0
- package/dest/kv-store/index.d.ts.map +1 -0
- package/dest/kv-store/index.js +1 -0
- package/dest/l1-contracts/index.d.ts +2 -2
- package/dest/l1-contracts/index.d.ts.map +1 -1
- package/dest/l1-contracts/index.js +1 -1
- 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} +35 -20
- package/dest/logs/extended_public_log.d.ts +7 -1
- package/dest/logs/extended_public_log.d.ts.map +1 -1
- package/dest/logs/index.d.ts +4 -2
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +3 -1
- package/dest/logs/log_filter.d.ts +4 -1
- package/dest/logs/log_filter.d.ts.map +1 -1
- package/dest/logs/log_filter.js +2 -1
- package/dest/logs/log_id.d.ts +10 -7
- package/dest/logs/log_id.d.ts.map +1 -1
- package/dest/logs/log_id.js +16 -15
- package/dest/logs/message_context.d.ts +4 -7
- package/dest/logs/message_context.d.ts.map +1 -1
- package/dest/logs/message_context.js +23 -9
- package/dest/logs/pending_tagged_log.d.ts +2 -3
- package/dest/logs/pending_tagged_log.d.ts.map +1 -1
- package/dest/logs/pending_tagged_log.js +2 -2
- 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/shared_secret_derivation.d.ts +11 -10
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +15 -9
- package/dest/logs/siloed_tag.d.ts +12 -9
- package/dest/logs/siloed_tag.d.ts.map +1 -1
- package/dest/logs/siloed_tag.js +16 -7
- package/dest/logs/tag.d.ts +5 -6
- package/dest/logs/tag.d.ts.map +1 -1
- package/dest/logs/tag.js +5 -1
- package/dest/logs/tagging_index_range.d.ts +40 -0
- package/dest/logs/tagging_index_range.d.ts.map +1 -0
- package/dest/logs/tagging_index_range.js +8 -0
- package/dest/logs/tx_scoped_l2_log.d.ts +3 -1
- package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
- package/dest/logs/tx_scoped_l2_log.js +7 -0
- package/dest/messaging/l1_to_l2_message.d.ts +3 -2
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +11 -13
- package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
- package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts +34 -8
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +72 -29
- package/dest/noir/index.d.ts +3 -3
- package/dest/noir/index.d.ts.map +1 -1
- 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/note/note_dao.d.ts +1 -1
- package/dest/note/note_dao.d.ts.map +1 -1
- package/dest/note/note_dao.js +1 -4
- 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 +23 -15
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +46 -43
- package/dest/p2p/checkpoint_attestation.d.ts +11 -8
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +17 -24
- package/dest/p2p/checkpoint_proposal.d.ts +35 -22
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/checkpoint_proposal.js +52 -65
- 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 +27 -7
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +40 -21
- package/dest/p2p/constants.d.ts +3 -1
- package/dest/p2p/constants.d.ts.map +1 -1
- package/dest/p2p/constants.js +1 -0
- package/dest/p2p/gossipable.d.ts +4 -4
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/index.d.ts +1 -2
- package/dest/p2p/index.d.ts.map +1 -1
- package/dest/p2p/index.js +0 -1
- package/dest/p2p/peer_error.d.ts +3 -1
- package/dest/p2p/peer_error.d.ts.map +1 -1
- package/dest/p2p/peer_error.js +5 -0
- package/dest/p2p/signature_utils.d.ts +28 -19
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +118 -21
- package/dest/p2p/signed_txs.d.ts +15 -13
- package/dest/p2p/signed_txs.d.ts.map +1 -1
- package/dest/p2p/signed_txs.js +26 -24
- 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/parity/parity_base_private_inputs.d.ts +7 -3
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
- package/dest/parity/parity_base_private_inputs.js +7 -5
- package/dest/parity/parity_public_inputs.d.ts +7 -3
- package/dest/parity/parity_public_inputs.d.ts.map +1 -1
- package/dest/parity/parity_public_inputs.js +6 -3
- package/dest/proofs/chonk_proof.d.ts +46 -2
- package/dest/proofs/chonk_proof.d.ts.map +1 -1
- package/dest/proofs/chonk_proof.js +85 -10
- package/dest/rollup/block_headers_hash.d.ts +1 -1
- package/dest/rollup/block_headers_hash.d.ts.map +1 -1
- package/dest/rollup/block_headers_hash.js +8 -2
- 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/helpers.d.ts +2 -2
- package/dest/slashing/helpers.d.ts.map +1 -1
- package/dest/slashing/helpers.js +6 -0
- package/dest/slashing/index.d.ts +2 -3
- package/dest/slashing/index.d.ts.map +1 -1
- package/dest/slashing/index.js +1 -2
- package/dest/slashing/serialization.d.ts +2 -6
- package/dest/slashing/serialization.d.ts.map +1 -1
- package/dest/slashing/serialization.js +0 -60
- package/dest/slashing/types.d.ts +10 -92
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +13 -15
- package/dest/slashing/{tally.d.ts → votes.d.ts} +8 -2
- package/dest/slashing/votes.d.ts.map +1 -0
- package/dest/slashing/{tally.js → votes.js} +35 -3
- package/dest/tests/factories.d.ts +5 -10
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +37 -56
- package/dest/tests/mocks.d.ts +14 -3
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +65 -46
- package/dest/timetable/index.d.ts +87 -0
- package/dest/timetable/index.d.ts.map +1 -0
- package/dest/timetable/index.js +243 -0
- package/dest/trees/nullifier_leaf.d.ts +2 -1
- package/dest/trees/nullifier_leaf.d.ts.map +1 -1
- package/dest/trees/nullifier_leaf.js +3 -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 +4 -2
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +7 -3
- package/dest/tx/capsule.d.ts +6 -2
- package/dest/tx/capsule.d.ts.map +1 -1
- package/dest/tx/capsule.js +9 -3
- package/dest/tx/fee_provider.d.ts +10 -0
- package/dest/tx/fee_provider.d.ts.map +1 -0
- package/dest/tx/fee_provider.js +1 -0
- package/dest/tx/global_variable_builder.d.ts +3 -4
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.d.ts +4 -4
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/index.d.ts +2 -1
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +1 -0
- package/dest/tx/indexed_tx_effect.d.ts +1 -1
- package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
- package/dest/tx/indexed_tx_effect.js +1 -2
- package/dest/tx/private_execution_result.d.ts +6 -6
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +6 -6
- package/dest/tx/profiling.d.ts +17 -5
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +19 -9
- 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 +116 -5
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/simulated_tx.js +7 -4
- package/dest/tx/tx.d.ts +8 -7
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +18 -6
- package/dest/tx/tx_receipt.d.ts +29 -6
- package/dest/tx/tx_receipt.d.ts.map +1 -1
- package/dest/tx/tx_receipt.js +23 -19
- 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 +10 -2
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +11 -1
- package/dest/tx/validator/tx_validator.d.ts +2 -2
- package/dest/tx/validator/tx_validator.d.ts.map +1 -1
- package/dest/types/shared.d.ts +1 -10
- package/dest/types/shared.d.ts.map +1 -1
- package/dest/types/shared.js +0 -9
- package/dest/update-checker/index.d.ts +3 -2
- package/dest/update-checker/index.d.ts.map +1 -1
- package/dest/update-checker/index.js +2 -1
- package/dest/update-checker/package_version.d.ts +3 -0
- package/dest/update-checker/package_version.d.ts.map +1 -0
- package/dest/update-checker/package_version.js +24 -0
- package/dest/update-checker/version_checker.d.ts +25 -0
- package/dest/update-checker/version_checker.d.ts.map +1 -0
- package/dest/update-checker/version_checker.js +50 -0
- package/dest/validators/errors.d.ts +6 -1
- package/dest/validators/errors.d.ts.map +1 -1
- package/dest/validators/errors.js +7 -0
- 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/dest/versioning/versioning.d.ts +4 -2
- package/dest/versioning/versioning.d.ts.map +1 -1
- package/dest/versioning/versioning.js +4 -1
- package/dest/vks/verification_key.d.ts +2 -137
- package/dest/vks/verification_key.d.ts.map +1 -1
- package/dest/vks/verification_key.js +5 -126
- package/dest/world-state/genesis_data.d.ts +11 -0
- package/dest/world-state/genesis_data.d.ts.map +1 -0
- package/dest/world-state/genesis_data.js +4 -0
- package/dest/world-state/index.d.ts +2 -1
- package/dest/world-state/index.d.ts.map +1 -1
- package/dest/world-state/index.js +1 -0
- package/dest/world-state/world_state_revision.d.ts +8 -1
- package/dest/world-state/world_state_revision.d.ts.map +1 -1
- package/dest/world-state/world_state_revision.js +7 -1
- package/package.json +24 -12
- package/src/abi/abi.ts +25 -2
- package/src/abi/authorization_selector.ts +2 -8
- package/src/abi/buffer.ts +25 -4
- package/src/abi/decoder.ts +36 -82
- package/src/abi/encoder.ts +85 -6
- package/src/abi/event_metadata_definition.ts +2 -0
- package/src/abi/event_selector.ts +2 -8
- package/src/abi/function_call.ts +25 -3
- package/src/abi/function_selector.ts +4 -13
- package/src/abi/function_signature_decoder.ts +77 -0
- package/src/abi/index.ts +1 -0
- package/src/abi/note_selector.ts +3 -12
- package/src/abi/selector.ts +1 -1
- package/src/abi/utils.ts +25 -0
- package/src/auth_witness/auth_witness.ts +3 -3
- package/src/avm/revert_code.ts +26 -25
- package/src/aztec-address/index.ts +4 -10
- package/src/block/attestation_info.ts +11 -11
- package/src/block/block_data.ts +42 -0
- package/src/block/block_hash.ts +21 -14
- package/src/block/block_parameter.ts +35 -2
- package/src/block/in_block.ts +1 -1
- package/src/block/index.ts +1 -0
- package/src/block/l2_block.ts +13 -1
- package/src/block/l2_block_info.ts +8 -6
- package/src/block/l2_block_source.ts +88 -9
- package/src/block/l2_block_stream/interfaces.ts +6 -2
- package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
- package/src/block/l2_block_stream/l2_tips_store_base.ts +25 -13
- package/src/block/proposal/attestations_and_signers.ts +32 -17
- package/src/block/test/l2_tips_store_test_suite.ts +9 -2
- package/src/checkpoint/checkpoint.ts +54 -17
- package/src/checkpoint/checkpoint_data.ts +91 -0
- package/src/checkpoint/index.ts +2 -0
- package/src/checkpoint/published_checkpoint.ts +3 -1
- package/src/checkpoint/validate.ts +230 -0
- package/src/config/chain-config.ts +9 -4
- package/src/config/index.ts +2 -0
- package/src/config/pipelining-config.ts +31 -0
- package/src/config/sequencer-config.ts +51 -0
- package/src/contract/contract_address.ts +7 -7
- package/src/contract/contract_class.ts +3 -3
- package/src/contract/contract_class_id.ts +7 -6
- package/src/contract/index.ts +0 -2
- package/src/contract/interfaces/contract_class.ts +2 -82
- package/src/contract/interfaces/node-info.ts +3 -0
- package/src/contract/private_function.ts +5 -3
- package/src/epoch-helpers/index.ts +30 -0
- package/src/file-store/factory.ts +13 -4
- package/src/file-store/http.ts +29 -10
- package/src/file-store/index.ts +1 -0
- package/src/file-store/local.ts +15 -5
- package/src/file-store/s3.ts +12 -3
- package/src/gas/README.md +154 -0
- package/src/gas/fee_math.ts +120 -0
- package/src/gas/gas_fees.ts +20 -1
- package/src/gas/gas_settings.ts +65 -12
- package/src/gas/index.ts +1 -0
- package/src/ha-signing/config.ts +159 -0
- package/src/ha-signing/index.ts +29 -0
- package/src/ha-signing/local_config.ts +46 -0
- package/src/ha-signing/types.ts +126 -0
- package/src/hash/hash.ts +75 -10
- package/src/hash/map_slot.ts +2 -2
- package/src/interfaces/allowed_element.ts +29 -9
- package/src/interfaces/archiver.ts +28 -2
- package/src/interfaces/aztec-node-admin.ts +34 -10
- package/src/interfaces/aztec-node-debug.ts +40 -0
- package/src/interfaces/aztec-node.ts +129 -85
- package/src/interfaces/block-builder.ts +61 -14
- package/src/interfaces/block_response.ts +79 -0
- package/src/interfaces/chain_tips.ts +24 -0
- package/src/interfaces/checkpoint_parameter.ts +22 -0
- package/src/interfaces/checkpoint_response.ts +84 -0
- package/src/interfaces/client.ts +6 -0
- package/src/interfaces/configs.ts +40 -8
- package/src/interfaces/l1_publish_info.ts +40 -0
- package/src/interfaces/l2_logs_source.ts +4 -1
- package/src/interfaces/merkle_tree_operations.ts +12 -21
- package/src/interfaces/p2p.ts +3 -14
- package/src/interfaces/prover-broker.ts +22 -0
- package/src/interfaces/prover-client.ts +17 -5
- package/src/interfaces/server.ts +5 -0
- package/src/interfaces/slasher.ts +4 -6
- package/src/interfaces/validator.ts +76 -36
- package/src/interfaces/world_state.ts +4 -3
- package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
- 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 +14 -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 +8 -8
- package/src/keys/key_types.ts +6 -2
- package/src/keys/public_keys.ts +2 -2
- package/src/keys/utils.ts +5 -5
- package/src/kv-store/config.ts +36 -0
- package/src/kv-store/index.ts +1 -0
- package/src/l1-contracts/index.ts +1 -1
- package/src/logs/debug_log_store.ts +54 -0
- package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +41 -22
- package/src/logs/index.ts +3 -1
- package/src/logs/log_filter.ts +5 -0
- package/src/logs/log_id.ts +16 -14
- package/src/logs/message_context.ts +17 -7
- package/src/logs/pending_tagged_log.ts +1 -3
- package/src/logs/pre_tag.ts +5 -5
- package/src/logs/public_log.ts +4 -2
- package/src/logs/shared_secret_derivation.ts +21 -10
- package/src/logs/siloed_tag.ts +23 -14
- package/src/logs/tag.ts +9 -9
- package/src/logs/tagging_index_range.ts +24 -0
- package/src/logs/tx_scoped_l2_log.ts +16 -0
- package/src/messaging/l1_to_l2_message.ts +12 -9
- package/src/messaging/l1_to_l2_message_source.ts +3 -1
- package/src/messaging/l2_to_l1_membership.ts +101 -36
- package/src/noir/index.ts +2 -2
- package/src/note/index.ts +0 -1
- package/src/note/note_dao.ts +1 -4
- package/src/p2p/attestation_utils.ts +56 -0
- package/src/p2p/block_proposal.ts +97 -39
- package/src/p2p/checkpoint_attestation.ts +26 -30
- package/src/p2p/checkpoint_proposal.ts +119 -84
- package/src/p2p/client_type.ts +0 -6
- package/src/p2p/consensus_payload.ts +59 -24
- package/src/p2p/constants.ts +3 -0
- package/src/p2p/gossipable.ts +4 -4
- package/src/p2p/index.ts +0 -1
- package/src/p2p/peer_error.ts +7 -0
- package/src/p2p/signature_utils.ts +110 -25
- package/src/p2p/signed_txs.ts +46 -28
- package/src/p2p/topic_type.ts +8 -15
- package/src/parity/parity_base_private_inputs.ts +10 -4
- package/src/parity/parity_public_inputs.ts +9 -2
- package/src/proofs/chonk_proof.ts +91 -5
- package/src/rollup/block_headers_hash.ts +11 -2
- 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/helpers.ts +8 -0
- package/src/slashing/index.ts +1 -2
- package/src/slashing/serialization.ts +1 -81
- package/src/slashing/types.ts +17 -35
- package/src/slashing/{tally.ts → votes.ts} +41 -2
- package/src/tests/factories.ts +42 -68
- package/src/tests/mocks.ts +103 -53
- package/src/timetable/index.ts +361 -0
- package/src/trees/nullifier_leaf.ts +4 -0
- package/src/trees/public_data_leaf.ts +11 -5
- package/src/tx/block_header.ts +10 -4
- package/src/tx/capsule.ts +10 -2
- package/src/tx/fee_provider.ts +10 -0
- package/src/tx/global_variable_builder.ts +2 -3
- package/src/tx/global_variables.ts +3 -3
- package/src/tx/index.ts +1 -0
- package/src/tx/indexed_tx_effect.ts +1 -2
- package/src/tx/private_execution_result.ts +5 -5
- package/src/tx/profiling.ts +18 -9
- package/src/tx/protocol_contracts.ts +2 -2
- package/src/tx/public_simulation_output.ts +4 -0
- package/src/tx/simulated_tx.ts +14 -3
- package/src/tx/tx.ts +22 -13
- package/src/tx/tx_receipt.ts +28 -16
- package/src/tx/tx_request.ts +2 -2
- package/src/tx/validator/empty_validator.ts +1 -1
- package/src/tx/validator/error_texts.ts +13 -1
- package/src/tx/validator/tx_validator.ts +1 -1
- package/src/types/shared.ts +0 -10
- package/src/update-checker/index.ts +2 -1
- package/src/update-checker/package_version.ts +30 -0
- package/src/update-checker/version_checker.ts +65 -0
- package/src/validators/errors.ts +9 -0
- package/src/validators/schemas.ts +8 -1
- package/src/validators/types.ts +5 -4
- package/src/versioning/versioning.ts +4 -1
- package/src/vks/verification_key.ts +5 -184
- package/src/world-state/genesis_data.ts +15 -0
- package/src/world-state/index.ts +1 -0
- package/src/world-state/world_state_revision.ts +9 -1
- package/dest/abi/mocked_keys.d.ts +0 -2
- package/dest/abi/mocked_keys.d.ts.map +0 -1
- package/dest/abi/mocked_keys.js +0 -1
- package/dest/contract/private_function_membership_proof.d.ts +0 -32
- package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
- package/dest/contract/private_function_membership_proof.js +0 -124
- package/dest/contract/utility_function_membership_proof.d.ts +0 -27
- package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
- package/dest/contract/utility_function_membership_proof.js +0 -87
- 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/l1-contracts/slash_factory.d.ts +0 -45
- package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
- package/dest/l1-contracts/slash_factory.js +0 -158
- 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/dest/slashing/empire.d.ts +0 -31
- package/dest/slashing/empire.d.ts.map +0 -1
- package/dest/slashing/empire.js +0 -85
- package/dest/slashing/tally.d.ts.map +0 -1
- package/dest/update-checker/update-checker.d.ts +0 -49
- package/dest/update-checker/update-checker.d.ts.map +0 -1
- package/dest/update-checker/update-checker.js +0 -130
- package/src/abi/mocked_keys.ts +0 -2
- package/src/contract/private_function_membership_proof.ts +0 -167
- package/src/contract/utility_function_membership_proof.ts +0 -118
- package/src/l1-contracts/slash_factory.ts +0 -180
- package/src/note/notes_filter.ts +0 -38
- package/src/slashing/empire.ts +0 -102
- package/src/update-checker/update-checker.ts +0 -166
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import {
|
|
1
|
+
import { CheckpointAttestationHash, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { BaseBuffer32 } from '@aztec/foundation/buffer';
|
|
3
3
|
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
4
|
-
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
5
4
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
5
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
6
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
@@ -13,14 +12,10 @@ import type { ZodFor } from '../schemas/index.js';
|
|
|
13
12
|
import { CheckpointProposal } from './checkpoint_proposal.js';
|
|
14
13
|
import { ConsensusPayload } from './consensus_payload.js';
|
|
15
14
|
import { Gossipable } from './gossipable.js';
|
|
16
|
-
import {
|
|
15
|
+
import { type CoordinationSignatureContext, recoverCoordinationSigner } from './signature_utils.js';
|
|
17
16
|
import { TopicType } from './topic_type.js';
|
|
18
17
|
|
|
19
|
-
export
|
|
20
|
-
constructor(hash: Buffer) {
|
|
21
|
-
super(hash);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
18
|
+
export type { CheckpointAttestationHash } from '@aztec/foundation/branded-types';
|
|
24
19
|
|
|
25
20
|
/**
|
|
26
21
|
* CheckpointAttestation
|
|
@@ -31,8 +26,8 @@ export class CheckpointAttestationHash extends Buffer32 {
|
|
|
31
26
|
export class CheckpointAttestation extends Gossipable {
|
|
32
27
|
static override p2pTopic = TopicType.checkpoint_attestation;
|
|
33
28
|
|
|
34
|
-
private
|
|
35
|
-
private
|
|
29
|
+
private cachedSender: EthAddress | undefined | null = undefined;
|
|
30
|
+
private cachedProposer: EthAddress | undefined | null = undefined;
|
|
36
31
|
|
|
37
32
|
constructor(
|
|
38
33
|
/** The payload of the message, and what the signature is over */
|
|
@@ -57,8 +52,8 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
57
52
|
.transform(obj => new CheckpointAttestation(obj.payload, obj.signature, obj.proposerSignature));
|
|
58
53
|
}
|
|
59
54
|
|
|
60
|
-
override generateP2PMessageIdentifier(): Promise<
|
|
61
|
-
return Promise.resolve(
|
|
55
|
+
override generateP2PMessageIdentifier(): Promise<BaseBuffer32> {
|
|
56
|
+
return Promise.resolve(CheckpointAttestationHash.fromBuffer(keccak256(this.signature.toBuffer())));
|
|
62
57
|
}
|
|
63
58
|
|
|
64
59
|
get archive(): Fr {
|
|
@@ -69,22 +64,19 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
69
64
|
return this.payload.header.slotNumber;
|
|
70
65
|
}
|
|
71
66
|
|
|
67
|
+
get signatureContext(): CoordinationSignatureContext {
|
|
68
|
+
return this.payload.signatureContext;
|
|
69
|
+
}
|
|
70
|
+
|
|
72
71
|
/**
|
|
73
72
|
* Lazily evaluate and cache the signer of the attestation
|
|
74
73
|
* @returns The signer of the attestation, or undefined if signature recovery fails
|
|
75
74
|
*/
|
|
76
75
|
getSender(): EthAddress | undefined {
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
const hashed = getHashedSignaturePayloadEthSignedMessage(
|
|
80
|
-
this.payload,
|
|
81
|
-
SignatureDomainSeparator.checkpointAttestation,
|
|
82
|
-
);
|
|
83
|
-
// Cache the sender for later use
|
|
84
|
-
this.sender = tryRecoverAddress(hashed, this.signature);
|
|
76
|
+
if (this.cachedSender === undefined) {
|
|
77
|
+
this.cachedSender = recoverCoordinationSigner(this.payload, this.signature) ?? null;
|
|
85
78
|
}
|
|
86
|
-
|
|
87
|
-
return this.sender;
|
|
79
|
+
return this.cachedSender ?? undefined;
|
|
88
80
|
}
|
|
89
81
|
|
|
90
82
|
/**
|
|
@@ -92,20 +84,24 @@ export class CheckpointAttestation extends Gossipable {
|
|
|
92
84
|
* @returns The proposer of the checkpoint
|
|
93
85
|
*/
|
|
94
86
|
getProposer(): EthAddress | undefined {
|
|
95
|
-
if (
|
|
87
|
+
if (this.cachedProposer === undefined) {
|
|
96
88
|
// Create a temporary CheckpointProposal to recover the proposer address.
|
|
97
89
|
// We need to use CheckpointProposal because it has a different getPayloadToSign()
|
|
98
90
|
// implementation than ConsensusPayload (uses serializeToBuffer vs ABI encoding).
|
|
99
|
-
const proposal = new CheckpointProposal(
|
|
100
|
-
|
|
101
|
-
|
|
91
|
+
const proposal = new CheckpointProposal(
|
|
92
|
+
this.payload.header,
|
|
93
|
+
this.payload.archive,
|
|
94
|
+
this.payload.feeAssetPriceModifier,
|
|
95
|
+
this.proposerSignature,
|
|
96
|
+
this.payload.signatureContext,
|
|
97
|
+
);
|
|
98
|
+
this.cachedProposer = proposal.getSender() ?? null;
|
|
102
99
|
}
|
|
103
|
-
|
|
104
|
-
return this.proposer;
|
|
100
|
+
return this.cachedProposer ?? undefined;
|
|
105
101
|
}
|
|
106
102
|
|
|
107
103
|
getPayload(): Buffer {
|
|
108
|
-
return this.payload.getPayloadToSign(
|
|
104
|
+
return this.payload.getPayloadToSign();
|
|
109
105
|
}
|
|
110
106
|
|
|
111
107
|
toBuffer(): Buffer {
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type CheckpointNumber,
|
|
3
|
+
CheckpointProposalHash,
|
|
4
|
+
IndexWithinCheckpoint,
|
|
5
|
+
SlotNumber,
|
|
6
|
+
} from '@aztec/foundation/branded-types';
|
|
7
|
+
import type { BaseBuffer32 } from '@aztec/foundation/buffer';
|
|
3
8
|
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
4
|
-
import { tryRecoverAddress } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
5
9
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
10
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
11
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
8
|
-
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
9
|
-
|
|
12
|
+
import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
13
|
+
|
|
14
|
+
import type { TypedDataDefinition } from 'viem';
|
|
10
15
|
|
|
11
16
|
import type { L2BlockInfo } from '../block/l2_block_info.js';
|
|
12
17
|
import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
|
|
18
|
+
import { DutyType, type SigningContext } from '../ha-signing/index.js';
|
|
13
19
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
14
20
|
import { BlockHeader } from '../tx/block_header.js';
|
|
15
21
|
import { TxHash } from '../tx/index.js';
|
|
@@ -17,19 +23,19 @@ import type { Tx } from '../tx/tx.js';
|
|
|
17
23
|
import { BlockProposal } from './block_proposal.js';
|
|
18
24
|
import { Gossipable } from './gossipable.js';
|
|
19
25
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
type CoordinationSignatureContext,
|
|
27
|
+
type CoordinationSignatureType,
|
|
28
|
+
EMPTY_COORDINATION_SIGNATURE_CONTEXT,
|
|
29
|
+
type Signable,
|
|
30
|
+
getCoordinationSignatureTypedData,
|
|
31
|
+
readCoordinationSignatureContext,
|
|
32
|
+
recoverCoordinationSigner,
|
|
33
|
+
serializeCoordinationSignatureContext,
|
|
23
34
|
} from './signature_utils.js';
|
|
24
35
|
import { SignedTxs } from './signed_txs.js';
|
|
25
36
|
import { TopicType } from './topic_type.js';
|
|
26
37
|
|
|
27
|
-
|
|
28
|
-
export class CheckpointProposalHash extends Buffer32 {
|
|
29
|
-
constructor(hash: Buffer) {
|
|
30
|
-
super(hash);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
38
|
+
export type { CheckpointProposalHash } from '@aztec/foundation/branded-types';
|
|
33
39
|
|
|
34
40
|
export type CheckpointProposalOptions = {
|
|
35
41
|
/**
|
|
@@ -69,10 +75,12 @@ export type CheckpointLastBlock = Omit<CheckpointLastBlockData, 'txs'> & {
|
|
|
69
75
|
* It includes the aggregated checkpoint header that validators will attest to, plus optionally
|
|
70
76
|
* the last block's info for nodes to re-execute. This marks the completion of a slot's worth of blocks.
|
|
71
77
|
*/
|
|
72
|
-
export class CheckpointProposal extends Gossipable {
|
|
78
|
+
export class CheckpointProposal extends Gossipable implements Signable {
|
|
73
79
|
static override p2pTopic = TopicType.checkpoint_proposal;
|
|
74
80
|
|
|
75
|
-
|
|
81
|
+
readonly primaryType: CoordinationSignatureType = 'CheckpointProposal';
|
|
82
|
+
|
|
83
|
+
private cachedSender: EthAddress | undefined | null = undefined;
|
|
76
84
|
|
|
77
85
|
constructor(
|
|
78
86
|
/** The aggregated checkpoint header for consensus */
|
|
@@ -81,40 +89,29 @@ export class CheckpointProposal extends Gossipable {
|
|
|
81
89
|
/** Archive root after this checkpoint is applied */
|
|
82
90
|
public readonly archive: Fr,
|
|
83
91
|
|
|
84
|
-
/** The
|
|
92
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
93
|
+
public readonly feeAssetPriceModifier: bigint,
|
|
94
|
+
|
|
95
|
+
/** The proposer's signature over the checkpoint payload (checkpointHeader + archive + feeAssetPriceModifier) */
|
|
85
96
|
public readonly signature: Signature,
|
|
86
97
|
|
|
98
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
99
|
+
public readonly signatureContext: CoordinationSignatureContext,
|
|
100
|
+
|
|
87
101
|
/** Optional last block info, including its own signature for BlockProposal extraction */
|
|
88
102
|
public readonly lastBlock?: CheckpointLastBlock,
|
|
89
103
|
) {
|
|
90
104
|
super();
|
|
91
105
|
}
|
|
92
106
|
|
|
93
|
-
override generateP2PMessageIdentifier(): Promise<
|
|
94
|
-
return Promise.resolve(
|
|
107
|
+
override generateP2PMessageIdentifier(): Promise<BaseBuffer32> {
|
|
108
|
+
return Promise.resolve(CheckpointProposalHash.fromBuffer(keccak256(this.signature.toBuffer())));
|
|
95
109
|
}
|
|
96
110
|
|
|
97
111
|
get slotNumber(): SlotNumber {
|
|
98
112
|
return this.checkpointHeader.slotNumber;
|
|
99
113
|
}
|
|
100
114
|
|
|
101
|
-
get blockNumber(): BlockNumber {
|
|
102
|
-
if (!this.lastBlock) {
|
|
103
|
-
throw new Error('Cannot get blockNumber without lastBlock');
|
|
104
|
-
}
|
|
105
|
-
return this.lastBlock.blockHeader.getBlockNumber();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** Convenience getter for txHashes from lastBlock */
|
|
109
|
-
get txHashes(): TxHash[] {
|
|
110
|
-
return this.lastBlock?.txHashes ?? [];
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/** Convenience getter for txs from lastBlock */
|
|
114
|
-
get txs(): Tx[] | undefined {
|
|
115
|
-
return this.lastBlock?.signedTxs?.txs;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
115
|
/**
|
|
119
116
|
* Extract a BlockProposal from the last block info.
|
|
120
117
|
* Uses inHash from checkpointHeader.contentCommitment.inHash
|
|
@@ -131,6 +128,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
131
128
|
this.archive,
|
|
132
129
|
this.lastBlock.txHashes,
|
|
133
130
|
this.lastBlock.signature,
|
|
131
|
+
this.signatureContext,
|
|
134
132
|
this.lastBlock.signedTxs,
|
|
135
133
|
);
|
|
136
134
|
}
|
|
@@ -148,52 +146,58 @@ export class CheckpointProposal extends Gossipable {
|
|
|
148
146
|
};
|
|
149
147
|
}
|
|
150
148
|
|
|
149
|
+
toCheckpointInfo() {
|
|
150
|
+
return {
|
|
151
|
+
slotNumber: this.slotNumber,
|
|
152
|
+
archive: this.archive,
|
|
153
|
+
lastBlockNumber: this.lastBlock?.blockHeader.getBlockNumber(),
|
|
154
|
+
lastBlockIndex: this.lastBlock?.indexWithinCheckpoint,
|
|
155
|
+
blockHeadersHash: this.checkpointHeader.blockHeadersHash,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
151
159
|
/**
|
|
152
160
|
* Get the payload to sign for this checkpoint proposal.
|
|
153
|
-
* The signature is over the checkpoint header + archive root (for consensus).
|
|
161
|
+
* The signature is over the checkpoint header + archive root + feeAssetPriceModifier (for consensus).
|
|
154
162
|
*/
|
|
155
|
-
getPayloadToSign(
|
|
156
|
-
return serializeToBuffer([
|
|
163
|
+
getPayloadToSign(): Buffer {
|
|
164
|
+
return serializeToBuffer([this.checkpointHeader, this.archive, serializeSignedBigInt(this.feeAssetPriceModifier)]);
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
static async createProposalFromSigner(
|
|
160
168
|
checkpointHeader: CheckpointHeader,
|
|
161
169
|
archiveRoot: Fr,
|
|
162
|
-
|
|
163
|
-
|
|
170
|
+
checkpointNumber: CheckpointNumber,
|
|
171
|
+
feeAssetPriceModifier: bigint,
|
|
172
|
+
lastBlockProposal: BlockProposal | undefined,
|
|
173
|
+
signatureContext: CoordinationSignatureContext,
|
|
174
|
+
payloadSigner: (typedData: TypedDataDefinition, context: SigningContext) => Promise<Signature>,
|
|
164
175
|
): Promise<CheckpointProposal> {
|
|
165
176
|
// Sign the checkpoint payload with CHECKPOINT_PROPOSAL duty type
|
|
166
|
-
const tempProposal = new CheckpointProposal(
|
|
167
|
-
|
|
168
|
-
|
|
177
|
+
const tempProposal = new CheckpointProposal(
|
|
178
|
+
checkpointHeader,
|
|
179
|
+
archiveRoot,
|
|
180
|
+
feeAssetPriceModifier,
|
|
181
|
+
Signature.empty(),
|
|
182
|
+
signatureContext,
|
|
183
|
+
);
|
|
169
184
|
const checkpointContext: SigningContext = {
|
|
170
185
|
slot: checkpointHeader.slotNumber,
|
|
171
|
-
|
|
186
|
+
checkpointNumber,
|
|
172
187
|
dutyType: DutyType.CHECKPOINT_PROPOSAL,
|
|
173
188
|
};
|
|
174
|
-
const checkpointSignature = await payloadSigner(checkpointHash, checkpointContext);
|
|
175
189
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
190
|
+
const typedData = getCoordinationSignatureTypedData(tempProposal);
|
|
191
|
+
const checkpointSignature = await payloadSigner(typedData, checkpointContext);
|
|
179
192
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
lastBlockInfo.indexWithinCheckpoint,
|
|
183
|
-
checkpointHeader.inHash,
|
|
193
|
+
return new CheckpointProposal(
|
|
194
|
+
checkpointHeader,
|
|
184
195
|
archiveRoot,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
196
|
+
feeAssetPriceModifier,
|
|
197
|
+
checkpointSignature,
|
|
198
|
+
signatureContext,
|
|
199
|
+
lastBlockProposal,
|
|
188
200
|
);
|
|
189
|
-
|
|
190
|
-
return new CheckpointProposal(checkpointHeader, archiveRoot, checkpointSignature, {
|
|
191
|
-
blockHeader: lastBlockInfo.blockHeader,
|
|
192
|
-
indexWithinCheckpoint: lastBlockInfo.indexWithinCheckpoint,
|
|
193
|
-
txHashes: lastBlockInfo.txHashes,
|
|
194
|
-
signature: lastBlockProposal.signature,
|
|
195
|
-
signedTxs: lastBlockProposal.signedTxs,
|
|
196
|
-
});
|
|
197
201
|
}
|
|
198
202
|
|
|
199
203
|
/**
|
|
@@ -202,32 +206,36 @@ export class CheckpointProposal extends Gossipable {
|
|
|
202
206
|
* @returns The sender address, or undefined if signature recovery fails or senders don't match
|
|
203
207
|
*/
|
|
204
208
|
getSender(): EthAddress | undefined {
|
|
205
|
-
if (
|
|
206
|
-
const
|
|
207
|
-
const checkpointSender = tryRecoverAddress(hashed, this.signature);
|
|
209
|
+
if (this.cachedSender === undefined) {
|
|
210
|
+
const checkpointSender = recoverCoordinationSigner(this, this.signature);
|
|
208
211
|
|
|
209
|
-
// If there's a lastBlock, verify the block proposal sender matches
|
|
210
212
|
if (checkpointSender && this.lastBlock) {
|
|
211
213
|
const blockProposal = this.getBlockProposal();
|
|
212
214
|
const blockSender = blockProposal?.getSender();
|
|
213
215
|
if (!blockSender || !blockSender.equals(checkpointSender)) {
|
|
214
|
-
|
|
216
|
+
this.cachedSender = null;
|
|
217
|
+
return undefined;
|
|
215
218
|
}
|
|
216
219
|
}
|
|
217
220
|
|
|
218
|
-
|
|
219
|
-
this.sender = checkpointSender;
|
|
221
|
+
this.cachedSender = checkpointSender ?? null;
|
|
220
222
|
}
|
|
221
223
|
|
|
222
|
-
return this.
|
|
224
|
+
return this.cachedSender ?? undefined;
|
|
223
225
|
}
|
|
224
226
|
|
|
225
227
|
getPayload() {
|
|
226
|
-
return this.getPayloadToSign(
|
|
228
|
+
return this.getPayloadToSign();
|
|
227
229
|
}
|
|
228
230
|
|
|
229
231
|
toBuffer(): Buffer {
|
|
230
|
-
const buffer: any[] = [
|
|
232
|
+
const buffer: any[] = [
|
|
233
|
+
this.checkpointHeader,
|
|
234
|
+
this.archive,
|
|
235
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
236
|
+
this.signature,
|
|
237
|
+
serializeCoordinationSignatureContext(this.signatureContext),
|
|
238
|
+
];
|
|
231
239
|
|
|
232
240
|
if (this.lastBlock) {
|
|
233
241
|
buffer.push(1); // hasLastBlock = true
|
|
@@ -254,7 +262,9 @@ export class CheckpointProposal extends Gossipable {
|
|
|
254
262
|
|
|
255
263
|
const checkpointHeader = reader.readObject(CheckpointHeader);
|
|
256
264
|
const archive = reader.readObject(Fr);
|
|
265
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
257
266
|
const signature = reader.readObject(Signature);
|
|
267
|
+
const signatureContext = readCoordinationSignatureContext(reader);
|
|
258
268
|
|
|
259
269
|
const hasLastBlock = reader.readNumber();
|
|
260
270
|
|
|
@@ -276,7 +286,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
276
286
|
}
|
|
277
287
|
}
|
|
278
288
|
|
|
279
|
-
return new CheckpointProposal(checkpointHeader, archive, signature, {
|
|
289
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, signatureContext, {
|
|
280
290
|
blockHeader,
|
|
281
291
|
indexWithinCheckpoint,
|
|
282
292
|
txHashes,
|
|
@@ -285,7 +295,7 @@ export class CheckpointProposal extends Gossipable {
|
|
|
285
295
|
});
|
|
286
296
|
}
|
|
287
297
|
|
|
288
|
-
return new CheckpointProposal(checkpointHeader, archive, signature);
|
|
298
|
+
return new CheckpointProposal(checkpointHeader, archive, feeAssetPriceModifier, signature, signatureContext);
|
|
289
299
|
}
|
|
290
300
|
|
|
291
301
|
getSize(): number {
|
|
@@ -293,6 +303,9 @@ export class CheckpointProposal extends Gossipable {
|
|
|
293
303
|
this.checkpointHeader.toBuffer().length +
|
|
294
304
|
this.archive.size +
|
|
295
305
|
this.signature.getSize() +
|
|
306
|
+
8 /* feeAssetPriceModifier */ +
|
|
307
|
+
4 /* chainId */ +
|
|
308
|
+
20 /* rollupAddress */ +
|
|
296
309
|
4; /* hasLastBlock flag */
|
|
297
310
|
|
|
298
311
|
if (this.lastBlock) {
|
|
@@ -310,16 +323,29 @@ export class CheckpointProposal extends Gossipable {
|
|
|
310
323
|
}
|
|
311
324
|
|
|
312
325
|
static empty(): CheckpointProposal {
|
|
313
|
-
return new CheckpointProposal(
|
|
326
|
+
return new CheckpointProposal(
|
|
327
|
+
CheckpointHeader.empty(),
|
|
328
|
+
Fr.ZERO,
|
|
329
|
+
0n,
|
|
330
|
+
Signature.empty(),
|
|
331
|
+
EMPTY_COORDINATION_SIGNATURE_CONTEXT,
|
|
332
|
+
);
|
|
314
333
|
}
|
|
315
334
|
|
|
316
335
|
static random(): CheckpointProposal {
|
|
317
|
-
return new CheckpointProposal(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
336
|
+
return new CheckpointProposal(
|
|
337
|
+
CheckpointHeader.random(),
|
|
338
|
+
Fr.random(),
|
|
339
|
+
0n,
|
|
340
|
+
Signature.random(),
|
|
341
|
+
EMPTY_COORDINATION_SIGNATURE_CONTEXT,
|
|
342
|
+
{
|
|
343
|
+
blockHeader: BlockHeader.random(),
|
|
344
|
+
indexWithinCheckpoint: IndexWithinCheckpoint(Math.floor(Math.random() * 5)),
|
|
345
|
+
txHashes: [TxHash.random(), TxHash.random()],
|
|
346
|
+
signature: Signature.random(),
|
|
347
|
+
},
|
|
348
|
+
);
|
|
323
349
|
}
|
|
324
350
|
|
|
325
351
|
toInspect() {
|
|
@@ -327,6 +353,9 @@ export class CheckpointProposal extends Gossipable {
|
|
|
327
353
|
checkpointHeader: this.checkpointHeader.toInspect(),
|
|
328
354
|
archive: this.archive.toString(),
|
|
329
355
|
signature: this.signature.toString(),
|
|
356
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
357
|
+
chainId: this.signatureContext.chainId,
|
|
358
|
+
rollupAddress: this.signatureContext.rollupAddress.toString(),
|
|
330
359
|
lastBlock: this.lastBlock
|
|
331
360
|
? {
|
|
332
361
|
blockHeader: this.lastBlock.blockHeader.toInspect(),
|
|
@@ -343,7 +372,13 @@ export class CheckpointProposal extends Gossipable {
|
|
|
343
372
|
* Used when the lastBlock has been extracted and stored separately.
|
|
344
373
|
*/
|
|
345
374
|
toCore(): CheckpointProposalCore {
|
|
346
|
-
return new CheckpointProposal(
|
|
375
|
+
return new CheckpointProposal(
|
|
376
|
+
this.checkpointHeader,
|
|
377
|
+
this.archive,
|
|
378
|
+
this.feeAssetPriceModifier,
|
|
379
|
+
this.signature,
|
|
380
|
+
this.signatureContext,
|
|
381
|
+
);
|
|
347
382
|
}
|
|
348
383
|
}
|
|
349
384
|
|
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
|
|
|
@@ -10,10 +10,21 @@ import { z } from 'zod';
|
|
|
10
10
|
import type { Checkpoint } from '../checkpoint/checkpoint.js';
|
|
11
11
|
import { CheckpointHeader } from '../rollup/checkpoint_header.js';
|
|
12
12
|
import type { CheckpointProposal, CheckpointProposalCore } from './checkpoint_proposal.js';
|
|
13
|
-
import
|
|
13
|
+
import {
|
|
14
|
+
type CoordinationSignatureContext,
|
|
15
|
+
type CoordinationSignatureType,
|
|
16
|
+
EMPTY_COORDINATION_SIGNATURE_CONTEXT,
|
|
17
|
+
type Signable,
|
|
18
|
+
coordinationSignatureContextEquals,
|
|
19
|
+
coordinationSignatureContextSchema,
|
|
20
|
+
readCoordinationSignatureContext,
|
|
21
|
+
serializeCoordinationSignatureContext,
|
|
22
|
+
} from './signature_utils.js';
|
|
14
23
|
|
|
15
24
|
/** Checkpoint consensus payload as signed by validators and verified on L1. */
|
|
16
25
|
export class ConsensusPayload implements Signable {
|
|
26
|
+
readonly primaryType: CoordinationSignatureType = 'CheckpointAttestation';
|
|
27
|
+
|
|
17
28
|
private size: number | undefined;
|
|
18
29
|
|
|
19
30
|
constructor(
|
|
@@ -21,6 +32,10 @@ export class ConsensusPayload implements Signable {
|
|
|
21
32
|
public readonly header: CheckpointHeader,
|
|
22
33
|
/** The archive root after the block is added */
|
|
23
34
|
public readonly archive: Fr,
|
|
35
|
+
/** The fee asset price modifier in basis points (from oracle) */
|
|
36
|
+
public readonly feeAssetPriceModifier: bigint,
|
|
37
|
+
/** The signing domain (chainId + rollupAddress) the signature is bound to */
|
|
38
|
+
public readonly signatureContext: CoordinationSignatureContext,
|
|
24
39
|
) {}
|
|
25
40
|
|
|
26
41
|
static get schema() {
|
|
@@ -28,63 +43,80 @@ export class ConsensusPayload implements Signable {
|
|
|
28
43
|
.object({
|
|
29
44
|
header: CheckpointHeader.schema,
|
|
30
45
|
archive: schemas.Fr,
|
|
46
|
+
feeAssetPriceModifier: schemas.BigInt,
|
|
47
|
+
signatureContext: coordinationSignatureContextSchema,
|
|
31
48
|
})
|
|
32
|
-
.transform(obj => new ConsensusPayload(obj.header, obj.archive));
|
|
49
|
+
.transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.feeAssetPriceModifier, obj.signatureContext));
|
|
33
50
|
}
|
|
34
51
|
|
|
35
|
-
static getFields(fields: FieldsOf<ConsensusPayload>) {
|
|
36
|
-
return [fields.header, fields.archive] as const;
|
|
52
|
+
static getFields(fields: Omit<FieldsOf<ConsensusPayload>, 'primaryType'>) {
|
|
53
|
+
return [fields.header, fields.archive, fields.feeAssetPriceModifier, fields.signatureContext] as const;
|
|
37
54
|
}
|
|
38
55
|
|
|
39
|
-
getPayloadToSign(
|
|
56
|
+
getPayloadToSign(): Buffer {
|
|
57
|
+
// Matches the L1 ProposePayload struct in ProposeLib.sol.
|
|
40
58
|
const abi = parseAbiParameters(
|
|
41
|
-
'
|
|
42
|
-
'(' +
|
|
59
|
+
'(' +
|
|
43
60
|
'bytes32, ' + // archive
|
|
44
61
|
'(int256), ' + // oracleInput
|
|
45
62
|
'bytes32' + // headerHash
|
|
46
63
|
')',
|
|
47
64
|
);
|
|
48
65
|
const archiveRoot = this.archive.toString();
|
|
49
|
-
|
|
50
66
|
const headerHash = this.header.hash().toString();
|
|
51
|
-
const encodedData = encodeAbiParameters(abi, [
|
|
52
|
-
domainSeparator,
|
|
53
|
-
[archiveRoot, [0n] /* @todo See #9963 */, headerHash],
|
|
54
|
-
] as const);
|
|
67
|
+
const encodedData = encodeAbiParameters(abi, [[archiveRoot, [this.feeAssetPriceModifier], headerHash]] as const);
|
|
55
68
|
|
|
56
69
|
return hexToBuffer(encodedData);
|
|
57
70
|
}
|
|
58
71
|
|
|
59
72
|
toBuffer(): Buffer {
|
|
60
|
-
return serializeToBuffer([
|
|
73
|
+
return serializeToBuffer([
|
|
74
|
+
this.header,
|
|
75
|
+
this.archive,
|
|
76
|
+
serializeSignedBigInt(this.feeAssetPriceModifier),
|
|
77
|
+
serializeCoordinationSignatureContext(this.signatureContext),
|
|
78
|
+
]);
|
|
61
79
|
}
|
|
62
80
|
|
|
63
81
|
public equals(other: ConsensusPayload | CheckpointProposal | CheckpointProposalCore): boolean {
|
|
64
82
|
const otherHeader = 'checkpointHeader' in other ? other.checkpointHeader : other.header;
|
|
65
|
-
|
|
83
|
+
const otherModifier = 'feeAssetPriceModifier' in other ? other.feeAssetPriceModifier : 0n;
|
|
84
|
+
return (
|
|
85
|
+
this.header.equals(otherHeader) &&
|
|
86
|
+
this.archive.equals(other.archive) &&
|
|
87
|
+
this.feeAssetPriceModifier === otherModifier &&
|
|
88
|
+
coordinationSignatureContextEquals(this.signatureContext, other.signatureContext)
|
|
89
|
+
);
|
|
66
90
|
}
|
|
67
91
|
|
|
68
92
|
static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload {
|
|
69
93
|
const reader = BufferReader.asReader(buf);
|
|
70
|
-
const
|
|
71
|
-
|
|
94
|
+
const header = reader.readObject(CheckpointHeader);
|
|
95
|
+
const archive = reader.readObject(Fr);
|
|
96
|
+
const feeAssetPriceModifier = reader.readInt256();
|
|
97
|
+
const signatureContext = readCoordinationSignatureContext(reader);
|
|
98
|
+
return new ConsensusPayload(header, archive, feeAssetPriceModifier, signatureContext);
|
|
72
99
|
}
|
|
73
100
|
|
|
74
|
-
static fromFields(fields: FieldsOf<ConsensusPayload>): ConsensusPayload {
|
|
75
|
-
return new ConsensusPayload(fields.header, fields.archive);
|
|
101
|
+
static fromFields(fields: Omit<FieldsOf<ConsensusPayload>, 'primaryType'>): ConsensusPayload {
|
|
102
|
+
return new ConsensusPayload(fields.header, fields.archive, fields.feeAssetPriceModifier, fields.signatureContext);
|
|
76
103
|
}
|
|
77
104
|
|
|
78
|
-
static fromCheckpoint(checkpoint: Checkpoint): ConsensusPayload {
|
|
79
|
-
return new ConsensusPayload(
|
|
105
|
+
static fromCheckpoint(checkpoint: Checkpoint, signatureContext: CoordinationSignatureContext): ConsensusPayload {
|
|
106
|
+
return new ConsensusPayload(
|
|
107
|
+
checkpoint.header,
|
|
108
|
+
checkpoint.archive.root,
|
|
109
|
+
checkpoint.feeAssetPriceModifier,
|
|
110
|
+
signatureContext,
|
|
111
|
+
);
|
|
80
112
|
}
|
|
81
113
|
|
|
82
114
|
static empty(): ConsensusPayload {
|
|
83
|
-
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO);
|
|
115
|
+
return new ConsensusPayload(CheckpointHeader.empty(), Fr.ZERO, 0n, EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
84
116
|
}
|
|
85
117
|
|
|
86
118
|
static random(): ConsensusPayload {
|
|
87
|
-
return new ConsensusPayload(CheckpointHeader.random(), Fr.random());
|
|
119
|
+
return new ConsensusPayload(CheckpointHeader.random(), Fr.random(), 0n, EMPTY_COORDINATION_SIGNATURE_CONTEXT);
|
|
88
120
|
}
|
|
89
121
|
|
|
90
122
|
/**
|
|
@@ -104,10 +136,13 @@ export class ConsensusPayload implements Signable {
|
|
|
104
136
|
return {
|
|
105
137
|
header: this.header.toInspect(),
|
|
106
138
|
archive: this.archive.toString(),
|
|
139
|
+
feeAssetPriceModifier: this.feeAssetPriceModifier.toString(),
|
|
140
|
+
chainId: this.signatureContext.chainId,
|
|
141
|
+
rollupAddress: this.signatureContext.rollupAddress.toString(),
|
|
107
142
|
};
|
|
108
143
|
}
|
|
109
144
|
|
|
110
145
|
toString() {
|
|
111
|
-
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}}`;
|
|
146
|
+
return `header: ${this.header.toString()}, archive: ${this.archive.toString()}, feeAssetPriceModifier: ${this.feeAssetPriceModifier}, chainId: ${this.signatureContext.chainId}, rollupAddress: ${this.signatureContext.rollupAddress.toString()}`;
|
|
112
147
|
}
|
|
113
148
|
}
|
package/src/p2p/constants.ts
CHANGED
package/src/p2p/gossipable.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseBuffer32 } from '@aztec/foundation/buffer';
|
|
2
2
|
import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
3
|
|
|
4
4
|
import type { TopicType } from './topic_type.js';
|
|
@@ -46,7 +46,7 @@ export class P2PMessage {
|
|
|
46
46
|
* Any class which extends gossipable will be able to be Gossiped over the p2p network
|
|
47
47
|
*/
|
|
48
48
|
export abstract class Gossipable {
|
|
49
|
-
private cachedId:
|
|
49
|
+
private cachedId: BaseBuffer32 | undefined;
|
|
50
50
|
/** The p2p topic identifier, this determines how the message is handled */
|
|
51
51
|
static p2pTopic: TopicType;
|
|
52
52
|
|
|
@@ -54,7 +54,7 @@ export abstract class Gossipable {
|
|
|
54
54
|
* A digest of the message information **used for logging only**.
|
|
55
55
|
* The identifier used for deduplication is `getMsgIdFn` as defined in `encoding.ts` which is a hash over topic and data.
|
|
56
56
|
*/
|
|
57
|
-
async p2pMessageLoggingIdentifier(): Promise<
|
|
57
|
+
async p2pMessageLoggingIdentifier(): Promise<BaseBuffer32> {
|
|
58
58
|
if (this.cachedId) {
|
|
59
59
|
return this.cachedId;
|
|
60
60
|
}
|
|
@@ -62,7 +62,7 @@ export abstract class Gossipable {
|
|
|
62
62
|
return this.cachedId;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
abstract generateP2PMessageIdentifier(): Promise<
|
|
65
|
+
abstract generateP2PMessageIdentifier(): Promise<BaseBuffer32>;
|
|
66
66
|
|
|
67
67
|
abstract toBuffer(): Buffer;
|
|
68
68
|
|