@aztec/stdlib 3.0.0-canary.a9708bd → 3.0.0-manual.20251030
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 +8 -8
- package/dest/abi/abi.js +1 -1
- package/dest/abi/contract_artifact.js +3 -0
- package/dest/abi/event_metadata_definition.d.ts +8 -0
- package/dest/abi/event_metadata_definition.d.ts.map +1 -0
- package/dest/abi/event_metadata_definition.js +1 -0
- package/dest/abi/function_call.d.ts +7 -2
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +6 -2
- package/dest/abi/index.d.ts +1 -0
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +1 -0
- package/dest/avm/avm.d.ts +132 -73
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +10 -6
- package/dest/avm/avm_accumulated_data.d.ts +10 -21
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_accumulated_data.js +19 -22
- package/dest/avm/avm_circuit_public_inputs.d.ts +30 -13
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.js +17 -6
- package/dest/avm/avm_proving_request.d.ts +96 -48
- package/dest/avm/avm_proving_request.d.ts.map +1 -1
- package/dest/avm/index.d.ts +1 -1
- package/dest/avm/index.d.ts.map +1 -1
- package/dest/avm/index.js +1 -1
- package/dest/avm/message_pack.d.ts +1 -0
- package/dest/avm/message_pack.d.ts.map +1 -1
- package/dest/avm/message_pack.js +28 -5
- package/dest/block/attestation_info.d.ts +30 -0
- package/dest/block/attestation_info.d.ts.map +1 -0
- package/dest/block/attestation_info.js +39 -0
- package/dest/block/body.d.ts +4 -1
- package/dest/block/body.d.ts.map +1 -1
- package/dest/block/body.js +17 -15
- package/dest/block/in_block.d.ts +5 -5
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/index.d.ts +4 -0
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +4 -0
- package/dest/block/l2_block.d.ts +21 -13
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +33 -10
- package/dest/block/l2_block_code_to_purge.d.ts +3 -14
- package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
- package/dest/block/l2_block_code_to_purge.js +23 -13
- package/dest/block/l2_block_header.d.ts +100 -0
- package/dest/block/l2_block_header.d.ts.map +1 -0
- package/dest/block/l2_block_header.js +146 -0
- package/dest/block/l2_block_info.d.ts +41 -0
- package/dest/block/l2_block_info.d.ts.map +1 -0
- package/dest/block/l2_block_info.js +40 -0
- package/dest/block/l2_block_source.d.ts +35 -433
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +0 -28
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +1 -1
- package/dest/block/proposal/attestations_and_signers.d.ts +48 -0
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -0
- package/dest/block/proposal/attestations_and_signers.js +99 -0
- package/dest/block/proposal/index.d.ts +1 -0
- package/dest/block/proposal/index.d.ts.map +1 -1
- package/dest/block/proposal/index.js +1 -0
- package/dest/block/published_l2_block.d.ts +27 -5
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +20 -7
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +3 -4
- package/dest/block/validate_block_result.d.ts +222 -0
- package/dest/block/validate_block_result.d.ts.map +1 -0
- package/dest/block/validate_block_result.js +83 -0
- package/dest/checkpoint/checkpoint_body.d.ts +4 -0
- package/dest/checkpoint/checkpoint_body.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_body.js +9 -0
- package/dest/checkpoint/index.d.ts +2 -0
- package/dest/checkpoint/index.d.ts.map +1 -0
- package/dest/checkpoint/index.js +1 -0
- package/dest/config/node-rpc-config.d.ts +2 -0
- package/dest/config/node-rpc-config.d.ts.map +1 -1
- package/dest/config/node-rpc-config.js +6 -0
- package/dest/contract/contract_address.d.ts +1 -1
- package/dest/contract/contract_address.js +1 -1
- package/dest/contract/contract_class_metadata.d.ts +8 -0
- package/dest/contract/contract_class_metadata.d.ts.map +1 -0
- package/dest/contract/contract_class_metadata.js +1 -0
- package/dest/contract/contract_instance.d.ts +9 -8
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +1 -2
- package/dest/contract/contract_metadata.d.ts +7 -0
- package/dest/contract/contract_metadata.d.ts.map +1 -0
- package/dest/contract/contract_metadata.js +1 -0
- package/dest/contract/index.d.ts +2 -0
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +2 -0
- package/dest/contract/interfaces/contract_class.d.ts +4 -4
- package/dest/contract/interfaces/contract_instance.d.ts +2 -2
- package/dest/epoch-helpers/index.d.ts +8 -2
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +9 -0
- package/dest/fees/transaction_fee.d.ts.map +1 -1
- package/dest/fees/transaction_fee.js +3 -0
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +18 -0
- package/dest/file-store/interface.d.ts +8 -2
- package/dest/file-store/interface.d.ts.map +1 -1
- package/dest/file-store/s3.d.ts +26 -0
- package/dest/file-store/s3.d.ts.map +1 -0
- package/dest/file-store/s3.js +252 -0
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +0 -3
- package/dest/interfaces/archiver.d.ts +43 -0
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +20 -4
- package/dest/interfaces/aztec-node-admin.d.ts +87 -40
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +7 -1
- package/dest/interfaces/aztec-node.d.ts +35 -2
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +8 -1
- package/dest/interfaces/block-builder.d.ts +7 -8
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/client.d.ts +0 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +0 -1
- package/dest/interfaces/configs.d.ts +10 -0
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +3 -1
- package/dest/interfaces/epoch-prover.d.ts +29 -12
- package/dest/interfaces/epoch-prover.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +5 -0
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +2 -0
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +2 -1
- package/dest/interfaces/private_kernel_prover.d.ts +2 -2
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +349 -200
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +131 -113
- package/dest/interfaces/server.d.ts +1 -0
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +1 -0
- package/dest/interfaces/server_circuit_prover.d.ts +34 -34
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/slasher.d.ts +4 -0
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +1 -0
- package/dest/interfaces/tx_provider.d.ts +1 -1
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +163 -0
- package/dest/interfaces/validator.d.ts.map +1 -0
- package/dest/interfaces/validator.js +18 -0
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -2
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/nullifier_read_request_hints.d.ts +4 -3
- package/dest/kernel/hints/nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/nullifier.d.ts +2 -2
- package/dest/kernel/nullifier.d.ts.map +1 -1
- package/dest/kernel/nullifier.js +11 -11
- package/dest/kernel/private_call_data.d.ts +4 -24
- package/dest/kernel/private_call_data.d.ts.map +1 -1
- package/dest/kernel/private_call_data.js +4 -16
- package/dest/kernel/private_circuit_public_inputs.d.ts +5 -5
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_context_inputs.d.ts +2 -2
- package/dest/kernel/private_context_inputs.d.ts.map +1 -1
- package/dest/kernel/private_context_inputs.js +4 -4
- 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 +3 -3
- package/dest/kernel/private_kernel_data.js +2 -2
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +5 -4
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.js +7 -6
- package/dest/kernel/private_kernel_prover_output.d.ts +4 -4
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +1 -0
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -1
- package/dest/kernel/private_to_public_accumulated_data.d.ts +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +2 -0
- 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 -0
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts +1 -1
- package/dest/keys/derivation.d.ts +0 -2
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +3 -24
- package/dest/logs/contract_class_log.d.ts +1 -1
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +1 -3
- package/dest/logs/debug_log.d.ts +13 -0
- package/dest/logs/debug_log.d.ts.map +1 -0
- package/dest/logs/debug_log.js +26 -0
- package/dest/logs/directional_app_tagging_secret.d.ts +40 -0
- package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/directional_app_tagging_secret.js +63 -0
- package/dest/logs/index.d.ts +3 -1
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +3 -1
- package/dest/logs/log_with_tx_data.d.ts +9 -12
- package/dest/logs/log_with_tx_data.d.ts.map +1 -1
- package/dest/logs/log_with_tx_data.js +18 -23
- package/dest/logs/pre_tag.d.ts +34 -0
- package/dest/logs/pre_tag.d.ts.map +1 -0
- package/dest/logs/pre_tag.js +7 -0
- package/dest/logs/public_log.d.ts +23 -10
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +117 -42
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +2 -4
- package/dest/messaging/inbox_leaf.d.ts +2 -0
- package/dest/messaging/inbox_leaf.d.ts.map +1 -1
- package/dest/messaging/inbox_leaf.js +3 -0
- package/dest/messaging/l2_to_l1_membership.d.ts +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +16 -18
- package/dest/noir/index.d.ts +11 -0
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/note/index.d.ts +1 -1
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +1 -1
- package/dest/note/notes_filter.d.ts +0 -5
- package/dest/note/notes_filter.d.ts.map +1 -1
- package/dest/note/notes_filter.js +0 -3
- package/dest/note/unique_note.d.ts +43 -0
- package/dest/note/unique_note.d.ts.map +1 -0
- package/dest/note/{extended_note.js → unique_note.js} +9 -48
- package/dest/p2p/block_attestation.d.ts +45 -9
- package/dest/p2p/block_attestation.d.ts.map +1 -1
- package/dest/p2p/block_attestation.js +37 -15
- package/dest/p2p/block_proposal.d.ts +7 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +13 -14
- package/dest/p2p/consensus_payload.d.ts +35 -6
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +21 -8
- package/dest/p2p/gossipable.d.ts +6 -16
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +9 -21
- package/dest/p2p/signature_utils.d.ts +2 -1
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +1 -0
- package/dest/p2p/topic_type.d.ts +4 -8
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +14 -8
- package/dest/parity/index.d.ts +2 -3
- package/dest/parity/index.d.ts.map +1 -1
- package/dest/parity/index.js +2 -3
- package/dest/parity/{base_parity_inputs.d.ts → parity_base_private_inputs.d.ts} +7 -7
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -0
- package/dest/parity/{base_parity_inputs.js → parity_base_private_inputs.js} +10 -6
- package/dest/parity/parity_root_private_inputs.d.ts +39 -0
- package/dest/parity/parity_root_private_inputs.d.ts.map +1 -0
- package/dest/parity/{root_parity_inputs.js → parity_root_private_inputs.js} +12 -13
- package/dest/proofs/chonk_proof.d.ts +28 -0
- package/dest/proofs/chonk_proof.d.ts.map +1 -0
- package/dest/proofs/chonk_proof.js +101 -0
- package/dest/proofs/index.d.ts +2 -1
- package/dest/proofs/index.d.ts.map +1 -1
- package/dest/proofs/index.js +2 -1
- package/dest/proofs/proof_data.d.ts +21 -0
- package/dest/proofs/proof_data.d.ts.map +1 -0
- package/dest/proofs/proof_data.js +22 -0
- package/dest/proofs/proving_request_type.d.ts +17 -13
- package/dest/proofs/proving_request_type.d.ts.map +1 -1
- package/dest/proofs/proving_request_type.js +17 -12
- package/dest/rollup/avm_proof_data.d.ts +2 -12
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/avm_proof_data.js +0 -24
- package/dest/rollup/base_rollup_hints.d.ts +17 -17
- package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
- package/dest/rollup/base_rollup_hints.js +26 -26
- package/dest/rollup/block_constant_data.d.ts +24 -10
- package/dest/rollup/block_constant_data.d.ts.map +1 -1
- package/dest/rollup/block_constant_data.js +18 -10
- package/dest/rollup/{block_merge_rollup.d.ts → block_merge_rollup_private_inputs.d.ts} +17 -10
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/{block_merge_rollup.js → block_merge_rollup_private_inputs.js} +14 -13
- package/dest/rollup/block_rollup_public_inputs.d.ts +124 -0
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/block_rollup_public_inputs.js +85 -0
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +236 -0
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/block_root_rollup_private_inputs.js +257 -0
- package/dest/rollup/checkpoint_constant_data.d.ts +54 -0
- package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -0
- package/dest/rollup/checkpoint_constant_data.js +55 -0
- package/dest/{tx/proposed_block_header.d.ts → rollup/checkpoint_header.d.ts} +12 -11
- package/dest/rollup/checkpoint_header.d.ts.map +1 -0
- package/dest/{tx/proposed_block_header.js → rollup/checkpoint_header.js} +14 -8
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +30 -0
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.js +37 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +106 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.js +108 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +123 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +178 -0
- package/dest/rollup/epoch_constant_data.d.ts +23 -6
- package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
- package/dest/rollup/epoch_constant_data.js +25 -12
- package/dest/rollup/index.d.ts +17 -16
- package/dest/rollup/index.d.ts.map +1 -1
- package/dest/rollup/index.js +17 -16
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +21 -0
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/private_tx_base_rollup_private_inputs.js +42 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +21 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.js +43 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +20 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.js +42 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +23 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.js +46 -0
- package/dest/rollup/root_rollup_private_inputs.d.ts +67 -0
- package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/root_rollup_private_inputs.js +69 -0
- package/dest/rollup/root_rollup_public_inputs.d.ts +46 -0
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/root_rollup_public_inputs.js +71 -0
- package/dest/rollup/{state_diff_hints.d.ts → tree_snapshot_diff_hints.d.ts} +22 -38
- package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -0
- package/dest/rollup/tree_snapshot_diff_hints.js +75 -0
- package/dest/rollup/{merge_rollup.d.ts → tx_merge_rollup_private_inputs.d.ts} +11 -10
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/{merge_rollup.js → tx_merge_rollup_private_inputs.js} +14 -13
- package/dest/rollup/{base_or_merge_rollup_public_inputs.d.ts → tx_rollup_public_inputs.d.ts} +14 -14
- package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/{base_or_merge_rollup_public_inputs.js → tx_rollup_public_inputs.js} +15 -15
- package/dest/slashing/types.d.ts +1 -0
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +22 -0
- package/dest/snapshots/download.d.ts.map +1 -1
- package/dest/snapshots/download.js +58 -2
- package/dest/snapshots/upload.d.ts.map +1 -1
- package/dest/snapshots/upload.js +1 -0
- package/dest/stats/stats.d.ts +3 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +43 -75
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +149 -171
- package/dest/tests/mocks.d.ts +16 -10
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +55 -33
- package/dest/trees/index.d.ts +0 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +0 -1
- package/dest/trees/merkle_tree_id.d.ts +4 -4
- package/dest/trees/nullifier_membership_witness.d.ts +3 -3
- package/dest/tx/block_header.d.ts +12 -13
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +16 -21
- package/dest/tx/content_commitment.d.ts +1 -0
- package/dest/tx/content_commitment.d.ts.map +1 -1
- package/dest/tx/content_commitment.js +3 -0
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/global_variables.js +0 -1
- package/dest/tx/index.d.ts +2 -1
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +2 -1
- package/dest/tx/indexed_tx_effect.d.ts +3 -3
- package/dest/tx/partial_state_reference.d.ts +1 -0
- package/dest/tx/partial_state_reference.d.ts.map +1 -1
- package/dest/tx/partial_state_reference.js +3 -0
- package/dest/tx/private_execution_result.d.ts +7 -2
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +10 -6
- package/dest/tx/private_tx_constant_data.d.ts +60 -0
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -0
- package/dest/tx/private_tx_constant_data.js +69 -0
- package/dest/tx/processed_tx.d.ts +2 -3
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +3 -8
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +0 -2
- package/dest/tx/protocol_contracts.d.ts +29 -0
- package/dest/tx/protocol_contracts.d.ts.map +1 -0
- package/dest/tx/protocol_contracts.js +49 -0
- package/dest/tx/proven_tx.d.ts +7 -7
- package/dest/tx/proven_tx.d.ts.map +1 -1
- package/dest/tx/proven_tx.js +8 -8
- package/dest/tx/simulated_tx.d.ts +3 -3
- package/dest/tx/simulated_tx.js +2 -2
- package/dest/tx/state_reference.d.ts +1 -0
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +4 -1
- package/dest/tx/tx.d.ts +9 -12
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +21 -22
- package/dest/tx/tx_constant_data.d.ts +6 -38
- package/dest/tx/tx_constant_data.d.ts.map +1 -1
- package/dest/tx/tx_constant_data.js +11 -20
- package/dest/tx/tx_effect.d.ts +3 -36
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +63 -202
- package/dest/tx/validator/error_texts.d.ts +1 -1
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/update-checker/update-checker.d.ts +1 -1
- package/dest/update-checker/update-checker.d.ts.map +1 -1
- package/dest/update-checker/update-checker.js +1 -1
- package/dest/validators/schemas.d.ts +42 -4
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +5 -4
- package/dest/validators/types.d.ts +8 -10
- package/dest/validators/types.d.ts.map +1 -1
- package/dest/versioning/versioning.d.ts +2 -2
- package/dest/versioning/versioning.d.ts.map +1 -1
- package/dest/versioning/versioning.js +18 -13
- package/dest/world-state/index.d.ts +2 -0
- package/dest/world-state/index.d.ts.map +1 -0
- package/dest/world-state/index.js +1 -0
- package/dest/world-state/world_state_revision.d.ts +22 -0
- package/dest/world-state/world_state_revision.d.ts.map +1 -0
- package/dest/world-state/world_state_revision.js +21 -0
- package/dest/zkpassport/index.d.ts +17 -11
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +21 -15
- package/package.json +15 -11
- package/src/abi/abi.ts +1 -1
- package/src/abi/contract_artifact.ts +3 -0
- package/src/abi/event_metadata_definition.ts +8 -0
- package/src/abi/function_call.ts +5 -1
- package/src/abi/index.ts +1 -0
- package/src/avm/avm.ts +15 -7
- package/src/avm/avm_accumulated_data.ts +25 -29
- package/src/avm/avm_circuit_public_inputs.ts +21 -0
- package/src/avm/index.ts +1 -1
- package/src/avm/message_pack.ts +25 -1
- package/src/block/attestation_info.ts +62 -0
- package/src/block/body.ts +25 -23
- package/src/block/index.ts +4 -0
- package/src/block/l2_block.ts +39 -19
- package/src/block/l2_block_code_to_purge.ts +30 -31
- package/src/block/l2_block_header.ts +232 -0
- package/src/block/l2_block_info.ts +63 -0
- package/src/block/l2_block_source.ts +38 -56
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +1 -1
- package/src/block/proposal/attestations_and_signers.ts +121 -0
- package/src/block/proposal/index.ts +1 -0
- package/src/block/published_l2_block.ts +37 -15
- package/src/block/test/l2_tips_store_test_suite.ts +7 -7
- package/src/block/validate_block_result.ts +122 -0
- package/src/checkpoint/checkpoint_body.ts +10 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/config/node-rpc-config.ts +9 -0
- package/src/contract/contract_address.ts +1 -1
- package/src/contract/contract_class_metadata.ts +8 -0
- package/src/contract/contract_instance.ts +11 -10
- package/src/contract/contract_metadata.ts +7 -0
- package/src/contract/index.ts +2 -0
- package/src/contract/interfaces/contract_class.ts +1 -1
- package/src/epoch-helpers/index.ts +24 -2
- package/src/fees/transaction_fee.ts +11 -0
- package/src/file-store/factory.ts +15 -0
- package/src/file-store/interface.ts +8 -2
- package/src/file-store/s3.ts +254 -0
- package/src/hash/hash.ts +0 -4
- package/src/interfaces/archiver.ts +49 -4
- package/src/interfaces/aztec-node-admin.ts +17 -1
- package/src/interfaces/aztec-node.ts +53 -2
- package/src/interfaces/block-builder.ts +11 -12
- package/src/interfaces/client.ts +0 -1
- package/src/interfaces/configs.ts +6 -0
- package/src/interfaces/epoch-prover.ts +38 -14
- package/src/interfaces/merkle_tree_operations.ts +6 -0
- package/src/interfaces/p2p.ts +4 -0
- package/src/interfaces/private_kernel_prover.ts +2 -2
- package/src/interfaces/proving-job.ts +218 -134
- package/src/interfaces/server.ts +1 -0
- package/src/interfaces/server_circuit_prover.ts +89 -61
- package/src/interfaces/slasher.ts +2 -0
- package/src/interfaces/tx_provider.ts +1 -0
- package/src/interfaces/validator.ts +95 -0
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +3 -2
- package/src/kernel/hints/nullifier_read_request_hints.ts +3 -3
- package/src/kernel/nullifier.ts +8 -8
- package/src/kernel/private_call_data.ts +2 -21
- package/src/kernel/private_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_context_inputs.ts +2 -2
- package/src/kernel/private_kernel_circuit_public_inputs.ts +4 -4
- package/src/kernel/private_kernel_data.ts +2 -2
- package/src/kernel/private_kernel_init_circuit_private_inputs.ts +5 -4
- package/src/kernel/private_kernel_prover_output.ts +4 -4
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +8 -2
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +9 -0
- package/src/keys/derivation.ts +3 -29
- package/src/logs/contract_class_log.ts +2 -3
- package/src/logs/debug_log.ts +32 -0
- package/src/logs/directional_app_tagging_secret.ts +77 -0
- package/src/logs/index.ts +3 -1
- package/src/logs/log_with_tx_data.ts +14 -24
- package/src/logs/pre_tag.ts +25 -0
- package/src/logs/public_log.ts +120 -58
- package/src/logs/shared_secret_derivation.ts +2 -4
- package/src/messaging/inbox_leaf.ts +5 -0
- package/src/messaging/l2_to_l1_membership.ts +20 -26
- package/src/noir/index.ts +11 -0
- package/src/note/index.ts +1 -1
- package/src/note/notes_filter.ts +0 -7
- package/src/note/{extended_note.ts → unique_note.ts} +14 -75
- package/src/p2p/block_attestation.ts +46 -15
- package/src/p2p/block_proposal.ts +15 -18
- package/src/p2p/consensus_payload.ts +30 -10
- package/src/p2p/gossipable.ts +10 -28
- package/src/p2p/signature_utils.ts +1 -0
- package/src/p2p/topic_type.ts +15 -8
- package/src/parity/index.ts +2 -3
- package/src/parity/{base_parity_inputs.ts → parity_base_private_inputs.ts} +13 -11
- package/src/parity/{root_parity_inputs.ts → parity_root_private_inputs.ts} +16 -18
- package/src/proofs/chonk_proof.ts +118 -0
- package/src/proofs/index.ts +2 -1
- package/src/proofs/proof_data.ts +36 -0
- package/src/proofs/proving_request_type.ts +14 -10
- package/src/rollup/avm_proof_data.ts +2 -31
- package/src/rollup/base_rollup_hints.ts +22 -22
- package/src/rollup/block_constant_data.ts +16 -6
- package/src/rollup/{block_merge_rollup.ts → block_merge_rollup_private_inputs.ts} +15 -11
- package/src/rollup/block_rollup_public_inputs.ts +123 -0
- package/src/rollup/block_root_rollup_private_inputs.ts +312 -0
- package/src/rollup/checkpoint_constant_data.ts +84 -0
- package/src/{tx/proposed_block_header.ts → rollup/checkpoint_header.ts} +40 -15
- package/src/rollup/checkpoint_merge_rollup_private_inputs.ts +49 -0
- package/src/rollup/{block_root_or_block_merge_public_inputs.ts → checkpoint_rollup_public_inputs.ts} +30 -52
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +218 -0
- package/src/rollup/epoch_constant_data.ts +28 -10
- package/src/rollup/index.ts +17 -16
- package/src/rollup/private_tx_base_rollup_private_inputs.ts +53 -0
- package/src/rollup/public_chonk_verifier_private_inputs.ts +54 -0
- package/src/rollup/public_chonk_verifier_public_inputs.ts +53 -0
- package/src/rollup/public_tx_base_rollup_private_inputs.ts +57 -0
- package/src/rollup/root_rollup_private_inputs.ts +90 -0
- package/src/rollup/root_rollup_public_inputs.ts +99 -0
- package/src/rollup/{state_diff_hints.ts → tree_snapshot_diff_hints.ts} +26 -41
- package/src/rollup/{merge_rollup.ts → tx_merge_rollup_private_inputs.ts} +13 -9
- package/src/rollup/{base_or_merge_rollup_public_inputs.ts → tx_rollup_public_inputs.ts} +13 -13
- package/src/slashing/types.ts +23 -0
- package/src/snapshots/download.ts +66 -2
- package/src/snapshots/upload.ts +1 -0
- package/src/stats/stats.ts +21 -15
- package/src/tests/factories.ts +226 -283
- package/src/tests/mocks.ts +90 -60
- package/src/trees/index.ts +0 -1
- package/src/tx/block_header.ts +17 -32
- package/src/tx/content_commitment.ts +4 -0
- package/src/tx/global_variables.ts +0 -1
- package/src/tx/index.ts +2 -1
- package/src/tx/partial_state_reference.ts +8 -0
- package/src/tx/private_execution_result.ts +9 -3
- package/src/tx/private_tx_constant_data.ts +94 -0
- package/src/tx/processed_tx.ts +5 -11
- package/src/tx/profiling.ts +0 -2
- package/src/tx/protocol_contracts.ts +70 -0
- package/src/tx/proven_tx.ts +6 -6
- package/src/tx/simulated_tx.ts +2 -2
- package/src/tx/state_reference.ts +5 -1
- package/src/tx/tx.ts +21 -22
- package/src/tx/tx_constant_data.ts +8 -21
- package/src/tx/tx_effect.ts +64 -213
- package/src/tx/validator/error_texts.ts +1 -1
- package/src/update-checker/update-checker.ts +1 -1
- package/src/validators/schemas.ts +6 -4
- package/src/validators/types.ts +9 -10
- package/src/versioning/versioning.ts +20 -15
- package/src/world-state/index.ts +1 -0
- package/src/world-state/world_state_revision.ts +21 -0
- package/src/zkpassport/index.ts +42 -30
- package/dest/avm/public_data_hint.d.ts +0 -16
- package/dest/avm/public_data_hint.d.ts.map +0 -1
- package/dest/avm/public_data_hint.js +0 -27
- package/dest/interfaces/pxe.d.ts +0 -329
- package/dest/interfaces/pxe.d.ts.map +0 -1
- package/dest/interfaces/pxe.js +0 -100
- package/dest/logs/indexed_tagging_secret.d.ts +0 -28
- package/dest/logs/indexed_tagging_secret.d.ts.map +0 -1
- package/dest/logs/indexed_tagging_secret.js +0 -50
- package/dest/note/extended_note.d.ts +0 -111
- package/dest/note/extended_note.d.ts.map +0 -1
- package/dest/parity/base_parity_inputs.d.ts.map +0 -1
- package/dest/parity/root_parity_input.d.ts +0 -52
- package/dest/parity/root_parity_input.d.ts.map +0 -1
- package/dest/parity/root_parity_input.js +0 -50
- package/dest/parity/root_parity_inputs.d.ts +0 -37
- package/dest/parity/root_parity_inputs.d.ts.map +0 -1
- package/dest/proofs/client_ivc_proof.d.ts +0 -18
- package/dest/proofs/client_ivc_proof.d.ts.map +0 -1
- package/dest/proofs/client_ivc_proof.js +0 -41
- package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts.map +0 -1
- package/dest/rollup/block_merge_rollup.d.ts.map +0 -1
- package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts +0 -134
- package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts.map +0 -1
- package/dest/rollup/block_root_or_block_merge_public_inputs.js +0 -125
- package/dest/rollup/block_root_rollup.d.ts +0 -283
- package/dest/rollup/block_root_rollup.d.ts.map +0 -1
- package/dest/rollup/block_root_rollup.js +0 -306
- package/dest/rollup/empty_block_root_rollup_inputs.d.ts +0 -51
- package/dest/rollup/empty_block_root_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/empty_block_root_rollup_inputs.js +0 -65
- package/dest/rollup/merge_rollup.d.ts.map +0 -1
- package/dest/rollup/padding_block_root_rollup_inputs.d.ts +0 -20
- package/dest/rollup/padding_block_root_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/padding_block_root_rollup_inputs.js +0 -39
- package/dest/rollup/previous_rollup_block_data.d.ts +0 -47
- package/dest/rollup/previous_rollup_block_data.d.ts.map +0 -1
- package/dest/rollup/previous_rollup_block_data.js +0 -37
- package/dest/rollup/previous_rollup_data.d.ts +0 -47
- package/dest/rollup/previous_rollup_data.d.ts.map +0 -1
- package/dest/rollup/previous_rollup_data.js +0 -37
- package/dest/rollup/private_base_rollup_inputs.d.ts +0 -21
- package/dest/rollup/private_base_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/private_base_rollup_inputs.js +0 -44
- package/dest/rollup/private_tube_data.d.ts +0 -15
- package/dest/rollup/private_tube_data.d.ts.map +0 -1
- package/dest/rollup/private_tube_data.js +0 -25
- package/dest/rollup/public_base_rollup_inputs.d.ts +0 -23
- package/dest/rollup/public_base_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/public_base_rollup_inputs.js +0 -48
- package/dest/rollup/public_tube_data.d.ts +0 -15
- package/dest/rollup/public_tube_data.d.ts.map +0 -1
- package/dest/rollup/public_tube_data.js +0 -25
- package/dest/rollup/root_rollup.d.ts +0 -106
- package/dest/rollup/root_rollup.d.ts.map +0 -1
- package/dest/rollup/root_rollup.js +0 -147
- package/dest/rollup/state_diff_hints.d.ts.map +0 -1
- package/dest/rollup/state_diff_hints.js +0 -85
- package/dest/rollup/tube_inputs.d.ts +0 -43
- package/dest/rollup/tube_inputs.d.ts.map +0 -1
- package/dest/rollup/tube_inputs.js +0 -63
- package/dest/trees/protocol_contract_leaf.d.ts +0 -84
- package/dest/trees/protocol_contract_leaf.d.ts.map +0 -1
- package/dest/trees/protocol_contract_leaf.js +0 -100
- package/dest/tx/proposed_block_header.d.ts.map +0 -1
- package/src/avm/public_data_hint.ts +0 -38
- package/src/interfaces/pxe.ts +0 -532
- package/src/logs/indexed_tagging_secret.ts +0 -48
- package/src/parity/root_parity_input.ts +0 -71
- package/src/proofs/client_ivc_proof.ts +0 -51
- package/src/rollup/block_root_rollup.ts +0 -380
- package/src/rollup/empty_block_root_rollup_inputs.ts +0 -80
- package/src/rollup/padding_block_root_rollup_inputs.ts +0 -47
- package/src/rollup/previous_rollup_block_data.ts +0 -48
- package/src/rollup/previous_rollup_data.ts +0 -48
- package/src/rollup/private_base_rollup_inputs.ts +0 -53
- package/src/rollup/private_tube_data.ts +0 -35
- package/src/rollup/public_base_rollup_inputs.ts +0 -59
- package/src/rollup/public_tube_data.ts +0 -35
- package/src/rollup/root_rollup.ts +0 -195
- package/src/rollup/tube_inputs.ts +0 -77
- package/src/trees/protocol_contract_leaf.ts +0 -128
|
@@ -56,7 +56,10 @@ export function getEpochAtSlot(slot: bigint, constants: Pick<L1RollupConstants,
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/** Returns the range of L2 slots (inclusive) for a given epoch number. */
|
|
59
|
-
export function getSlotRangeForEpoch(
|
|
59
|
+
export function getSlotRangeForEpoch(
|
|
60
|
+
epochNumber: bigint,
|
|
61
|
+
constants: Pick<L1RollupConstants, 'epochDuration'>,
|
|
62
|
+
): [bigint, bigint] {
|
|
60
63
|
const startSlot = epochNumber * BigInt(constants.epochDuration);
|
|
61
64
|
return [startSlot, startSlot + BigInt(constants.epochDuration) - 1n];
|
|
62
65
|
}
|
|
@@ -68,7 +71,7 @@ export function getSlotRangeForEpoch(epochNumber: bigint, constants: Pick<L1Roll
|
|
|
68
71
|
export function getTimestampRangeForEpoch(
|
|
69
72
|
epochNumber: bigint,
|
|
70
73
|
constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'ethereumSlotDuration'>,
|
|
71
|
-
) {
|
|
74
|
+
): [bigint, bigint] {
|
|
72
75
|
const [startSlot, endSlot] = getSlotRangeForEpoch(epochNumber, constants);
|
|
73
76
|
const ethereumSlotsPerL2Slot = constants.slotDuration / constants.ethereumSlotDuration;
|
|
74
77
|
return [
|
|
@@ -79,6 +82,17 @@ export function getTimestampRangeForEpoch(
|
|
|
79
82
|
];
|
|
80
83
|
}
|
|
81
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Returns the start timestamp for a given epoch number.
|
|
87
|
+
*/
|
|
88
|
+
export function getStartTimestampForEpoch(
|
|
89
|
+
epochNumber: bigint,
|
|
90
|
+
constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration'>,
|
|
91
|
+
) {
|
|
92
|
+
const [startSlot] = getSlotRangeForEpoch(epochNumber, constants);
|
|
93
|
+
return getTimestampForSlot(startSlot, constants);
|
|
94
|
+
}
|
|
95
|
+
|
|
82
96
|
/**
|
|
83
97
|
* Returns the epoch number at which proofs are no longer accepted for a given epoch.
|
|
84
98
|
* See l1-contracts/src/core/libraries/TimeLib.sol
|
|
@@ -104,3 +118,11 @@ export function getProofSubmissionDeadlineTimestamp(
|
|
|
104
118
|
const [deadlineSlot] = getSlotRangeForEpoch(deadlineEpoch, constants);
|
|
105
119
|
return getTimestampForSlot(deadlineSlot, constants);
|
|
106
120
|
}
|
|
121
|
+
|
|
122
|
+
/** Returns the timestamp to start building a block for a given L2 slot. Computed as the start timestamp of the slot minus one L1 slot duration. */
|
|
123
|
+
export function getSlotStartBuildTimestamp(
|
|
124
|
+
slotNumber: number | bigint,
|
|
125
|
+
constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'ethereumSlotDuration'>,
|
|
126
|
+
): number {
|
|
127
|
+
return Number(constants.l1GenesisTime) + Number(slotNumber) * constants.slotDuration - constants.ethereumSlotDuration;
|
|
128
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
|
|
3
|
+
import { strict as assert } from 'assert';
|
|
4
|
+
|
|
3
5
|
import type { Gas } from '../gas/gas.js';
|
|
4
6
|
import { GasFees } from '../gas/gas_fees.js';
|
|
5
7
|
import type { GasSettings } from '../gas/gas_settings.js';
|
|
@@ -11,6 +13,15 @@ import type { GasSettings } from '../gas/gas_settings.js';
|
|
|
11
13
|
export function computeEffectiveGasFees(gasFees: GasFees, gasSettings: GasSettings): GasFees {
|
|
12
14
|
const { maxFeesPerGas, maxPriorityFeesPerGas } = gasSettings;
|
|
13
15
|
const minBigInt = (f1: bigint, f2: bigint) => (f1 < f2 ? f1 : f2);
|
|
16
|
+
|
|
17
|
+
assert(
|
|
18
|
+
maxFeesPerGas.feePerDaGas >= gasFees.feePerDaGas,
|
|
19
|
+
`maxFeesPerGas.feePerDaGas must be greater than or equal to gasFees.feePerDaGas, but got maxFeesPerGas.feePerDaGas=${maxFeesPerGas.feePerDaGas} and gasFees.feePerDaGas=${gasFees.feePerDaGas}`,
|
|
20
|
+
);
|
|
21
|
+
assert(
|
|
22
|
+
maxFeesPerGas.feePerL2Gas >= gasFees.feePerL2Gas,
|
|
23
|
+
`maxFeesPerGas.feePerL2Gas must be greater than or equal to gasFees.feePerL2Gas, but got maxFeesPerGas.feePerL2Gas=${maxFeesPerGas.feePerL2Gas} and gasFees.feePerL2Gas=${gasFees.feePerL2Gas}`,
|
|
24
|
+
);
|
|
14
25
|
const priorityFees = new GasFees(
|
|
15
26
|
minBigInt(maxPriorityFeesPerGas.feePerDaGas, maxFeesPerGas.feePerDaGas - gasFees.feePerDaGas),
|
|
16
27
|
minBigInt(maxPriorityFeesPerGas.feePerL2Gas, maxFeesPerGas.feePerL2Gas - gasFees.feePerL2Gas),
|
|
@@ -4,9 +4,11 @@ import { GoogleCloudFileStore } from './gcs.js';
|
|
|
4
4
|
import { HttpFileStore } from './http.js';
|
|
5
5
|
import type { FileStore, ReadOnlyFileStore } from './interface.js';
|
|
6
6
|
import { LocalFileStore } from './local.js';
|
|
7
|
+
import { S3FileStore } from './s3.js';
|
|
7
8
|
|
|
8
9
|
const supportedExamples = [
|
|
9
10
|
`gs://bucket-name/path/to/store`,
|
|
11
|
+
`s3://bucket-name/path/to/store`,
|
|
10
12
|
`file:///absolute/local/path/to/store`,
|
|
11
13
|
`https://host/path`,
|
|
12
14
|
];
|
|
@@ -39,6 +41,19 @@ export async function createFileStore(
|
|
|
39
41
|
} catch {
|
|
40
42
|
throw new Error(`Invalid google cloud store definition: '${config}'.`);
|
|
41
43
|
}
|
|
44
|
+
} else if (config.startsWith('s3://')) {
|
|
45
|
+
try {
|
|
46
|
+
const url = new URL(config);
|
|
47
|
+
const bucket = url.host;
|
|
48
|
+
const path = url.pathname.replace(/^\/+/, '');
|
|
49
|
+
const endpoint = url.searchParams.get('endpoint');
|
|
50
|
+
const publicBaseUrl = url.searchParams.get('publicBaseUrl') ?? undefined;
|
|
51
|
+
logger.info(`Creating S3 file store at ${bucket} ${path}`);
|
|
52
|
+
const store = new S3FileStore(bucket, path, { endpoint: endpoint ?? undefined, publicBaseUrl });
|
|
53
|
+
return store;
|
|
54
|
+
} catch {
|
|
55
|
+
throw new Error(`Invalid S3 store definition: '${config}'.`);
|
|
56
|
+
}
|
|
42
57
|
} else {
|
|
43
58
|
throw new Error(`Unknown file store config: '${config}'. Supported values are ${supportedExamples.join(', ')}.`);
|
|
44
59
|
}
|
|
@@ -12,8 +12,14 @@ export type FileStoreSaveOptions = { public?: boolean; metadata?: Record<string,
|
|
|
12
12
|
|
|
13
13
|
/** Simple file store. */
|
|
14
14
|
export interface FileStore extends ReadOnlyFileStore {
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Saves contents to the given path. Returns an URI that can be used later to `read` the file.
|
|
17
|
+
* Default: `compress` is false unless explicitly set.
|
|
18
|
+
*/
|
|
16
19
|
save(path: string, data: Buffer, opts?: FileStoreSaveOptions): Promise<string>;
|
|
17
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Uploads contents from a local file. Returns an URI that can be used later to `read` the file.
|
|
22
|
+
* Default: `compress` is true unless explicitly set to false.
|
|
23
|
+
*/
|
|
18
24
|
upload(destPath: string, srcPath: string, opts?: FileStoreSaveOptions): Promise<string>;
|
|
19
25
|
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
GetObjectCommand,
|
|
5
|
+
type GetObjectCommandOutput,
|
|
6
|
+
HeadObjectCommand,
|
|
7
|
+
PutObjectCommand,
|
|
8
|
+
S3Client,
|
|
9
|
+
} from '@aws-sdk/client-s3';
|
|
10
|
+
import { createReadStream, createWriteStream } from 'fs';
|
|
11
|
+
import { mkdir, mkdtemp, stat, unlink } from 'fs/promises';
|
|
12
|
+
import { tmpdir } from 'os';
|
|
13
|
+
import { basename, dirname, join } from 'path';
|
|
14
|
+
import { Readable } from 'stream';
|
|
15
|
+
import { finished } from 'stream/promises';
|
|
16
|
+
import { createGzip } from 'zlib';
|
|
17
|
+
|
|
18
|
+
import type { FileStore, FileStoreSaveOptions } from './interface.js';
|
|
19
|
+
|
|
20
|
+
function normalizeBasePath(path: string): string {
|
|
21
|
+
return path?.replace(/^\/+|\/+$/g, '') ?? '';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class S3FileStore implements FileStore {
|
|
25
|
+
private readonly s3: S3Client;
|
|
26
|
+
private readonly region: string;
|
|
27
|
+
private readonly endpoint?: string;
|
|
28
|
+
private readonly publicBaseUrl?: string;
|
|
29
|
+
|
|
30
|
+
constructor(
|
|
31
|
+
private readonly bucketName: string,
|
|
32
|
+
private readonly basePath: string,
|
|
33
|
+
opts: { endpoint?: string; publicBaseUrl?: string },
|
|
34
|
+
private readonly log: Logger = createLogger('stdlib:s3-file-store'),
|
|
35
|
+
) {
|
|
36
|
+
this.endpoint = opts.endpoint;
|
|
37
|
+
this.region = this.endpoint ? 'auto' : (process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION ?? 'us-east-1');
|
|
38
|
+
this.publicBaseUrl = opts.publicBaseUrl;
|
|
39
|
+
|
|
40
|
+
const clientOptions: any = {};
|
|
41
|
+
if (this.endpoint) {
|
|
42
|
+
clientOptions.region = 'auto';
|
|
43
|
+
clientOptions.endpoint = this.endpoint;
|
|
44
|
+
clientOptions.forcePathStyle = true;
|
|
45
|
+
} else {
|
|
46
|
+
clientOptions.region = this.region;
|
|
47
|
+
}
|
|
48
|
+
this.s3 = new S3Client(clientOptions);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public async save(path: string, data: Buffer, opts: FileStoreSaveOptions = {}): Promise<string> {
|
|
52
|
+
const key = this.getFullPath(path);
|
|
53
|
+
const shouldCompress = !!opts.compress;
|
|
54
|
+
|
|
55
|
+
const body = shouldCompress ? (await import('zlib')).gzipSync(data) : data;
|
|
56
|
+
const contentLength = body.length;
|
|
57
|
+
const contentType = this.detectContentType(key, shouldCompress);
|
|
58
|
+
const put = new PutObjectCommand({
|
|
59
|
+
Bucket: this.bucketName,
|
|
60
|
+
Key: key,
|
|
61
|
+
Body: body,
|
|
62
|
+
ContentType: contentType,
|
|
63
|
+
CacheControl: opts.metadata?.['Cache-control'],
|
|
64
|
+
Metadata: this.extractUserMetadata(opts.metadata),
|
|
65
|
+
ContentLength: contentLength,
|
|
66
|
+
});
|
|
67
|
+
await this.s3.send(put);
|
|
68
|
+
return this.buildReturnedUrl(key, !!opts.public);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public async upload(destPath: string, srcPath: string, opts: FileStoreSaveOptions = {}): Promise<string> {
|
|
72
|
+
const key = this.getFullPath(destPath);
|
|
73
|
+
const shouldCompress = opts.compress !== false; // default true like GCS impl
|
|
74
|
+
|
|
75
|
+
await mkdir(dirname(srcPath), { recursive: true }).catch(() => undefined);
|
|
76
|
+
let contentLength: number | undefined;
|
|
77
|
+
let bodyPath = srcPath;
|
|
78
|
+
|
|
79
|
+
// We don't set Content-Encoding and we avoid SigV4 streaming (aws-chunked).
|
|
80
|
+
// With AWS SigV4 streaming uploads (Content-Encoding: aws-chunked[,gzip]), servers require
|
|
81
|
+
// x-amz-decoded-content-length (the size of the decoded payload) and an exact Content-Length
|
|
82
|
+
// that includes chunk metadata. For on-the-fly compression, providing
|
|
83
|
+
// those values without buffering or a pre-pass is impractical. Instead, we pre-gzip to a temp file
|
|
84
|
+
// to know ContentLength up-front and upload the gzipped bytes as-is, omitting Content-Encoding.
|
|
85
|
+
// Reference: AWS SigV4 streaming (chunked upload) requirements —
|
|
86
|
+
// https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html
|
|
87
|
+
if (shouldCompress) {
|
|
88
|
+
// Pre-gzip to a temp file so we know the exact length for R2/S3 headers
|
|
89
|
+
const tmpDir = await mkdtemp(join(tmpdir(), 's3-upload-'));
|
|
90
|
+
const gzPath = join(tmpDir, `${basename(srcPath)}.gz`);
|
|
91
|
+
const source = createReadStream(srcPath);
|
|
92
|
+
const gz = createGzip();
|
|
93
|
+
const out = createWriteStream(gzPath);
|
|
94
|
+
try {
|
|
95
|
+
await finished(source.pipe(gz).pipe(out));
|
|
96
|
+
const st = await stat(gzPath);
|
|
97
|
+
contentLength = st.size;
|
|
98
|
+
bodyPath = gzPath;
|
|
99
|
+
} catch (err) {
|
|
100
|
+
// Ensure temp file is removed on failure
|
|
101
|
+
await unlink(gzPath).catch(() => undefined);
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
const st = await stat(srcPath);
|
|
106
|
+
contentLength = st.size;
|
|
107
|
+
bodyPath = srcPath;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const bodyStream = createReadStream(bodyPath);
|
|
111
|
+
const contentType = this.detectContentType(key, shouldCompress);
|
|
112
|
+
try {
|
|
113
|
+
const put = new PutObjectCommand({
|
|
114
|
+
Bucket: this.bucketName,
|
|
115
|
+
Key: key,
|
|
116
|
+
Body: bodyStream as any,
|
|
117
|
+
ContentType: contentType,
|
|
118
|
+
CacheControl: opts.metadata?.['Cache-control'],
|
|
119
|
+
Metadata: this.extractUserMetadata(opts.metadata),
|
|
120
|
+
// Explicitly set ContentLength so R2 can compute x-amz-decoded-content-length correctly
|
|
121
|
+
ContentLength: contentLength,
|
|
122
|
+
} as any);
|
|
123
|
+
await this.s3.send(put);
|
|
124
|
+
} finally {
|
|
125
|
+
if (shouldCompress && bodyPath !== srcPath) {
|
|
126
|
+
await unlink(bodyPath).catch(() => undefined);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return this.buildReturnedUrl(key, !!opts.public);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public async read(pathOrUrlStr: string): Promise<Buffer> {
|
|
133
|
+
const { bucket, key } = this.getBucketAndKey(pathOrUrlStr);
|
|
134
|
+
const out: GetObjectCommandOutput = await this.s3.send(new GetObjectCommand({ Bucket: bucket, Key: key }));
|
|
135
|
+
const stream = out.Body as Readable;
|
|
136
|
+
const chunks: Buffer[] = [];
|
|
137
|
+
for await (const chunk of stream) {
|
|
138
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
139
|
+
}
|
|
140
|
+
return Buffer.concat(chunks);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
public async download(pathOrUrlStr: string, destPath: string): Promise<void> {
|
|
144
|
+
const { bucket, key } = this.getBucketAndKey(pathOrUrlStr);
|
|
145
|
+
const out: GetObjectCommandOutput = await this.s3.send(new GetObjectCommand({ Bucket: bucket, Key: key }));
|
|
146
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
147
|
+
const write = createWriteStream(destPath);
|
|
148
|
+
await finished((out.Body as Readable).pipe(write));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
public async exists(pathOrUrlStr: string): Promise<boolean> {
|
|
152
|
+
try {
|
|
153
|
+
const { bucket, key } = this.getBucketAndKey(pathOrUrlStr);
|
|
154
|
+
await this.s3.send(new HeadObjectCommand({ Bucket: bucket, Key: key }));
|
|
155
|
+
return true;
|
|
156
|
+
} catch (err: any) {
|
|
157
|
+
const code = err?.$metadata?.httpStatusCode ?? err?.name ?? err?.Code;
|
|
158
|
+
if (code === 404 || code === 'NotFound' || code === 'NoSuchKey') {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
this.log.warn(`Error checking existence for ${pathOrUrlStr}: ${err?.message ?? String(err)}`);
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
private extractUserMetadata(meta?: Record<string, string>): Record<string, string> | undefined {
|
|
167
|
+
if (!meta) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const { ['Cache-control']: _ignored, ...rest } = meta;
|
|
171
|
+
return Object.keys(rest).length ? rest : undefined;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
private detectContentType(key: string, isCompressed: boolean | undefined): string | undefined {
|
|
175
|
+
// Basic content type inference
|
|
176
|
+
const lower = key.toLowerCase();
|
|
177
|
+
if (lower.endsWith('.json') || lower.endsWith('.json.gz')) {
|
|
178
|
+
return 'application/json';
|
|
179
|
+
}
|
|
180
|
+
if (lower.endsWith('.txt') || lower.endsWith('.log') || lower.endsWith('.csv') || lower.endsWith('.md')) {
|
|
181
|
+
return 'text/plain; charset=utf-8';
|
|
182
|
+
}
|
|
183
|
+
if (lower.endsWith('.db') || lower.endsWith('.sqlite') || lower.endsWith('.bin')) {
|
|
184
|
+
return 'application/octet-stream';
|
|
185
|
+
}
|
|
186
|
+
if (lower.endsWith('.wasm') || lower.endsWith('.wasm.gz')) {
|
|
187
|
+
return 'application/wasm';
|
|
188
|
+
}
|
|
189
|
+
// If compressed, prefer octet-stream unless known
|
|
190
|
+
if (isCompressed) {
|
|
191
|
+
return 'application/octet-stream';
|
|
192
|
+
}
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
private buildReturnedUrl(key: string, makePublic: boolean): string {
|
|
197
|
+
if (!makePublic) {
|
|
198
|
+
return `s3://${this.bucketName}/${key}`;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (this.publicBaseUrl) {
|
|
202
|
+
const base = this.publicBaseUrl.replace(/\/$/, '');
|
|
203
|
+
// key already includes basePath via getFullPath, so do not prefix basePath again
|
|
204
|
+
const full = key.replace(/^\/+/, '');
|
|
205
|
+
return `${base}/${full}`;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Try to synthesize a URL from endpoint if available (works for public R2 buckets)
|
|
209
|
+
if (this.endpoint) {
|
|
210
|
+
try {
|
|
211
|
+
const url = new URL(this.endpoint);
|
|
212
|
+
return `https://${this.bucketName}.${url.host}/${key}`;
|
|
213
|
+
} catch {
|
|
214
|
+
// fallthrough
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Fallback to AWS style URL if region looks valid
|
|
219
|
+
return `https://${this.bucketName}.s3.${this.region}.amazonaws.com/${key}`;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private getBucketAndKey(pathOrUrlStr: string): { bucket: string; key: string } {
|
|
223
|
+
if (URL.canParse(pathOrUrlStr)) {
|
|
224
|
+
const url = new URL(pathOrUrlStr);
|
|
225
|
+
if (url.protocol === 's3:') {
|
|
226
|
+
return { bucket: url.host, key: url.pathname.replace(/^\/+/, '') };
|
|
227
|
+
}
|
|
228
|
+
// For https URLs, try to infer virtual-hosted or path-style
|
|
229
|
+
if (url.protocol === 'https:' || url.protocol === 'http:') {
|
|
230
|
+
// If the URL matches the configured publicBaseUrl host, map back to our bucket and key
|
|
231
|
+
if (this.publicBaseUrl && url.host === new URL(this.publicBaseUrl).host) {
|
|
232
|
+
return { bucket: this.bucketName, key: url.pathname.replace(/^\/+/, '') };
|
|
233
|
+
}
|
|
234
|
+
const hostParts = url.host.split('.');
|
|
235
|
+
if (hostParts.length > 3 && (hostParts[1] === 's3' || hostParts[hostParts.length - 2] === 'r2')) {
|
|
236
|
+
// virtual hosted
|
|
237
|
+
return { bucket: hostParts[0], key: url.pathname.replace(/^\/+/, '') };
|
|
238
|
+
} else if (this.endpoint && url.host === new URL(this.endpoint).host) {
|
|
239
|
+
// path-style at custom endpoint
|
|
240
|
+
const [bucket, ...rest] = url.pathname.replace(/^\/+/, '').split('/');
|
|
241
|
+
return { bucket, key: rest.join('/') };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Treat as path
|
|
246
|
+
return { bucket: this.bucketName, key: this.getFullPath(pathOrUrlStr) };
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private getFullPath(path: string): string {
|
|
250
|
+
const base = normalizeBasePath(this.basePath);
|
|
251
|
+
const rel = path.replace(/^\/+/, '');
|
|
252
|
+
return base ? join(base, rel) : rel;
|
|
253
|
+
}
|
|
254
|
+
}
|
package/src/hash/hash.ts
CHANGED
|
@@ -109,10 +109,6 @@ export function computeVarArgsHash(args: Fr[]): Promise<Fr> {
|
|
|
109
109
|
* @returns Hash of the calldata.
|
|
110
110
|
*/
|
|
111
111
|
export function computeCalldataHash(calldata: Fr[]): Promise<Fr> {
|
|
112
|
-
if (calldata.length === 0) {
|
|
113
|
-
return Promise.resolve(Fr.ZERO);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
112
|
return poseidon2HashWithSeparator(calldata, GeneratorIndex.PUBLIC_CALLDATA);
|
|
117
113
|
}
|
|
118
114
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import type { L1ContractAddresses } from '@aztec/ethereum';
|
|
1
2
|
import type { ApiSchemaFor } from '@aztec/foundation/schemas';
|
|
2
3
|
|
|
3
4
|
import { z } from 'zod';
|
|
4
5
|
|
|
5
6
|
import { L2Block } from '../block/l2_block.js';
|
|
6
|
-
import { type L2BlockSource, L2TipsSchema
|
|
7
|
+
import { type L2BlockSource, L2TipsSchema } from '../block/l2_block_source.js';
|
|
7
8
|
import { PublishedL2Block } from '../block/published_l2_block.js';
|
|
9
|
+
import { ValidateBlockResultSchema } from '../block/validate_block_result.js';
|
|
8
10
|
import {
|
|
9
11
|
ContractClassPublicSchema,
|
|
10
12
|
type ContractDataSource,
|
|
@@ -23,6 +25,41 @@ import { TxReceipt } from '../tx/tx_receipt.js';
|
|
|
23
25
|
import { GetContractClassLogsResponseSchema, GetPublicLogsResponseSchema } from './get_logs_response.js';
|
|
24
26
|
import type { L2LogsSource } from './l2_logs_source.js';
|
|
25
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The archiver configuration.
|
|
30
|
+
*/
|
|
31
|
+
export type ArchiverSpecificConfig = {
|
|
32
|
+
/** The polling interval in ms for retrieving new L2 blocks and encrypted logs. */
|
|
33
|
+
archiverPollingIntervalMS?: number;
|
|
34
|
+
|
|
35
|
+
/** The number of L2 blocks the archiver will attempt to download at a time. */
|
|
36
|
+
archiverBatchSize?: number;
|
|
37
|
+
|
|
38
|
+
/** The polling interval viem uses in ms */
|
|
39
|
+
viemPollingIntervalMS?: number;
|
|
40
|
+
|
|
41
|
+
/** The deployed L1 contract addresses */
|
|
42
|
+
l1Contracts: L1ContractAddresses;
|
|
43
|
+
|
|
44
|
+
/** The max number of logs that can be obtained in 1 "getPublicLogs" call. */
|
|
45
|
+
maxLogs?: number;
|
|
46
|
+
|
|
47
|
+
/** The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb. */
|
|
48
|
+
archiverStoreMapSizeKb?: number;
|
|
49
|
+
|
|
50
|
+
/** Whether to skip validating block attestations (use only for testing). */
|
|
51
|
+
skipValidateBlockAttestations?: boolean;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const ArchiverSpecificConfigSchema = z.object({
|
|
55
|
+
archiverPollingIntervalMS: schemas.Integer.optional(),
|
|
56
|
+
archiverBatchSize: schemas.Integer.optional(),
|
|
57
|
+
viemPollingIntervalMS: schemas.Integer.optional(),
|
|
58
|
+
maxLogs: schemas.Integer.optional(),
|
|
59
|
+
archiverStoreMapSizeKb: schemas.Integer.optional(),
|
|
60
|
+
skipValidateBlockAttestations: z.boolean().optional(),
|
|
61
|
+
});
|
|
62
|
+
|
|
26
63
|
export type ArchiverApi = Omit<
|
|
27
64
|
L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource,
|
|
28
65
|
'start' | 'stop'
|
|
@@ -46,10 +83,14 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
|
|
|
46
83
|
.function()
|
|
47
84
|
.args(schemas.Integer, schemas.Integer, optional(z.boolean()))
|
|
48
85
|
.returns(z.array(PublishedL2Block.schema)),
|
|
86
|
+
getPublishedBlockByHash: z.function().args(schemas.Fr).returns(PublishedL2Block.schema.optional()),
|
|
87
|
+
getPublishedBlockByArchive: z.function().args(schemas.Fr).returns(PublishedL2Block.schema.optional()),
|
|
88
|
+
getBlockHeaderByHash: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
|
|
89
|
+
getBlockHeaderByArchive: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
|
|
49
90
|
getTxEffect: z.function().args(TxHash.schema).returns(indexedTxSchema().optional()),
|
|
50
91
|
getSettledTxReceipt: z.function().args(TxHash.schema).returns(TxReceipt.schema.optional()),
|
|
51
|
-
getL2SlotNumber: z.function().args().returns(schemas.BigInt),
|
|
52
|
-
getL2EpochNumber: z.function().args().returns(schemas.BigInt),
|
|
92
|
+
getL2SlotNumber: z.function().args().returns(schemas.BigInt.optional()),
|
|
93
|
+
getL2EpochNumber: z.function().args().returns(schemas.BigInt.optional()),
|
|
53
94
|
getBlocksForEpoch: z.function().args(schemas.BigInt).returns(z.array(L2Block.schema)),
|
|
54
95
|
getBlockHeadersForEpoch: z.function().args(schemas.BigInt).returns(z.array(BlockHeader.schema)),
|
|
55
96
|
isEpochComplete: z.function().args(schemas.BigInt).returns(z.boolean()),
|
|
@@ -73,7 +114,11 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
|
|
|
73
114
|
getL1ToL2MessageIndex: z.function().args(schemas.Fr).returns(schemas.BigInt.optional()),
|
|
74
115
|
getDebugFunctionName: z.function().args(schemas.AztecAddress, schemas.FunctionSelector).returns(optional(z.string())),
|
|
75
116
|
getL1Constants: z.function().args().returns(L1RollupConstantsSchema),
|
|
76
|
-
|
|
117
|
+
getGenesisValues: z
|
|
118
|
+
.function()
|
|
119
|
+
.args()
|
|
120
|
+
.returns(z.object({ genesisArchiveRoot: schemas.Fr })),
|
|
121
|
+
getL1Timestamp: z.function().args().returns(schemas.BigInt.optional()),
|
|
77
122
|
syncImmediate: z.function().args().returns(z.void()),
|
|
78
123
|
isPendingChainInvalid: z.function().args().returns(z.boolean()),
|
|
79
124
|
getPendingChainValidationStatus: z.function().args().returns(ValidateBlockResultSchema),
|
|
@@ -5,9 +5,11 @@ import { z } from 'zod';
|
|
|
5
5
|
import type { ApiSchemaFor } from '../schemas/schemas.js';
|
|
6
6
|
import { type Offense, OffenseSchema, type SlashPayloadRound, SlashPayloadRoundSchema } from '../slashing/index.js';
|
|
7
7
|
import { type ComponentsVersions, getVersioningResponseHandler } from '../versioning/index.js';
|
|
8
|
+
import { type ArchiverSpecificConfig, ArchiverSpecificConfigSchema } from './archiver.js';
|
|
8
9
|
import { type SequencerConfig, SequencerConfigSchema } from './configs.js';
|
|
9
10
|
import { type ProverConfig, ProverConfigSchema } from './prover-client.js';
|
|
10
11
|
import { type SlasherConfig, SlasherConfigSchema } from './slasher.js';
|
|
12
|
+
import { type ValidatorClientFullConfig, ValidatorClientFullConfigSchema } from './validator.js';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Aztec node admin API.
|
|
@@ -50,10 +52,24 @@ export interface AztecNodeAdmin {
|
|
|
50
52
|
getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
export type AztecNodeAdminConfig =
|
|
55
|
+
export type AztecNodeAdminConfig = ValidatorClientFullConfig &
|
|
56
|
+
SequencerConfig &
|
|
57
|
+
ProverConfig &
|
|
58
|
+
SlasherConfig &
|
|
59
|
+
Pick<ArchiverSpecificConfig, 'archiverPollingIntervalMS' | 'skipValidateBlockAttestations' | 'archiverBatchSize'> & {
|
|
60
|
+
maxTxPoolSize: number;
|
|
61
|
+
};
|
|
54
62
|
|
|
55
63
|
export const AztecNodeAdminConfigSchema = SequencerConfigSchema.merge(ProverConfigSchema)
|
|
56
64
|
.merge(SlasherConfigSchema)
|
|
65
|
+
.merge(ValidatorClientFullConfigSchema)
|
|
66
|
+
.merge(
|
|
67
|
+
ArchiverSpecificConfigSchema.pick({
|
|
68
|
+
archiverPollingIntervalMS: true,
|
|
69
|
+
skipValidateBlockAttestations: true,
|
|
70
|
+
archiverBatchSize: true,
|
|
71
|
+
}),
|
|
72
|
+
)
|
|
57
73
|
.merge(z.object({ maxTxPoolSize: z.number() }));
|
|
58
74
|
|
|
59
75
|
export const AztecNodeAdminApiSchema: ApiSchemaFor<AztecNodeAdmin> = {
|
|
@@ -52,6 +52,7 @@ import {
|
|
|
52
52
|
import { SingleValidatorStatsSchema, ValidatorsStatsSchema } from '../validators/schemas.js';
|
|
53
53
|
import type { SingleValidatorStats, ValidatorsStats } from '../validators/types.js';
|
|
54
54
|
import { type ComponentsVersions, getVersioningResponseHandler } from '../versioning/index.js';
|
|
55
|
+
import { type AllowedElement, AllowedElementSchema } from './allowed_element.js';
|
|
55
56
|
import { MAX_RPC_BLOCKS_LEN, MAX_RPC_LEN, MAX_RPC_TXS_LEN } from './api_limit.js';
|
|
56
57
|
import {
|
|
57
58
|
type GetContractClassLogsResponse,
|
|
@@ -199,10 +200,14 @@ export interface AztecNode
|
|
|
199
200
|
l1ToL2Message: Fr,
|
|
200
201
|
): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] | undefined>;
|
|
201
202
|
|
|
203
|
+
/** Returns the L2 block number in which this L1 to L2 message becomes available, or undefined if not found. */
|
|
204
|
+
getL1ToL2MessageBlock(l1ToL2Message: Fr): Promise<number | undefined>;
|
|
205
|
+
|
|
202
206
|
/**
|
|
203
|
-
* Returns whether an L1 to L2 message is synced by archiver
|
|
207
|
+
* Returns whether an L1 to L2 message is synced by archiver.
|
|
204
208
|
* @param l1ToL2Message - The L1 to L2 message to check.
|
|
205
|
-
* @returns Whether the message is synced
|
|
209
|
+
* @returns Whether the message is synced.
|
|
210
|
+
* @deprecated Use `getL1ToL2MessageBlock` instead. This method may return true even if the message is not ready to use.
|
|
206
211
|
*/
|
|
207
212
|
isL1ToL2MessageSynced(l1ToL2Message: Fr): Promise<boolean>;
|
|
208
213
|
|
|
@@ -220,6 +225,20 @@ export interface AztecNode
|
|
|
220
225
|
*/
|
|
221
226
|
getBlock(number: L2BlockNumber): Promise<L2Block | undefined>;
|
|
222
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Get a block specified by its hash.
|
|
230
|
+
* @param blockHash - The block hash being requested.
|
|
231
|
+
* @returns The requested block.
|
|
232
|
+
*/
|
|
233
|
+
getBlockByHash(blockHash: Fr): Promise<L2Block | undefined>;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Get a block specified by its archive root.
|
|
237
|
+
* @param archive - The archive root being requested.
|
|
238
|
+
* @returns The requested block.
|
|
239
|
+
*/
|
|
240
|
+
getBlockByArchive(archive: Fr): Promise<L2Block | undefined>;
|
|
241
|
+
|
|
223
242
|
/**
|
|
224
243
|
* Method to fetch the latest block number synchronized by the node.
|
|
225
244
|
* @returns The block number.
|
|
@@ -395,6 +414,20 @@ export interface AztecNode
|
|
|
395
414
|
*/
|
|
396
415
|
getBlockHeader(blockNumber?: L2BlockNumber): Promise<BlockHeader | undefined>;
|
|
397
416
|
|
|
417
|
+
/**
|
|
418
|
+
* Get a block header specified by its hash.
|
|
419
|
+
* @param blockHash - The block hash being requested.
|
|
420
|
+
* @returns The requested block header.
|
|
421
|
+
*/
|
|
422
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Get a block header specified by its archive root.
|
|
426
|
+
* @param archive - The archive root being requested.
|
|
427
|
+
* @returns The requested block header.
|
|
428
|
+
*/
|
|
429
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
430
|
+
|
|
398
431
|
/** Returns stats for validators if enabled. */
|
|
399
432
|
getValidatorsStats(): Promise<ValidatorsStats>;
|
|
400
433
|
|
|
@@ -438,6 +471,12 @@ export interface AztecNode
|
|
|
438
471
|
* Returns the ENR of this node for peer discovery, if available.
|
|
439
472
|
*/
|
|
440
473
|
getEncodedEnr(): Promise<string | undefined>;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Returns the list of allowed public setup elements configured for this node.
|
|
477
|
+
* @returns The list of allowed elements.
|
|
478
|
+
*/
|
|
479
|
+
getAllowedPublicSetup(): Promise<AllowedElement[]>;
|
|
441
480
|
}
|
|
442
481
|
|
|
443
482
|
export const MAX_LOGS_PER_TAG = 10;
|
|
@@ -501,6 +540,8 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
|
|
|
501
540
|
.args(L2BlockNumberSchema, schemas.Fr)
|
|
502
541
|
.returns(z.tuple([schemas.BigInt, SiblingPath.schemaFor(L1_TO_L2_MSG_TREE_HEIGHT)]).optional()),
|
|
503
542
|
|
|
543
|
+
getL1ToL2MessageBlock: z.function().args(schemas.Fr).returns(z.number().optional()),
|
|
544
|
+
|
|
504
545
|
isL1ToL2MessageSynced: z.function().args(schemas.Fr).returns(z.boolean()),
|
|
505
546
|
|
|
506
547
|
getL2ToL1Messages: z
|
|
@@ -510,6 +551,10 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
|
|
|
510
551
|
|
|
511
552
|
getBlock: z.function().args(L2BlockNumberSchema).returns(L2Block.schema.optional()),
|
|
512
553
|
|
|
554
|
+
getBlockByHash: z.function().args(schemas.Fr).returns(L2Block.schema.optional()),
|
|
555
|
+
|
|
556
|
+
getBlockByArchive: z.function().args(schemas.Fr).returns(L2Block.schema.optional()),
|
|
557
|
+
|
|
513
558
|
getBlockNumber: z.function().returns(z.number()),
|
|
514
559
|
|
|
515
560
|
getProvenBlockNumber: z.function().returns(z.number()),
|
|
@@ -583,6 +628,10 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
|
|
|
583
628
|
|
|
584
629
|
getBlockHeader: z.function().args(optional(L2BlockNumberSchema)).returns(BlockHeader.schema.optional()),
|
|
585
630
|
|
|
631
|
+
getBlockHeaderByHash: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
|
|
632
|
+
|
|
633
|
+
getBlockHeaderByArchive: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
|
|
634
|
+
|
|
586
635
|
getValidatorsStats: z.function().returns(ValidatorsStatsSchema),
|
|
587
636
|
|
|
588
637
|
getValidatorStats: z
|
|
@@ -605,6 +654,8 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
|
|
|
605
654
|
getContract: z.function().args(schemas.AztecAddress).returns(ContractInstanceWithAddressSchema.optional()),
|
|
606
655
|
|
|
607
656
|
getEncodedEnr: z.function().returns(z.string().optional()),
|
|
657
|
+
|
|
658
|
+
getAllowedPublicSetup: z.function().args().returns(z.array(AllowedElementSchema)),
|
|
608
659
|
};
|
|
609
660
|
|
|
610
661
|
export function createAztecNodeClient(
|