@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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/stdlib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-devnet.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"inherits": [
|
|
6
6
|
"../package.common.json",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"./auth-witness": "./dest/auth_witness/index.js",
|
|
40
40
|
"./block": "./dest/block/index.js",
|
|
41
41
|
"./block/test": "./dest/block/test/index.js",
|
|
42
|
+
"./checkpoint": "./dest/checkpoint/index.js",
|
|
42
43
|
"./versioning": "./dest/versioning/index.js",
|
|
43
44
|
"./interfaces/client": "./dest/interfaces/client.js",
|
|
44
45
|
"./interfaces/server": "./dest/interfaces/server.js",
|
|
@@ -52,7 +53,8 @@
|
|
|
52
53
|
"./update-checker": "./dest/update-checker/index.js",
|
|
53
54
|
"./zkpassport": "./dest/zkpassport/index.js",
|
|
54
55
|
"./slashing": "./dest/slashing/index.js",
|
|
55
|
-
"./l1-contracts": "./dest/l1-contracts/index.js"
|
|
56
|
+
"./l1-contracts": "./dest/l1-contracts/index.js",
|
|
57
|
+
"./world-state": "./dest/world-state/index.js"
|
|
56
58
|
},
|
|
57
59
|
"typedocOptions": {
|
|
58
60
|
"entryPoints": [
|
|
@@ -70,13 +72,13 @@
|
|
|
70
72
|
},
|
|
71
73
|
"dependencies": {
|
|
72
74
|
"@aws-sdk/client-s3": "^3.892.0",
|
|
73
|
-
"@aztec/bb.js": "
|
|
74
|
-
"@aztec/blob-lib": "
|
|
75
|
-
"@aztec/constants": "
|
|
76
|
-
"@aztec/ethereum": "
|
|
77
|
-
"@aztec/foundation": "
|
|
78
|
-
"@aztec/l1-artifacts": "
|
|
79
|
-
"@aztec/noir-noirc_abi": "
|
|
75
|
+
"@aztec/bb.js": "3.0.0-devnet.2",
|
|
76
|
+
"@aztec/blob-lib": "3.0.0-devnet.2",
|
|
77
|
+
"@aztec/constants": "3.0.0-devnet.2",
|
|
78
|
+
"@aztec/ethereum": "3.0.0-devnet.2",
|
|
79
|
+
"@aztec/foundation": "3.0.0-devnet.2",
|
|
80
|
+
"@aztec/l1-artifacts": "3.0.0-devnet.2",
|
|
81
|
+
"@aztec/noir-noirc_abi": "3.0.0-devnet.2",
|
|
80
82
|
"@google-cloud/storage": "^7.15.0",
|
|
81
83
|
"axios": "^1.12.0",
|
|
82
84
|
"json-stringify-deterministic": "1.0.12",
|
|
@@ -87,7 +89,7 @@
|
|
|
87
89
|
"msgpackr": "^1.11.2",
|
|
88
90
|
"pako": "^2.1.0",
|
|
89
91
|
"tslib": "^2.4.0",
|
|
90
|
-
"viem": "2.
|
|
92
|
+
"viem": "npm:@spalladino/viem@2.38.2-eip7594.0",
|
|
91
93
|
"zod": "^3.23.8"
|
|
92
94
|
},
|
|
93
95
|
"devDependencies": {
|
package/src/abi/abi.ts
CHANGED
|
@@ -195,7 +195,7 @@ export const FunctionAbiSchema = z.object({
|
|
|
195
195
|
isInitializer: z.boolean(),
|
|
196
196
|
parameters: z.array(z.object({ name: z.string(), type: AbiTypeSchema, visibility: z.enum(ABIParameterVisibility) })),
|
|
197
197
|
returnTypes: z.array(AbiTypeSchema),
|
|
198
|
-
errorTypes: z.record(AbiErrorTypeSchema),
|
|
198
|
+
errorTypes: z.record(z.string(), AbiErrorTypeSchema.optional()),
|
|
199
199
|
}) satisfies z.ZodType<FunctionAbi>;
|
|
200
200
|
|
|
201
201
|
/** Debug metadata for a function. */
|
|
@@ -283,6 +283,9 @@ function getStorageLayout(input: NoirCompiledContract) {
|
|
|
283
283
|
*/
|
|
284
284
|
function generateContractArtifact(contract: NoirCompiledContract): ContractArtifact {
|
|
285
285
|
try {
|
|
286
|
+
if (!contract.transpiled) {
|
|
287
|
+
throw new Error("Contract's public bytecode has not been transpiled");
|
|
288
|
+
}
|
|
286
289
|
return ContractArtifactSchema.parse({
|
|
287
290
|
name: contract.name,
|
|
288
291
|
functions: contract.functions.filter(f => retainBytecode(f)).map(f => generateFunctionArtifact(f, contract)),
|
package/src/abi/function_call.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { AztecAddress } from '../aztec-address/index.js';
|
|
|
5
5
|
import { type AbiType, FunctionType } from './abi.js';
|
|
6
6
|
import { FunctionSelector } from './function_selector.js';
|
|
7
7
|
|
|
8
|
-
/** A request to call a function on a contract
|
|
8
|
+
/** A request to call a function on a contract. */
|
|
9
9
|
export class FunctionCall {
|
|
10
10
|
constructor(
|
|
11
11
|
/** The name of the function to call */
|
|
@@ -16,6 +16,8 @@ export class FunctionCall {
|
|
|
16
16
|
public selector: FunctionSelector,
|
|
17
17
|
/** Type of the function */
|
|
18
18
|
public type: FunctionType,
|
|
19
|
+
/** Only applicable for enqueued public function calls. `hideMsgSender = true` will set the msg_sender field (the caller's address) to "null", meaning the public function (and observers around the world) won't know which smart contract address made the call. */
|
|
20
|
+
public hideMsgSender: boolean,
|
|
19
21
|
/** Whether this call can make modifications to state or not */
|
|
20
22
|
public isStatic: boolean,
|
|
21
23
|
/** The encoded args */
|
|
@@ -30,6 +32,7 @@ export class FunctionCall {
|
|
|
30
32
|
fields.to,
|
|
31
33
|
fields.selector,
|
|
32
34
|
fields.type,
|
|
35
|
+
fields.hideMsgSender,
|
|
33
36
|
fields.isStatic,
|
|
34
37
|
fields.args,
|
|
35
38
|
fields.returnTypes,
|
|
@@ -50,6 +53,7 @@ export class FunctionCall {
|
|
|
50
53
|
to: AztecAddress.ZERO,
|
|
51
54
|
selector: FunctionSelector.empty(),
|
|
52
55
|
type: FunctionType.PUBLIC,
|
|
56
|
+
hideMsgSender: false,
|
|
53
57
|
isStatic: false,
|
|
54
58
|
args: [],
|
|
55
59
|
returnTypes: [],
|
package/src/abi/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './buffer.js';
|
|
|
3
3
|
export * from './decoder.js';
|
|
4
4
|
export * from './encoder.js';
|
|
5
5
|
export * from './authorization_selector.js';
|
|
6
|
+
export * from './event_metadata_definition.js';
|
|
6
7
|
export * from './event_selector.js';
|
|
7
8
|
export * from './function_selector.js';
|
|
8
9
|
export * from './note_selector.js';
|
package/src/avm/avm.ts
CHANGED
|
@@ -15,7 +15,13 @@ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
|
15
15
|
import { MerkleTreeId } from '../trees/merkle_tree_id.js';
|
|
16
16
|
import { NullifierLeafPreimage } from '../trees/nullifier_leaf.js';
|
|
17
17
|
import { PublicDataTreeLeafPreimage } from '../trees/public_data_leaf.js';
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
GlobalVariables,
|
|
20
|
+
ProtocolContracts,
|
|
21
|
+
PublicCallRequestWithCalldata,
|
|
22
|
+
TreeSnapshots,
|
|
23
|
+
type Tx,
|
|
24
|
+
} from '../tx/index.js';
|
|
19
25
|
import { AvmCircuitPublicInputs } from './avm_circuit_public_inputs.js';
|
|
20
26
|
import { serializeWithMessagePack } from './message_pack.js';
|
|
21
27
|
|
|
@@ -510,6 +516,8 @@ export class AvmExecutionHints {
|
|
|
510
516
|
constructor(
|
|
511
517
|
public readonly globalVariables: GlobalVariables,
|
|
512
518
|
public tx: AvmTxHint,
|
|
519
|
+
// Protocol contracts.
|
|
520
|
+
public protocolContracts: ProtocolContracts,
|
|
513
521
|
// Contract hints.
|
|
514
522
|
public readonly contractInstances: AvmContractInstanceHint[] = [],
|
|
515
523
|
public readonly contractClasses: AvmContractClassHint[] = [],
|
|
@@ -530,7 +538,7 @@ export class AvmExecutionHints {
|
|
|
530
538
|
) {}
|
|
531
539
|
|
|
532
540
|
static empty() {
|
|
533
|
-
return new AvmExecutionHints(GlobalVariables.empty(), AvmTxHint.empty());
|
|
541
|
+
return new AvmExecutionHints(GlobalVariables.empty(), AvmTxHint.empty(), ProtocolContracts.empty());
|
|
534
542
|
}
|
|
535
543
|
|
|
536
544
|
static get schema() {
|
|
@@ -538,6 +546,7 @@ export class AvmExecutionHints {
|
|
|
538
546
|
.object({
|
|
539
547
|
globalVariables: GlobalVariables.schema,
|
|
540
548
|
tx: AvmTxHint.schema,
|
|
549
|
+
protocolContracts: ProtocolContracts.schema,
|
|
541
550
|
contractInstances: AvmContractInstanceHint.schema.array(),
|
|
542
551
|
contractClasses: AvmContractClassHint.schema.array(),
|
|
543
552
|
bytecodeCommitments: AvmBytecodeCommitmentHint.schema.array(),
|
|
@@ -558,6 +567,7 @@ export class AvmExecutionHints {
|
|
|
558
567
|
({
|
|
559
568
|
globalVariables,
|
|
560
569
|
tx,
|
|
570
|
+
protocolContracts,
|
|
561
571
|
contractInstances,
|
|
562
572
|
contractClasses,
|
|
563
573
|
bytecodeCommitments,
|
|
@@ -577,6 +587,7 @@ export class AvmExecutionHints {
|
|
|
577
587
|
new AvmExecutionHints(
|
|
578
588
|
globalVariables,
|
|
579
589
|
tx,
|
|
590
|
+
protocolContracts,
|
|
580
591
|
contractInstances,
|
|
581
592
|
contractClasses,
|
|
582
593
|
bytecodeCommitments,
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
4
4
|
MAX_NOTE_HASHES_PER_TX,
|
|
5
5
|
MAX_NULLIFIERS_PER_TX,
|
|
6
|
-
MAX_PUBLIC_LOGS_PER_TX,
|
|
7
6
|
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
8
7
|
} from '@aztec/constants';
|
|
9
8
|
import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
|
|
@@ -23,7 +22,8 @@ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
|
23
22
|
import { inspect } from 'util';
|
|
24
23
|
import { z } from 'zod';
|
|
25
24
|
|
|
26
|
-
import {
|
|
25
|
+
import { countAccumulatedItems } from '../kernel/utils/index.js';
|
|
26
|
+
import { FlatPublicLogs } from '../logs/public_log.js';
|
|
27
27
|
import { ScopedL2ToL1Message } from '../messaging/l2_to_l1_message.js';
|
|
28
28
|
import { PublicDataWrite } from './public_data_write.js';
|
|
29
29
|
|
|
@@ -44,7 +44,7 @@ export class AvmAccumulatedData {
|
|
|
44
44
|
/**
|
|
45
45
|
* The public logs emitted from the AVM execution.
|
|
46
46
|
*/
|
|
47
|
-
public publicLogs:
|
|
47
|
+
public publicLogs: FlatPublicLogs,
|
|
48
48
|
/**
|
|
49
49
|
* The public data writes made in the AVM execution.
|
|
50
50
|
*/
|
|
@@ -57,7 +57,7 @@ export class AvmAccumulatedData {
|
|
|
57
57
|
noteHashes: schemas.Fr.array().min(MAX_NOTE_HASHES_PER_TX).max(MAX_NOTE_HASHES_PER_TX),
|
|
58
58
|
nullifiers: schemas.Fr.array().min(MAX_NULLIFIERS_PER_TX).max(MAX_NULLIFIERS_PER_TX),
|
|
59
59
|
l2ToL1Msgs: ScopedL2ToL1Message.schema.array().min(MAX_L2_TO_L1_MSGS_PER_TX).max(MAX_L2_TO_L1_MSGS_PER_TX),
|
|
60
|
-
publicLogs:
|
|
60
|
+
publicLogs: FlatPublicLogs.schema,
|
|
61
61
|
publicDataWrites: PublicDataWrite.schema
|
|
62
62
|
.array()
|
|
63
63
|
.min(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX)
|
|
@@ -69,7 +69,7 @@ export class AvmAccumulatedData {
|
|
|
69
69
|
assertLength(noteHashes, MAX_NOTE_HASHES_PER_TX),
|
|
70
70
|
assertLength(nullifiers, MAX_NULLIFIERS_PER_TX),
|
|
71
71
|
assertLength(l2ToL1Msgs, MAX_L2_TO_L1_MSGS_PER_TX),
|
|
72
|
-
|
|
72
|
+
publicLogs,
|
|
73
73
|
assertLength(publicDataWrites, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX),
|
|
74
74
|
),
|
|
75
75
|
);
|
|
@@ -80,7 +80,7 @@ export class AvmAccumulatedData {
|
|
|
80
80
|
arraySerializedSizeOfNonEmpty(this.noteHashes) +
|
|
81
81
|
arraySerializedSizeOfNonEmpty(this.nullifiers) +
|
|
82
82
|
arraySerializedSizeOfNonEmpty(this.l2ToL1Msgs) +
|
|
83
|
-
|
|
83
|
+
this.publicLogs.toBuffer().length +
|
|
84
84
|
arraySerializedSizeOfNonEmpty(this.publicDataWrites)
|
|
85
85
|
);
|
|
86
86
|
}
|
|
@@ -91,7 +91,7 @@ export class AvmAccumulatedData {
|
|
|
91
91
|
reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
|
|
92
92
|
reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
|
|
93
93
|
reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
|
|
94
|
-
reader.
|
|
94
|
+
reader.readObject(FlatPublicLogs),
|
|
95
95
|
reader.readArray(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataWrite),
|
|
96
96
|
);
|
|
97
97
|
}
|
|
@@ -116,7 +116,7 @@ export class AvmAccumulatedData {
|
|
|
116
116
|
reader.readFieldArray(MAX_NOTE_HASHES_PER_TX),
|
|
117
117
|
reader.readFieldArray(MAX_NULLIFIERS_PER_TX),
|
|
118
118
|
reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
|
|
119
|
-
reader.
|
|
119
|
+
reader.readObject(FlatPublicLogs),
|
|
120
120
|
reader.readArray(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataWrite),
|
|
121
121
|
);
|
|
122
122
|
}
|
|
@@ -144,7 +144,7 @@ export class AvmAccumulatedData {
|
|
|
144
144
|
makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.zero),
|
|
145
145
|
makeTuple(MAX_NULLIFIERS_PER_TX, Fr.zero),
|
|
146
146
|
makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message.empty),
|
|
147
|
-
|
|
147
|
+
FlatPublicLogs.empty(),
|
|
148
148
|
makeTuple(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataWrite.empty),
|
|
149
149
|
);
|
|
150
150
|
}
|
|
@@ -154,7 +154,7 @@ export class AvmAccumulatedData {
|
|
|
154
154
|
this.noteHashes.every(x => x.isZero()) &&
|
|
155
155
|
this.nullifiers.every(x => x.isZero()) &&
|
|
156
156
|
this.l2ToL1Msgs.every(x => x.isEmpty()) &&
|
|
157
|
-
this.publicLogs.
|
|
157
|
+
this.publicLogs.isEmpty() &&
|
|
158
158
|
this.publicDataWrites.every(x => x.isEmpty())
|
|
159
159
|
);
|
|
160
160
|
}
|
|
@@ -175,6 +175,7 @@ export class AvmAccumulatedData {
|
|
|
175
175
|
.map(h => inspect(h))
|
|
176
176
|
.join(', ')}],
|
|
177
177
|
publicLogs: [${this.publicLogs
|
|
178
|
+
.toLogs()
|
|
178
179
|
.filter(x => !x.isEmpty())
|
|
179
180
|
.map(h => inspect(h))
|
|
180
181
|
.join(', ')}],
|
|
@@ -184,6 +185,15 @@ export class AvmAccumulatedData {
|
|
|
184
185
|
.join(', ')}],
|
|
185
186
|
}`;
|
|
186
187
|
}
|
|
188
|
+
|
|
189
|
+
getArrayLengths() {
|
|
190
|
+
return new AvmAccumulatedDataArrayLengths(
|
|
191
|
+
countAccumulatedItems(this.noteHashes),
|
|
192
|
+
countAccumulatedItems(this.nullifiers),
|
|
193
|
+
countAccumulatedItems(this.l2ToL1Msgs),
|
|
194
|
+
countAccumulatedItems(this.publicDataWrites),
|
|
195
|
+
);
|
|
196
|
+
}
|
|
187
197
|
}
|
|
188
198
|
|
|
189
199
|
/**
|
|
@@ -203,10 +213,6 @@ export class AvmAccumulatedDataArrayLengths {
|
|
|
203
213
|
* Number of L2 to L1 messages
|
|
204
214
|
*/
|
|
205
215
|
public l2ToL1Msgs: number,
|
|
206
|
-
/**
|
|
207
|
-
* Number of public logs
|
|
208
|
-
*/
|
|
209
|
-
public publicLogs: number,
|
|
210
216
|
/**
|
|
211
217
|
* Number of public data writes
|
|
212
218
|
*/
|
|
@@ -219,12 +225,11 @@ export class AvmAccumulatedDataArrayLengths {
|
|
|
219
225
|
noteHashes: z.number(),
|
|
220
226
|
nullifiers: z.number(),
|
|
221
227
|
l2ToL1Msgs: z.number(),
|
|
222
|
-
publicLogs: z.number(),
|
|
223
228
|
publicDataWrites: z.number(),
|
|
224
229
|
})
|
|
225
230
|
.transform(
|
|
226
|
-
({ noteHashes, nullifiers, l2ToL1Msgs,
|
|
227
|
-
new AvmAccumulatedDataArrayLengths(noteHashes, nullifiers, l2ToL1Msgs,
|
|
231
|
+
({ noteHashes, nullifiers, l2ToL1Msgs, publicDataWrites }) =>
|
|
232
|
+
new AvmAccumulatedDataArrayLengths(noteHashes, nullifiers, l2ToL1Msgs, publicDataWrites),
|
|
228
233
|
);
|
|
229
234
|
}
|
|
230
235
|
|
|
@@ -235,12 +240,11 @@ export class AvmAccumulatedDataArrayLengths {
|
|
|
235
240
|
reader.readNumber(),
|
|
236
241
|
reader.readNumber(),
|
|
237
242
|
reader.readNumber(),
|
|
238
|
-
reader.readNumber(),
|
|
239
243
|
);
|
|
240
244
|
}
|
|
241
245
|
|
|
242
246
|
toBuffer() {
|
|
243
|
-
return serializeToBuffer(this.noteHashes, this.nullifiers, this.l2ToL1Msgs, this.
|
|
247
|
+
return serializeToBuffer(this.noteHashes, this.nullifiers, this.l2ToL1Msgs, this.publicDataWrites);
|
|
244
248
|
}
|
|
245
249
|
|
|
246
250
|
static fromFields(fields: Fr[] | FieldReader) {
|
|
@@ -250,22 +254,15 @@ export class AvmAccumulatedDataArrayLengths {
|
|
|
250
254
|
Number(reader.readField()),
|
|
251
255
|
Number(reader.readField()),
|
|
252
256
|
Number(reader.readField()),
|
|
253
|
-
Number(reader.readField()),
|
|
254
257
|
);
|
|
255
258
|
}
|
|
256
259
|
|
|
257
260
|
toFields(): Fr[] {
|
|
258
|
-
return [
|
|
259
|
-
new Fr(this.noteHashes),
|
|
260
|
-
new Fr(this.nullifiers),
|
|
261
|
-
new Fr(this.l2ToL1Msgs),
|
|
262
|
-
new Fr(this.publicLogs),
|
|
263
|
-
new Fr(this.publicDataWrites),
|
|
264
|
-
];
|
|
261
|
+
return [new Fr(this.noteHashes), new Fr(this.nullifiers), new Fr(this.l2ToL1Msgs), new Fr(this.publicDataWrites)];
|
|
265
262
|
}
|
|
266
263
|
|
|
267
264
|
static empty() {
|
|
268
|
-
return new AvmAccumulatedDataArrayLengths(0, 0, 0, 0
|
|
265
|
+
return new AvmAccumulatedDataArrayLengths(0, 0, 0, 0);
|
|
269
266
|
}
|
|
270
267
|
|
|
271
268
|
[inspect.custom]() {
|
|
@@ -273,7 +270,6 @@ export class AvmAccumulatedDataArrayLengths {
|
|
|
273
270
|
noteHashes: ${this.noteHashes},
|
|
274
271
|
nullifiers: ${this.nullifiers},
|
|
275
272
|
l2ToL1Msgs: ${this.l2ToL1Msgs},
|
|
276
|
-
publicLogs: ${this.publicLogs},
|
|
277
273
|
publicDataWrites: ${this.publicDataWrites},
|
|
278
274
|
}`;
|
|
279
275
|
}
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
} from '../kernel/private_to_avm_accumulated_data.js';
|
|
17
17
|
import { PublicCallRequest, PublicCallRequestArrayLengths } from '../kernel/public_call_request.js';
|
|
18
18
|
import { GlobalVariables } from '../tx/global_variables.js';
|
|
19
|
+
import { ProtocolContracts } from '../tx/protocol_contracts.js';
|
|
19
20
|
import { TreeSnapshots } from '../tx/tree_snapshots.js';
|
|
20
21
|
import { AvmAccumulatedData, AvmAccumulatedDataArrayLengths } from './avm_accumulated_data.js';
|
|
21
22
|
import { serializeWithMessagePack } from './message_pack.js';
|
|
@@ -27,11 +28,13 @@ export class AvmCircuitPublicInputs {
|
|
|
27
28
|
///////////////////////////////////
|
|
28
29
|
// Inputs.
|
|
29
30
|
public globalVariables: GlobalVariables,
|
|
31
|
+
public protocolContracts: ProtocolContracts,
|
|
30
32
|
public startTreeSnapshots: TreeSnapshots,
|
|
31
33
|
public startGasUsed: Gas,
|
|
32
34
|
public gasSettings: GasSettings,
|
|
33
35
|
public effectiveGasFees: GasFees,
|
|
34
36
|
public feePayer: AztecAddress,
|
|
37
|
+
public proverId: Fr,
|
|
35
38
|
public publicCallRequestArrayLengths: PublicCallRequestArrayLengths,
|
|
36
39
|
public publicSetupCallRequests: Tuple<PublicCallRequest, typeof MAX_ENQUEUED_CALLS_PER_TX>,
|
|
37
40
|
public publicAppLogicCallRequests: Tuple<PublicCallRequest, typeof MAX_ENQUEUED_CALLS_PER_TX>,
|
|
@@ -54,11 +57,13 @@ export class AvmCircuitPublicInputs {
|
|
|
54
57
|
return z
|
|
55
58
|
.object({
|
|
56
59
|
globalVariables: GlobalVariables.schema,
|
|
60
|
+
protocolContracts: ProtocolContracts.schema,
|
|
57
61
|
startTreeSnapshots: TreeSnapshots.schema,
|
|
58
62
|
startGasUsed: Gas.schema,
|
|
59
63
|
gasSettings: GasSettings.schema,
|
|
60
64
|
effectiveGasFees: GasFees.schema,
|
|
61
65
|
feePayer: AztecAddress.schema,
|
|
66
|
+
proverId: Fr.schema,
|
|
62
67
|
publicCallRequestArrayLengths: PublicCallRequestArrayLengths.schema,
|
|
63
68
|
publicSetupCallRequests: PublicCallRequest.schema.array().max(MAX_ENQUEUED_CALLS_PER_TX),
|
|
64
69
|
publicAppLogicCallRequests: PublicCallRequest.schema.array().max(MAX_ENQUEUED_CALLS_PER_TX),
|
|
@@ -77,11 +82,13 @@ export class AvmCircuitPublicInputs {
|
|
|
77
82
|
.transform(
|
|
78
83
|
({
|
|
79
84
|
globalVariables,
|
|
85
|
+
protocolContracts,
|
|
80
86
|
startTreeSnapshots,
|
|
81
87
|
startGasUsed,
|
|
82
88
|
gasSettings,
|
|
83
89
|
effectiveGasFees,
|
|
84
90
|
feePayer,
|
|
91
|
+
proverId,
|
|
85
92
|
publicCallRequestArrayLengths,
|
|
86
93
|
publicSetupCallRequests,
|
|
87
94
|
publicAppLogicCallRequests,
|
|
@@ -99,11 +106,13 @@ export class AvmCircuitPublicInputs {
|
|
|
99
106
|
}) =>
|
|
100
107
|
new AvmCircuitPublicInputs(
|
|
101
108
|
globalVariables,
|
|
109
|
+
protocolContracts,
|
|
102
110
|
startTreeSnapshots,
|
|
103
111
|
startGasUsed,
|
|
104
112
|
gasSettings,
|
|
105
113
|
effectiveGasFees,
|
|
106
114
|
feePayer,
|
|
115
|
+
proverId,
|
|
107
116
|
publicCallRequestArrayLengths,
|
|
108
117
|
assertLength(publicSetupCallRequests, MAX_ENQUEUED_CALLS_PER_TX),
|
|
109
118
|
assertLength(publicAppLogicCallRequests, MAX_ENQUEUED_CALLS_PER_TX),
|
|
@@ -126,11 +135,13 @@ export class AvmCircuitPublicInputs {
|
|
|
126
135
|
const reader = BufferReader.asReader(buffer);
|
|
127
136
|
return new AvmCircuitPublicInputs(
|
|
128
137
|
reader.readObject(GlobalVariables),
|
|
138
|
+
reader.readObject(ProtocolContracts),
|
|
129
139
|
reader.readObject(TreeSnapshots),
|
|
130
140
|
reader.readObject(Gas),
|
|
131
141
|
reader.readObject(GasSettings),
|
|
132
142
|
reader.readObject(GasFees),
|
|
133
143
|
reader.readObject(AztecAddress),
|
|
144
|
+
reader.readObject(Fr),
|
|
134
145
|
reader.readObject(PublicCallRequestArrayLengths),
|
|
135
146
|
reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
|
|
136
147
|
reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
|
|
@@ -151,11 +162,13 @@ export class AvmCircuitPublicInputs {
|
|
|
151
162
|
toBuffer() {
|
|
152
163
|
return serializeToBuffer(
|
|
153
164
|
this.globalVariables,
|
|
165
|
+
this.protocolContracts,
|
|
154
166
|
this.startTreeSnapshots,
|
|
155
167
|
this.startGasUsed,
|
|
156
168
|
this.gasSettings,
|
|
157
169
|
this.effectiveGasFees,
|
|
158
170
|
this.feePayer,
|
|
171
|
+
this.proverId,
|
|
159
172
|
this.publicCallRequestArrayLengths,
|
|
160
173
|
this.publicSetupCallRequests,
|
|
161
174
|
this.publicAppLogicCallRequests,
|
|
@@ -185,11 +198,13 @@ export class AvmCircuitPublicInputs {
|
|
|
185
198
|
const reader = FieldReader.asReader(fields);
|
|
186
199
|
return new AvmCircuitPublicInputs(
|
|
187
200
|
GlobalVariables.fromFields(reader),
|
|
201
|
+
ProtocolContracts.fromFields(reader),
|
|
188
202
|
TreeSnapshots.fromFields(reader),
|
|
189
203
|
Gas.fromFields(reader),
|
|
190
204
|
GasSettings.fromFields(reader),
|
|
191
205
|
GasFees.fromFields(reader),
|
|
192
206
|
AztecAddress.fromFields(reader),
|
|
207
|
+
reader.readField(),
|
|
193
208
|
PublicCallRequestArrayLengths.fromFields(reader),
|
|
194
209
|
reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
|
|
195
210
|
reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
|
|
@@ -210,11 +225,13 @@ export class AvmCircuitPublicInputs {
|
|
|
210
225
|
toFields() {
|
|
211
226
|
return [
|
|
212
227
|
...this.globalVariables.toFields(),
|
|
228
|
+
...this.protocolContracts.toFields(),
|
|
213
229
|
...this.startTreeSnapshots.toFields(),
|
|
214
230
|
...this.startGasUsed.toFields(),
|
|
215
231
|
...this.gasSettings.toFields(),
|
|
216
232
|
...this.effectiveGasFees.toFields(),
|
|
217
233
|
this.feePayer,
|
|
234
|
+
this.proverId,
|
|
218
235
|
...this.publicCallRequestArrayLengths.toFields(),
|
|
219
236
|
...this.publicSetupCallRequests.map(request => request.toFields()),
|
|
220
237
|
...this.publicAppLogicCallRequests.map(request => request.toFields()),
|
|
@@ -235,11 +252,13 @@ export class AvmCircuitPublicInputs {
|
|
|
235
252
|
static empty() {
|
|
236
253
|
return new AvmCircuitPublicInputs(
|
|
237
254
|
GlobalVariables.empty(),
|
|
255
|
+
ProtocolContracts.empty(),
|
|
238
256
|
TreeSnapshots.empty(),
|
|
239
257
|
Gas.empty(),
|
|
240
258
|
GasSettings.empty(),
|
|
241
259
|
GasFees.empty(),
|
|
242
260
|
AztecAddress.zero(),
|
|
261
|
+
Fr.zero(),
|
|
243
262
|
PublicCallRequestArrayLengths.empty(),
|
|
244
263
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest.empty),
|
|
245
264
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest.empty),
|
|
@@ -264,11 +283,13 @@ export class AvmCircuitPublicInputs {
|
|
|
264
283
|
[inspect.custom]() {
|
|
265
284
|
return `AvmCircuitPublicInputs {
|
|
266
285
|
globalVariables: ${inspect(this.globalVariables)},
|
|
286
|
+
protocolContracts: ${inspect(this.protocolContracts)},
|
|
267
287
|
startTreeSnapshots: ${inspect(this.startTreeSnapshots)},
|
|
268
288
|
startGasUsed: ${inspect(this.startGasUsed)},
|
|
269
289
|
gasSettings: ${inspect(this.gasSettings)},
|
|
270
290
|
effectiveGasFees: ${inspect(this.effectiveGasFees)},
|
|
271
291
|
feePayer: ${inspect(this.feePayer)},
|
|
292
|
+
proverId: ${inspect(this.proverId)},
|
|
272
293
|
publicCallRequestArrayLengths: ${inspect(this.publicCallRequestArrayLengths)},
|
|
273
294
|
publicSetupCallRequests: [${this.publicSetupCallRequests
|
|
274
295
|
.filter(x => !x.isEmpty())
|
package/src/avm/index.ts
CHANGED
|
@@ -3,10 +3,10 @@ export * from './avm_accumulated_data.js';
|
|
|
3
3
|
export * from './avm_circuit_public_inputs.js';
|
|
4
4
|
export * from './revert_code.js';
|
|
5
5
|
export * from './public_data_write.js';
|
|
6
|
-
export * from './public_data_hint.js';
|
|
7
6
|
export * from './public_data_update_request.js';
|
|
8
7
|
export * from './contract_storage_update_request.js';
|
|
9
8
|
export * from './contract_storage_read.js';
|
|
10
9
|
export * from './public_inner_call_request.js';
|
|
11
10
|
export * from './public_call_stack_item_compressed.js';
|
|
12
11
|
export * from './avm_proving_request.js';
|
|
12
|
+
export * from './message_pack.js';
|
package/src/avm/message_pack.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
2
2
|
import { Fq, Fr, Point } from '@aztec/foundation/fields';
|
|
3
3
|
|
|
4
4
|
import { strict as assert } from 'assert';
|
|
5
|
-
import { Encoder, addExtension } from 'msgpackr';
|
|
5
|
+
import { Decoder, Encoder, addExtension } from 'msgpackr';
|
|
6
6
|
|
|
7
7
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
8
8
|
|
|
@@ -18,6 +18,16 @@ export function serializeWithMessagePack(obj: any): Buffer {
|
|
|
18
18
|
return encoder.encode(obj);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
export function deserializeFromMessagePack<T>(buffer: Buffer): T {
|
|
22
|
+
setUpMessagePackExtensions();
|
|
23
|
+
const decoder = new Decoder({
|
|
24
|
+
useRecords: false,
|
|
25
|
+
int64AsType: 'bigint',
|
|
26
|
+
largeBigIntToString: true,
|
|
27
|
+
});
|
|
28
|
+
return decoder.decode(buffer);
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
let messagePackWasSetUp = false;
|
|
22
32
|
function setUpMessagePackExtensions() {
|
|
23
33
|
if (messagePackWasSetUp) {
|
|
@@ -27,15 +37,24 @@ function setUpMessagePackExtensions() {
|
|
|
27
37
|
addExtension({
|
|
28
38
|
Class: Fr,
|
|
29
39
|
write: (fr: Fr) => fr.toBuffer(),
|
|
40
|
+
read: (data: Buffer) => Fr.fromBuffer(data),
|
|
30
41
|
});
|
|
31
42
|
addExtension({
|
|
32
43
|
Class: Fq,
|
|
33
44
|
write: (fq: Fq) => fq.toBuffer(),
|
|
45
|
+
read: (data: Buffer) => Fq.fromBuffer(data),
|
|
34
46
|
});
|
|
35
47
|
// AztecAddress is a class that has a field in TS, but is itself a field in C++.
|
|
36
48
|
addExtension({
|
|
37
49
|
Class: AztecAddress,
|
|
38
50
|
write: (addr: AztecAddress) => addr.toField(),
|
|
51
|
+
read: (data: Fr | Buffer) => {
|
|
52
|
+
// If C++ sent it as Fr, wrap it. If as buffer, construct from buffer.
|
|
53
|
+
if (data instanceof Fr) {
|
|
54
|
+
return new AztecAddress(data);
|
|
55
|
+
}
|
|
56
|
+
return new AztecAddress(Fr.fromBuffer(data));
|
|
57
|
+
},
|
|
39
58
|
});
|
|
40
59
|
// Affine points are a mess, we do our best.
|
|
41
60
|
addExtension({
|
|
@@ -45,11 +64,16 @@ function setUpMessagePackExtensions() {
|
|
|
45
64
|
// TODO: should these be Frs?
|
|
46
65
|
return { x: new Fq(p.x.toBigInt()), y: new Fq(p.y.toBigInt()) };
|
|
47
66
|
},
|
|
67
|
+
read: (data: { x: Fq; y: Fq }) => {
|
|
68
|
+
// Convert Fq back to Fr for Point constructor
|
|
69
|
+
return new Point(new Fr(data.x.toBigInt()), new Fr(data.y.toBigInt()), false);
|
|
70
|
+
},
|
|
48
71
|
});
|
|
49
72
|
// EthAddress is a class that has a buffer in TS, but is itself just a field in C++.
|
|
50
73
|
addExtension({
|
|
51
74
|
Class: EthAddress,
|
|
52
75
|
write: (addr: EthAddress) => addr.toField().toBuffer(),
|
|
76
|
+
read: (data: Buffer) => EthAddress.fromField(Fr.fromBuffer(data)),
|
|
53
77
|
});
|
|
54
78
|
messagePackWasSetUp = true;
|
|
55
79
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { recoverAddress } from '@aztec/foundation/crypto';
|
|
2
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
|
|
4
|
+
import { ConsensusPayload } from '../p2p/consensus_payload.js';
|
|
5
|
+
import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
|
|
6
|
+
import type { L2Block } from './l2_block.js';
|
|
7
|
+
import type { CommitteeAttestation } from './proposal/committee_attestation.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Status indicating how the attestation address was determined
|
|
11
|
+
*/
|
|
12
|
+
export type AttestationStatus = 'recovered-from-signature' | 'provided-as-address' | 'invalid-signature' | 'empty';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Information about an attestation extracted from a published block
|
|
16
|
+
*/
|
|
17
|
+
export type AttestationInfo =
|
|
18
|
+
| {
|
|
19
|
+
/** The validator's address, undefined if signature recovery failed or empty */
|
|
20
|
+
address?: undefined;
|
|
21
|
+
/** How the attestation address was determined */
|
|
22
|
+
status: Extract<AttestationStatus, 'invalid-signature' | 'empty'>;
|
|
23
|
+
}
|
|
24
|
+
| {
|
|
25
|
+
/** The validator's address */
|
|
26
|
+
address: EthAddress;
|
|
27
|
+
/** How the attestation address was determined */
|
|
28
|
+
status: Extract<AttestationStatus, 'provided-as-address' | 'recovered-from-signature'>;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Extracts attestation information from a published L2 block.
|
|
33
|
+
* Returns info for each attestation, preserving array indices.
|
|
34
|
+
*/
|
|
35
|
+
export function getAttestationInfoFromPublishedL2Block(block: {
|
|
36
|
+
attestations: CommitteeAttestation[];
|
|
37
|
+
block: L2Block;
|
|
38
|
+
}): AttestationInfo[] {
|
|
39
|
+
const payload = ConsensusPayload.fromBlock(block.block);
|
|
40
|
+
const hashedPayload = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
|
|
41
|
+
|
|
42
|
+
return block.attestations.map(attestation => {
|
|
43
|
+
// If signature is empty, check if we have an address directly
|
|
44
|
+
if (attestation.signature.isEmpty()) {
|
|
45
|
+
if (attestation.address.isZero()) {
|
|
46
|
+
// No signature and no address - empty
|
|
47
|
+
return { status: 'empty' as const };
|
|
48
|
+
}
|
|
49
|
+
// Address provided without signature
|
|
50
|
+
return { address: attestation.address, status: 'provided-as-address' as const };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Try to recover address from signature
|
|
54
|
+
try {
|
|
55
|
+
const recoveredAddress = recoverAddress(hashedPayload, attestation.signature);
|
|
56
|
+
return { address: recoveredAddress, status: 'recovered-from-signature' as const };
|
|
57
|
+
} catch {
|
|
58
|
+
// Signature present but recovery failed
|
|
59
|
+
return { status: 'invalid-signature' as const };
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|