@aztec/stdlib 3.0.0-canary.a9708bd → 3.0.0-manual.20251030
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/abi/abi.d.ts +8 -8
- package/dest/abi/abi.js +1 -1
- package/dest/abi/contract_artifact.js +3 -0
- package/dest/abi/event_metadata_definition.d.ts +8 -0
- package/dest/abi/event_metadata_definition.d.ts.map +1 -0
- package/dest/abi/event_metadata_definition.js +1 -0
- package/dest/abi/function_call.d.ts +7 -2
- package/dest/abi/function_call.d.ts.map +1 -1
- package/dest/abi/function_call.js +6 -2
- package/dest/abi/index.d.ts +1 -0
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +1 -0
- package/dest/avm/avm.d.ts +132 -73
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +10 -6
- package/dest/avm/avm_accumulated_data.d.ts +10 -21
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_accumulated_data.js +19 -22
- package/dest/avm/avm_circuit_public_inputs.d.ts +30 -13
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.js +17 -6
- package/dest/avm/avm_proving_request.d.ts +96 -48
- package/dest/avm/avm_proving_request.d.ts.map +1 -1
- package/dest/avm/index.d.ts +1 -1
- package/dest/avm/index.d.ts.map +1 -1
- package/dest/avm/index.js +1 -1
- package/dest/avm/message_pack.d.ts +1 -0
- package/dest/avm/message_pack.d.ts.map +1 -1
- package/dest/avm/message_pack.js +28 -5
- package/dest/block/attestation_info.d.ts +30 -0
- package/dest/block/attestation_info.d.ts.map +1 -0
- package/dest/block/attestation_info.js +39 -0
- package/dest/block/body.d.ts +4 -1
- package/dest/block/body.d.ts.map +1 -1
- package/dest/block/body.js +17 -15
- package/dest/block/in_block.d.ts +5 -5
- package/dest/block/in_block.d.ts.map +1 -1
- package/dest/block/index.d.ts +4 -0
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +4 -0
- package/dest/block/l2_block.d.ts +21 -13
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +33 -10
- package/dest/block/l2_block_code_to_purge.d.ts +3 -14
- package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
- package/dest/block/l2_block_code_to_purge.js +23 -13
- package/dest/block/l2_block_header.d.ts +100 -0
- package/dest/block/l2_block_header.d.ts.map +1 -0
- package/dest/block/l2_block_header.js +146 -0
- package/dest/block/l2_block_info.d.ts +41 -0
- package/dest/block/l2_block_info.d.ts.map +1 -0
- package/dest/block/l2_block_info.js +40 -0
- package/dest/block/l2_block_source.d.ts +35 -433
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +0 -28
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +1 -1
- package/dest/block/proposal/attestations_and_signers.d.ts +48 -0
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -0
- package/dest/block/proposal/attestations_and_signers.js +99 -0
- package/dest/block/proposal/index.d.ts +1 -0
- package/dest/block/proposal/index.d.ts.map +1 -1
- package/dest/block/proposal/index.js +1 -0
- package/dest/block/published_l2_block.d.ts +27 -5
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +20 -7
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +3 -4
- package/dest/block/validate_block_result.d.ts +222 -0
- package/dest/block/validate_block_result.d.ts.map +1 -0
- package/dest/block/validate_block_result.js +83 -0
- package/dest/checkpoint/checkpoint_body.d.ts +4 -0
- package/dest/checkpoint/checkpoint_body.d.ts.map +1 -0
- package/dest/checkpoint/checkpoint_body.js +9 -0
- package/dest/checkpoint/index.d.ts +2 -0
- package/dest/checkpoint/index.d.ts.map +1 -0
- package/dest/checkpoint/index.js +1 -0
- package/dest/config/node-rpc-config.d.ts +2 -0
- package/dest/config/node-rpc-config.d.ts.map +1 -1
- package/dest/config/node-rpc-config.js +6 -0
- package/dest/contract/contract_address.d.ts +1 -1
- package/dest/contract/contract_address.js +1 -1
- package/dest/contract/contract_class_metadata.d.ts +8 -0
- package/dest/contract/contract_class_metadata.d.ts.map +1 -0
- package/dest/contract/contract_class_metadata.js +1 -0
- package/dest/contract/contract_instance.d.ts +9 -8
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +1 -2
- package/dest/contract/contract_metadata.d.ts +7 -0
- package/dest/contract/contract_metadata.d.ts.map +1 -0
- package/dest/contract/contract_metadata.js +1 -0
- package/dest/contract/index.d.ts +2 -0
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +2 -0
- package/dest/contract/interfaces/contract_class.d.ts +4 -4
- package/dest/contract/interfaces/contract_instance.d.ts +2 -2
- package/dest/epoch-helpers/index.d.ts +8 -2
- package/dest/epoch-helpers/index.d.ts.map +1 -1
- package/dest/epoch-helpers/index.js +9 -0
- package/dest/fees/transaction_fee.d.ts.map +1 -1
- package/dest/fees/transaction_fee.js +3 -0
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +18 -0
- package/dest/file-store/interface.d.ts +8 -2
- package/dest/file-store/interface.d.ts.map +1 -1
- package/dest/file-store/s3.d.ts +26 -0
- package/dest/file-store/s3.d.ts.map +1 -0
- package/dest/file-store/s3.js +252 -0
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +0 -3
- package/dest/interfaces/archiver.d.ts +43 -0
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +20 -4
- package/dest/interfaces/aztec-node-admin.d.ts +87 -40
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +7 -1
- package/dest/interfaces/aztec-node.d.ts +35 -2
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +8 -1
- package/dest/interfaces/block-builder.d.ts +7 -8
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/client.d.ts +0 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/client.js +0 -1
- package/dest/interfaces/configs.d.ts +10 -0
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +3 -1
- package/dest/interfaces/epoch-prover.d.ts +29 -12
- package/dest/interfaces/epoch-prover.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +5 -0
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +2 -0
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +2 -1
- package/dest/interfaces/private_kernel_prover.d.ts +2 -2
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/proving-job.d.ts +349 -200
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +131 -113
- package/dest/interfaces/server.d.ts +1 -0
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +1 -0
- package/dest/interfaces/server_circuit_prover.d.ts +34 -34
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/slasher.d.ts +4 -0
- package/dest/interfaces/slasher.d.ts.map +1 -1
- package/dest/interfaces/slasher.js +1 -0
- package/dest/interfaces/tx_provider.d.ts +1 -1
- package/dest/interfaces/tx_provider.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +163 -0
- package/dest/interfaces/validator.d.ts.map +1 -0
- package/dest/interfaces/validator.js +18 -0
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -2
- package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/hints/nullifier_read_request_hints.d.ts +4 -3
- package/dest/kernel/hints/nullifier_read_request_hints.d.ts.map +1 -1
- package/dest/kernel/nullifier.d.ts +2 -2
- package/dest/kernel/nullifier.d.ts.map +1 -1
- package/dest/kernel/nullifier.js +11 -11
- package/dest/kernel/private_call_data.d.ts +4 -24
- package/dest/kernel/private_call_data.d.ts.map +1 -1
- package/dest/kernel/private_call_data.js +4 -16
- package/dest/kernel/private_circuit_public_inputs.d.ts +5 -5
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +7 -7
- package/dest/kernel/private_context_inputs.d.ts +2 -2
- package/dest/kernel/private_context_inputs.d.ts.map +1 -1
- package/dest/kernel/private_context_inputs.js +4 -4
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +3 -3
- package/dest/kernel/private_kernel_data.js +2 -2
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +5 -4
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.js +7 -6
- package/dest/kernel/private_kernel_prover_output.d.ts +4 -4
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +1 -0
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -1
- package/dest/kernel/private_to_public_accumulated_data.d.ts +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +2 -0
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -0
- package/dest/kernel/private_to_rollup_accumulated_data.d.ts +1 -1
- package/dest/keys/derivation.d.ts +0 -2
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +3 -24
- package/dest/logs/contract_class_log.d.ts +1 -1
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +1 -3
- package/dest/logs/debug_log.d.ts +13 -0
- package/dest/logs/debug_log.d.ts.map +1 -0
- package/dest/logs/debug_log.js +26 -0
- package/dest/logs/directional_app_tagging_secret.d.ts +40 -0
- package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -0
- package/dest/logs/directional_app_tagging_secret.js +63 -0
- package/dest/logs/index.d.ts +3 -1
- package/dest/logs/index.d.ts.map +1 -1
- package/dest/logs/index.js +3 -1
- package/dest/logs/log_with_tx_data.d.ts +9 -12
- package/dest/logs/log_with_tx_data.d.ts.map +1 -1
- package/dest/logs/log_with_tx_data.js +18 -23
- package/dest/logs/pre_tag.d.ts +34 -0
- package/dest/logs/pre_tag.d.ts.map +1 -0
- package/dest/logs/pre_tag.js +7 -0
- package/dest/logs/public_log.d.ts +23 -10
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +117 -42
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +2 -4
- package/dest/messaging/inbox_leaf.d.ts +2 -0
- package/dest/messaging/inbox_leaf.d.ts.map +1 -1
- package/dest/messaging/inbox_leaf.js +3 -0
- package/dest/messaging/l2_to_l1_membership.d.ts +1 -1
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
- package/dest/messaging/l2_to_l1_membership.js +16 -18
- package/dest/noir/index.d.ts +11 -0
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/note/index.d.ts +1 -1
- package/dest/note/index.d.ts.map +1 -1
- package/dest/note/index.js +1 -1
- package/dest/note/notes_filter.d.ts +0 -5
- package/dest/note/notes_filter.d.ts.map +1 -1
- package/dest/note/notes_filter.js +0 -3
- package/dest/note/unique_note.d.ts +43 -0
- package/dest/note/unique_note.d.ts.map +1 -0
- package/dest/note/{extended_note.js → unique_note.js} +9 -48
- package/dest/p2p/block_attestation.d.ts +45 -9
- package/dest/p2p/block_attestation.d.ts.map +1 -1
- package/dest/p2p/block_attestation.js +37 -15
- package/dest/p2p/block_proposal.d.ts +7 -9
- package/dest/p2p/block_proposal.d.ts.map +1 -1
- package/dest/p2p/block_proposal.js +13 -14
- package/dest/p2p/consensus_payload.d.ts +35 -6
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.js +21 -8
- package/dest/p2p/gossipable.d.ts +6 -16
- package/dest/p2p/gossipable.d.ts.map +1 -1
- package/dest/p2p/gossipable.js +9 -21
- package/dest/p2p/signature_utils.d.ts +2 -1
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +1 -0
- package/dest/p2p/topic_type.d.ts +4 -8
- package/dest/p2p/topic_type.d.ts.map +1 -1
- package/dest/p2p/topic_type.js +14 -8
- package/dest/parity/index.d.ts +2 -3
- package/dest/parity/index.d.ts.map +1 -1
- package/dest/parity/index.js +2 -3
- package/dest/parity/{base_parity_inputs.d.ts → parity_base_private_inputs.d.ts} +7 -7
- package/dest/parity/parity_base_private_inputs.d.ts.map +1 -0
- package/dest/parity/{base_parity_inputs.js → parity_base_private_inputs.js} +10 -6
- package/dest/parity/parity_root_private_inputs.d.ts +39 -0
- package/dest/parity/parity_root_private_inputs.d.ts.map +1 -0
- package/dest/parity/{root_parity_inputs.js → parity_root_private_inputs.js} +12 -13
- package/dest/proofs/chonk_proof.d.ts +28 -0
- package/dest/proofs/chonk_proof.d.ts.map +1 -0
- package/dest/proofs/chonk_proof.js +101 -0
- package/dest/proofs/index.d.ts +2 -1
- package/dest/proofs/index.d.ts.map +1 -1
- package/dest/proofs/index.js +2 -1
- package/dest/proofs/proof_data.d.ts +21 -0
- package/dest/proofs/proof_data.d.ts.map +1 -0
- package/dest/proofs/proof_data.js +22 -0
- package/dest/proofs/proving_request_type.d.ts +17 -13
- package/dest/proofs/proving_request_type.d.ts.map +1 -1
- package/dest/proofs/proving_request_type.js +17 -12
- package/dest/rollup/avm_proof_data.d.ts +2 -12
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/avm_proof_data.js +0 -24
- package/dest/rollup/base_rollup_hints.d.ts +17 -17
- package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
- package/dest/rollup/base_rollup_hints.js +26 -26
- package/dest/rollup/block_constant_data.d.ts +24 -10
- package/dest/rollup/block_constant_data.d.ts.map +1 -1
- package/dest/rollup/block_constant_data.js +18 -10
- package/dest/rollup/{block_merge_rollup.d.ts → block_merge_rollup_private_inputs.d.ts} +17 -10
- package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/{block_merge_rollup.js → block_merge_rollup_private_inputs.js} +14 -13
- package/dest/rollup/block_rollup_public_inputs.d.ts +124 -0
- package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/block_rollup_public_inputs.js +85 -0
- package/dest/rollup/block_root_rollup_private_inputs.d.ts +236 -0
- package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/block_root_rollup_private_inputs.js +257 -0
- package/dest/rollup/checkpoint_constant_data.d.ts +54 -0
- package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -0
- package/dest/rollup/checkpoint_constant_data.js +55 -0
- package/dest/{tx/proposed_block_header.d.ts → rollup/checkpoint_header.d.ts} +12 -11
- package/dest/rollup/checkpoint_header.d.ts.map +1 -0
- package/dest/{tx/proposed_block_header.js → rollup/checkpoint_header.js} +14 -8
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +30 -0
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_merge_rollup_private_inputs.js +37 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +106 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_rollup_public_inputs.js +108 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +123 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/checkpoint_root_rollup_private_inputs.js +178 -0
- package/dest/rollup/epoch_constant_data.d.ts +23 -6
- package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
- package/dest/rollup/epoch_constant_data.js +25 -12
- package/dest/rollup/index.d.ts +17 -16
- package/dest/rollup/index.d.ts.map +1 -1
- package/dest/rollup/index.js +17 -16
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +21 -0
- package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/private_tx_base_rollup_private_inputs.js +42 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +21 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -0
- package/dest/rollup/public_chonk_verifier_private_inputs.js +43 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +20 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -0
- package/dest/rollup/public_chonk_verifier_public_inputs.js +42 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +23 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/public_tx_base_rollup_private_inputs.js +46 -0
- package/dest/rollup/root_rollup_private_inputs.d.ts +67 -0
- package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/root_rollup_private_inputs.js +69 -0
- package/dest/rollup/root_rollup_public_inputs.d.ts +46 -0
- package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/root_rollup_public_inputs.js +71 -0
- package/dest/rollup/{state_diff_hints.d.ts → tree_snapshot_diff_hints.d.ts} +22 -38
- package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -0
- package/dest/rollup/tree_snapshot_diff_hints.js +75 -0
- package/dest/rollup/{merge_rollup.d.ts → tx_merge_rollup_private_inputs.d.ts} +11 -10
- package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -0
- package/dest/rollup/{merge_rollup.js → tx_merge_rollup_private_inputs.js} +14 -13
- package/dest/rollup/{base_or_merge_rollup_public_inputs.d.ts → tx_rollup_public_inputs.d.ts} +14 -14
- package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -0
- package/dest/rollup/{base_or_merge_rollup_public_inputs.js → tx_rollup_public_inputs.js} +15 -15
- package/dest/slashing/types.d.ts +1 -0
- package/dest/slashing/types.d.ts.map +1 -1
- package/dest/slashing/types.js +22 -0
- package/dest/snapshots/download.d.ts.map +1 -1
- package/dest/snapshots/download.js +58 -2
- package/dest/snapshots/upload.d.ts.map +1 -1
- package/dest/snapshots/upload.js +1 -0
- package/dest/stats/stats.d.ts +3 -3
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +43 -75
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +149 -171
- package/dest/tests/mocks.d.ts +16 -10
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +55 -33
- package/dest/trees/index.d.ts +0 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +0 -1
- package/dest/trees/merkle_tree_id.d.ts +4 -4
- package/dest/trees/nullifier_membership_witness.d.ts +3 -3
- package/dest/tx/block_header.d.ts +12 -13
- package/dest/tx/block_header.d.ts.map +1 -1
- package/dest/tx/block_header.js +16 -21
- package/dest/tx/content_commitment.d.ts +1 -0
- package/dest/tx/content_commitment.d.ts.map +1 -1
- package/dest/tx/content_commitment.js +3 -0
- package/dest/tx/global_variables.d.ts.map +1 -1
- package/dest/tx/global_variables.js +0 -1
- package/dest/tx/index.d.ts +2 -1
- package/dest/tx/index.d.ts.map +1 -1
- package/dest/tx/index.js +2 -1
- package/dest/tx/indexed_tx_effect.d.ts +3 -3
- package/dest/tx/partial_state_reference.d.ts +1 -0
- package/dest/tx/partial_state_reference.d.ts.map +1 -1
- package/dest/tx/partial_state_reference.js +3 -0
- package/dest/tx/private_execution_result.d.ts +7 -2
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/private_execution_result.js +10 -6
- package/dest/tx/private_tx_constant_data.d.ts +60 -0
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -0
- package/dest/tx/private_tx_constant_data.js +69 -0
- package/dest/tx/processed_tx.d.ts +2 -3
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +3 -8
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +0 -2
- package/dest/tx/protocol_contracts.d.ts +29 -0
- package/dest/tx/protocol_contracts.d.ts.map +1 -0
- package/dest/tx/protocol_contracts.js +49 -0
- package/dest/tx/proven_tx.d.ts +7 -7
- package/dest/tx/proven_tx.d.ts.map +1 -1
- package/dest/tx/proven_tx.js +8 -8
- package/dest/tx/simulated_tx.d.ts +3 -3
- package/dest/tx/simulated_tx.js +2 -2
- package/dest/tx/state_reference.d.ts +1 -0
- package/dest/tx/state_reference.d.ts.map +1 -1
- package/dest/tx/state_reference.js +4 -1
- package/dest/tx/tx.d.ts +9 -12
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +21 -22
- package/dest/tx/tx_constant_data.d.ts +6 -38
- package/dest/tx/tx_constant_data.d.ts.map +1 -1
- package/dest/tx/tx_constant_data.js +11 -20
- package/dest/tx/tx_effect.d.ts +3 -36
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +63 -202
- package/dest/tx/validator/error_texts.d.ts +1 -1
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/update-checker/update-checker.d.ts +1 -1
- package/dest/update-checker/update-checker.d.ts.map +1 -1
- package/dest/update-checker/update-checker.js +1 -1
- package/dest/validators/schemas.d.ts +42 -4
- package/dest/validators/schemas.d.ts.map +1 -1
- package/dest/validators/schemas.js +5 -4
- package/dest/validators/types.d.ts +8 -10
- package/dest/validators/types.d.ts.map +1 -1
- package/dest/versioning/versioning.d.ts +2 -2
- package/dest/versioning/versioning.d.ts.map +1 -1
- package/dest/versioning/versioning.js +18 -13
- package/dest/world-state/index.d.ts +2 -0
- package/dest/world-state/index.d.ts.map +1 -0
- package/dest/world-state/index.js +1 -0
- package/dest/world-state/world_state_revision.d.ts +22 -0
- package/dest/world-state/world_state_revision.d.ts.map +1 -0
- package/dest/world-state/world_state_revision.js +21 -0
- package/dest/zkpassport/index.d.ts +17 -11
- package/dest/zkpassport/index.d.ts.map +1 -1
- package/dest/zkpassport/index.js +21 -15
- package/package.json +15 -11
- package/src/abi/abi.ts +1 -1
- package/src/abi/contract_artifact.ts +3 -0
- package/src/abi/event_metadata_definition.ts +8 -0
- package/src/abi/function_call.ts +5 -1
- package/src/abi/index.ts +1 -0
- package/src/avm/avm.ts +15 -7
- package/src/avm/avm_accumulated_data.ts +25 -29
- package/src/avm/avm_circuit_public_inputs.ts +21 -0
- package/src/avm/index.ts +1 -1
- package/src/avm/message_pack.ts +25 -1
- package/src/block/attestation_info.ts +62 -0
- package/src/block/body.ts +25 -23
- package/src/block/index.ts +4 -0
- package/src/block/l2_block.ts +39 -19
- package/src/block/l2_block_code_to_purge.ts +30 -31
- package/src/block/l2_block_header.ts +232 -0
- package/src/block/l2_block_info.ts +63 -0
- package/src/block/l2_block_source.ts +38 -56
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +1 -1
- package/src/block/proposal/attestations_and_signers.ts +121 -0
- package/src/block/proposal/index.ts +1 -0
- package/src/block/published_l2_block.ts +37 -15
- package/src/block/test/l2_tips_store_test_suite.ts +7 -7
- package/src/block/validate_block_result.ts +122 -0
- package/src/checkpoint/checkpoint_body.ts +10 -0
- package/src/checkpoint/index.ts +1 -0
- package/src/config/node-rpc-config.ts +9 -0
- package/src/contract/contract_address.ts +1 -1
- package/src/contract/contract_class_metadata.ts +8 -0
- package/src/contract/contract_instance.ts +11 -10
- package/src/contract/contract_metadata.ts +7 -0
- package/src/contract/index.ts +2 -0
- package/src/contract/interfaces/contract_class.ts +1 -1
- package/src/epoch-helpers/index.ts +24 -2
- package/src/fees/transaction_fee.ts +11 -0
- package/src/file-store/factory.ts +15 -0
- package/src/file-store/interface.ts +8 -2
- package/src/file-store/s3.ts +254 -0
- package/src/hash/hash.ts +0 -4
- package/src/interfaces/archiver.ts +49 -4
- package/src/interfaces/aztec-node-admin.ts +17 -1
- package/src/interfaces/aztec-node.ts +53 -2
- package/src/interfaces/block-builder.ts +11 -12
- package/src/interfaces/client.ts +0 -1
- package/src/interfaces/configs.ts +6 -0
- package/src/interfaces/epoch-prover.ts +38 -14
- package/src/interfaces/merkle_tree_operations.ts +6 -0
- package/src/interfaces/p2p.ts +4 -0
- package/src/interfaces/private_kernel_prover.ts +2 -2
- package/src/interfaces/proving-job.ts +218 -134
- package/src/interfaces/server.ts +1 -0
- package/src/interfaces/server_circuit_prover.ts +89 -61
- package/src/interfaces/slasher.ts +2 -0
- package/src/interfaces/tx_provider.ts +1 -0
- package/src/interfaces/validator.ts +95 -0
- package/src/kernel/hints/build_nullifier_read_request_hints.ts +3 -2
- package/src/kernel/hints/nullifier_read_request_hints.ts +3 -3
- package/src/kernel/nullifier.ts +8 -8
- package/src/kernel/private_call_data.ts +2 -21
- package/src/kernel/private_circuit_public_inputs.ts +5 -5
- package/src/kernel/private_context_inputs.ts +2 -2
- package/src/kernel/private_kernel_circuit_public_inputs.ts +4 -4
- package/src/kernel/private_kernel_data.ts +2 -2
- package/src/kernel/private_kernel_init_circuit_private_inputs.ts +5 -4
- package/src/kernel/private_kernel_prover_output.ts +4 -4
- package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +8 -2
- package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +9 -0
- package/src/keys/derivation.ts +3 -29
- package/src/logs/contract_class_log.ts +2 -3
- package/src/logs/debug_log.ts +32 -0
- package/src/logs/directional_app_tagging_secret.ts +77 -0
- package/src/logs/index.ts +3 -1
- package/src/logs/log_with_tx_data.ts +14 -24
- package/src/logs/pre_tag.ts +25 -0
- package/src/logs/public_log.ts +120 -58
- package/src/logs/shared_secret_derivation.ts +2 -4
- package/src/messaging/inbox_leaf.ts +5 -0
- package/src/messaging/l2_to_l1_membership.ts +20 -26
- package/src/noir/index.ts +11 -0
- package/src/note/index.ts +1 -1
- package/src/note/notes_filter.ts +0 -7
- package/src/note/{extended_note.ts → unique_note.ts} +14 -75
- package/src/p2p/block_attestation.ts +46 -15
- package/src/p2p/block_proposal.ts +15 -18
- package/src/p2p/consensus_payload.ts +30 -10
- package/src/p2p/gossipable.ts +10 -28
- package/src/p2p/signature_utils.ts +1 -0
- package/src/p2p/topic_type.ts +15 -8
- package/src/parity/index.ts +2 -3
- package/src/parity/{base_parity_inputs.ts → parity_base_private_inputs.ts} +13 -11
- package/src/parity/{root_parity_inputs.ts → parity_root_private_inputs.ts} +16 -18
- package/src/proofs/chonk_proof.ts +118 -0
- package/src/proofs/index.ts +2 -1
- package/src/proofs/proof_data.ts +36 -0
- package/src/proofs/proving_request_type.ts +14 -10
- package/src/rollup/avm_proof_data.ts +2 -31
- package/src/rollup/base_rollup_hints.ts +22 -22
- package/src/rollup/block_constant_data.ts +16 -6
- package/src/rollup/{block_merge_rollup.ts → block_merge_rollup_private_inputs.ts} +15 -11
- package/src/rollup/block_rollup_public_inputs.ts +123 -0
- package/src/rollup/block_root_rollup_private_inputs.ts +312 -0
- package/src/rollup/checkpoint_constant_data.ts +84 -0
- package/src/{tx/proposed_block_header.ts → rollup/checkpoint_header.ts} +40 -15
- package/src/rollup/checkpoint_merge_rollup_private_inputs.ts +49 -0
- package/src/rollup/{block_root_or_block_merge_public_inputs.ts → checkpoint_rollup_public_inputs.ts} +30 -52
- package/src/rollup/checkpoint_root_rollup_private_inputs.ts +218 -0
- package/src/rollup/epoch_constant_data.ts +28 -10
- package/src/rollup/index.ts +17 -16
- package/src/rollup/private_tx_base_rollup_private_inputs.ts +53 -0
- package/src/rollup/public_chonk_verifier_private_inputs.ts +54 -0
- package/src/rollup/public_chonk_verifier_public_inputs.ts +53 -0
- package/src/rollup/public_tx_base_rollup_private_inputs.ts +57 -0
- package/src/rollup/root_rollup_private_inputs.ts +90 -0
- package/src/rollup/root_rollup_public_inputs.ts +99 -0
- package/src/rollup/{state_diff_hints.ts → tree_snapshot_diff_hints.ts} +26 -41
- package/src/rollup/{merge_rollup.ts → tx_merge_rollup_private_inputs.ts} +13 -9
- package/src/rollup/{base_or_merge_rollup_public_inputs.ts → tx_rollup_public_inputs.ts} +13 -13
- package/src/slashing/types.ts +23 -0
- package/src/snapshots/download.ts +66 -2
- package/src/snapshots/upload.ts +1 -0
- package/src/stats/stats.ts +21 -15
- package/src/tests/factories.ts +226 -283
- package/src/tests/mocks.ts +90 -60
- package/src/trees/index.ts +0 -1
- package/src/tx/block_header.ts +17 -32
- package/src/tx/content_commitment.ts +4 -0
- package/src/tx/global_variables.ts +0 -1
- package/src/tx/index.ts +2 -1
- package/src/tx/partial_state_reference.ts +8 -0
- package/src/tx/private_execution_result.ts +9 -3
- package/src/tx/private_tx_constant_data.ts +94 -0
- package/src/tx/processed_tx.ts +5 -11
- package/src/tx/profiling.ts +0 -2
- package/src/tx/protocol_contracts.ts +70 -0
- package/src/tx/proven_tx.ts +6 -6
- package/src/tx/simulated_tx.ts +2 -2
- package/src/tx/state_reference.ts +5 -1
- package/src/tx/tx.ts +21 -22
- package/src/tx/tx_constant_data.ts +8 -21
- package/src/tx/tx_effect.ts +64 -213
- package/src/tx/validator/error_texts.ts +1 -1
- package/src/update-checker/update-checker.ts +1 -1
- package/src/validators/schemas.ts +6 -4
- package/src/validators/types.ts +9 -10
- package/src/versioning/versioning.ts +20 -15
- package/src/world-state/index.ts +1 -0
- package/src/world-state/world_state_revision.ts +21 -0
- package/src/zkpassport/index.ts +42 -30
- package/dest/avm/public_data_hint.d.ts +0 -16
- package/dest/avm/public_data_hint.d.ts.map +0 -1
- package/dest/avm/public_data_hint.js +0 -27
- package/dest/interfaces/pxe.d.ts +0 -329
- package/dest/interfaces/pxe.d.ts.map +0 -1
- package/dest/interfaces/pxe.js +0 -100
- package/dest/logs/indexed_tagging_secret.d.ts +0 -28
- package/dest/logs/indexed_tagging_secret.d.ts.map +0 -1
- package/dest/logs/indexed_tagging_secret.js +0 -50
- package/dest/note/extended_note.d.ts +0 -111
- package/dest/note/extended_note.d.ts.map +0 -1
- package/dest/parity/base_parity_inputs.d.ts.map +0 -1
- package/dest/parity/root_parity_input.d.ts +0 -52
- package/dest/parity/root_parity_input.d.ts.map +0 -1
- package/dest/parity/root_parity_input.js +0 -50
- package/dest/parity/root_parity_inputs.d.ts +0 -37
- package/dest/parity/root_parity_inputs.d.ts.map +0 -1
- package/dest/proofs/client_ivc_proof.d.ts +0 -18
- package/dest/proofs/client_ivc_proof.d.ts.map +0 -1
- package/dest/proofs/client_ivc_proof.js +0 -41
- package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts.map +0 -1
- package/dest/rollup/block_merge_rollup.d.ts.map +0 -1
- package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts +0 -134
- package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts.map +0 -1
- package/dest/rollup/block_root_or_block_merge_public_inputs.js +0 -125
- package/dest/rollup/block_root_rollup.d.ts +0 -283
- package/dest/rollup/block_root_rollup.d.ts.map +0 -1
- package/dest/rollup/block_root_rollup.js +0 -306
- package/dest/rollup/empty_block_root_rollup_inputs.d.ts +0 -51
- package/dest/rollup/empty_block_root_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/empty_block_root_rollup_inputs.js +0 -65
- package/dest/rollup/merge_rollup.d.ts.map +0 -1
- package/dest/rollup/padding_block_root_rollup_inputs.d.ts +0 -20
- package/dest/rollup/padding_block_root_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/padding_block_root_rollup_inputs.js +0 -39
- package/dest/rollup/previous_rollup_block_data.d.ts +0 -47
- package/dest/rollup/previous_rollup_block_data.d.ts.map +0 -1
- package/dest/rollup/previous_rollup_block_data.js +0 -37
- package/dest/rollup/previous_rollup_data.d.ts +0 -47
- package/dest/rollup/previous_rollup_data.d.ts.map +0 -1
- package/dest/rollup/previous_rollup_data.js +0 -37
- package/dest/rollup/private_base_rollup_inputs.d.ts +0 -21
- package/dest/rollup/private_base_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/private_base_rollup_inputs.js +0 -44
- package/dest/rollup/private_tube_data.d.ts +0 -15
- package/dest/rollup/private_tube_data.d.ts.map +0 -1
- package/dest/rollup/private_tube_data.js +0 -25
- package/dest/rollup/public_base_rollup_inputs.d.ts +0 -23
- package/dest/rollup/public_base_rollup_inputs.d.ts.map +0 -1
- package/dest/rollup/public_base_rollup_inputs.js +0 -48
- package/dest/rollup/public_tube_data.d.ts +0 -15
- package/dest/rollup/public_tube_data.d.ts.map +0 -1
- package/dest/rollup/public_tube_data.js +0 -25
- package/dest/rollup/root_rollup.d.ts +0 -106
- package/dest/rollup/root_rollup.d.ts.map +0 -1
- package/dest/rollup/root_rollup.js +0 -147
- package/dest/rollup/state_diff_hints.d.ts.map +0 -1
- package/dest/rollup/state_diff_hints.js +0 -85
- package/dest/rollup/tube_inputs.d.ts +0 -43
- package/dest/rollup/tube_inputs.d.ts.map +0 -1
- package/dest/rollup/tube_inputs.js +0 -63
- package/dest/trees/protocol_contract_leaf.d.ts +0 -84
- package/dest/trees/protocol_contract_leaf.d.ts.map +0 -1
- package/dest/trees/protocol_contract_leaf.js +0 -100
- package/dest/tx/proposed_block_header.d.ts.map +0 -1
- package/src/avm/public_data_hint.ts +0 -38
- package/src/interfaces/pxe.ts +0 -532
- package/src/logs/indexed_tagging_secret.ts +0 -48
- package/src/parity/root_parity_input.ts +0 -71
- package/src/proofs/client_ivc_proof.ts +0 -51
- package/src/rollup/block_root_rollup.ts +0 -380
- package/src/rollup/empty_block_root_rollup_inputs.ts +0 -80
- package/src/rollup/padding_block_root_rollup_inputs.ts +0 -47
- package/src/rollup/previous_rollup_block_data.ts +0 -48
- package/src/rollup/previous_rollup_data.ts +0 -48
- package/src/rollup/private_base_rollup_inputs.ts +0 -53
- package/src/rollup/private_tube_data.ts +0 -35
- package/src/rollup/public_base_rollup_inputs.ts +0 -59
- package/src/rollup/public_tube_data.ts +0 -35
- package/src/rollup/root_rollup.ts +0 -195
- package/src/rollup/tube_inputs.ts +0 -77
- package/src/trees/protocol_contract_leaf.ts +0 -128
|
@@ -5,7 +5,7 @@ import { serializeWitness } from '@aztec/noir-noirc_abi';
|
|
|
5
5
|
import { Encoder } from 'msgpackr';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type { ChonkProof } from '../proofs/chonk_proof.js';
|
|
9
9
|
import type { PrivateKernelCircuitPublicInputs } from './private_kernel_circuit_public_inputs.js';
|
|
10
10
|
import type { PrivateKernelTailCircuitPublicInputs } from './private_kernel_tail_circuit_public_inputs.js';
|
|
11
11
|
|
|
@@ -45,10 +45,10 @@ export interface PrivateKernelExecutionProofOutput<
|
|
|
45
45
|
/** The public inputs used by the proof generation process. */
|
|
46
46
|
publicInputs: PublicInputsType;
|
|
47
47
|
/** The private IVC proof optimized for user devices. It will be consumed by an Aztec prover,
|
|
48
|
-
* which recursively verifies it through the "
|
|
49
|
-
|
|
48
|
+
* which recursively verifies it through the "private tx base" or the "public chonk verifier" circuit.*/
|
|
49
|
+
chonkProof: ChonkProof;
|
|
50
50
|
/**
|
|
51
|
-
* The trace the
|
|
51
|
+
* The trace the chonkProof corresponds to.
|
|
52
52
|
* A trace of app circuits interleaved with private kernel circuits.
|
|
53
53
|
* If simulate is ran with profiling mode, also includes gate counts.
|
|
54
54
|
*/
|
|
@@ -170,10 +170,10 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
170
170
|
throw new Error('Private tail public inputs is not for rollup circuit.');
|
|
171
171
|
}
|
|
172
172
|
const constants = new TxConstantData(
|
|
173
|
-
this.constants.
|
|
173
|
+
this.constants.anchorBlockHeader,
|
|
174
174
|
this.constants.txContext,
|
|
175
175
|
this.constants.vkTreeRoot,
|
|
176
|
-
this.constants.
|
|
176
|
+
this.constants.protocolContractsHash,
|
|
177
177
|
);
|
|
178
178
|
return new PrivateToRollupKernelCircuitPublicInputs(
|
|
179
179
|
constants,
|
|
@@ -184,6 +184,12 @@ export class PrivateKernelTailCircuitPublicInputs {
|
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
publicInputs(): PrivateToPublicKernelCircuitPublicInputs | PrivateToRollupKernelCircuitPublicInputs {
|
|
188
|
+
return this.forPublic
|
|
189
|
+
? this.toPrivateToPublicKernelCircuitPublicInputs()
|
|
190
|
+
: this.toPrivateToRollupKernelCircuitPublicInputs();
|
|
191
|
+
}
|
|
192
|
+
|
|
187
193
|
numberOfPublicCallRequests() {
|
|
188
194
|
return (
|
|
189
195
|
this.numberOfNonRevertiblePublicCallRequests() +
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GeneratorIndex, PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
|
|
3
3
|
import type { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { bufferSchemaFor } from '@aztec/foundation/schemas';
|
|
4
5
|
import { BufferReader, bigintToUInt64BE, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
|
|
5
6
|
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
6
7
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
@@ -93,4 +94,12 @@ export class PrivateToPublicKernelCircuitPublicInputs {
|
|
|
93
94
|
hash() {
|
|
94
95
|
return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.PUBLIC_TX_HASH);
|
|
95
96
|
}
|
|
97
|
+
|
|
98
|
+
toJSON() {
|
|
99
|
+
return this.toBuffer();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static get schema() {
|
|
103
|
+
return bufferSchemaFor(PrivateToPublicKernelCircuitPublicInputs);
|
|
104
|
+
}
|
|
96
105
|
}
|
package/src/keys/derivation.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { GeneratorIndex } from '@aztec/constants';
|
|
2
|
-
import { Grumpkin,
|
|
2
|
+
import { Grumpkin, poseidon2HashWithSeparator, sha512ToGrumpkinScalar } from '@aztec/foundation/crypto';
|
|
3
3
|
import { Fq, Fr, GrumpkinScalar } from '@aztec/foundation/fields';
|
|
4
4
|
|
|
5
5
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
6
|
-
import type { CompleteAddress } from '../contract/complete_address.js';
|
|
7
6
|
import type { KeyPrefix } from './key_types.js';
|
|
8
7
|
import { PublicKeys } from './public_keys.js';
|
|
9
8
|
import { getKeyGenerator } from './utils.js';
|
|
@@ -51,7 +50,7 @@ export async function computeAddress(publicKeys: PublicKeys, partialAddress: Fr)
|
|
|
51
50
|
// 2. addressPoint = (preaddress * G) + ivpk_m
|
|
52
51
|
// 3. address = addressPoint.x
|
|
53
52
|
const preaddress = await computePreaddress(await publicKeys.hash(), partialAddress);
|
|
54
|
-
const address = await
|
|
53
|
+
const address = await Grumpkin.add(
|
|
55
54
|
await derivePublicKeyFromSecretKey(new Fq(preaddress.toBigInt())),
|
|
56
55
|
publicKeys.masterIncomingViewingPublicKey,
|
|
57
56
|
);
|
|
@@ -82,8 +81,7 @@ export async function computeAddressSecret(preaddress: Fr, ivsk: Fq) {
|
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
export function derivePublicKeyFromSecretKey(secretKey: Fq) {
|
|
85
|
-
|
|
86
|
-
return curve.mul(curve.generator(), secretKey);
|
|
84
|
+
return Grumpkin.mul(Grumpkin.generator, secretKey);
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
/**
|
|
@@ -121,27 +119,3 @@ export async function deriveKeys(secretKey: Fr) {
|
|
|
121
119
|
publicKeys,
|
|
122
120
|
};
|
|
123
121
|
}
|
|
124
|
-
|
|
125
|
-
// Returns shared tagging secret computed with Diffie-Hellman key exchange.
|
|
126
|
-
async function computeTaggingSecretPoint(knownAddress: CompleteAddress, ivsk: Fq, externalAddress: AztecAddress) {
|
|
127
|
-
const knownPreaddress = await computePreaddress(await knownAddress.publicKeys.hash(), knownAddress.partialAddress);
|
|
128
|
-
// TODO: #8970 - Computation of address point from x coordinate might fail
|
|
129
|
-
const externalAddressPoint = await externalAddress.toAddressPoint();
|
|
130
|
-
const curve = new Grumpkin();
|
|
131
|
-
// Given A (known complete address) -> B (external address) and h == preaddress
|
|
132
|
-
// Compute shared secret as S = (h_A + ivsk_A) * Addr_Point_B
|
|
133
|
-
|
|
134
|
-
// Beware! h_a + ivsk_a (also known as the address secret) can lead to an address point with a negative y-coordinate, since there's two possible candidates
|
|
135
|
-
// computeAddressSecret takes care of selecting the one that leads to a positive y-coordinate, which is the only valid address point
|
|
136
|
-
return curve.mul(externalAddressPoint, await computeAddressSecret(knownPreaddress, ivsk));
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export async function computeAppTaggingSecret(
|
|
140
|
-
knownAddress: CompleteAddress,
|
|
141
|
-
ivsk: Fq,
|
|
142
|
-
externalAddress: AztecAddress,
|
|
143
|
-
app: AztecAddress,
|
|
144
|
-
) {
|
|
145
|
-
const taggingSecretPoint = await computeTaggingSecretPoint(knownAddress, ivsk, externalAddress);
|
|
146
|
-
return poseidon2Hash([taggingSecretPoint.x, taggingSecretPoint.y, app]);
|
|
147
|
-
}
|
|
@@ -133,12 +133,11 @@ export class ContractClassLog {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
toBlobFields(): Fr[] {
|
|
136
|
-
return [
|
|
136
|
+
return [this.contractAddress.toField()].concat(this.getEmittedFields());
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
static fromBlobFields(fields: Fr[] | FieldReader) {
|
|
139
|
+
static fromBlobFields(emittedLength: number, fields: Fr[] | FieldReader) {
|
|
140
140
|
const reader = FieldReader.asReader(fields);
|
|
141
|
-
const emittedLength = reader.readU32();
|
|
142
141
|
const contractAddress = reader.readObject(AztecAddress);
|
|
143
142
|
const emittedFields = reader.readFieldArray(emittedLength);
|
|
144
143
|
return new ContractClassLog(
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { type LogLevel, LogLevels } from '@aztec/foundation/log';
|
|
3
|
+
import { type ZodFor, schemas } from '@aztec/foundation/schemas';
|
|
4
|
+
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
|
|
7
|
+
import { AztecAddress } from '../aztec-address/index.js';
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Represents a debug log emitted by public bytecode.
|
|
11
|
+
*/
|
|
12
|
+
export class DebugLog {
|
|
13
|
+
constructor(
|
|
14
|
+
public contractAddress: AztecAddress,
|
|
15
|
+
public level: LogLevel,
|
|
16
|
+
public message: string,
|
|
17
|
+
public fields: Fr[],
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
static get schema(): ZodFor<DebugLog> {
|
|
21
|
+
return z
|
|
22
|
+
.object({
|
|
23
|
+
contractAddress: AztecAddress.schema,
|
|
24
|
+
level: z.enum(LogLevels),
|
|
25
|
+
message: z.string(),
|
|
26
|
+
fields: z.array(schemas.Fr),
|
|
27
|
+
})
|
|
28
|
+
.transform(
|
|
29
|
+
({ contractAddress, level, message, fields }) => new DebugLog(contractAddress, level, message, fields),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Grumpkin, poseidon2Hash } from '@aztec/foundation/crypto';
|
|
2
|
+
import { type Fq, Fr, type Point } from '@aztec/foundation/fields';
|
|
3
|
+
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
import type { AztecAddress } from '../aztec-address/index.js';
|
|
7
|
+
import type { CompleteAddress } from '../contract/complete_address.js';
|
|
8
|
+
import { computeAddressSecret, computePreaddress } from '../keys/derivation.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Directional application tagging secret used for log tagging.
|
|
12
|
+
*
|
|
13
|
+
* "Directional" because the derived secret is bound to the recipient
|
|
14
|
+
* address: A→B differs from B→A even with the same participants and app.
|
|
15
|
+
*
|
|
16
|
+
* Note: It's a bit unfortunate that this type resides in `stdlib` as the rest of the tagging functionality resides
|
|
17
|
+
* in `pxe/src/tagging`. We need to use this type in `PreTag` that in turn is used by other types
|
|
18
|
+
* in stdlib hence there doesn't seem to be a good way around this.
|
|
19
|
+
*/
|
|
20
|
+
export class DirectionalAppTaggingSecret {
|
|
21
|
+
private constructor(public readonly value: Fr) {}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Derives shared tagging secret and from that, the app address and recipient derives the directional app tagging
|
|
25
|
+
* secret.
|
|
26
|
+
*
|
|
27
|
+
* @param localAddress - The complete address of entity A in the shared tagging secret derivation scheme
|
|
28
|
+
* @param localIvsk - The incoming viewing secret key of entity A
|
|
29
|
+
* @param externalAddress - The address of entity B in the shared tagging secret derivation scheme
|
|
30
|
+
* @param app - Contract address to silo the secret to
|
|
31
|
+
* @param recipient - Recipient of the log. Defines the "direction of the secret".
|
|
32
|
+
* @returns The secret that can be used along with an index to compute a tag to be included in a log.
|
|
33
|
+
*/
|
|
34
|
+
static async compute(
|
|
35
|
+
localAddress: CompleteAddress,
|
|
36
|
+
localIvsk: Fq,
|
|
37
|
+
externalAddress: AztecAddress,
|
|
38
|
+
app: AztecAddress,
|
|
39
|
+
recipient: AztecAddress,
|
|
40
|
+
): Promise<DirectionalAppTaggingSecret> {
|
|
41
|
+
const taggingSecretPoint = await computeSharedTaggingSecret(localAddress, localIvsk, externalAddress);
|
|
42
|
+
const appTaggingSecret = await poseidon2Hash([taggingSecretPoint.x, taggingSecretPoint.y, app]);
|
|
43
|
+
const directionalAppTaggingSecret = await poseidon2Hash([appTaggingSecret, recipient]);
|
|
44
|
+
|
|
45
|
+
return new DirectionalAppTaggingSecret(directionalAppTaggingSecret);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
toString(): string {
|
|
49
|
+
return this.value.toString();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static fromString(str: string): DirectionalAppTaggingSecret {
|
|
53
|
+
return new DirectionalAppTaggingSecret(Fr.fromString(str));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Returns shared tagging secret computed with Diffie-Hellman key exchange.
|
|
58
|
+
async function computeSharedTaggingSecret(
|
|
59
|
+
localAddress: CompleteAddress,
|
|
60
|
+
localIvsk: Fq,
|
|
61
|
+
externalAddress: AztecAddress,
|
|
62
|
+
): Promise<Point> {
|
|
63
|
+
const knownPreaddress = await computePreaddress(await localAddress.publicKeys.hash(), localAddress.partialAddress);
|
|
64
|
+
// TODO: #8970 - Computation of address point from x coordinate might fail
|
|
65
|
+
const externalAddressPoint = await externalAddress.toAddressPoint();
|
|
66
|
+
// Given A (local complete address) -> B (external address) and h == preaddress
|
|
67
|
+
// Compute shared secret as S = (h_A + local_ivsk_A) * Addr_Point_B
|
|
68
|
+
|
|
69
|
+
// Beware! h_a + local_ivsk_a (also known as the address secret) can lead to an address point with a negative
|
|
70
|
+
// y-coordinate, since there's two possible candidates computeAddressSecret takes care of selecting the one that
|
|
71
|
+
// leads to a positive y-coordinate, which is the only valid address point
|
|
72
|
+
return Grumpkin.mul(externalAddressPoint, await computeAddressSecret(knownPreaddress, localIvsk));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const DirectionalAppTaggingSecretSchema = z.object({
|
|
76
|
+
value: Fr.schema,
|
|
77
|
+
});
|
package/src/logs/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './log_with_tx_data.js';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './directional_app_tagging_secret.js';
|
|
3
|
+
export * from './pre_tag.js';
|
|
3
4
|
export * from './contract_class_log.js';
|
|
4
5
|
export * from './public_log.js';
|
|
5
6
|
export * from './private_log.js';
|
|
@@ -11,3 +12,4 @@ export * from './extended_contract_class_log.js';
|
|
|
11
12
|
export * from './shared_secret_derivation.js';
|
|
12
13
|
export * from './tx_scoped_l2_log.js';
|
|
13
14
|
export * from './message_context.js';
|
|
15
|
+
export * from './debug_log.js';
|
|
@@ -1,44 +1,34 @@
|
|
|
1
|
-
import { MAX_NOTE_HASHES_PER_TX, PRIVATE_LOG_CIPHERTEXT_LEN
|
|
1
|
+
import { MAX_NOTE_HASHES_PER_TX, PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
4
4
|
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
// This is used as a response for PXE's custom getPublicLogByTag oracle.
|
|
6
|
+
export class PublicLogWithTxData {
|
|
7
|
+
constructor(
|
|
8
|
+
public logPayload: Fr[],
|
|
9
|
+
public txHash: TxHash,
|
|
10
|
+
public uniqueNoteHashesInTx: Fr[],
|
|
11
|
+
public firstNullifierInTx: Fr,
|
|
12
|
+
) {}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// This is used as a response for PXE's custom getPrivateLogByTag oracle.
|
|
16
|
+
export class PrivateLogWithTxData {
|
|
8
17
|
constructor(
|
|
9
18
|
public logPayload: Fr[],
|
|
10
19
|
public txHash: TxHash,
|
|
11
20
|
public uniqueNoteHashesInTx: Fr[],
|
|
12
21
|
public firstNullifierInTx: Fr,
|
|
13
|
-
private maxLogContentLength: N,
|
|
14
22
|
) {}
|
|
15
23
|
|
|
16
24
|
toNoirSerialization(): (Fr | Fr[])[] {
|
|
17
25
|
return [
|
|
18
|
-
...toBoundedVecSerialization(this.logPayload,
|
|
26
|
+
...toBoundedVecSerialization(this.logPayload, PRIVATE_LOG_CIPHERTEXT_LEN),
|
|
19
27
|
this.txHash.hash,
|
|
20
28
|
...toBoundedVecSerialization(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
|
|
21
29
|
this.firstNullifierInTx,
|
|
22
30
|
];
|
|
23
31
|
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// This is used as a response for PXE's custom getPublicLogByTag oracle.
|
|
27
|
-
export class PublicLogWithTxData extends LogWithTxData<typeof PUBLIC_LOG_PLAINTEXT_LEN> {
|
|
28
|
-
constructor(logContent: Fr[], txHash: TxHash, uniqueNoteHashesInTx: Fr[], firstNullifierInTx: Fr) {
|
|
29
|
-
super(logContent, txHash, uniqueNoteHashesInTx, firstNullifierInTx, PUBLIC_LOG_PLAINTEXT_LEN);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static noirSerializationOfEmpty(): (Fr | Fr[])[] {
|
|
33
|
-
return new PublicLogWithTxData([], TxHash.zero(), [], new Fr(0)).toNoirSerialization();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// This is used as a response for PXE's custom getPrivateLogByTag oracle.
|
|
38
|
-
export class PrivateLogWithTxData extends LogWithTxData<typeof PRIVATE_LOG_CIPHERTEXT_LEN> {
|
|
39
|
-
constructor(logContent: Fr[], txHash: TxHash, uniqueNoteHashesInTx: Fr[], firstNullifierInTx: Fr) {
|
|
40
|
-
super(logContent, txHash, uniqueNoteHashesInTx, firstNullifierInTx, PRIVATE_LOG_CIPHERTEXT_LEN);
|
|
41
|
-
}
|
|
42
32
|
|
|
43
33
|
static noirSerializationOfEmpty(): (Fr | Fr[])[] {
|
|
44
34
|
return new PrivateLogWithTxData([], TxHash.zero(), [], new Fr(0)).toNoirSerialization();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { schemas } from '@aztec/foundation/schemas';
|
|
2
|
+
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
type DirectionalAppTaggingSecret,
|
|
7
|
+
DirectionalAppTaggingSecretSchema,
|
|
8
|
+
} from './directional_app_tagging_secret.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents a preimage of a private log tag (see `Tag` in `pxe/src/tagging`).
|
|
12
|
+
*
|
|
13
|
+
* Note: It's a bit unfortunate that this type resides in `stdlib` as the rest of the tagging functionality resides
|
|
14
|
+
* in `pxe/src/tagging`. But this type is used by other types in stdlib hence there doesn't seem to be a good way
|
|
15
|
+
* around this.
|
|
16
|
+
*/
|
|
17
|
+
export type PreTag = {
|
|
18
|
+
secret: DirectionalAppTaggingSecret;
|
|
19
|
+
index: number;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const PreTagSchema = z.object({
|
|
23
|
+
secret: DirectionalAppTaggingSecretSchema,
|
|
24
|
+
index: schemas.Integer,
|
|
25
|
+
});
|
package/src/logs/public_log.ts
CHANGED
|
@@ -1,28 +1,113 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
1
|
+
import { FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH, PUBLIC_LOG_HEADER_LENGTH } from '@aztec/constants';
|
|
2
|
+
import type { FieldsOf } from '@aztec/foundation/array';
|
|
4
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
4
|
import { type ZodFor, schemas } from '@aztec/foundation/schemas';
|
|
6
|
-
import {
|
|
7
|
-
BufferReader,
|
|
8
|
-
FieldReader,
|
|
9
|
-
type Tuple,
|
|
10
|
-
serializeToBuffer,
|
|
11
|
-
serializeToFields,
|
|
12
|
-
} from '@aztec/foundation/serialize';
|
|
5
|
+
import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
13
6
|
|
|
14
7
|
import { inspect } from 'util';
|
|
15
8
|
import { z } from 'zod';
|
|
16
9
|
|
|
17
10
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
function totalSizeInFields(logs: PublicLog[]) {
|
|
13
|
+
return logs.reduce((acc, log) => acc + log.sizeInFields(), 0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// This class represents logs in the same format as noir does, with a bounded maximum length.
|
|
17
|
+
export class FlatPublicLogs {
|
|
18
|
+
// We don't use tuple here because FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH is too large
|
|
19
|
+
constructor(
|
|
20
|
+
public length: number,
|
|
21
|
+
public payload: Fr[],
|
|
22
|
+
) {
|
|
23
|
+
if (payload.length !== FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH) {
|
|
24
|
+
throw new Error('Invalid payload given to FlatPublicLogs');
|
|
25
|
+
}
|
|
26
|
+
if (length > payload.length) {
|
|
27
|
+
throw new Error('Invalid length given to FlatPublicLogs');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private static fromUnpaddedPayload(payload: Fr[]) {
|
|
32
|
+
const length = payload.length;
|
|
33
|
+
return new FlatPublicLogs(length, [...payload, ...Array(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH - length).fill(Fr.ZERO)]);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// In blobs, the actual nonempty length of the logs is encoded with the prefix, and then we have the non-padded payload.
|
|
37
|
+
static fromBlobFields(length: number, fields: Fr[] | FieldReader) {
|
|
38
|
+
const reader = FieldReader.asReader(fields);
|
|
39
|
+
const payload = reader.readFieldArray(length);
|
|
40
|
+
return this.fromUnpaddedPayload(payload);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
toBlobFields() {
|
|
44
|
+
return this.payload.slice(0, this.length);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static fromLogs(logs: PublicLog[]) {
|
|
48
|
+
return this.fromUnpaddedPayload(logs.flatMap(log => log.toFields()));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
toLogs() {
|
|
52
|
+
const reader = FieldReader.asReader(this.payload);
|
|
53
|
+
const logs = [];
|
|
54
|
+
while (totalSizeInFields(logs) < this.length) {
|
|
55
|
+
logs.push(PublicLog.fromFields(reader));
|
|
56
|
+
}
|
|
57
|
+
if (totalSizeInFields(logs) !== this.length) {
|
|
58
|
+
throw new Error('Wrong length in FlatPublicLogs');
|
|
59
|
+
}
|
|
60
|
+
return logs;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static get schema(): ZodFor<FlatPublicLogs> {
|
|
64
|
+
return z
|
|
65
|
+
.object({
|
|
66
|
+
length: z.number(),
|
|
67
|
+
payload: z.array(schemas.Fr).min(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH).max(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH),
|
|
68
|
+
})
|
|
69
|
+
.transform(({ length, payload }) => new FlatPublicLogs(length, payload));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
toBuffer(): Buffer {
|
|
73
|
+
return serializeToBuffer(this.length, this.payload.slice(0, this.length));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
77
|
+
const reader = BufferReader.asReader(buffer);
|
|
78
|
+
const length = reader.readNumber();
|
|
79
|
+
return this.fromUnpaddedPayload(reader.readArray(length, Fr));
|
|
80
|
+
}
|
|
21
81
|
|
|
82
|
+
// ToFields and fromFields expect the noir style representation, with constant length payload.
|
|
83
|
+
toFields(): Fr[] {
|
|
84
|
+
return [new Fr(this.length), ...this.payload];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static fromFields(fields: Fr[] | FieldReader) {
|
|
88
|
+
const reader = FieldReader.asReader(fields);
|
|
89
|
+
// We need to do this because field reader returns tuples, which break the type system on these sizes.
|
|
90
|
+
const length = reader.readU32();
|
|
91
|
+
const payload: Fr[] = [];
|
|
92
|
+
for (let i = 0; i < FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH; ++i) {
|
|
93
|
+
payload.push(reader.readField());
|
|
94
|
+
}
|
|
95
|
+
return new FlatPublicLogs(length, payload);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static empty() {
|
|
99
|
+
return new FlatPublicLogs(0, Array(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH).fill(Fr.ZERO));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
isEmpty() {
|
|
103
|
+
return this.length === 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export class PublicLog {
|
|
22
108
|
constructor(
|
|
23
109
|
public contractAddress: AztecAddress,
|
|
24
|
-
public fields:
|
|
25
|
-
public emittedLength: number,
|
|
110
|
+
public fields: Fr[],
|
|
26
111
|
) {}
|
|
27
112
|
|
|
28
113
|
static from(fields: FieldsOf<PublicLog>) {
|
|
@@ -30,104 +115,81 @@ export class PublicLog {
|
|
|
30
115
|
}
|
|
31
116
|
|
|
32
117
|
static getFields(fields: FieldsOf<PublicLog>) {
|
|
33
|
-
return [fields.contractAddress, fields.fields
|
|
118
|
+
return [fields.contractAddress, fields.fields] as const;
|
|
34
119
|
}
|
|
35
120
|
|
|
36
121
|
toFields(): Fr[] {
|
|
37
|
-
return
|
|
122
|
+
return [new Fr(this.fields.length), this.contractAddress.toField(), ...this.fields];
|
|
38
123
|
}
|
|
39
124
|
|
|
40
125
|
static fromFields(fields: Fr[] | FieldReader) {
|
|
41
126
|
const reader = FieldReader.asReader(fields);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
reader.readFieldArray(PUBLIC_LOG_SIZE_IN_FIELDS),
|
|
45
|
-
reader.readU32(),
|
|
46
|
-
);
|
|
127
|
+
const fieldsLength = reader.readU32();
|
|
128
|
+
return new PublicLog(reader.readObject(AztecAddress), reader.readFieldArray(fieldsLength));
|
|
47
129
|
}
|
|
48
130
|
|
|
49
|
-
|
|
50
|
-
return this.fields.
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
getEmittedFieldsWithoutTag() {
|
|
54
|
-
return this.fields.slice(1, this.emittedLength);
|
|
131
|
+
sizeInFields() {
|
|
132
|
+
return this.fields.length + PUBLIC_LOG_HEADER_LENGTH;
|
|
55
133
|
}
|
|
56
134
|
|
|
57
|
-
|
|
58
|
-
return
|
|
135
|
+
getEmittedFields() {
|
|
136
|
+
return this.fields.slice(0);
|
|
59
137
|
}
|
|
60
138
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const emittedLength = reader.readU32();
|
|
64
|
-
const contractAddress = reader.readObject(AztecAddress);
|
|
65
|
-
const emittedFields = reader.readFieldArray(emittedLength);
|
|
66
|
-
return new PublicLog(
|
|
67
|
-
contractAddress,
|
|
68
|
-
padArrayEnd(emittedFields, Fr.ZERO, PUBLIC_LOG_SIZE_IN_FIELDS),
|
|
69
|
-
emittedLength,
|
|
70
|
-
);
|
|
139
|
+
getEmittedFieldsWithoutTag() {
|
|
140
|
+
return this.fields.slice(1);
|
|
71
141
|
}
|
|
72
142
|
|
|
73
143
|
isEmpty() {
|
|
74
|
-
return this.contractAddress.isZero() && this.fields.
|
|
144
|
+
return this.contractAddress.isZero() && this.fields.length === 0;
|
|
75
145
|
}
|
|
76
146
|
|
|
77
147
|
static empty() {
|
|
78
|
-
return new PublicLog(AztecAddress.ZERO,
|
|
148
|
+
return new PublicLog(AztecAddress.ZERO, []);
|
|
79
149
|
}
|
|
80
150
|
|
|
81
151
|
toBuffer(): Buffer {
|
|
82
|
-
return serializeToBuffer(
|
|
152
|
+
return serializeToBuffer(this.fields.length, this.contractAddress, this.fields);
|
|
83
153
|
}
|
|
84
154
|
|
|
85
155
|
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
86
156
|
const reader = BufferReader.asReader(buffer);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
reader.readArray(PUBLIC_LOG_SIZE_IN_FIELDS, Fr),
|
|
90
|
-
reader.readNumber(),
|
|
91
|
-
);
|
|
157
|
+
const fieldsLength = reader.readNumber();
|
|
158
|
+
return new PublicLog(reader.readObject(AztecAddress), reader.readArray(fieldsLength, Fr));
|
|
92
159
|
}
|
|
93
160
|
|
|
94
161
|
static async random() {
|
|
95
162
|
return new PublicLog(
|
|
96
163
|
await AztecAddress.random(),
|
|
97
|
-
|
|
98
|
-
PUBLIC_LOG_SIZE_IN_FIELDS,
|
|
164
|
+
Array.from({ length: 10 }, () => Fr.random()),
|
|
99
165
|
);
|
|
100
166
|
}
|
|
101
167
|
|
|
102
168
|
equals(other: this) {
|
|
103
169
|
return (
|
|
170
|
+
this.fields.length === other.fields.length &&
|
|
104
171
|
this.contractAddress.equals(other.contractAddress) &&
|
|
105
|
-
this.fields.every((field, i) => field.equals(other.fields[i]))
|
|
106
|
-
this.emittedLength === other.emittedLength
|
|
172
|
+
this.fields.every((field, i) => field.equals(other.fields[i]))
|
|
107
173
|
);
|
|
108
174
|
}
|
|
109
175
|
|
|
110
176
|
toHumanReadable(): string {
|
|
111
|
-
return `PublicLog: (contractAddress: ${this.contractAddress} fields: ${this.fields})
|
|
177
|
+
return `PublicLog: (contractAddress: ${this.contractAddress} fields: ${this.fields})`;
|
|
112
178
|
}
|
|
113
179
|
|
|
114
180
|
static get schema(): ZodFor<PublicLog> {
|
|
115
181
|
return z
|
|
116
182
|
.object({
|
|
117
183
|
contractAddress: AztecAddress.schema,
|
|
118
|
-
fields: z.array(schemas.Fr)
|
|
119
|
-
emittedLength: z.number(),
|
|
184
|
+
fields: z.array(schemas.Fr),
|
|
120
185
|
})
|
|
121
|
-
.transform(({ contractAddress, fields,
|
|
122
|
-
PublicLog.fromFields([contractAddress.toField(), ...fields, new Fr(emittedLength)]),
|
|
123
|
-
);
|
|
186
|
+
.transform(({ contractAddress, fields }) => PublicLog.from({ contractAddress, fields }));
|
|
124
187
|
}
|
|
125
188
|
|
|
126
189
|
[inspect.custom](): string {
|
|
127
190
|
return `PublicLog {
|
|
128
191
|
contractAddress: ${inspect(this.contractAddress)},
|
|
129
192
|
fields: [${this.fields.map(x => inspect(x)).join(', ')}],
|
|
130
|
-
emittedLength: ${this.emittedLength},
|
|
131
193
|
}`;
|
|
132
194
|
}
|
|
133
195
|
}
|
|
@@ -16,13 +16,11 @@ import type { PublicKey } from '../keys/public_key.js';
|
|
|
16
16
|
* TODO(#12656): This function is kept around because of the utilityGetSharedSecret oracle. Nuke this once returning
|
|
17
17
|
* the app-siloed secret.
|
|
18
18
|
*/
|
|
19
|
-
export
|
|
19
|
+
export function deriveEcdhSharedSecret(secretKey: GrumpkinScalar, publicKey: PublicKey): Promise<Point> {
|
|
20
20
|
if (publicKey.isZero()) {
|
|
21
21
|
throw new Error(
|
|
22
22
|
`Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`,
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
const sharedSecret = await curve.mul(publicKey, secretKey);
|
|
27
|
-
return sharedSecret;
|
|
25
|
+
return Grumpkin.mul(publicKey, secretKey);
|
|
28
26
|
}
|
|
@@ -35,4 +35,9 @@ export class InboxLeaf {
|
|
|
35
35
|
const end = start + BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
36
36
|
return [start, end];
|
|
37
37
|
}
|
|
38
|
+
|
|
39
|
+
/** Returns the L2 block number for a given leaf index */
|
|
40
|
+
static l2BlockFromIndex(index: bigint): number {
|
|
41
|
+
return Number(index / BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP)) + INITIAL_L2_BLOCK_NUM;
|
|
42
|
+
}
|
|
38
43
|
}
|