@aztec/stdlib 2.1.0-rc.9 → 3.0.0-devnet.2
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 +131 -72
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +8 -4
- 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/index.d.ts +2 -0
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +2 -0
- package/dest/block/l2_block.d.ts +19 -5
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +28 -7
- 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_source.d.ts +29 -0
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +1 -1
- package/dest/block/proposal/attestations_and_signers.d.ts +1 -1
- package/dest/block/proposal/attestations_and_signers.js +1 -1
- package/dest/block/proposal/committee_attestation.d.ts +0 -1
- package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
- package/dest/block/proposal/committee_attestation.js +0 -3
- package/dest/block/published_l2_block.d.ts +2 -8
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +0 -9
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +1 -3
- 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 +1 -1
- package/dest/contract/interfaces/contract_instance.d.ts +2 -2
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +0 -3
- package/dest/interfaces/archiver.d.ts +1 -1
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +7 -0
- package/dest/interfaces/aztec-node-admin.d.ts +40 -36
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +2 -2
- package/dest/interfaces/aztec-node.d.ts +30 -0
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +7 -1
- package/dest/interfaces/block-builder.d.ts +1 -2
- 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 +5 -0
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +1 -0
- 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 +343 -194
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +131 -113
- package/dest/interfaces/server_circuit_prover.d.ts +34 -34
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- 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 +99 -3
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +7 -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/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 +13 -13
- package/dest/p2p/block_attestation.d.ts.map +1 -1
- package/dest/p2p/block_attestation.js +27 -25
- package/dest/p2p/block_proposal.d.ts +6 -8
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +10 -13
- package/dest/p2p/consensus_payload.d.ts +7 -6
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +7 -6
- 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 -13
- package/dest/rollup/checkpoint_header.d.ts.map +1 -0
- package/dest/{tx/proposed_block_header.js → rollup/checkpoint_header.js} +9 -9
- 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/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 +11 -7
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +44 -23
- 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/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/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/tx.d.ts +6 -2
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +10 -3
- 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/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 +15 -9
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +17 -11
- package/package.json +12 -10
- 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 +13 -2
- 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 +2 -0
- package/src/block/l2_block.ts +33 -8
- 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_source.ts +32 -0
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +1 -1
- package/src/block/proposal/attestations_and_signers.ts +1 -1
- package/src/block/proposal/committee_attestation.ts +0 -4
- package/src/block/published_l2_block.ts +0 -17
- package/src/block/test/l2_tips_store_test_suite.ts +1 -2
- 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/hash/hash.ts +0 -4
- package/src/interfaces/archiver.ts +9 -1
- package/src/interfaces/aztec-node-admin.ts +2 -2
- package/src/interfaces/aztec-node.ts +45 -0
- package/src/interfaces/block-builder.ts +1 -6
- package/src/interfaces/client.ts +0 -1
- package/src/interfaces/configs.ts +3 -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_circuit_prover.ts +87 -61
- package/src/interfaces/tx_provider.ts +1 -0
- package/src/interfaces/validator.ts +19 -4
- 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/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 +31 -24
- package/src/p2p/block_proposal.ts +11 -16
- package/src/p2p/consensus_payload.ts +8 -7
- 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} +17 -18
- 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/stats/stats.ts +19 -13
- package/src/tests/factories.ts +217 -275
- package/src/tests/mocks.ts +71 -53
- package/src/trees/index.ts +0 -1
- package/src/tx/block_header.ts +17 -32
- package/src/tx/global_variables.ts +0 -1
- package/src/tx/index.ts +2 -1
- 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/tx.ts +12 -3
- 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/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 +40 -28
- 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 -336
- package/dest/interfaces/pxe.d.ts.map +0 -1
- package/dest/interfaces/pxe.js +0 -101
- 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 -541
- 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
package/src/tests/mocks.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
6
6
|
|
|
7
7
|
import type { ContractArtifact } from '../abi/abi.js';
|
|
8
8
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
9
|
-
import { CommitteeAttestation, L1PublishedData } from '../block/index.js';
|
|
9
|
+
import { CommitteeAttestation, L1PublishedData, L2BlockHeader } from '../block/index.js';
|
|
10
10
|
import { L2Block } from '../block/l2_block.js';
|
|
11
11
|
import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
|
|
12
12
|
import { PublishedL2Block } from '../block/published_l2_block.js';
|
|
@@ -14,6 +14,7 @@ import { computeContractAddressFromInstance } from '../contract/contract_address
|
|
|
14
14
|
import { getContractClassFromArtifact } from '../contract/contract_class.js';
|
|
15
15
|
import { SerializableContractInstance } from '../contract/contract_instance.js';
|
|
16
16
|
import type { ContractInstanceWithAddress } from '../contract/index.js';
|
|
17
|
+
import { Gas } from '../gas/gas.js';
|
|
17
18
|
import { GasFees } from '../gas/gas_fees.js';
|
|
18
19
|
import { GasSettings } from '../gas/gas_settings.js';
|
|
19
20
|
import { Nullifier } from '../kernel/nullifier.js';
|
|
@@ -23,45 +24,22 @@ import {
|
|
|
23
24
|
PrivateKernelTailCircuitPublicInputs,
|
|
24
25
|
} from '../kernel/private_kernel_tail_circuit_public_inputs.js';
|
|
25
26
|
import { PrivateToPublicAccumulatedDataBuilder } from '../kernel/private_to_public_accumulated_data_builder.js';
|
|
26
|
-
import { ExtendedNote, UniqueNote } from '../note/extended_note.js';
|
|
27
27
|
import { Note } from '../note/note.js';
|
|
28
|
+
import { UniqueNote } from '../note/unique_note.js';
|
|
28
29
|
import { BlockAttestation } from '../p2p/block_attestation.js';
|
|
29
30
|
import { BlockProposal } from '../p2p/block_proposal.js';
|
|
30
31
|
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
31
32
|
import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
|
|
32
33
|
import { ClientIvcProof } from '../proofs/client_ivc_proof.js';
|
|
33
|
-
import {
|
|
34
|
-
BlockHeader,
|
|
35
|
-
HashedValues,
|
|
36
|
-
PrivateCallExecutionResult,
|
|
37
|
-
PrivateExecutionResult,
|
|
38
|
-
StateReference,
|
|
39
|
-
Tx,
|
|
40
|
-
} from '../tx/index.js';
|
|
34
|
+
import { HashedValues, PrivateCallExecutionResult, PrivateExecutionResult, StateReference, Tx } from '../tx/index.js';
|
|
41
35
|
import { PublicSimulationOutput } from '../tx/public_simulation_output.js';
|
|
42
36
|
import { TxSimulationResult, accumulatePrivateReturnValues } from '../tx/simulated_tx.js';
|
|
43
37
|
import { TxEffect } from '../tx/tx_effect.js';
|
|
44
38
|
import { TxHash } from '../tx/tx_hash.js';
|
|
45
|
-
import { makeGas, makeGlobalVariables,
|
|
39
|
+
import { makeGas, makeGlobalVariables, makeL2BlockHeader, makePublicCallRequest } from './factories.js';
|
|
46
40
|
|
|
47
41
|
export const randomTxHash = (): TxHash => TxHash.random();
|
|
48
42
|
|
|
49
|
-
export const randomExtendedNote = async ({
|
|
50
|
-
note = Note.random(),
|
|
51
|
-
recipient = undefined,
|
|
52
|
-
contractAddress = undefined,
|
|
53
|
-
txHash = randomTxHash(),
|
|
54
|
-
storageSlot = Fr.random(),
|
|
55
|
-
}: Partial<ExtendedNote> = {}) => {
|
|
56
|
-
return new ExtendedNote(
|
|
57
|
-
note,
|
|
58
|
-
recipient ?? (await AztecAddress.random()),
|
|
59
|
-
contractAddress ?? (await AztecAddress.random()),
|
|
60
|
-
storageSlot,
|
|
61
|
-
txHash,
|
|
62
|
-
);
|
|
63
|
-
};
|
|
64
|
-
|
|
65
43
|
export const randomUniqueNote = async ({
|
|
66
44
|
note = Note.random(),
|
|
67
45
|
recipient = undefined,
|
|
@@ -89,12 +67,13 @@ export const mockTx = async (
|
|
|
89
67
|
hasPublicTeardownCallRequest = false,
|
|
90
68
|
publicCalldataSize = 2,
|
|
91
69
|
feePayer,
|
|
92
|
-
clientIvcProof = ClientIvcProof.
|
|
70
|
+
clientIvcProof = ClientIvcProof.random(),
|
|
93
71
|
maxPriorityFeesPerGas,
|
|
72
|
+
gasUsed = Gas.empty(),
|
|
94
73
|
chainId = Fr.ZERO,
|
|
95
74
|
version = Fr.ZERO,
|
|
96
75
|
vkTreeRoot = Fr.ZERO,
|
|
97
|
-
|
|
76
|
+
protocolContractsHash = Fr.ZERO,
|
|
98
77
|
}: {
|
|
99
78
|
numberOfNonRevertiblePublicCallRequests?: number;
|
|
100
79
|
numberOfRevertiblePublicCallRequests?: number;
|
|
@@ -104,10 +83,11 @@ export const mockTx = async (
|
|
|
104
83
|
feePayer?: AztecAddress;
|
|
105
84
|
clientIvcProof?: ClientIvcProof;
|
|
106
85
|
maxPriorityFeesPerGas?: GasFees;
|
|
86
|
+
gasUsed?: Gas;
|
|
107
87
|
chainId?: Fr;
|
|
108
88
|
version?: Fr;
|
|
109
89
|
vkTreeRoot?: Fr;
|
|
110
|
-
|
|
90
|
+
protocolContractsHash?: Fr;
|
|
111
91
|
} = {},
|
|
112
92
|
) => {
|
|
113
93
|
const totalPublicCallRequests =
|
|
@@ -116,16 +96,17 @@ export const mockTx = async (
|
|
|
116
96
|
(hasPublicTeardownCallRequest ? 1 : 0);
|
|
117
97
|
const isForPublic = totalPublicCallRequests > 0;
|
|
118
98
|
const data = PrivateKernelTailCircuitPublicInputs.empty();
|
|
119
|
-
const firstNullifier = new Nullifier(new Fr(seed + 1),
|
|
99
|
+
const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
|
|
120
100
|
data.constants.txContext.gasSettings = GasSettings.default({
|
|
121
101
|
maxFeesPerGas: new GasFees(10, 10),
|
|
122
102
|
maxPriorityFeesPerGas,
|
|
123
103
|
});
|
|
124
104
|
data.feePayer = feePayer ?? (await AztecAddress.random());
|
|
105
|
+
data.gasUsed = gasUsed;
|
|
125
106
|
data.constants.txContext.chainId = chainId;
|
|
126
107
|
data.constants.txContext.version = version;
|
|
127
108
|
data.constants.vkTreeRoot = vkTreeRoot;
|
|
128
|
-
data.constants.
|
|
109
|
+
data.constants.protocolContractsHash = protocolContractsHash;
|
|
129
110
|
|
|
130
111
|
// Set includeByTimestamp to the maximum allowed duration from the current time.
|
|
131
112
|
data.includeByTimestamp = BigInt(Math.floor(Date.now() / 1000) + MAX_INCLUDE_BY_TIMESTAMP_DURATION);
|
|
@@ -158,7 +139,7 @@ export const mockTx = async (
|
|
|
158
139
|
.build();
|
|
159
140
|
|
|
160
141
|
for (let i = 0; i < numberOfRevertibleNullifiers; i++) {
|
|
161
|
-
const revertibleNullifier = new Nullifier(new Fr(seed + 2 + i),
|
|
142
|
+
const revertibleNullifier = new Nullifier(new Fr(seed + 2 + i), Fr.ZERO, 0);
|
|
162
143
|
revertibleBuilder.pushNullifier(revertibleNullifier.value);
|
|
163
144
|
}
|
|
164
145
|
|
|
@@ -191,6 +172,7 @@ const emptyPrivateCallExecutionResult = () =>
|
|
|
191
172
|
[],
|
|
192
173
|
[],
|
|
193
174
|
[],
|
|
175
|
+
[],
|
|
194
176
|
);
|
|
195
177
|
|
|
196
178
|
const emptyPrivateExecutionResult = () => new PrivateExecutionResult(emptyPrivateCallExecutionResult(), Fr.zero(), []);
|
|
@@ -248,7 +230,9 @@ export const randomDeployedContract = async () => {
|
|
|
248
230
|
|
|
249
231
|
export interface MakeConsensusPayloadOptions {
|
|
250
232
|
signer?: Secp256k1Signer;
|
|
251
|
-
|
|
233
|
+
attesterSigner?: Secp256k1Signer;
|
|
234
|
+
proposerSigner?: Secp256k1Signer;
|
|
235
|
+
header?: L2BlockHeader;
|
|
252
236
|
archive?: Fr;
|
|
253
237
|
stateReference?: StateReference;
|
|
254
238
|
txHashes?: TxHash[];
|
|
@@ -259,11 +243,11 @@ const makeAndSignConsensusPayload = (
|
|
|
259
243
|
domainSeparator: SignatureDomainSeparator,
|
|
260
244
|
options?: MakeConsensusPayloadOptions,
|
|
261
245
|
) => {
|
|
262
|
-
const header = options?.header ??
|
|
246
|
+
const header = options?.header ?? makeL2BlockHeader(1);
|
|
263
247
|
const { signer = Secp256k1Signer.random(), archive = Fr.random(), stateReference = header.state } = options ?? {};
|
|
264
248
|
|
|
265
249
|
const payload = ConsensusPayload.fromFields({
|
|
266
|
-
header: header.
|
|
250
|
+
header: header.toCheckpointHeader(),
|
|
267
251
|
archive,
|
|
268
252
|
stateReference,
|
|
269
253
|
});
|
|
@@ -286,31 +270,65 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
|
|
|
286
270
|
};
|
|
287
271
|
|
|
288
272
|
export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => {
|
|
289
|
-
const {
|
|
290
|
-
SignatureDomainSeparator.blockProposal,
|
|
291
|
-
options,
|
|
292
|
-
);
|
|
273
|
+
const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options);
|
|
293
274
|
const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
|
|
294
|
-
return new BlockProposal(
|
|
275
|
+
return new BlockProposal(payload, signature, txHashes, options?.txs ?? []);
|
|
295
276
|
};
|
|
296
277
|
|
|
297
278
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028)
|
|
298
279
|
export const makeBlockAttestation = (options?: MakeConsensusPayloadOptions): BlockAttestation => {
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
280
|
+
const header = options?.header ?? makeL2BlockHeader(1);
|
|
281
|
+
const {
|
|
282
|
+
signer,
|
|
283
|
+
attesterSigner = signer ?? Secp256k1Signer.random(),
|
|
284
|
+
proposerSigner = signer ?? Secp256k1Signer.random(),
|
|
285
|
+
archive = Fr.random(),
|
|
286
|
+
stateReference = header.state,
|
|
287
|
+
} = options ?? {};
|
|
288
|
+
|
|
289
|
+
const payload = ConsensusPayload.fromFields({
|
|
290
|
+
header: header.toCheckpointHeader(),
|
|
291
|
+
archive,
|
|
292
|
+
stateReference,
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// Sign as attester
|
|
296
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
297
|
+
const attestationSignature = attesterSigner.sign(attestationHash);
|
|
298
|
+
|
|
299
|
+
// Sign as proposer
|
|
300
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
|
|
301
|
+
const proposerSignature = proposerSigner.sign(proposalHash);
|
|
302
|
+
|
|
303
|
+
return new BlockAttestation(payload, attestationSignature, proposerSignature);
|
|
304
304
|
};
|
|
305
305
|
|
|
306
|
-
export const makeBlockAttestationFromBlock = (
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
306
|
+
export const makeBlockAttestationFromBlock = (
|
|
307
|
+
block: L2Block,
|
|
308
|
+
attesterSigner?: Secp256k1Signer,
|
|
309
|
+
proposerSigner?: Secp256k1Signer,
|
|
310
|
+
): BlockAttestation => {
|
|
311
|
+
const header = block.header;
|
|
312
|
+
const archive = block.archive.root;
|
|
313
|
+
const stateReference = block.header.state;
|
|
314
|
+
|
|
315
|
+
const payload = ConsensusPayload.fromFields({
|
|
316
|
+
header: header.toCheckpointHeader(),
|
|
317
|
+
archive,
|
|
318
|
+
stateReference,
|
|
313
319
|
});
|
|
320
|
+
|
|
321
|
+
// Sign as attester
|
|
322
|
+
const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
323
|
+
const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
|
|
324
|
+
const attestationSignature = attestationSigner.sign(attestationHash);
|
|
325
|
+
|
|
326
|
+
// Sign as proposer
|
|
327
|
+
const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
|
|
328
|
+
const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
|
|
329
|
+
const proposerSignature = proposalSignerToUse.sign(proposalHash);
|
|
330
|
+
|
|
331
|
+
return new BlockAttestation(payload, attestationSignature, proposerSignature);
|
|
314
332
|
};
|
|
315
333
|
|
|
316
334
|
export async function randomPublishedL2Block(
|
package/src/trees/index.ts
CHANGED
package/src/tx/block_header.ts
CHANGED
|
@@ -10,9 +10,7 @@ import { inspect } from 'util';
|
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
|
|
12
12
|
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
13
|
-
import { ContentCommitment } from './content_commitment.js';
|
|
14
13
|
import { GlobalVariables } from './global_variables.js';
|
|
15
|
-
import { ProposedBlockHeader } from './proposed_block_header.js';
|
|
16
14
|
import { StateReference } from './state_reference.js';
|
|
17
15
|
|
|
18
16
|
/** A header of an L2 block. */
|
|
@@ -20,10 +18,13 @@ export class BlockHeader {
|
|
|
20
18
|
constructor(
|
|
21
19
|
/** Snapshot of archive before the block is applied. */
|
|
22
20
|
public lastArchive: AppendOnlyTreeSnapshot,
|
|
23
|
-
/** Hash of the body of an L2 block. */
|
|
24
|
-
public contentCommitment: ContentCommitment,
|
|
25
21
|
/** State reference. */
|
|
26
22
|
public state: StateReference,
|
|
23
|
+
/**
|
|
24
|
+
* Hash of the sponge blob after the tx effects of this block has been applied.
|
|
25
|
+
* May contain tx effects from the previous blocks in the same checkpoint.
|
|
26
|
+
*/
|
|
27
|
+
public spongeBlobHash: Fr,
|
|
27
28
|
/** Global variables of an L2 block. */
|
|
28
29
|
public globalVariables: GlobalVariables,
|
|
29
30
|
/** Total fees in the block, computed by the root rollup circuit */
|
|
@@ -36,8 +37,8 @@ export class BlockHeader {
|
|
|
36
37
|
return z
|
|
37
38
|
.object({
|
|
38
39
|
lastArchive: AppendOnlyTreeSnapshot.schema,
|
|
39
|
-
contentCommitment: ContentCommitment.schema,
|
|
40
40
|
state: StateReference.schema,
|
|
41
|
+
spongeBlobHash: schemas.Fr,
|
|
41
42
|
globalVariables: GlobalVariables.schema,
|
|
42
43
|
totalFees: schemas.Fr,
|
|
43
44
|
totalManaUsed: schemas.Fr,
|
|
@@ -46,11 +47,10 @@ export class BlockHeader {
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
static getFields(fields: FieldsOf<BlockHeader>) {
|
|
49
|
-
// Note: The order here must match the order in the ProposedHeaderLib solidity library.
|
|
50
50
|
return [
|
|
51
51
|
fields.lastArchive,
|
|
52
|
-
fields.contentCommitment,
|
|
53
52
|
fields.state,
|
|
53
|
+
fields.spongeBlobHash,
|
|
54
54
|
fields.globalVariables,
|
|
55
55
|
fields.totalFees,
|
|
56
56
|
fields.totalManaUsed,
|
|
@@ -72,8 +72,8 @@ export class BlockHeader {
|
|
|
72
72
|
getSize() {
|
|
73
73
|
return (
|
|
74
74
|
this.lastArchive.getSize() +
|
|
75
|
-
this.contentCommitment.getSize() +
|
|
76
75
|
this.state.getSize() +
|
|
76
|
+
this.spongeBlobHash.size +
|
|
77
77
|
this.globalVariables.getSize() +
|
|
78
78
|
this.totalFees.size +
|
|
79
79
|
this.totalManaUsed.size
|
|
@@ -101,8 +101,8 @@ export class BlockHeader {
|
|
|
101
101
|
|
|
102
102
|
return new BlockHeader(
|
|
103
103
|
reader.readObject(AppendOnlyTreeSnapshot),
|
|
104
|
-
reader.readObject(ContentCommitment),
|
|
105
104
|
reader.readObject(StateReference),
|
|
105
|
+
reader.readObject(Fr),
|
|
106
106
|
reader.readObject(GlobalVariables),
|
|
107
107
|
reader.readObject(Fr),
|
|
108
108
|
reader.readObject(Fr),
|
|
@@ -114,8 +114,8 @@ export class BlockHeader {
|
|
|
114
114
|
|
|
115
115
|
return new BlockHeader(
|
|
116
116
|
AppendOnlyTreeSnapshot.fromFields(reader),
|
|
117
|
-
ContentCommitment.fromFields(reader),
|
|
118
117
|
StateReference.fromFields(reader),
|
|
118
|
+
reader.readField(),
|
|
119
119
|
GlobalVariables.fromFields(reader),
|
|
120
120
|
reader.readField(),
|
|
121
121
|
reader.readField(),
|
|
@@ -125,8 +125,8 @@ export class BlockHeader {
|
|
|
125
125
|
static empty(fields: Partial<FieldsOf<BlockHeader>> = {}): BlockHeader {
|
|
126
126
|
return BlockHeader.from({
|
|
127
127
|
lastArchive: AppendOnlyTreeSnapshot.empty(),
|
|
128
|
-
contentCommitment: ContentCommitment.empty(),
|
|
129
128
|
state: StateReference.empty(),
|
|
129
|
+
spongeBlobHash: Fr.ZERO,
|
|
130
130
|
globalVariables: GlobalVariables.empty(),
|
|
131
131
|
totalFees: Fr.ZERO,
|
|
132
132
|
totalManaUsed: Fr.ZERO,
|
|
@@ -137,8 +137,8 @@ export class BlockHeader {
|
|
|
137
137
|
isEmpty(): boolean {
|
|
138
138
|
return (
|
|
139
139
|
this.lastArchive.isEmpty() &&
|
|
140
|
-
this.contentCommitment.isEmpty() &&
|
|
141
140
|
this.state.isEmpty() &&
|
|
141
|
+
this.spongeBlobHash.isZero() &&
|
|
142
142
|
this.globalVariables.isEmpty() &&
|
|
143
143
|
this.totalFees.isZero() &&
|
|
144
144
|
this.totalManaUsed.isZero()
|
|
@@ -161,24 +161,11 @@ export class BlockHeader {
|
|
|
161
161
|
return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HASH);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
toPropose(): ProposedBlockHeader {
|
|
165
|
-
return new ProposedBlockHeader(
|
|
166
|
-
this.lastArchive.root,
|
|
167
|
-
this.contentCommitment,
|
|
168
|
-
this.globalVariables.slotNumber,
|
|
169
|
-
this.globalVariables.timestamp,
|
|
170
|
-
this.globalVariables.coinbase,
|
|
171
|
-
this.globalVariables.feeRecipient,
|
|
172
|
-
this.globalVariables.gasFees,
|
|
173
|
-
this.totalManaUsed,
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
164
|
toInspect() {
|
|
178
165
|
return {
|
|
179
166
|
lastArchive: this.lastArchive.root.toString(),
|
|
180
|
-
contentCommitment: this.contentCommitment.toInspect(),
|
|
181
167
|
state: this.state.toInspect(),
|
|
168
|
+
spongeBlobHash: this.spongeBlobHash.toBigInt(),
|
|
182
169
|
globalVariables: this.globalVariables.toInspect(),
|
|
183
170
|
totalFees: this.totalFees.toBigInt(),
|
|
184
171
|
totalManaUsed: this.totalManaUsed.toBigInt(),
|
|
@@ -188,13 +175,11 @@ export class BlockHeader {
|
|
|
188
175
|
[inspect.custom]() {
|
|
189
176
|
return `Header {
|
|
190
177
|
lastArchive: ${inspect(this.lastArchive)},
|
|
191
|
-
contentCommitment.blobsHash: ${inspect(this.contentCommitment.blobsHash)},
|
|
192
|
-
contentCommitment.inHash: ${inspect(this.contentCommitment.inHash)},
|
|
193
|
-
contentCommitment.outHash: ${inspect(this.contentCommitment.outHash)},
|
|
194
178
|
state.l1ToL2MessageTree: ${inspect(this.state.l1ToL2MessageTree)},
|
|
195
179
|
state.noteHashTree: ${inspect(this.state.partial.noteHashTree)},
|
|
196
180
|
state.nullifierTree: ${inspect(this.state.partial.nullifierTree)},
|
|
197
181
|
state.publicDataTree: ${inspect(this.state.partial.publicDataTree)},
|
|
182
|
+
spongeBlobHash: ${this.spongeBlobHash},
|
|
198
183
|
globalVariables: ${inspect(this.globalVariables)},
|
|
199
184
|
totalFees: ${this.totalFees},
|
|
200
185
|
totalManaUsed: ${this.totalManaUsed},
|
|
@@ -203,12 +188,12 @@ export class BlockHeader {
|
|
|
203
188
|
|
|
204
189
|
public equals(other: this): boolean {
|
|
205
190
|
return (
|
|
206
|
-
this.
|
|
191
|
+
this.lastArchive.equals(other.lastArchive) &&
|
|
207
192
|
this.state.equals(other.state) &&
|
|
193
|
+
this.spongeBlobHash.equals(other.spongeBlobHash) &&
|
|
208
194
|
this.globalVariables.equals(other.globalVariables) &&
|
|
209
195
|
this.totalFees.equals(other.totalFees) &&
|
|
210
|
-
this.totalManaUsed.equals(other.totalManaUsed)
|
|
211
|
-
this.lastArchive.equals(other.lastArchive)
|
|
196
|
+
this.totalManaUsed.equals(other.totalManaUsed)
|
|
212
197
|
);
|
|
213
198
|
}
|
|
214
199
|
}
|
package/src/tx/index.ts
CHANGED
|
@@ -6,11 +6,11 @@ export * from './state_reference.js';
|
|
|
6
6
|
export * from './partial_state_reference.js';
|
|
7
7
|
export * from './function_data.js';
|
|
8
8
|
export * from './tree_snapshots.js';
|
|
9
|
+
export * from './private_tx_constant_data.js';
|
|
9
10
|
export * from './tx_constant_data.js';
|
|
10
11
|
export * from './tx_context.js';
|
|
11
12
|
export * from './tx_request.js';
|
|
12
13
|
export * from './private_execution_result.js';
|
|
13
|
-
export * from './proposed_block_header.js';
|
|
14
14
|
export * from './public_call_request_with_calldata.js';
|
|
15
15
|
export * from './tx_hash.js';
|
|
16
16
|
export * from './tx_receipt.js';
|
|
@@ -30,3 +30,4 @@ export * from './hashed_values.js';
|
|
|
30
30
|
export * from './indexed_tx_effect.js';
|
|
31
31
|
export * from './offchain_effect.js';
|
|
32
32
|
export * from './profiling.js';
|
|
33
|
+
export * from './protocol_contracts.js';
|
|
@@ -10,6 +10,7 @@ import { PrivateCircuitPublicInputs } from '../kernel/private_circuit_public_inp
|
|
|
10
10
|
import type { IsEmpty } from '../kernel/utils/interfaces.js';
|
|
11
11
|
import { sortByCounter } from '../kernel/utils/order_and_comparison.js';
|
|
12
12
|
import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js';
|
|
13
|
+
import { type PreTag, PreTagSchema } from '../logs/pre_tag.js';
|
|
13
14
|
import { Note } from '../note/note.js';
|
|
14
15
|
import { type ZodFor, mapSchema, schemas } from '../schemas/index.js';
|
|
15
16
|
import type { UInt32 } from '../types/index.js';
|
|
@@ -103,10 +104,10 @@ export class PrivateExecutionResult {
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
/**
|
|
106
|
-
* The block number that this execution was simulated with.
|
|
107
|
+
* The anchor block number that this execution was simulated with.
|
|
107
108
|
*/
|
|
108
|
-
|
|
109
|
-
return this.entrypoint.publicInputs.
|
|
109
|
+
getSimulationAnchorBlockNumber(): UInt32 {
|
|
110
|
+
return this.entrypoint.publicInputs.anchorBlockHeader.globalVariables.blockNumber;
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
|
|
@@ -135,6 +136,8 @@ export class PrivateCallExecutionResult {
|
|
|
135
136
|
public returnValues: Fr[],
|
|
136
137
|
/** The offchain effects emitted during execution of this function call via the `emit_offchain_effect` oracle. */
|
|
137
138
|
public offchainEffects: { data: Fr[] }[],
|
|
139
|
+
/** The pre tags used in this tx to compute tags for private logs */
|
|
140
|
+
public preTags: PreTag[],
|
|
138
141
|
/** The nested executions. */
|
|
139
142
|
public nestedExecutionResults: PrivateCallExecutionResult[],
|
|
140
143
|
/**
|
|
@@ -158,6 +161,7 @@ export class PrivateCallExecutionResult {
|
|
|
158
161
|
noteHashNullifierCounterMap: mapSchema(z.coerce.number(), z.number()),
|
|
159
162
|
returnValues: z.array(schemas.Fr),
|
|
160
163
|
offchainEffects: z.array(z.object({ data: z.array(schemas.Fr) })),
|
|
164
|
+
preTags: z.array(PreTagSchema),
|
|
161
165
|
nestedExecutionResults: z.array(z.lazy(() => PrivateCallExecutionResult.schema)),
|
|
162
166
|
contractClassLogs: z.array(CountedContractClassLog.schema),
|
|
163
167
|
})
|
|
@@ -175,6 +179,7 @@ export class PrivateCallExecutionResult {
|
|
|
175
179
|
fields.noteHashNullifierCounterMap,
|
|
176
180
|
fields.returnValues,
|
|
177
181
|
fields.offchainEffects,
|
|
182
|
+
fields.preTags,
|
|
178
183
|
fields.nestedExecutionResults,
|
|
179
184
|
fields.contractClassLogs,
|
|
180
185
|
);
|
|
@@ -195,6 +200,7 @@ export class PrivateCallExecutionResult {
|
|
|
195
200
|
data: [Fr.random()],
|
|
196
201
|
},
|
|
197
202
|
],
|
|
203
|
+
[],
|
|
198
204
|
await timesParallel(nested, () => PrivateCallExecutionResult.random(0)),
|
|
199
205
|
[new CountedContractClassLog(await ContractClassLog.random(), randomInt(10))],
|
|
200
206
|
);
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { TX_CONSTANT_DATA_LENGTH } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
|
|
4
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
5
|
+
|
|
6
|
+
import { BlockHeader } from './block_header.js';
|
|
7
|
+
import { ProtocolContracts } from './protocol_contracts.js';
|
|
8
|
+
import { TxContext } from './tx_context.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Data that is constant/not modified by neither of the kernels.
|
|
12
|
+
*/
|
|
13
|
+
export class PrivateTxConstantData {
|
|
14
|
+
constructor(
|
|
15
|
+
/** Header of a block whose state is used during execution (not the block the transaction is included in). */
|
|
16
|
+
public anchorBlockHeader: BlockHeader,
|
|
17
|
+
/**
|
|
18
|
+
* Context of the transaction.
|
|
19
|
+
*
|
|
20
|
+
* Note: `chainId` and `version` in txContext are not redundant to the values in
|
|
21
|
+
* self.anchor_block_header.global_variables because they can be different in case of a protocol upgrade. In such
|
|
22
|
+
* a situation we could be using header from a block before the upgrade took place but be using the updated
|
|
23
|
+
* protocol to execute and prove the transaction.
|
|
24
|
+
*/
|
|
25
|
+
public txContext: TxContext,
|
|
26
|
+
/**
|
|
27
|
+
* Root of the vk tree for the protocol circuits.
|
|
28
|
+
*/
|
|
29
|
+
public vkTreeRoot: Fr,
|
|
30
|
+
/**
|
|
31
|
+
* List of protocol contracts.
|
|
32
|
+
*/
|
|
33
|
+
public protocolContracts: ProtocolContracts,
|
|
34
|
+
) {}
|
|
35
|
+
|
|
36
|
+
static from(fields: FieldsOf<PrivateTxConstantData>) {
|
|
37
|
+
return new PrivateTxConstantData(...PrivateTxConstantData.getFields(fields));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static getFields(fields: FieldsOf<PrivateTxConstantData>) {
|
|
41
|
+
return [fields.anchorBlockHeader, fields.txContext, fields.vkTreeRoot, fields.protocolContracts] as const;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromFields(fields: Fr[] | FieldReader): PrivateTxConstantData {
|
|
45
|
+
const reader = FieldReader.asReader(fields);
|
|
46
|
+
return new PrivateTxConstantData(
|
|
47
|
+
reader.readObject(BlockHeader),
|
|
48
|
+
reader.readObject(TxContext),
|
|
49
|
+
reader.readField(),
|
|
50
|
+
reader.readObject(ProtocolContracts),
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
toFields(): Fr[] {
|
|
55
|
+
const fields = serializeToFields(...PrivateTxConstantData.getFields(this));
|
|
56
|
+
if (fields.length !== TX_CONSTANT_DATA_LENGTH) {
|
|
57
|
+
throw new Error(
|
|
58
|
+
`Invalid number of fields for PrivateTxConstantData. Expected ${TX_CONSTANT_DATA_LENGTH}, got ${fields.length}`,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return fields;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static fromBuffer(buffer: Buffer | BufferReader): PrivateTxConstantData {
|
|
65
|
+
const reader = BufferReader.asReader(buffer);
|
|
66
|
+
return new PrivateTxConstantData(
|
|
67
|
+
reader.readObject(BlockHeader),
|
|
68
|
+
reader.readObject(TxContext),
|
|
69
|
+
Fr.fromBuffer(reader),
|
|
70
|
+
reader.readObject(ProtocolContracts),
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
toBuffer() {
|
|
75
|
+
return serializeToBuffer(...PrivateTxConstantData.getFields(this));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static empty() {
|
|
79
|
+
return new PrivateTxConstantData(BlockHeader.empty(), TxContext.empty(), Fr.ZERO, ProtocolContracts.empty());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getSize() {
|
|
83
|
+
return (
|
|
84
|
+
this.anchorBlockHeader.getSize() +
|
|
85
|
+
this.txContext.getSize() +
|
|
86
|
+
this.vkTreeRoot.size +
|
|
87
|
+
this.protocolContracts.getSize()
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
clone(): PrivateTxConstantData {
|
|
92
|
+
return PrivateTxConstantData.fromBuffer(this.toBuffer());
|
|
93
|
+
}
|
|
94
|
+
}
|
package/src/tx/processed_tx.ts
CHANGED
|
@@ -128,12 +128,6 @@ export function makeProcessedTxFromPrivateOnlyTx(
|
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
export function toNumBlobFields(txs: ProcessedTx[]): number {
|
|
132
|
-
return txs.reduce((acc, tx) => {
|
|
133
|
-
return acc + tx.txEffect.toBlobFields().length;
|
|
134
|
-
}, 0);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
131
|
export function makeProcessedTxFromTxWithPublicCalls(
|
|
138
132
|
tx: Tx,
|
|
139
133
|
avmProvingRequest: AvmProvingRequest,
|
|
@@ -175,7 +169,7 @@ export function makeProcessedTxFromTxWithPublicCalls(
|
|
|
175
169
|
),
|
|
176
170
|
publicDataWrites,
|
|
177
171
|
privateLogs,
|
|
178
|
-
avmPublicInputs.accumulatedData.publicLogs.
|
|
172
|
+
avmPublicInputs.accumulatedData.publicLogs.toLogs(),
|
|
179
173
|
contractClassLogs,
|
|
180
174
|
);
|
|
181
175
|
|
package/src/tx/profiling.ts
CHANGED
|
@@ -78,13 +78,11 @@ export const SimulationStatsSchema = z.object({
|
|
|
78
78
|
nodeRPCCalls: NodeStatsSchema,
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
// docs:start:tx-profile-result
|
|
82
81
|
export class TxProfileResult {
|
|
83
82
|
constructor(
|
|
84
83
|
public executionSteps: PrivateExecutionStep[],
|
|
85
84
|
public stats: ProvingStats,
|
|
86
85
|
) {}
|
|
87
|
-
// docs:end:tx-profile-result
|
|
88
86
|
static get schema(): ZodFor<TxProfileResult> {
|
|
89
87
|
return z
|
|
90
88
|
.object({
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { GeneratorIndex, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
|
|
2
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
+
import { arraySerializedSizeOfNonEmpty } from '@aztec/foundation/collection';
|
|
4
|
+
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
|
|
5
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
+
import {
|
|
7
|
+
BufferReader,
|
|
8
|
+
FieldReader,
|
|
9
|
+
type Tuple,
|
|
10
|
+
assertLength,
|
|
11
|
+
serializeToBuffer,
|
|
12
|
+
serializeToFields,
|
|
13
|
+
} from '@aztec/foundation/serialize';
|
|
14
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
15
|
+
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
|
|
18
|
+
import { AztecAddress } from '../aztec-address/index.js';
|
|
19
|
+
|
|
20
|
+
export class ProtocolContracts {
|
|
21
|
+
constructor(public derivedAddresses: Tuple<AztecAddress, typeof MAX_PROTOCOL_CONTRACTS>) {}
|
|
22
|
+
|
|
23
|
+
static from(fields: FieldsOf<ProtocolContracts>) {
|
|
24
|
+
return new ProtocolContracts(...ProtocolContracts.getFields(fields));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static getFields(fields: FieldsOf<ProtocolContracts>) {
|
|
28
|
+
return [fields.derivedAddresses] as const;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static fromFields(fields: Fr[] | FieldReader): ProtocolContracts {
|
|
32
|
+
const reader = FieldReader.asReader(fields);
|
|
33
|
+
return new ProtocolContracts(reader.readArray(MAX_PROTOCOL_CONTRACTS, AztecAddress));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
toFields(): Fr[] {
|
|
37
|
+
return serializeToFields(...ProtocolContracts.getFields(this));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static fromBuffer(buffer: Buffer | BufferReader): ProtocolContracts {
|
|
41
|
+
const reader = BufferReader.asReader(buffer);
|
|
42
|
+
return new ProtocolContracts(reader.readArray(MAX_PROTOCOL_CONTRACTS, AztecAddress));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
toBuffer() {
|
|
46
|
+
return serializeToBuffer(...ProtocolContracts.getFields(this));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static empty() {
|
|
50
|
+
return new ProtocolContracts(makeTuple(MAX_PROTOCOL_CONTRACTS, () => AztecAddress.zero()));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getSize() {
|
|
54
|
+
return arraySerializedSizeOfNonEmpty(this.derivedAddresses);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
hash() {
|
|
58
|
+
return poseidon2HashWithSeparator(this.derivedAddresses, GeneratorIndex.PROTOCOL_CONTRACTS);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static get schema() {
|
|
62
|
+
return z
|
|
63
|
+
.object({
|
|
64
|
+
derivedAddresses: AztecAddress.schema.array().min(MAX_PROTOCOL_CONTRACTS).max(MAX_PROTOCOL_CONTRACTS),
|
|
65
|
+
})
|
|
66
|
+
.transform(
|
|
67
|
+
({ derivedAddresses }) => new ProtocolContracts(assertLength(derivedAddresses, MAX_PROTOCOL_CONTRACTS)),
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}
|