@aztec/stdlib 3.0.0-canary.a9708bd → 3.0.0-devnet.3
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 +30 -428
- 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 +17 -1
- 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 +26 -9
- 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_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 +1 -1
- 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 +1 -21
- 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 +64 -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/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 +2 -4
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +5 -14
- 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/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/client_ivc_proof.d.ts +17 -7
- package/dest/proofs/client_ivc_proof.d.ts.map +1 -1
- package/dest/proofs/client_ivc_proof.js +78 -19
- package/dest/proofs/index.d.ts +1 -0
- package/dest/proofs/index.d.ts.map +1 -1
- package/dest/proofs/index.js +1 -0
- 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_tube_private_inputs.d.ts +21 -0
- package/dest/rollup/public_tube_private_inputs.d.ts.map +1 -0
- package/dest/rollup/public_tube_private_inputs.js +42 -0
- package/dest/rollup/public_tube_public_inputs.d.ts +20 -0
- package/dest/rollup/public_tube_public_inputs.d.ts.map +1 -0
- package/dest/rollup/public_tube_public_inputs.js +41 -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 +1 -1
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +42 -74
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +144 -167
- package/dest/tests/mocks.d.ts +14 -8
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +53 -31
- 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 +0 -1
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +1 -6
- 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/simulated_tx.d.ts +3 -3
- 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 +6 -9
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +10 -11
- 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 +33 -51
- 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 +46 -1
- 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 +35 -11
- 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 +215 -134
- package/src/interfaces/server.ts +1 -0
- package/src/interfaces/server_circuit_prover.ts +87 -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_init_circuit_private_inputs.ts +5 -4
- package/src/kernel/private_kernel_prover_output.ts +1 -1
- 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 +1 -26
- 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 +78 -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/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 +6 -16
- package/src/p2p/signature_utils.ts +1 -0
- 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/client_ivc_proof.ts +86 -20
- package/src/proofs/index.ts +1 -0
- 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_tube_private_inputs.ts +53 -0
- package/src/rollup/public_tube_public_inputs.ts +52 -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 +19 -13
- package/src/tests/factories.ts +217 -275
- package/src/tests/mocks.ts +87 -57
- 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 +1 -7
- package/src/tx/profiling.ts +0 -2
- package/src/tx/protocol_contracts.ts +70 -0
- package/src/tx/state_reference.ts +5 -1
- package/src/tx/tx.ts +12 -13
- 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/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/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
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import
|
|
2
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
4
4
|
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
|
|
7
7
|
import type { L1RollupConstants } from '../epoch-helpers/index.js';
|
|
8
|
-
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
9
8
|
import type { BlockHeader } from '../tx/block_header.js';
|
|
10
9
|
import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
|
|
11
10
|
import type { TxHash } from '../tx/tx_hash.js';
|
|
12
11
|
import type { TxReceipt } from '../tx/tx_receipt.js';
|
|
13
12
|
import type { L2Block } from './l2_block.js';
|
|
14
13
|
import { PublishedL2Block } from './published_l2_block.js';
|
|
14
|
+
import type { ValidateBlockNegativeResult, ValidateBlockResult } from './validate_block_result.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Interface of classes allowing for the retrieval of L2 blocks.
|
|
@@ -67,6 +67,34 @@ export interface L2BlockSource {
|
|
|
67
67
|
/** Equivalent to getBlocks but includes publish data. */
|
|
68
68
|
getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
69
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Gets a published block by its hash.
|
|
72
|
+
* @param blockHash - The block hash to retrieve.
|
|
73
|
+
* @returns The requested published block (or undefined if not found).
|
|
74
|
+
*/
|
|
75
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Gets a published block by its archive root.
|
|
79
|
+
* @param archive - The archive root to retrieve.
|
|
80
|
+
* @returns The requested published block (or undefined if not found).
|
|
81
|
+
*/
|
|
82
|
+
getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Gets a block header by its hash.
|
|
86
|
+
* @param blockHash - The block hash to retrieve.
|
|
87
|
+
* @returns The requested block header (or undefined if not found).
|
|
88
|
+
*/
|
|
89
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Gets a block header by its archive root.
|
|
93
|
+
* @param archive - The archive root to retrieve.
|
|
94
|
+
* @returns The requested block header (or undefined if not found).
|
|
95
|
+
*/
|
|
96
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
97
|
+
|
|
70
98
|
/**
|
|
71
99
|
* Gets a tx effect.
|
|
72
100
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -121,6 +149,9 @@ export interface L2BlockSource {
|
|
|
121
149
|
*/
|
|
122
150
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
123
151
|
|
|
152
|
+
/** Returns values for the genesis block */
|
|
153
|
+
getGenesisValues(): Promise<{ genesisArchiveRoot: Fr }>;
|
|
154
|
+
|
|
124
155
|
/** Latest synced L1 timestamp. */
|
|
125
156
|
getL1Timestamp(): Promise<bigint>;
|
|
126
157
|
|
|
@@ -140,59 +171,10 @@ export interface L2BlockSource {
|
|
|
140
171
|
syncImmediate(): Promise<void>;
|
|
141
172
|
}
|
|
142
173
|
|
|
143
|
-
/** Subtype for invalid block validation results */
|
|
144
|
-
export type ValidateBlockNegativeResult =
|
|
145
|
-
| {
|
|
146
|
-
valid: false;
|
|
147
|
-
block: PublishedL2Block;
|
|
148
|
-
committee: EthAddress[];
|
|
149
|
-
epoch: bigint;
|
|
150
|
-
seed: bigint;
|
|
151
|
-
attestations: BlockAttestation[];
|
|
152
|
-
reason: 'insufficient-attestations';
|
|
153
|
-
}
|
|
154
|
-
| {
|
|
155
|
-
valid: false;
|
|
156
|
-
block: PublishedL2Block;
|
|
157
|
-
committee: EthAddress[];
|
|
158
|
-
epoch: bigint;
|
|
159
|
-
seed: bigint;
|
|
160
|
-
reason: 'invalid-attestation';
|
|
161
|
-
attestations: BlockAttestation[];
|
|
162
|
-
invalidIndex: number;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
/** Result type for validating a block attestations */
|
|
166
|
-
export type ValidateBlockResult = { valid: true } | ValidateBlockNegativeResult;
|
|
167
|
-
|
|
168
|
-
export const ValidateBlockResultSchema = z.union([
|
|
169
|
-
z.object({ valid: z.literal(true), block: PublishedL2Block.schema.optional() }),
|
|
170
|
-
z.object({
|
|
171
|
-
valid: z.literal(false),
|
|
172
|
-
block: PublishedL2Block.schema,
|
|
173
|
-
committee: z.array(schemas.EthAddress),
|
|
174
|
-
epoch: schemas.BigInt,
|
|
175
|
-
seed: schemas.BigInt,
|
|
176
|
-
attestations: z.array(BlockAttestation.schema),
|
|
177
|
-
reason: z.literal('insufficient-attestations'),
|
|
178
|
-
}),
|
|
179
|
-
z.object({
|
|
180
|
-
valid: z.literal(false),
|
|
181
|
-
block: PublishedL2Block.schema,
|
|
182
|
-
committee: z.array(schemas.EthAddress),
|
|
183
|
-
epoch: schemas.BigInt,
|
|
184
|
-
seed: schemas.BigInt,
|
|
185
|
-
attestations: z.array(BlockAttestation.schema),
|
|
186
|
-
reason: z.literal('invalid-attestation'),
|
|
187
|
-
invalidIndex: z.number(),
|
|
188
|
-
}),
|
|
189
|
-
]) satisfies ZodFor<ValidateBlockResult>;
|
|
190
|
-
|
|
191
174
|
/**
|
|
192
175
|
* L2BlockSource that emits events upon pending / proven chain changes.
|
|
193
176
|
* see L2BlockSourceEvents for the events emitted.
|
|
194
177
|
*/
|
|
195
|
-
|
|
196
178
|
export type ArchiverEmitter = TypedEventEmitter<{
|
|
197
179
|
[L2BlockSourceEvents.L2PruneDetected]: (args: L2BlockPruneEvent) => void;
|
|
198
180
|
[L2BlockSourceEvents.L2BlockProven]: (args: L2BlockProvenEvent) => void;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { ViemCommitteeAttestations } from '@aztec/ethereum';
|
|
2
|
+
import { hexToBuffer } from '@aztec/foundation/string';
|
|
3
|
+
|
|
4
|
+
import { encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
|
|
7
|
+
import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
|
|
8
|
+
import { CommitteeAttestation } from './committee_attestation.js';
|
|
9
|
+
|
|
10
|
+
export class CommitteeAttestationsAndSigners implements Signable {
|
|
11
|
+
constructor(public attestations: CommitteeAttestation[]) {}
|
|
12
|
+
|
|
13
|
+
static get schema() {
|
|
14
|
+
return z
|
|
15
|
+
.object({
|
|
16
|
+
attestations: CommitteeAttestation.schema.array(),
|
|
17
|
+
})
|
|
18
|
+
.transform(obj => new CommitteeAttestationsAndSigners(obj.attestations));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
|
|
22
|
+
const abi = parseAbiParameters('uint8,(bytes,bytes),address[]');
|
|
23
|
+
const packed = this.getPackedAttestations();
|
|
24
|
+
|
|
25
|
+
const encodedData = encodeAbiParameters(abi, [
|
|
26
|
+
domainSeparator,
|
|
27
|
+
[packed.signatureIndices, packed.signaturesOrAddresses],
|
|
28
|
+
this.getSigners().map(s => s.toString()),
|
|
29
|
+
]);
|
|
30
|
+
|
|
31
|
+
return hexToBuffer(encodedData);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static empty(): CommitteeAttestationsAndSigners {
|
|
35
|
+
return new CommitteeAttestationsAndSigners([]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
toString() {
|
|
39
|
+
throw new Error('Not implemented');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
getSigners() {
|
|
43
|
+
return this.attestations.filter(a => !a.signature.isEmpty()).map(a => a.address);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
getSignedAttestations() {
|
|
47
|
+
return this.attestations.filter(a => !a.signature.isEmpty());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Packs an array of committee attestations into the format expected by the Solidity contract
|
|
52
|
+
*
|
|
53
|
+
* @param attestations - Array of committee attestations with addresses and signatures
|
|
54
|
+
* @returns Packed attestations with bitmap and tightly packed signature/address data
|
|
55
|
+
*/
|
|
56
|
+
getPackedAttestations(): ViemCommitteeAttestations {
|
|
57
|
+
const length = this.attestations.length;
|
|
58
|
+
const attestations = this.attestations.map(a => a.toViem());
|
|
59
|
+
|
|
60
|
+
// Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
|
|
61
|
+
const bitmapSize = Math.ceil(length / 8);
|
|
62
|
+
const signatureIndices = new Uint8Array(bitmapSize);
|
|
63
|
+
|
|
64
|
+
// Calculate total data size needed
|
|
65
|
+
let totalDataSize = 0;
|
|
66
|
+
for (let i = 0; i < length; i++) {
|
|
67
|
+
const signature = attestations[i].signature;
|
|
68
|
+
// Check if signature is empty (v = 0)
|
|
69
|
+
const isEmpty = signature.v === 0;
|
|
70
|
+
|
|
71
|
+
if (!isEmpty) {
|
|
72
|
+
totalDataSize += 65; // v (1) + r (32) + s (32)
|
|
73
|
+
} else {
|
|
74
|
+
totalDataSize += 20; // address only
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const signaturesOrAddresses = new Uint8Array(totalDataSize);
|
|
79
|
+
let dataIndex = 0;
|
|
80
|
+
|
|
81
|
+
// Pack the data
|
|
82
|
+
for (let i = 0; i < length; i++) {
|
|
83
|
+
const attestation = attestations[i];
|
|
84
|
+
const signature = attestation.signature;
|
|
85
|
+
|
|
86
|
+
// Check if signature is empty
|
|
87
|
+
const isEmpty = signature.v === 0;
|
|
88
|
+
|
|
89
|
+
if (!isEmpty) {
|
|
90
|
+
// Set bit in bitmap (bit 7-0 in each byte, left to right)
|
|
91
|
+
const byteIndex = Math.floor(i / 8);
|
|
92
|
+
const bitIndex = 7 - (i % 8);
|
|
93
|
+
signatureIndices[byteIndex] |= 1 << bitIndex;
|
|
94
|
+
|
|
95
|
+
// Pack signature: v + r + s
|
|
96
|
+
signaturesOrAddresses[dataIndex] = signature.v;
|
|
97
|
+
dataIndex++;
|
|
98
|
+
|
|
99
|
+
// Pack r (32 bytes)
|
|
100
|
+
const rBytes = Buffer.from(signature.r.slice(2), 'hex');
|
|
101
|
+
signaturesOrAddresses.set(rBytes, dataIndex);
|
|
102
|
+
dataIndex += 32;
|
|
103
|
+
|
|
104
|
+
// Pack s (32 bytes)
|
|
105
|
+
const sBytes = Buffer.from(signature.s.slice(2), 'hex');
|
|
106
|
+
signaturesOrAddresses.set(sBytes, dataIndex);
|
|
107
|
+
dataIndex += 32;
|
|
108
|
+
} else {
|
|
109
|
+
// Pack address only (20 bytes)
|
|
110
|
+
const addrBytes = Buffer.from(attestation.addr.slice(2), 'hex');
|
|
111
|
+
signaturesOrAddresses.set(addrBytes, dataIndex);
|
|
112
|
+
dataIndex += 20;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
signatureIndices: `0x${Buffer.from(signatureIndices).toString('hex')}`,
|
|
118
|
+
signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
3
3
|
import { randomBigInt } from '@aztec/foundation/crypto';
|
|
4
4
|
import { schemas } from '@aztec/foundation/schemas';
|
|
5
|
+
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
6
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
5
7
|
|
|
6
8
|
import { z } from 'zod';
|
|
7
9
|
|
|
8
|
-
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
9
|
-
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
10
10
|
import { L2Block } from './l2_block.js';
|
|
11
11
|
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
12
12
|
|
|
@@ -32,6 +32,10 @@ export class L1PublishedData {
|
|
|
32
32
|
Buffer32.random().toString(),
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
static fromFields(fields: FieldsOf<L1PublishedData>) {
|
|
37
|
+
return new L1PublishedData(fields.blockNumber, fields.timestamp, fields.blockHash);
|
|
38
|
+
}
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
export class PublishedL2Block {
|
|
@@ -42,19 +46,37 @@ export class PublishedL2Block {
|
|
|
42
46
|
) {}
|
|
43
47
|
|
|
44
48
|
static get schema() {
|
|
45
|
-
return z
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
return z
|
|
50
|
+
.object({
|
|
51
|
+
block: L2Block.schema,
|
|
52
|
+
l1: L1PublishedData.schema,
|
|
53
|
+
attestations: z.array(CommitteeAttestation.schema),
|
|
54
|
+
})
|
|
55
|
+
.transform(obj => PublishedL2Block.fromFields(obj));
|
|
50
56
|
}
|
|
51
|
-
}
|
|
52
57
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
static fromBuffer(bufferOrReader: Buffer | BufferReader): PublishedL2Block {
|
|
59
|
+
const reader = BufferReader.asReader(bufferOrReader);
|
|
60
|
+
const block = reader.readObject(L2Block);
|
|
61
|
+
const l1BlockNumber = reader.readBigInt();
|
|
62
|
+
const l1BlockHash = reader.readString();
|
|
63
|
+
const l1Timestamp = reader.readBigInt();
|
|
64
|
+
const attestations = reader.readVector(CommitteeAttestation);
|
|
65
|
+
return new PublishedL2Block(block, new L1PublishedData(l1BlockNumber, l1Timestamp, l1BlockHash), attestations);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static fromFields(fields: FieldsOf<PublishedL2Block>) {
|
|
69
|
+
return new PublishedL2Block(fields.block, fields.l1, fields.attestations);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public toBuffer(): Buffer {
|
|
73
|
+
return serializeToBuffer(
|
|
74
|
+
this.block,
|
|
75
|
+
this.l1.blockNumber,
|
|
76
|
+
this.l1.blockHash,
|
|
77
|
+
this.l1.timestamp,
|
|
78
|
+
this.attestations.length,
|
|
79
|
+
this.attestations,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
60
82
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { times } from '@aztec/foundation/collection';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
-
import type
|
|
4
|
-
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
3
|
+
import { type L2Block, type L2BlockId, PublishedL2Block } from '@aztec/stdlib/block';
|
|
5
4
|
|
|
6
5
|
import { jestExpect as expect } from '@jest/expect';
|
|
7
6
|
|
|
@@ -14,11 +13,12 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
|
|
|
14
13
|
tipsStore = await makeTipsStore();
|
|
15
14
|
});
|
|
16
15
|
|
|
17
|
-
const makeBlock = (number: number): PublishedL2Block =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
const makeBlock = (number: number): PublishedL2Block =>
|
|
17
|
+
PublishedL2Block.fromFields({
|
|
18
|
+
block: { number, hash: () => Promise.resolve(new Fr(number)) } as L2Block,
|
|
19
|
+
l1: { blockNumber: BigInt(number), blockHash: `0x${number}`, timestamp: BigInt(number) },
|
|
20
|
+
attestations: [],
|
|
21
|
+
});
|
|
22
22
|
|
|
23
23
|
const makeBlockId = (number: number): L2BlockId => ({
|
|
24
24
|
number,
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type ZodFor, schemas } from '@aztec/foundation/schemas';
|
|
3
|
+
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
|
+
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
|
|
7
|
+
import { BlockInfoSchema, type L2BlockInfo, deserializeBlockInfo, serializeBlockInfo } from './l2_block_info.js';
|
|
8
|
+
import { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
9
|
+
|
|
10
|
+
/** Subtype for invalid block validation results */
|
|
11
|
+
export type ValidateBlockNegativeResult =
|
|
12
|
+
| {
|
|
13
|
+
valid: false;
|
|
14
|
+
/** Identifiers from the invalid block */
|
|
15
|
+
block: L2BlockInfo;
|
|
16
|
+
/** Committee members at the epoch this block was proposed */
|
|
17
|
+
committee: EthAddress[];
|
|
18
|
+
/** Epoch in which this block was proposed */
|
|
19
|
+
epoch: bigint;
|
|
20
|
+
/** Proposer selection seed for the epoch */
|
|
21
|
+
seed: bigint;
|
|
22
|
+
/** List of committee members who signed this block proposal */
|
|
23
|
+
attestors: EthAddress[];
|
|
24
|
+
/** Committee attestations for this block as they were posted to L1 */
|
|
25
|
+
attestations: CommitteeAttestation[];
|
|
26
|
+
/** Reason for the block being invalid: not enough attestations were posted */
|
|
27
|
+
reason: 'insufficient-attestations';
|
|
28
|
+
}
|
|
29
|
+
| {
|
|
30
|
+
valid: false;
|
|
31
|
+
/** Identifiers from the invalid block */
|
|
32
|
+
block: L2BlockInfo;
|
|
33
|
+
/** Committee members at the epoch this block was proposed */
|
|
34
|
+
committee: EthAddress[];
|
|
35
|
+
/** Epoch in which this block was proposed */
|
|
36
|
+
epoch: bigint;
|
|
37
|
+
/** Proposer selection seed for the epoch */
|
|
38
|
+
seed: bigint;
|
|
39
|
+
/** List of committee members who signed this block proposal */
|
|
40
|
+
attestors: EthAddress[];
|
|
41
|
+
/** Committee attestations for this block as they were posted to L1 */
|
|
42
|
+
attestations: CommitteeAttestation[];
|
|
43
|
+
/** Reason for the block being invalid: an invalid attestation was posted */
|
|
44
|
+
reason: 'invalid-attestation';
|
|
45
|
+
/** Index in the attestations array of the invalid attestation posted */
|
|
46
|
+
invalidIndex: number;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/** Result type for validating a block attestations */
|
|
50
|
+
export type ValidateBlockResult = { valid: true } | ValidateBlockNegativeResult;
|
|
51
|
+
|
|
52
|
+
export const ValidateBlockResultSchema = z.union([
|
|
53
|
+
z.object({ valid: z.literal(true) }),
|
|
54
|
+
z.object({
|
|
55
|
+
valid: z.literal(false),
|
|
56
|
+
block: BlockInfoSchema,
|
|
57
|
+
committee: z.array(schemas.EthAddress),
|
|
58
|
+
epoch: schemas.BigInt,
|
|
59
|
+
seed: schemas.BigInt,
|
|
60
|
+
attestors: z.array(schemas.EthAddress),
|
|
61
|
+
attestations: z.array(CommitteeAttestation.schema),
|
|
62
|
+
reason: z.literal('insufficient-attestations'),
|
|
63
|
+
}),
|
|
64
|
+
z.object({
|
|
65
|
+
valid: z.literal(false),
|
|
66
|
+
block: BlockInfoSchema,
|
|
67
|
+
committee: z.array(schemas.EthAddress),
|
|
68
|
+
epoch: schemas.BigInt,
|
|
69
|
+
seed: schemas.BigInt,
|
|
70
|
+
attestors: z.array(schemas.EthAddress),
|
|
71
|
+
attestations: z.array(CommitteeAttestation.schema),
|
|
72
|
+
reason: z.literal('invalid-attestation'),
|
|
73
|
+
invalidIndex: z.number(),
|
|
74
|
+
}),
|
|
75
|
+
]) satisfies ZodFor<ValidateBlockResult>;
|
|
76
|
+
|
|
77
|
+
export function serializeValidateBlockResult(result: ValidateBlockResult): Buffer {
|
|
78
|
+
if (result.valid) {
|
|
79
|
+
return serializeToBuffer(true);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const l2Block = serializeBlockInfo(result.block);
|
|
83
|
+
return serializeToBuffer(
|
|
84
|
+
result.valid,
|
|
85
|
+
result.reason,
|
|
86
|
+
l2Block.length,
|
|
87
|
+
l2Block,
|
|
88
|
+
result.committee.length,
|
|
89
|
+
result.committee,
|
|
90
|
+
result.epoch,
|
|
91
|
+
result.seed ?? 0n,
|
|
92
|
+
result.attestors.length,
|
|
93
|
+
result.attestors,
|
|
94
|
+
result.attestations.length,
|
|
95
|
+
result.attestations,
|
|
96
|
+
result.reason === 'invalid-attestation' ? result.invalidIndex : 0,
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function deserializeValidateBlockResult(bufferOrReader: Buffer | BufferReader): ValidateBlockResult {
|
|
101
|
+
const reader = BufferReader.asReader(bufferOrReader);
|
|
102
|
+
const valid = reader.readBoolean();
|
|
103
|
+
if (valid) {
|
|
104
|
+
return { valid };
|
|
105
|
+
}
|
|
106
|
+
const reason = reader.readString() as 'insufficient-attestations' | 'invalid-attestation';
|
|
107
|
+
const block = deserializeBlockInfo(reader.readBuffer());
|
|
108
|
+
const committee = reader.readVector(EthAddress);
|
|
109
|
+
const epoch = reader.readBigInt();
|
|
110
|
+
const seed = reader.readBigInt();
|
|
111
|
+
const attestors = reader.readVector(EthAddress);
|
|
112
|
+
const attestations = reader.readVector(CommitteeAttestation);
|
|
113
|
+
const invalidIndex = reader.readNumber();
|
|
114
|
+
if (reason === 'insufficient-attestations') {
|
|
115
|
+
return { valid, reason, block, committee, epoch, seed, attestors, attestations: attestations };
|
|
116
|
+
} else if (reason === 'invalid-attestation') {
|
|
117
|
+
return { valid, reason, block, committee, epoch, seed, attestors, invalidIndex, attestations: attestations };
|
|
118
|
+
} else {
|
|
119
|
+
const _: never = reason;
|
|
120
|
+
throw new Error(`Unknown reason: ${reason}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
|
|
3
|
+
import { getBlockBlobFields } from '../block/body.js';
|
|
4
|
+
import type { TxEffect } from '../tx/tx_effect.js';
|
|
5
|
+
|
|
6
|
+
export function getCheckpointBlobFields(txEffectsInBlocks: TxEffect[][]) {
|
|
7
|
+
const blockBlobFields = txEffectsInBlocks.map(blockTxEffects => getBlockBlobFields(blockTxEffects)).flat();
|
|
8
|
+
const totalNumBlobFields = blockBlobFields.length + 1; // +1 for the prefix indicating the number of total blob fields in a checkpoint.
|
|
9
|
+
return [new Fr(totalNumBlobFields)].concat(blockBlobFields);
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkpoint_body.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_MAX_DEBUG_LOG_MEMORY_READS } from '@aztec/constants';
|
|
1
2
|
import { type ConfigMappingsType, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
3
|
|
|
3
4
|
export const nodeRpcConfigMappings: ConfigMappingsType<NodeRPCConfig> = {
|
|
@@ -6,6 +7,12 @@ export const nodeRpcConfigMappings: ConfigMappingsType<NodeRPCConfig> = {
|
|
|
6
7
|
description: 'Maximum gas limit for public tx simulation in the node on `simulatePublicCalls`.',
|
|
7
8
|
...numberConfigHelper(10e9),
|
|
8
9
|
},
|
|
10
|
+
rpcSimulatePublicMaxDebugLogMemoryReads: {
|
|
11
|
+
env: 'RPC_SIMULATE_PUBLIC_MAX_DEBUG_LOG_MEMORY_READS',
|
|
12
|
+
description:
|
|
13
|
+
'Maximum memory reads for debug logs performed for public tx simulation in the node on `simulatePublicCalls`. ',
|
|
14
|
+
...numberConfigHelper(DEFAULT_MAX_DEBUG_LOG_MEMORY_READS),
|
|
15
|
+
},
|
|
9
16
|
rpcMaxBatchSize: {
|
|
10
17
|
env: 'RPC_MAX_BATCH_SIZE',
|
|
11
18
|
description: 'Maximum allowed batch size for JSON RPC batch requests.',
|
|
@@ -21,6 +28,8 @@ export const nodeRpcConfigMappings: ConfigMappingsType<NodeRPCConfig> = {
|
|
|
21
28
|
export type NodeRPCConfig = {
|
|
22
29
|
/** Maximum gas limit for public tx simulation in the node on `simulatePublicCalls`. */
|
|
23
30
|
rpcSimulatePublicMaxGasLimit: number;
|
|
31
|
+
/** Maximum memory reads for debug logs performed for public tx simulation in the node on `simulatePublicCalls`. */
|
|
32
|
+
rpcSimulatePublicMaxDebugLogMemoryReads: number;
|
|
24
33
|
/** Maximum allowed batch size for JSON RPC batch requests. */
|
|
25
34
|
rpcMaxBatchSize: number;
|
|
26
35
|
/** The maximum body size the RPC server will accept */
|
|
@@ -11,7 +11,7 @@ import type { ContractInstance } from './interfaces/contract_instance.js';
|
|
|
11
11
|
// TODO(@spalladino): Review all generator indices in this file
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Returns the deployment address for a given contract instance
|
|
14
|
+
* Returns the deployment address for a given contract instance.
|
|
15
15
|
* ```
|
|
16
16
|
* salted_initialization_hash = pedersen([salt, initialization_hash, deployer], GENERATOR__SALTED_INITIALIZATION_HASH)
|
|
17
17
|
* partial_address = pedersen([contract_class_id, salted_initialization_hash], GENERATOR__CONTRACT_PARTIAL_ADDRESS_V1)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ContractArtifact } from '../abi/abi.js';
|
|
2
|
+
import type { ContractClassWithId } from './interfaces/contract_class.js';
|
|
3
|
+
|
|
4
|
+
export interface ContractClassMetadata {
|
|
5
|
+
contractClass?: ContractClassWithId | undefined;
|
|
6
|
+
isContractClassPubliclyRegistered: boolean;
|
|
7
|
+
artifact?: ContractArtifact | undefined;
|
|
8
|
+
}
|
|
@@ -22,6 +22,15 @@ import type { ContractInstance, ContractInstanceWithAddress } from './interfaces
|
|
|
22
22
|
|
|
23
23
|
const VERSION = 1 as const;
|
|
24
24
|
|
|
25
|
+
export type ContractInstantiationData = {
|
|
26
|
+
constructorArtifact?: FunctionAbi | string;
|
|
27
|
+
constructorArgs?: any[];
|
|
28
|
+
skipArgsDecoding?: boolean;
|
|
29
|
+
salt: Fr;
|
|
30
|
+
publicKeys?: PublicKeys;
|
|
31
|
+
deployer?: AztecAddress;
|
|
32
|
+
};
|
|
33
|
+
|
|
25
34
|
export class SerializableContractInstance {
|
|
26
35
|
public readonly version = VERSION;
|
|
27
36
|
public readonly salt: Fr;
|
|
@@ -107,17 +116,9 @@ export class SerializableContractInstance {
|
|
|
107
116
|
*/
|
|
108
117
|
export async function getContractInstanceFromInstantiationParams(
|
|
109
118
|
artifact: ContractArtifact,
|
|
110
|
-
opts:
|
|
111
|
-
constructorArtifact?: FunctionAbi | string;
|
|
112
|
-
constructorArgs?: any[];
|
|
113
|
-
skipArgsDecoding?: boolean;
|
|
114
|
-
salt?: Fr;
|
|
115
|
-
publicKeys?: PublicKeys;
|
|
116
|
-
deployer?: AztecAddress;
|
|
117
|
-
},
|
|
119
|
+
opts: ContractInstantiationData,
|
|
118
120
|
): Promise<ContractInstanceWithAddress> {
|
|
119
121
|
const args = opts.constructorArgs ?? [];
|
|
120
|
-
const salt = opts.salt ?? Fr.random();
|
|
121
122
|
const constructorArtifact = getConstructorArtifact(artifact, opts.constructorArtifact);
|
|
122
123
|
const deployer = opts.deployer ?? AztecAddress.ZERO;
|
|
123
124
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
@@ -135,7 +136,7 @@ export async function getContractInstanceFromInstantiationParams(
|
|
|
135
136
|
originalContractClassId: contractClass.id,
|
|
136
137
|
initializationHash,
|
|
137
138
|
publicKeys,
|
|
138
|
-
salt,
|
|
139
|
+
salt: opts.salt,
|
|
139
140
|
deployer,
|
|
140
141
|
version: 1,
|
|
141
142
|
};
|
package/src/contract/index.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export * from './artifact_hash.js';
|
|
2
2
|
export * from './contract_address.js';
|
|
3
3
|
export * from './contract_class.js';
|
|
4
|
+
export * from './contract_class_metadata.js';
|
|
4
5
|
export * from './contract_class_id.js';
|
|
5
6
|
export * from './contract_instance.js';
|
|
7
|
+
export * from './contract_metadata.js';
|
|
6
8
|
export * from './contract_instance_update.js';
|
|
7
9
|
export * from './private_function.js';
|
|
8
10
|
export * from './private_function_membership_proof.js';
|
|
@@ -18,7 +18,7 @@ export interface ContractClass {
|
|
|
18
18
|
/**
|
|
19
19
|
* Hash of the contract artifact. The specification of this hash is not enforced by the protocol. Should include
|
|
20
20
|
* commitments to code of utility functions and compilation metadata. Intended to be used by clients to verify that
|
|
21
|
-
* an
|
|
21
|
+
* an offchain fetched artifact matches a registered class.
|
|
22
22
|
*/
|
|
23
23
|
artifactHash: Fr;
|
|
24
24
|
/** List of individual private functions, constructors included. */
|
|
@@ -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
|
+
}
|