@aztec/protocol-contracts 0.36.0 → 0.38.0
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/artifacts/ContractClassRegisterer.json +1 -1
- package/dest/artifacts/ContractInstanceDeployer.json +1 -1
- package/dest/artifacts/GasToken.json +1 -1
- package/dest/artifacts/KeyRegistry.json +1 -1
- package/dest/artifacts/MultiCallEntrypoint.json +1 -1
- package/package.json +4 -4
- package/src/artifacts/ContractClassRegisterer.json +1 -1
- package/src/artifacts/ContractInstanceDeployer.json +1 -1
- package/src/artifacts/GasToken.json +1 -1
- package/src/artifacts/KeyRegistry.json +1 -1
- package/src/artifacts/MultiCallEntrypoint.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "noir_version": "0.28.0+587973ff94368b5ae6247f04c26fd0ef6a933b51", "name": "MultiCallEntrypoint", "functions": [{ "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 0, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [4, 5, 6, 7], "error_types": {} }, "bytecode": "H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==", "debug_symbols": "ndpRattAGIXRveg5FN9f0miUrZRSnMQphmCH2CkUk73XTukCct48I9+37+kwl+Fp9/D+6+f+8Hw8DfffL8PL8XF73h8P19Nl2Hyr9nl7et0ebhen8/btPNyPlbthd3i6/Wofd8Pz/mX3efvx4+42WmTUZbTCaNzIKDIqGY0ymmQ0y0iKGKWIUYoYpYhJipikiEmKmKSISYqYpIhJipikiEmKmKSIWYqYpYhZipiliFmKmKWIWYqYpYhZipiliCZFNCmiSRFNimhSRJMimhTRpIgmRTQpYpEiFilikSIWKWKRIhYpYpEiFilikSIWKaJLEV2K6FJElyK6FNGliC5FdCmiSxFdililiFWKWKWIVYpYpYhVililiFWKWKWIVYrIZkOr0KpoNdJqotVMq0arhVadVtRGqI1QG6E2Qm2E2gi1EWoj1EaojVAbRW0UtVHURlEbRW0UtUGcGfLMEGiGRDNEmiHTDKFmSDVDrBlyzRBshmQzRJsh2wzhZkg3Q7wZ8s0QcIaEM0ScIeMMIWdIOUPMGXLOEHSGpDNEnSHrDGFnSDtD3BnyzhB4hsQzRJ4h8wyhZ0g9Q+wZcs8QfIbkM0SfIfsM4WdIP0P8GfLPEICGBDREoCEDDSFoSEFDDBpy0BCEhiQ0RKEhCw1haEhDQxwa8tAQiIZENESiIRMNoWhIRUMsGnLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctGyZ572ztMeepKLFrlokYsWuWiRi9aXXfR6+r19228fXna3l723j++Hx/8Pfa/H85/Xf1+u//0L" }, { "name": "entrypoint", "is_unconstrained": false, "custom_attributes": ["aztec(private)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "tx_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "gas_limits", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "teardown_gas_limits", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "max_fees_per_gas", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] }, "visibility": "private" }, { "name": "app_payload", "type": { "kind": "struct", "path": "authwit::entrypoint::app::AppPayload", "fields": [{ "name": "function_calls", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::entrypoint::function_call::FunctionCall", "fields": [{ "name": "args_hash", "type": { "kind": "field" } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "target_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "is_public", "type": { "kind": "boolean" } }] } } }, { "name": "nonce", "type": { "kind": "field" } }] }, "visibility": "public" }], "param_witnesses": { "app_payload": [{ "start": 38, "end": 55 }], "inputs": [{ "start": 0, "end": 38 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_block_number", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber", "fields": [{ "name": "_opt", "type": { "kind": "struct", "path": "std::option::Option", "fields": [{ "name": "_is_some", "type": { "kind": "boolean" } }, { "name": "_value", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "master_nullifier_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "app_nullifier_secret_key", "type": { "kind": "field" } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "tx_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "gas_settings", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [{ "name": "gas_limits", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "teardown_gas_limits", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "max_fees_per_gas", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }, { "name": "inclusion_fee", "type": { "kind": "field" } }] } }] } }] }, "visibility": "public" }, "return_witnesses": [1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801], "error_types": {} }, "bytecode": "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", "debug_symbols": "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M0751xybF/f816Rz/jX5nH/Nes6/5pxbQM65BeScW0DOuQXknFtAzrkFyjm3QDnnFijn3ALlnFugnHMLlHNugXLOLVDOuQXKObdAOecWqOfcAvWcW6CecwvUc26Bes4tUM+5Beo5t0A95xao59wC9ZxboJ1zC7RzboF2zi3QzrkF2jm3gMK3e3OTx7+mj39+/yIy8Rs3Ct/BVS+p2Sup2ytpmCtJ4buh6iUleyVleyWt9koSeyXZu727vdu727u9u73bu9u7vYe923vYu72Hvdt72Lu9h73be9i7vYe923vYu72Hvdt7mLu962Lu9q6Ludu7LuZu77qYu73rYu72rou527su5m7vupi7veti7vaui73bO9m7vZO92zvZu72Tvds72bu9k73bO9m7vZO92zvZu72Tvds727u9s73bO9u7vbO92zvbu72zvds727u9s73bO9u7vbO923u1d3uv9m7v1d7tvdq7vVd7t/dq7/Ze7d3eq73be7V3e6/2bm+xd3uLvdtb7N3eYu/2Fnu3t9i7vcXe7S32bm+xd3uLvdu72Lu9i73bu9i7vYu927vYu72Lvdu72Lu9i73bu9i7vYu927vau72rvdu72ru9q73bu9q7vau927vau72rvdu72ru9q73bu9m7vZu927vZu72bvdu72bu97X3Xstr7rmW1913Lau+7ltXedy2rve9aVnvftaz2vmtZ7X3Xstr7rmW1913Lau+7ltXedy2rve9aVnvftaz2vmtZ7X3Xstr7rmW1913Lau+7ltXedy2rve9aVnvftaz2vmtZ7X3Xstn7rmWz913LZu+7ls3edy3bYu72bva+a9nsfdey2fuuZbP3Xctm77uWzd53LZu971o2e9+1bPa+a9nsfdey2fuuZbP3Xctm77uWzd53LfuxMcxfP/2z3bPrXWwfrT4//Xb37E/+5HSzG3eBrSyPT+eUP/yT81ruH87reKm5v6Wx9sefnHb+5HWkX59dR944TNMronmYPzrMYyPFeZjnHqbpFd88zJ8dpplFXDzMzw/TzAozHubnhyk8TD+HaWbpKQ/z88M0sy6Wh/n5YZpZtMvD/Pww+QLk6DD5AgRymJLHr8+KyPvDbHwBcnSYfAFydJh8AXJ0mHwBQjnM9DzMsnGYwsP0c5h8AXJ0mHwBcnSYfAFydJh8AXJ0mHwBQjnM5X4mkur7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q7+n9+rv6b36e3qv/p7eq7+n9+bv6b35e3pv/p7em7+n9+bv6b35e3pv/p7em7+n9+bv6b35e3rv/p7eu7+n9+7v6b37e3rv/p7e/t613Py9a7n5e9dy8/eu5ebvXcvN37uWm793LTd/71pu/t613Py9a7n5e9dy8/eu5ebvXcvN37uWm793LTd/71pu/t613Py9a7n5e9dy8/eu5ebvXcvN37uWm793LTd/71pu/t613P29a7n7e9dy9/eu5e7vXct9cvf03v29a7n7e9dy9/eu5e7vXcvd37uWu793LXd/71ru/t613P29a7n7e9dy9/eu5e7vXcvd37uWu793Let3Y5j/96ff2z27PIqtx76dn365e/adn1x+5MajwH2dnp+ey/zhT56X9fHheTl+nbm+pLHU508uFz95Ocqfzy7H3Gim6xXRauZbzfxupLiaeW8zXa/4VjPfa6abRVxq5ufNdLPCTM38vJmmZuZpppulp2rm5810sy5Wzfy8mW4W7aqZnzdTE6BEzdQEKEgzbT7+fNbMXjdz1wQoUTM1AUrUTE2AEjVTE6AozSxnM9dGM03NzNNMTYASNVMToETN1AQoUTM1AUrUTE2AojRzevTEyva6mVUToETN1AQoUTM1AUrUTE2AEjXT1Mw8zdQEKFEzNQFK1ExNgBI1UxOgRM3UBChPMw9NgBI1UxOgRM3UBChRMzUBStRMUzPzNFMToETN1AQoUTM1AUrUTE2AEjVTE6A0zTwmTYASNVMToETN1AQoUTM1AUrUTFMz8zRTE6BEzdQEKFEzNQFK1ExNgBI1UxOgPM0smgAlaqYmQImaqQlQomZqApSomaZm5mmmJkCJmqkJUKJmagKUp5mzfCa4maU+m7kasJnXSdDHLJ+ZqJnymYmaKZ+ZqJmmZuZppnxmombKZyZqpnxmombqLw0SNVN/aZCnmYsmQImaqQlQkGZeL6k5Fk2AEjVTE6BEzTQ1M08zNQGK0szLVRjHoglQomZqApSomZoAJWqmJkB5mmmaACVqpiZAUZp5/dd5pglQomZqApSomaZm5mmmJkCJmqkJUKJmagKUqJmaACVqpiZAeZq5agKUqJmaACVqpiZAiZqpCVCiZpqamaeZmgAlaqYmQImaqQlQomZqApSomZoA5WnmpglQomZqApSomZoAJWqmJkCJmmlqZp5magKUqJma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dZfcp+6S+9RFND+NXH7uU3fJfeouuU/dJfepu+Q+ddfcp+6a+9Rdc5+6a+5T99t9U+jl5z51c3dTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U1nubirL3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m6qJXc31ZK7m2rJ3U215O6mWm6pT90ldzfVkrubasndTbXk7qZacndTLbm7qZbc3VRL7m6qJXc31ZK7m2rJ3U215O6mWnJ3Uy25u6mW3N1US+5uqiV3N9WSu5tqyd1NteTuplpyd1MtubupltzdVEvubqoldzfVkrubasndTbXk7qZacndTLbm7qZbc3VRL7m6qJXc31ZK7m2rJ3U215O6mWnJ3Uy25u6mW3N1US+5uqiV3N9WSu5tqyd1NteTuplpyd1MtubupltzdVEvubqoldzfVkrubasndTbXk7qZacndTLbm7qZbc3VRL7m6qJXc31ZK7m2rJ3U215O6mWnJ3Uy25u6mW3N1US+5uqiV3N9WSu5tqyd1NteTuplpyd1MtubupltzdVEvubqoldzfVkrubasndTbXk7qZacndTLbm7qZbc3VRL7m6qJXc31ZK7m2rJ3U215O6mWnJ3Uy25u6mW3N1US+5uqiV3N9WSu5tqyd1NteTuplpyd1MtubupltzdVGvubqo1dzfVmrubas3dTbXeUp+6a+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6m23N1UW+5uqi13N9WWu5tqu6U+dbfc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndT7bm7qfbc3VR77m6qPXc31X5Lferuubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefupjpyd1MdubupjtzdVEfubqrjlvrUPXJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U3VbrnLqe7rT33u3tef+uC9rz/1yXtff+qj977+1Gfvff2pD9/7+lOfvvf1pz5+7+tPfv7mrqm6rz/5+Zu7qOq+/uTnb+6qqvv6k5+/ucuq7utPfv7mrqu6rz/5+Zu7sOq+uuTnb+7Kqvvqkp+/uUur7qtLfv7mrq26ry75+Zu7uOq+uuTnb+7qqvv6k5+/ucur7utPfv7mrq+6rz/5+Zu7wOq+/uTnb+4Kq/v6k5+/uUus7utPfv7mrrG6rz/5+Zu7yOq+/uTnb+4qq/v6k5+/ucus7utPfv7mrrO6rz/5+Zu70Oq+/uTnb+5Kq/v6k5+/uUut7utPfv7mrrW6rz/5+Zu72Oq+/uTnb+5qq/v6k5+/ucut7utPfv7mrre6rz/5+Zu74Oq+/uTnb+6Kq/v6k5+/uUuu7utPfv7mrrm6rz/5+Zu76Oq+/uTnb+6qq/v6k5+/ucuu7utPfv7mrru6rz/5+Zu78Oq+/uTnb+7Kq/v6k5+/uUuv7utPfv7mrr26rz/5+Zu7+Oq+/uTnb+7qq/v6k5+/ucuv7utPfv7mrr+6rz/3+duS91+15P1XLXn/VUvef9Vuuc/flrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+69a8v6rlrz/qiXvv2rJ+6+m5P1XU/L+qyl5/9WUvP9quuU+f6fk/VdT8v6rKXn/1ZS8/2pK3n81Je+/mpL3X03J+6+m5P1XU/L+qyl5/9WUvP9qSt5/NSXvv5qS919NyfuvpuT9V1Py/qspef/VlLz/akrefzUl77+akvdfTcn7r6bk/VdT8v6rKXn/1ZS8/2pK3n81Je+/mpL3X03J+6+m5P1XU/L+qyl5/9WUvP9qSt5/NSXvv5qS919NyfuvpuT9V1Py/qspef/VlLz/akrefzUl77+akvdfTcn7r6bk/VdT8v6rKXn/1ZS8/2pK3n81Je+/mpL3X03J+6+m5P1XU/L+qyl5/9WUvP9qSt5/NSXvv5qS919NyfuvpuT9V1Py/qspef/VlLz/akrefzUl77+akvdfTcn7r6bk/VdT8v6rKXn/1ZS8/2pK3n81Je+/mpL3X03J+6+m5P1XU/L+qyl5/9WUvP9qSt5/NSXvv5qS919NyfuvpuT9V1Py/qspef/VlLz/akrefzUl77+akvdfzcn7r+bk/Vdz8v6rOXn/1XzLff7Oyfuv5uT9V3Py/qs5ef/VnLz/ak7efzUn77+ak/dfzcn7r+bk/Vdz8v6rOXn/1Zy8/2pO3n81J++/mpP3X83J+6/m5P1Xc/L+qzl5/9WcvP9qTt5/NSfvv5qT91/Nyfuv5uT9V3Py/qs5ef/VnLz/ao7cvzQf7c+z89Fdf+D3v2f9kft/7PZYhbW1t/7A7x/X+gO/f1zrD/z+ca3fkq8/sP93rT/w+9/W5bH+vfXWH/j971p/YP/vWn9g/+9Zf+T+H9f6I5+/nvVHPn896498/nrWH/n89aw/8vnrWX/y8zdy/49r/cnP38j9P571R+7/ca0/+fkbuf/Htf7k5+/X+3+6d4K/PLsvj09e9+0lQR7zP1W7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l8tfbaGnlFyhl8tfbaEnilyhl8tfbTcj08vlr7bQkzqu0Mvlr7bQUzWu0Evmr0JPwLhCL5m/Cj2t4gq9ZP4q9GSJK/SS+avQUyCu0Evmr0JPbLhCL5m/Cj1d4Qq9ZP4q9CSEK/SS+avJyPSS+avQUymu0EvmryYyfzWR+avQE0Ku0Evmr0JP87hCL5m/Cj154wq9ZP4q9JSMK/SS+avQEy2u0Evmr0JPn7hCL5m/Cj0p4gq9ZP4q9FSHK/SS+avQExiu0Evmr0JPS7hCL5m/Cj3Z4Aq9ZP4q9BSCK/SS+avQEwOu0Evmr0K3+1+hl8xfhW7iv0Ivmb8K3Zp/hV4yfxW64f4KvWT+KnQb/RV6yfxV6Ob4K/SS+avQLe9X6CXzV6Hb26/QS+avyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyPrbN7L+9o2sv30j62/fyfrbd7L+9p2sv30n62/fb0aml8tf7WT97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tO1t++k/W372T97TtZf/tB1t9+kPW3H2T97QdZf/txMzK9XP7qIOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaD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" }], "outputs": { "structs": { "functions": [{ "kind": "struct", "path": "MultiCallEntrypoint::entrypoint_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "MultiCallEntrypoint::entrypoint_parameters", "fields": [{ "name": "app_payload", "type": { "kind": "struct", "path": "authwit::entrypoint::app::AppPayload", "fields": [{ "name": "function_calls", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::entrypoint::function_call::FunctionCall", "fields": [{ "name": "args_hash", "type": { "kind": "field" } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "target_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "is_public", "type": { "kind": "boolean" } }] } } }, { "name": "nonce", "type": { "kind": "field" } }] } }] } }] }] }, "globals": {} }, "file_map": { "3": { "source": "use crate::cmp::Eq;\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n}\n", "path": "std/collections/bounded_vec.nr" }, "20": { "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n", "path": "std/field.nr" }, "51": { "source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 420;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n false,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n false,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n", "path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr" }, "84": { "source": "use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n oracle::{\n arguments, returns, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, header::get_header_at,\n nullifier_key::{get_nullifier_keys, NullifierKeys}\n}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, gas::Gas, call_context::CallContext, function_data::FunctionData,\n function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_call_stack_item::PrivateCallStackItem,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, side_effect::SideEffect\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader,\n traits::{is_empty, Deserialize, Empty}\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n\n args_hash : Field,\n return_hash : Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<SideEffect, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n encrypted_logs_hashes: BoundedVec<SideEffect, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeys>,\n}\n\nimpl ContextInterface for PrivateContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let side_effect_counter = inputs.start_side_effect_counter;\n let mut min_revertible_side_effect_counter = 0;\n if is_empty(inputs.call_context.msg_sender) {\n min_revertible_side_effect_counter = side_effect_counter;\n }\n PrivateContext {\n inputs,\n side_effect_counter,\n min_revertible_side_effect_counter,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n };\n\n priv_circuit_pub_inputs\n }\n\n pub fn end_setup(&mut self) {\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.note_hash_read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_app_nullifier_secret_key(&mut self, account: AztecAddress) -> Field {\n let keys = if self.nullifier_key.is_none() {\n let keys = get_nullifier_keys(account);\n let request = NullifierKeyValidationRequest {\n master_nullifier_public_key: keys.master_nullifier_public_key,\n app_nullifier_secret_key: keys.app_nullifier_secret_key\n };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(keys);\n keys\n } else {\n let keys = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(keys.account == account, \"Cannot query nullifier key for more than one account per call\");\n keys\n };\n keys.app_nullifier_secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn push_encrypted_log(&mut self, log_hash: Field) {\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.encrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n // TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n // --> might be a better approach to force devs to make a public function call that emits the log if needed then\n // it would be less easy to accidentally leak information.\n // If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\n pub fn emit_unencrypted_log<T>(&mut self, log: T) {\n let event_selector = 5; // TODO: compute actual event selector.\n let log_hash = emit_unencrypted_log_private_internal(self.this_address(), event_selector, log);\n\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n self.private_call_stack_hashes.push(item.hash());\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n args_hash : 0,\n return_hash : 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_stack_hashes : BoundedVec::new(),\n public_call_stack_hashes : BoundedVec::new(),\n new_l2_to_l1_msgs : BoundedVec::new(),\n historical_header: Header::empty(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n nullifier_key: Option::none(),\n }\n }\n}\n\nstruct PackedReturns {\n packed_returns: Field,\n}\n\nimpl PackedReturns {\n pub fn new(packed_returns: Field) -> Self {\n PackedReturns { packed_returns }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.packed_returns, 0);\n }\n\n pub fn raw(self) -> Field {\n self.packed_returns\n }\n\n pub fn unpack<N>(self) -> [Field; N] {\n let unpacked: [Field; N] = returns::unpack_returns(self.packed_returns);\n assert_eq(self.packed_returns, hash_args_array(unpacked));\n unpacked\n }\n\n pub fn unpack_into<T, N>(self) -> T where T: Deserialize<N> {\n let unpacked: [Field; N] = self.unpack();\n Deserialize::deserialize(unpacked)\n }\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> Field {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr" }, "99": { "source": "use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr" }, "100": { "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr" }, "113": { "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr" }, "130": { "source": "use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr" }, "132": { "source": "struct Reader<N> {\n data: [Field; N],\n offset: u64,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr" }, "145": { "source": "use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr" }, "149": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "151": { "source": "use crate::{address::EthAddress, constants::L2_TO_L1_MESSAGE_LENGTH, traits::{Deserialize, Empty, Serialize}};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content)\n }\n}\n\nimpl Serialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content]\n }\n}\n\nimpl Deserialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr" }, "154": { "source": "use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "156": { "source": "use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Hash, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr" }, "162": { "source": "use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n self.is_private == other.is_private\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr" }, "166": { "source": "use crate::{\n abis::side_effect::{OrderedValue, ContractScopedOrderedValue},\n traits::{Empty, Serialize, Deserialize}, address::AztecAddress,\n constants::READ_REQUEST_LENGTH,\n};\nuse dep::std::cmp::Eq;\n\nglobal READ_REQUEST_CONTEXT_SERIALIZED_LEN = 3;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl OrderedValue<Field> for ReadRequest {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> ReadRequestContext {\n ReadRequestContext { value: self.value, counter: self.counter, contract_address }\n }\n}\n\nstruct ReadRequestContext {\n value: Field,\n counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl OrderedValue<Field> for ReadRequestContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl ContractScopedOrderedValue<Field> for ReadRequestContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ReadRequestContext {\n fn eq(self, read_request: ReadRequestContext) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n & (self.contract_address.eq(read_request.contract_address))\n }\n}\n\nimpl Empty for ReadRequestContext {\n fn empty() -> Self {\n ReadRequestContext {\n value: 0,\n counter: 0,\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn serialize(self) -> [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN] {\n [self.value, self.counter as Field, self.contract_address.to_field()]\n }\n}\n\nimpl Deserialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn deserialize(values: [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n contract_address: AztecAddress::from_field(values[2]),\n }\n }\n}\n\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr" }, "167": { "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec<Field, CALL_CONTEXT_LENGTH> = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr" }, "177": { "source": "use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17fd6ffcb3394b845069dc87e055c37ac50599f274130fac69c6fe919bfe382e;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr" }, "181": { "source": "use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs = PublicCircuitPublicInputs::empty();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs\n };\n call_stack_item\n }\n}\n\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, side_effect::SideEffect\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x1595b195f0faa3a492109039dc807b291d0edd81a5e3a380866d5098ffd505dd;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x1122a7d7e6174b7e5d111c8eb0233564d3a1ffd755afc7ce4b594d738e2770d7;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr" }, "183": { "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr" }, "186": { "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader, abis::gas_fees::GasFees\n};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n\n pub fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_LENGTH> for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize<GAS_LENGTH> for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr" }, "187": { "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec<Field, GAS_SETTINGS_LENGTH> = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr" }, "188": { "source": "use crate::{\n address::AztecAddress, abis::side_effect::{Ordered, OrderedValue},\n constants::{NOTE_HASH_LENGTH, NOTE_HASH_CONTEXT_LENGTH}, traits::{Empty, Serialize, Deserialize}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_LENGTH> for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_LENGTH> for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn to_context(self, nullifier_counter: u32) -> NoteHashContext {\n NoteHashContext { value: self.value, counter: self.counter, nullifier_counter }\n }\n}\n\nstruct NoteHashContext {\n value: Field,\n counter: u32,\n nullifier_counter: u32,\n}\n\nimpl Ordered for NoteHashContext {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteHashContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHashContext {\n fn eq(self, other: NoteHashContext) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n & (self.nullifier_counter == other.nullifier_counter)\n }\n}\n\nimpl Empty for NoteHashContext {\n fn empty() -> Self {\n NoteHashContext {\n value: 0,\n counter: 0,\n nullifier_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn serialize(self) -> [Field; NOTE_HASH_CONTEXT_LENGTH] {\n [self.value, self.counter as Field, self.nullifier_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn deserialize(values: [Field; NOTE_HASH_CONTEXT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n nullifier_counter: values[2] as u32,\n }\n }\n}\n\nimpl NoteHashContext {\n pub fn to_note_hash(self) -> NoteHash {\n NoteHash { value: self.value, counter: self.counter }\n }\n\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.value, counter: 0 }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr" }, "189": { "source": "use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec<Field, GLOBAL_VARIABLES_LENGTH> = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr" }, "192": { "source": "use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n constants::{NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH, NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, grumpkin_point::GrumpkinPoint,\n grumpkin_private_key::GrumpkinPrivateKey\n};\n\nstruct NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field, // not a GrumpkinScalar because it's output of poseidon2\n}\n\nimpl Eq for NullifierKeyValidationRequest {\n fn eq(self, request: NullifierKeyValidationRequest) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequest {\n fn empty() -> Self {\n NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n }\n }\n}\n\nimpl NullifierKeyValidationRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> NullifierKeyValidationRequestContext {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: self.master_nullifier_public_key,\n app_nullifier_secret_key: self.app_nullifier_secret_key,\n contract_address\n }\n }\n}\n\nstruct NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field,\n contract_address: AztecAddress,\n}\n\nimpl Eq for NullifierKeyValidationRequestContext {\n fn eq(self, request: NullifierKeyValidationRequestContext) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n & (request.contract_address.eq(self.contract_address))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequestContext {\n fn empty() -> Self {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n self.contract_address.to_field(),\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n contract_address: AztecAddress::from_field(fields[3]),\n }\n }\n}\n\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_key_validation_request.nr" }, "193": { "source": "use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n nullifier_key_validation_request::NullifierKeyValidationRequest, note_hash::NoteHash,\n nullifier::Nullifier, read_request::ReadRequest, side_effect::SideEffect\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext\n};\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n encrypted_logs_hashes: [SideEffect; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.nullifier_key_validation_requests == other.nullifier_key_validation_requests) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_stack_hashes == other.private_call_stack_hashes) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n (self.encrypted_log_preimages_length == other.encrypted_log_preimages_length) &\n (self.unencrypted_log_preimages_length == other.unencrypted_log_preimages_length) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_key_validation_requests.len() {\n fields.extend_from_array(self.nullifier_key_validation_requests[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n fields.extend_from_array(self.private_call_stack_hashes);\n fields.extend_from_array(self.public_call_stack_hashes);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [SideEffect::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n encrypted_logs_hashes: [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x29129c06414f4ac73bf889692c7011f91727d4cdbfe4fe143e6adee69b565cc8;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr" }, "194": { "source": "use crate::{\n abis::side_effect::{Ordered, OrderedValue}, address::AztecAddress, constants::NULLIFIER_LENGTH,\n traits::{Empty, Hash, Serialize, Deserialize}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_LENGTH> for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize<NULLIFIER_LENGTH> for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr" }, "196": { "source": "use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option<u32>\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr" }, "197": { "source": "use crate::{\n address::AztecAddress, constants::GENERATOR_INDEX__SIDE_EFFECT,\n traits::{Empty, Hash, Serialize, Deserialize}, constants::SIDE_EFFECT_LENGTH\n};\nuse dep::std::cmp::Eq;\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\ntrait OrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n}\n\ntrait ContractScopedOrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n fn contract_address(self) -> AztecAddress;\n}\n\nstruct SideEffect {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for SideEffect {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn serialize(self) -> [Field; SIDE_EFFECT_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn deserialize(values: [Field; SIDE_EFFECT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/side_effect.nr" }, "199": { "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_FEES_LENGTH> for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize<GAS_FEES_LENGTH> for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr" }, "201": { "source": "use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n side_effect::SideEffect, gas::Gas, global_variables::GlobalVariables\n},\n address::AztecAddress,\n constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1a2da219bb2e3ac24519fd844365c4f656fc3ba8c58f2960706d25bceb4d1769;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr" }, "202": { "source": "use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u64 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr" }, "205": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_tx_logs_hash<MAX_ENCRYPTED_LOGS_PER_TX>(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // TODO(Miranda): Below is flat hashing which would reduce constraints (we now only hash once in tail) - convert to this?\n\n // // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n // // Ideally we would define a new global here but for now we assert in case MAX_LOGS changes\n // assert(MAX_ENCRYPTED_LOGS_PER_TX * 32 == 256);\n // let mut hash_input_flattened = [0; 256];\n // for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // let input_as_bytes = logs[offset].value.to_be_bytes(32);\n // for byte_index in 0..32 {\n // hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n // }\n // }\n // // This differs from accumulate_sha256 as we could increase MAX_LOGS and\n // // ideally we would push to a slice then hash, but in practice compilation was very slow\n // // Hardcode to 256 bytes for now\n // sha256_to_field(hash_input_flattened)\n\n // Assuming logs are pre-sorted\n let mut accumulated_logs_hash = 0;\n for i in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n if !is_empty(logs[i]) {\n accumulated_logs_hash = accumulate_sha256([accumulated_logs_hash, logs[i].value]);\n }\n }\n\n accumulated_logs_hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "206": { "source": "use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec<Field, CONTENT_COMMITMENT_LENGTH> = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr" }, "212": { "source": "use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize<TX_CONTEXT_LENGTH> for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, TX_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<TX_CONTEXT_LENGTH> for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr" }, "215": { "source": "use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr" }, "216": { "source": "// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr" }, "321": { "source": "// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: pub AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr" } } }
|
|
1
|
+
{ "transpiled": true, "noir_version": "0.29.0+9edb7f5a94a9b0e3a0a108728fe04cd51e5d0db2", "name": "MultiCallEntrypoint", "functions": [{ "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "error_types": {}, "param_witnesses": { "contract_address": [{ "end": 1, "start": 0 }], "nonce": [{ "end": 2, "start": 1 }], "note_type_id": [{ "end": 4, "start": 3 }], "serialized_note": [], "storage_slot": [{ "end": 3, "start": 2 }] }, "parameters": [{ "name": "contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 0, "type": { "kind": "field" } }, "visibility": "private" }], "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [4, 5, 6, 7] }, "bytecode": "H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==", "debug_symbols": "ndpBattQGIXRvWgciu8v6ekpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/Xl7ftse7y/Ol+37ZXgcKw/D7vhyf2qfD8Pr/rC7P9fnt4f7aJFRl9EKo3Ejo8ioZDTKaJLRLCMpYpQiRililCImKWKSIiYpYpIiJilikiImKWKSIiYpYpIiZililiJmKWKWImYpYpYiZililiJmKWKWIpoU0aSIJkU0KaJJEU2KaFJEkyKaFNGkiEWKWKSIRYpYpIhFilikiEWKWKSIRYpYpIguRXQpoksRXYroUkSXIroU0aWILkV0KWKVIlYpYpUiVililSJWKWKVIlYpYpUiVikimw2tQqui1UiriVYzrRqtFlp1WlEboTZCbYTaCLURaiPURqiNUBuhNkJtFLVR1EZRG0VtFLVR1AZxZsgzQ6AZEs0QaYZMM4SaIdUMsWbINUOwGZLNEG2GbDOEmyHdDPFmyDdDwBkSzhBxhowzhJwh5QwxZ8g5Q9AZks4QdYasM4SdIe0McWfIO0PgGRLPEHmGzDOEniH1DLFnyD1D8BmSzxB9huwzhJ8h/QzxZ8g/QwAaEtAQgYYMNISgIQUNMWjIQUMQGpLQEIWGLDSEoSENDXFoyENDIBoS0RCJhkw0hKIhFQ2xaMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEXLrnnaPU+76EkuWuSiRS5a5KJFLlr/7aK308/t+377dNjdb/beP34cn/9d9L0dL7/e/n65/fsb" }, { "name": "entrypoint", "is_unconstrained": false, "custom_attributes": ["aztec(private)"], "abi": { "error_types": {}, "param_witnesses": { "app_payload": [{ "end": 55, "start": 38 }], "inputs": [{ "end": 38, "start": 0 }] }, "parameters": [{ "name": "inputs", "type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "tx_context", "type": { "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "gas_settings", "type": { "fields": [{ "name": "gas_limits", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "inclusion_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, { "name": "app_payload", "type": { "fields": [{ "name": "function_calls", "type": { "kind": "array", "length": 4, "type": { "fields": [{ "name": "args_hash", "type": { "kind": "field" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "name": "target_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "is_public", "type": { "kind": "boolean" } }], "kind": "struct", "path": "authwit::entrypoint::function_call::FunctionCall" } } }, { "name": "nonce", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::entrypoint::app::AppPayload" }, "visibility": "public" }], "return_type": { "abi_type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "max_block_number", "type": { "fields": [{ "name": "_opt", "type": { "fields": [{ "name": "_is_some", "type": { "kind": "boolean" } }, { "name": "_value", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "std::option::Option" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber" } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "fields": [{ "name": "master_nullifier_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }, { "name": "app_nullifier_secret_key", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash" } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier" } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "public_teardown_function_hash", "type": { "kind": "field" } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "content", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect" } } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "tx_context", "type": { "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "gas_settings", "type": { "fields": [{ "name": "gas_limits", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "inclusion_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_settings::GasSettings" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::transaction::tx_context::TxContext" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "public" }, "return_witnesses": [1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871] }, "bytecode": "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", "debug_symbols": "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roODD2iXS1W5Dg7+/9n7oy3ncWRXF32hPfYQpZBEPVy/+8l9+redf0+zRJchMSKAi7XGvHBnCV9UiQAzjbhALpWrWlwXB18gl8pVLa6Lgy+QS+Wqlsm45FK5qsV1cfAFcqlc1eK6OPgCuVyuynVx8AVyuVyV6+LgC+RyuSrXxcEXyOVyVa6Lgy+Qy+WqXBcHXyCXy1W5Lg6+QC6Xq3JdHHyBXC5X5bo4+AK5XK7KdXHwBXK5XJXr4uAL5HK5KtfFwRfI5XJVrouDL5DL5apcFwdfIJfLVbkuDr5ALperWrhc1cLlqly3YF8gl8tVGZerMi5X5brn/AK5XK7Kddf5BXK5XJXrvvML5HK5Kted5xfI5XJVrnvPL5DL5apcd59fIJfLVbnuP79ALper4upWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61ReubvWFq1t94epWX7i61Y2rW924utWNq1vduLrVbTIuuVSuyri61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3bi61Y2rW924utWNq1vduLrVjatb3fLUUdf5obbOf//kl9g0x1CP2DSvqbo8nrna9l5snqriHrFpXlE9YtPEvh6xaUJfj1hjEpvnnO0Qm+ec7RCbJuz1iE0T9XrEMjmoPLXEPWKDOqiXgKCu6CXAsdOppTwFlN1O/nX7ucv98+EfY974182YxDp2Onixjp0OXqxjp4MX69jp4MU6djposavnqmC8WMdOBy/WsSvCiyVyUOtkTGKJHNTquR4YL5bIQa2eq4HxYpkclOdaYLxYJgfluRIY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mN8P0806Tw3z+2G6WYSqYX4/TDcrZDXMr4d56AYo0TB1AxRkmDYffz5rZo1h6gYo0TB1A5RomKZh5hmmboCiDLO8hrk2hqkboETD1A1QomHqBijRMHUDlGaYx6QboETD1A1QlGFOj5lY2RrD1A1QomHqBijRME3DzDNM3QAlGqZugBINUzdAiYapG6BEw9QNUJ5hFt0AJRqmboASDVM3QImGqRugRMM0DTPPMHUDlGiYugFKNEzdACUapm6AEg1TN0B5hjnrBijRMHUDlGiYugFKNEzdACUapmmYeYapG6BEw9QNUKJh6gYo0TB1A5RomLoByjPMRTdAiYapG6BEw9QNUKJh6gYo0TBNw8wzTN0AJRqmboASDVM3QImGqRugRMPUDVCeYZpyJniYpT6HuRpwmOdN0IcpZyYapmmYeYapnJlomMqZiYapnJlomMqZiYapnJlnmKv+0iDRMPWXBomGqRugRMPUDVCQYZ4vqTlW0zDzDFM3QImGqRugRMPUDVCUYZ6vwlh1A5RomLoByjPMTTdAiYapG6BEw9QNUKJh6gYoyjDP/zpvMw0zzzB1A5RomLoBSjRM3QAlGqZugBINUzdAeYa56wYo0TB1A5RomLoBSjRM3QAlGqZpmHmGqRugRMPUDVCiYeoGKNEwdQOUaJi6AcozzKoboETD1A1QomHqBijRMHUDlGiYpmHmGaZugBINUzdAiYapG6BEw9QNUKJh6gYozzAP3QAlGqZugBINUzdAiYapG6BEwzQNM88wdQOUaJi6AUo0TN0AJRqmboASDVM3QFmGuU6TboASDVM3QImGaRomdJhznZ7D/AX9hibon2EqZyYapnJmomEqZyYapnJmomEqZ+YZZlHOTDRM5cxEw9RfGiQapv7SINEwTcPMM0zdAAUZ5umSmp9h6gYo0TB1A5RomLoBSjRM3QBFGebZKox1mnUDlGiYugFKNEzdACUapm6AEg3TNMw8w9QNUJRhnv913qwboETD1A1QomHqBijRMHUDlGeYi26AEg1TN0CJhqkboETD1A1QomGahplnmLoBSjRM3QAlGqZugBINUzdAiYapG6A8wzTdACUapm6AEg1TN0CJhqkboETDNA0zzzB1A5RomLoBSjRM3QAlGqZugBINUzdAeYa56gYo0TB1A5RomLoBSjRM3QAlGqZpmHmGqRugRMPUDVCi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PnN1q89c3eozV7f6zNWtPnN1q89c3eozV7f6zNWtPnN1q89c3eozV7f6zNWtPnN1q89c3epznjrqOpc/H67z3z/5JTbNMdQjNs1rqi6PZ662NcSmeUn1iE3ziuoRmyb29YhNE/p6xKaJfB1i8xQU94jNc852iE0T9nrEpol6PWKNSSyTg4paSvwSENQVvQR4djrHPj/+DZr2chazl+WRxcpi0+tn1/WXXM9eBy/XdXHwBXI9+50L5Hp2PBfI9ex5LpBrXHI9+54L5Hp2PhfI9eyTLpDL5apcFwfj5bouDr5ALpercl0cfIFcLlflujj4Arlcrsp1cfAFcrlclevi4Avkcrkq18XBF8jlclWui4MvkMvlqlwXB18gl8tVuS4OvkAul6tyXRx8gVwuV+W6OPgCuVyuynVx8AVyuVyV6+LgC+RyuSrXxcEXyOVyVa6Lgy+QS+WqFtfFwRfIpXJVi+vi4AvkUrmqZTIuuVSuanFdHHyBXCpXtbguDr5ALpercl0cfIFcLlflujj4Arlcrsp1cfAFcrlclevi4Avkcrkq18XBF8jlclWui4MvkMvlqlwXB18gl8tVuS4OvkAul6tyXRx8gVwuV+W6OPgCuVyuynVx8AVyuVyV6+LgC+RyuSrXxcEXyOVyVa6Lgy+Qy+WqFi5XtXC5Ktct2BfI5XJVxuWqjMtVue45v0Aul6ty3XV+gVwuV+W67/wCuVyuynXn+QVyuVyV697zC+RyuSrX3ecXyOVyVa77zy+Qy+WquLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65u9YWrW33h6lZfuLrVF65udePqVjeubnXj6lY3rm51m4xLLpWrMq5udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pWN65udePqVjeubnXj6lY3rm514+pW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stzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U1nubirL3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qdbc3VRr7m6qNXc31Zq7m2qdUp+6a+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6nW3N1Ua+5uqjV3N9Wau5tqzd1Ntebuplpzd1Otubup1tzdVGvubqo1dzfVmrubas3dTbXm7qZac3dTrbm7qdbc3VRr7m6qNXc31Zq7m2rN3U215u6mWnN3U625u6m23N1UW+5uqi13N9WWu5tqm1KfulvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1NtubupttzdVFvubqotdzfVlrubasvdTbXl7qbacndTbbm7qbbc3VRb7m6qLXc31Za7m2rL3U215e6m2nJ3U225u6m23N1UW+5uqi13N9WWu5tqy91NteXuptpyd1Ntubup9tzdVHvubqo9dzfVnrubap9Sn7p77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qfbc3VR77m6qPXc31Z67m2rP3U215+6m2nN3U+25u6n23N1Ue+5uqj13N9Weu5tqz91Ntefuptpzd1Ptubup9tzdVHvubqo9dzfVnrubas/dTbXn7qbac3dT7bm7qY7c3VRH7m6qI3c31ZG7m+qYUp+6R+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6mO3N1UR+5uqiN3N9WRu5vqyN1NdeTupjpyd1MdubupjtzdVEfubqojdzfVkbub6sjdTXXk7qY6cndTHbm7qY7c3VRH7m6qI3c31ZG7m+rI3U115O6mOnJ3Ux25u6nO3N1UZ+5uqjN3N9WZu5vqnFKfumfubqozdzfVmbub6szdTXXm7qY6c3dTnbm7qc7c3VRn7m6qM3c31Zm7m+rM3U115u6mOnN3U525u6nO3N1UZ+5uqjN3N9WZu5vqzN1Ndebupjpzd1OdubupztzdVGfubqozdzfVmbub6szdTXXm7qY6c3dTnbm7qc7c3VRn7m6qM3c31Zm7m+rM3U115u6mOnN3U525u6nO3N1UZ+5uqjN3N9WZu5vqzN1Ndebupjpzd1OdubupztzdVGfubqozdzfVmbub6szdTXXm7qY6c3dTnbm7qc7c3VRn7m6qM3c31Zm7m+rM3U115u6mOnN3U525u6nO3N1UZ+5uqjN3N9WZu5vqzN1Ndebupjpzd1OdubupztzdVGfubqozdzfVmbub6szdTXXm7qY6c3dTnbm7qc7c3VRn7m6qM3c31Zm7m+rM3U115u6mOnN3U525u6nO3N1UZ+5uqjN3N9WZu5vqzN1Ndebupjpzd1Odubup2pS7nOpr/anP3a/1pz54v9af+uT9Wn/qo/dr/anP3q/1pz58v9af+vT9Wn/q4/dr/cnP39w1VV/rT37+5i6q+lp/8vM3d1XV1/qTn7+5y6q+1p/8/M1dV/W1/uTnb+7Cqq/VJT9/c1dWfa0u+fmbu7Tqa3XJz9/ctVVfq0t+/uYurvpaXfLzN3d11df6k5+/ucurvtaf/PzNXV/1tf7k52/uAquv9Sc/f3NXWH2tP/n5m7vE6mv9yc/f3DVWX+tPfv7mLrL6Wn/y8zd3ldXX+pOfv7nLrL7Wn/z8zV1n9bX+5Odv7kKrr/UnP39zV1p9rT/5+Zu71Opr/cnP39y1Vl/rT37+5i62+lp/8vM3d7XV1/qTn7+5y62+1p/8/M1db/W1/uTnb+6Cq6/1Jz9/c1dcfa0/+fmbu+Tqa/3Jz9/cNVdf609+/uYuuvpaf/LzN3fV1df6k5+/ucuuvtaf/PzNXXf1tf7k52/uwquv9Sc/f3NXXn2tP/n5m7v06mv9yc/f3LVXX+tPfv7mLr76Wn/y8zd39dXX+pOfv7nLr77Wn/z8zV1/9bX+3OdvS95/1ZL3X7Xk/Vctef9Vm3Kfvy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/VkvdfteT9Vy15/1VL3n/Vkvdfzcn7r+bk/Vdz8v6rOXn/1TzlPn/n5P1Xc/L+qzl5/9WcvP9qTt5/NSfvv5qT91/Nyfuv5uT9V3Py/qs5ef/VnLz/ak7efzUn77+ak/dfzcn7r+bk/Vdz8v6rOXn/1Zy8/2pO3n81J++/mpP3X83J+6/m5P1Xc/L+qzl5/9WcvP9qTt5/NSfvv5qT91/Nyfuv5uT9V3Py/qs5ef/VnLz/ak7efzUn77+ak/dfzcn7r+bk/Vdz8v6rOXn/1Zy8/2pO3n81J++/mpP3X83J+6/m5P1Xc/L+qzl5/9WcvP9qTt5/NSfvv5qT91/Nyfuv5uT9V3Py/qs5ef/VnLz/ak7efzUn77+ak/dfzcn7r+bk/Vdz8v6rOXn/1Zy8/2pO3n81J++/mpP3X83J+6/m5P1Xc/L+qzl5/9WcvP9qTt5/NSfvv5qT91/Nyfuv5uT9V3Py/qs5ef/VnLz/ak7efzUn77+ak/dfzcn7r+bk/Vdz8v6rOXn/1Zy8/2pO3n81J++/mpP3Xy3J+6+W5P1XS/L+qyV5/9Uy5T5/l+T9V0vy/qslef/Vkrz/aknef7Uk779akvdfLcn7r5bk/VdL8v6rJXn/1ZK8/2pJ3n+1JO+/WpL3Xy3J+6+W5P1XS/L+qyV5/9WSvP9qSd5/tSTvv1qS918tyfuvluT9V0vy/qslef/Vkrz/aknef7Uk779akvdfLcn7r5bk/VdL8v6rJXL/0nK2P88uZ3f9gd//rvUHfv/Y9FiFta23/sDvH9f6A79/XOsP/P5xrT+w//esP3L/j2v9gd//tq2P9R+tt/7A73/X+gP7f9f6Lfn6I5+/nvVHPn896498/nrWH/n89aw/8vnrWH/k/h/X+pOfv5H7f1zrT37+Ru7/ca0/+fkbuf/Htf7k52/k/h/X+j99/nbvBH959lwfP3k7958EObd/qvbjbUFj1TYqtTOV2iWn2icFll7Bml7Bll7Bnl7BkV5BUg/xo+BI6gueFCQ9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esn8Vei5FnfoJfNXoWdQ3KGXzF+Fnhdxh14yfxV6tsMdesn8Veg5DHfoJfNXoWcm3KGXzF+Fnm9wh14yf7WQ+avQUynu0EvmrxYyf7UYmV4yfxV67scdesn8VegZHXfoJfNXoedp3KGXzF+Fnn1xh14yfxV6TsUdesn8VeiZEnfoJfNXoec/3KGXzF+FntVwh14yfxV6rsIdesn8VegZCHfoJfNXoecV3KGXzF+Fni1wh14yfxV6DsAdesn8VejO/jv0kvmr0P36d+gl81ehu/Dv0Evmr0L31t+hl8xfhe6Yv0Mvmb8K3Qd/h14yfxW6u/0OvWT+iqy/fSfrb9/J+tt3sv72nay/fSfrb9/J+tt3sv72nay/fSfrb9/J+tt3sv72nay/fSfrb9/J+tt3sv72nay/fSfrb9/J+tt3sv72nay/fSfrb9/J+tt3sv72g6y//SDrbz/I+tsPsv72YzIyvVz+6iDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+tsPsv72g6y//SDrbz/I+ttPsv72k6y//STrbz/J+tvPycj0cvmrk6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y//STrbz/J+ttPsv72k6y/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" }], "outputs": { "globals": {}, "structs": { "functions": [{ "fields": [{ "name": "parameters", "type": { "fields": [{ "name": "app_payload", "type": { "fields": [{ "name": "function_calls", "type": { "kind": "array", "length": 4, "type": { "fields": [{ "name": "args_hash", "type": { "kind": "field" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "name": "target_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "is_public", "type": { "kind": "boolean" } }], "kind": "struct", "path": "authwit::entrypoint::function_call::FunctionCall" } } }, { "name": "nonce", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::entrypoint::app::AppPayload" } }], "kind": "struct", "path": "MultiCallEntrypoint::entrypoint_parameters" } }], "kind": "struct", "path": "MultiCallEntrypoint::entrypoint_abi" }] } }, "file_map": { "102": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", "source": "use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n side_effect::SideEffect, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nfn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n" }, "130": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr", "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_encrypted_log_hash<N, M, L>(\n encrypted_log: [Field; M]\n) -> Field where [Field; N]: LensForEncryptedLog<N, M, L> {\n let mut bytes = [0; L];\n // Note that bytes.append(encrypted_log[i].to_be_bytes(31)) results in bound error\n for i in 0..M-1 {\n let to_add = encrypted_log[i].to_be_bytes(31);\n for j in 0..31 {\n bytes[i*31 + j] = to_add[j];\n }\n }\n // can't assign as L - not in scope error for: L-31*(M-1)\n let num_bytes = bytes.len() as u32 - 31*(M-1);\n let to_add_final = encrypted_log[M-1].to_be_bytes(num_bytes);\n for j in 0..num_bytes {\n bytes[(M-1)*31 + j] = to_add_final[j];\n }\n sha256_to_field(bytes)\n}\n\npub fn compute_unencrypted_log_hash<T, N, M>(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T,\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_enc_log_hash_304() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x0021a0d4aa9989656b592187cf6da1965df53ab2ff2277421e663465cf20d3e9,\n 0x00c3969cc350f3474f8187a33ac1317181961f5f94043b07ce888d85a5d20cb5,\n 0x0058198041ed1547b056955b5141a5a8a1551b0c8d094255ec9daaf3604d9348,\n 0x00247ad96df2e4d984cf795ed7316234743a681f824a45c46253de8bfde48850,\n 0x007fc251f4ce44f4e9aba3dbf6567228be28fac85660156f2825ddb0b0577457,\n 0x009315851323c6bc2aaa42e23fe5f3be97208f2d8167eafdfc5742d94f2f4dd4,\n 0x00b938289e563b0fe01982cd9b8d9e33e3069046768ad01c0fb05e429e7b7909,\n 0x00fbcc257a3211f705b471eee763b0f43876a2b2178fab6d2b09bd2b7e086584,\n 0x000000000000008c3289b5793b7448f4d45ecde039d004b6f037cad10b5c2336\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x001e3c013994947fe28957a876bf1b2c3a69ac69cc92909efd4f2ae9b972f893);\n}\n\n#[test]\nfn compute_enc_log_hash_368() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x002190697d2a50e229a7a077e0951073f7d51e46679f10466153c308b63b1ea9,\n 0x00543e346facc6799b94514c9d461bcc836c04b083b13c2e4544a39130473c1e,\n 0x000df76d59526f8f953bcc7d9f77cdaefd36435931f0d7348f794bc275b42ded,\n 0x00a6d390ee1723af7f7ac1ae4fc81a266b2370fe07040a36d06dbe242e02413e,\n 0x00acbce15b6af1fbe94bd0f7b70f11768265dff77bfe63398f2a053efdfdf26d,\n 0x00b8b131b9f42c689beb095ba4f4a836d4d15c9068d0422e9add6ca82b786329,\n 0x00661a6a654b38f0f97d404ef5553e0efea9ed670561ae86685b31bbb2824fac,\n 0x00113a6b58edfaec0065b365f66ba8d8aa68254b8690035e8d671a17a843f0a1,\n 0x0023f2d2eae8c4449bac8f268a3e62a3faace1fe1401f0efdc8b0ccfbc8fb271,\n 0x00cf6603f8c61993dd2f662c719671c61727a2f4e925fb988b23d31feccd77d9,\n 0x0000000000a402a84b7294671799c38dd805f6a827a3a12633fdf91a57debe1f\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x00a0d651ac0cbc01b72430fa6a05d91738595af6e0229347b4c9968223387aeb);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n" }, "135": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr", "source": "use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n" }, "152": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn compute_from_public_keys_and_partial_address(\n nullifier_public_key: GrumpkinPoint,\n incoming_public_key: GrumpkinPoint,\n outgoing_public_key: GrumpkinPoint,\n tagging_public_key: GrumpkinPoint,\n partial_address: PartialAddress,\n ) -> AztecAddress {\n let public_keys_hash = PublicKeysHash::compute_new(\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n );\n\n let computed_address = AztecAddress::compute(public_keys_hash, partial_address);\n\n computed_address\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n" }, "155": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr", "source": "use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n" }, "156": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr", "source": "use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize<TX_CONTEXT_LENGTH> for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, TX_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<TX_CONTEXT_LENGTH> for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "160": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr", "source": "use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Hash, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n" }, "163": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", "source": "use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n" }, "164": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr", "source": "use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "167": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", "source": "struct Reader<N> {\n data: [Field; N],\n offset: u64,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n" }, "183": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr", "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse dep::std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize<GAS_LENGTH> for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize<GAS_LENGTH> for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n" }, "185": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr", "source": "use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable}, read_request::ReadRequestContext},\n address::AztecAddress, constants::NULLIFIER_LENGTH, hash::silo_nullifier,\n traits::{Empty, Hash, Serialize, Deserialize}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_LENGTH> for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize<NULLIFIER_LENGTH> for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ReadRequestContext) {\n let siloed_value = silo_nullifier(read_request.contract_address, read_request.value);\n assert_eq(self.value, siloed_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n" }, "188": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" }, "195": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr", "source": "use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x2485b8cfe671417410382ba6dfc803de70d9d45008a1b30c31b34d7c4de92106;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "197": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr", "source": "use dep::std::cmp::Eq;\nuse crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec<Field, GLOBAL_VARIABLES_LENGTH> = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n" }, "198": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_key_validation_request.nr", "source": "use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n constants::{NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH, NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, grumpkin_point::GrumpkinPoint,\n};\n\nstruct NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for NullifierKeyValidationRequest {\n fn eq(self, request: NullifierKeyValidationRequest) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequest {\n fn empty() -> Self {\n NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n }\n }\n}\n\nimpl NullifierKeyValidationRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> NullifierKeyValidationRequestContext {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: self.master_nullifier_public_key,\n app_nullifier_secret_key: self.app_nullifier_secret_key,\n contract_address\n }\n }\n}\n\nstruct NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field,\n contract_address: AztecAddress,\n}\n\nimpl Eq for NullifierKeyValidationRequestContext {\n fn eq(self, request: NullifierKeyValidationRequestContext) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n & (request.contract_address.eq(self.contract_address))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequestContext {\n fn empty() -> Self {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n self.contract_address.to_field(),\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n contract_address: AztecAddress::from_field(fields[3]),\n }\n }\n}\n\n" }, "203": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr", "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_FEES_LENGTH> for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize<GAS_FEES_LENGTH> for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n" }, "209": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr", "source": "use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n side_effect::SideEffect, gas::Gas, global_variables::GlobalVariables\n},\n address::AztecAddress,\n constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1a2da219bb2e3ac24519fd844365c4f656fc3ba8c58f2960706d25bceb4d1769;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "211": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr", "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec<Field, CALL_CONTEXT_LENGTH> = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n" }, "213": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr", "source": "use crate::{\n abis::read_request::ReadRequestContext, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable},\n constants::{NOTE_HASH_LENGTH, NOTE_HASH_CONTEXT_LENGTH}, hash::silo_note_hash,\n traits::{Empty, Serialize, Deserialize}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_LENGTH> for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_LENGTH> for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn to_context(self, nullifier_counter: u32) -> NoteHashContext {\n NoteHashContext { value: self.value, counter: self.counter, nullifier_counter }\n }\n}\n\nstruct NoteHashContext {\n value: Field,\n counter: u32,\n nullifier_counter: u32,\n}\n\nimpl Ordered for NoteHashContext {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteHashContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHashContext {\n fn eq(self, other: NoteHashContext) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n & (self.nullifier_counter == other.nullifier_counter)\n }\n}\n\nimpl Empty for NoteHashContext {\n fn empty() -> Self {\n NoteHashContext {\n value: 0,\n counter: 0,\n nullifier_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn serialize(self) -> [Field; NOTE_HASH_CONTEXT_LENGTH] {\n [self.value, self.counter as Field, self.nullifier_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn deserialize(values: [Field; NOTE_HASH_CONTEXT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n nullifier_counter: values[2] as u32,\n }\n }\n}\n\nimpl Readable for NoteHashContext {\n fn assert_match_read_request(self, read_request: ReadRequestContext) {\n // TODO(#6122)\n let siloed_value = silo_note_hash(read_request.contract_address, read_request.value);\n assert_eq(self.value, siloed_value, \"Value of the note hash does not match read request\");\n assert(\n read_request.counter > self.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl NoteHashContext {\n pub fn to_note_hash(self) -> NoteHash {\n NoteHash { value: self.value, counter: self.counter }\n }\n\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.value, counter: 0 }\n }\n}\n" }, "214": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr", "source": "use crate::{\n abis::side_effect::OrderedValue, traits::{Empty, Serialize, Deserialize}, address::AztecAddress,\n constants::READ_REQUEST_LENGTH\n};\nuse dep::std::cmp::Eq;\n\nglobal READ_REQUEST_CONTEXT_SERIALIZED_LEN = 3;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl OrderedValue<Field> for ReadRequest {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> ReadRequestContext {\n ReadRequestContext { value: self.value, counter: self.counter, contract_address }\n }\n}\n\nstruct ReadRequestContext {\n value: Field,\n counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl OrderedValue<Field> for ReadRequestContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequestContext {\n fn eq(self, read_request: ReadRequestContext) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n & (self.contract_address.eq(read_request.contract_address))\n }\n}\n\nimpl Empty for ReadRequestContext {\n fn empty() -> Self {\n ReadRequestContext {\n value: 0,\n counter: 0,\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn serialize(self) -> [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN] {\n [self.value, self.counter as Field, self.contract_address.to_field()]\n }\n}\n\nimpl Deserialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn deserialize(values: [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n contract_address: AztecAddress::from_field(values[2]),\n }\n }\n}\n\n" }, "216": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr", "source": "use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs = PublicCircuitPublicInputs::empty();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs\n };\n call_stack_item\n }\n}\n\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, side_effect::SideEffect\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x1595b195f0faa3a492109039dc807b291d0edd81a5e3a380866d5098ffd505dd;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x1122a7d7e6174b7e5d111c8eb0233564d3a1ffd755afc7ce4b594d738e2770d7;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n" }, "217": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr", "source": "use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n nullifier_key_validation_request::NullifierKeyValidationRequest, note_hash::NoteHash,\n nullifier::Nullifier, read_request::ReadRequest, side_effect::SideEffect\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext\n};\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n encrypted_logs_hashes: [SideEffect; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.nullifier_key_validation_requests == other.nullifier_key_validation_requests) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_stack_hashes == other.private_call_stack_hashes) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n (self.encrypted_log_preimages_length == other.encrypted_log_preimages_length) &\n (self.unencrypted_log_preimages_length == other.unencrypted_log_preimages_length) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_key_validation_requests.len() {\n fields.extend_from_array(self.nullifier_key_validation_requests[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n fields.extend_from_array(self.private_call_stack_hashes);\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n encrypted_logs_hashes: [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x249d46b5a3e35f6489e793cd604e375634d4bfdac762ec06b5f8f03016bb4257;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "22": { "path": "std/field.nr", "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n" }, "220": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr", "source": "use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option<u32>\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n" }, "221": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr", "source": "use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u64 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}" }, "222": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr", "source": "use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n self.is_private == other.is_private\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n" }, "223": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr", "source": "use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec<Field, GAS_SETTINGS_LENGTH> = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n" }, "225": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/side_effect.nr", "source": "use crate::{\n abis::read_request::ReadRequestContext, address::AztecAddress,\n constants::{GENERATOR_INDEX__SIDE_EFFECT, SIDE_EFFECT_LENGTH},\n traits::{Empty, Hash, Serialize, Deserialize}\n};\nuse dep::std::cmp::Eq;\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\ntrait OrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n}\n\ntrait Readable {\n fn assert_match_read_request(self, read_request: ReadRequestContext);\n}\n\nstruct SideEffect {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for SideEffect {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn serialize(self) -> [Field; SIDE_EFFECT_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn deserialize(values: [Field; SIDE_EFFECT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n" }, "229": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr", "source": "// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n" }, "230": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr", "source": "use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec<Field, CONTENT_COMMITMENT_LENGTH> = BoundedVec::new();\n\n fields.push(self.tx_tree_height);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let tx_tree_height = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n tx_tree_height,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n tx_tree_height: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.tx_tree_height == other.tx_tree_height)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n" }, "231": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr", "source": "use crate::{address::EthAddress, constants::L2_TO_L1_MESSAGE_LENGTH, traits::{Deserialize, Empty, Serialize}};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content)\n }\n}\n\nimpl Serialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content]\n }\n}\n\nimpl Deserialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n }\n }\n}\n" }, "234": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n" }, "322": { "path": "/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr", "source": "// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: pub AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n" }, "4": { "path": "std/collections/bounded_vec.nr", "source": "use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<Len>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, MaxLen, Len> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n" }, "53": { "path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr", "source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 420;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n false,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n false,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n" }, "70": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr", "source": "use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_encrypted_log_hash, compute_unencrypted_log_hash},\n oracle::{\n arguments, returns, call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n},\n header::get_header_at, logs::emit_encrypted_log,\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n nullifier_key::{get_nullifier_keys, NullifierKeys}\n}\n};\nuse dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, side_effect::SideEffect\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n grumpkin_point::GrumpkinPoint, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{is_empty, Deserialize, Empty}\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n encrypted_logs_hashes: BoundedVec<SideEffect, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n nullifier_key: Option<NullifierKeys>,\n}\n\nimpl ContextInterface for PrivateContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let side_effect_counter = inputs.start_side_effect_counter;\n let mut min_revertible_side_effect_counter = 0;\n if is_empty(inputs.call_context.msg_sender) {\n min_revertible_side_effect_counter = side_effect_counter;\n }\n PrivateContext {\n inputs,\n side_effect_counter,\n min_revertible_side_effect_counter,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n nullifier_key: Option::none()\n }\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n encrypted_log_preimages_length: self.encrypted_log_preimages_length + 4,\n unencrypted_log_preimages_length: self.unencrypted_log_preimages_length + 4,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn end_setup(&mut self) {\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.side_effect_counter };\n self.note_hash_read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_app_nullifier_secret_key(&mut self, account: AztecAddress) -> Field {\n let keys = if self.nullifier_key.is_none() {\n let keys = get_nullifier_keys(account);\n let request = NullifierKeyValidationRequest {\n master_nullifier_public_key: keys.master_nullifier_public_key,\n app_nullifier_secret_key: keys.app_nullifier_secret_key\n };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(keys);\n keys\n } else {\n let keys = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(keys.account == account, \"Cannot query nullifier key for more than one account per call\");\n keys\n };\n keys.app_nullifier_secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n // TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n // --> might be a better approach to force devs to make a public function call that emits the log if needed then\n // it would be less easy to accidentally leak information.\n // If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\n pub fn emit_unencrypted_log<T, N, M>(&mut self, log: T) where T: ToBytesForUnencryptedLog<N, M> {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n self.unencrypted_log_preimages_length += 44 + log_slice.len().to_field();\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, side_effect.counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log<N>(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, self.side_effect_counter);\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n self.unencrypted_log_preimages_length += 44 + N*32;\n }\n\n pub fn emit_encrypted_log<N, M, L>(\n &mut self,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog<N, M, L> {\n // TODO(1139): perform encryption in the circuit\n // The oracle call should come last, but we require the encrypted value for now\n let encrypted_log: [Field; M] = emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage,\n self.side_effect_counter\n );\n let log_hash = compute_encrypted_log_hash(encrypted_log);\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.encrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n let encrypted_log_byte_len = 112 + 32 * (N + 3);\n // + processed log len (4)\n self.encrypted_log_preimages_length += encrypted_log_byte_len + 4;\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n self.private_call_stack_hashes.push(item.hash());\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_stack_hashes : BoundedVec::new(),\n public_call_stack_hashes : BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs : BoundedVec::new(),\n historical_header: Header::empty(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n nullifier_key: Option::none(),\n }\n }\n}\n\nstruct PackedReturns {\n packed_returns: Field,\n}\n\nimpl PackedReturns {\n pub fn new(packed_returns: Field) -> Self {\n PackedReturns { packed_returns }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.packed_returns, 0);\n }\n\n pub fn raw(self) -> Field {\n self.packed_returns\n }\n\n pub fn unpack<N>(self) -> [Field; N] {\n let unpacked: [Field; N] = returns::unpack_returns(self.packed_returns);\n assert_eq(self.packed_returns, hash_args_array(unpacked));\n unpacked\n }\n\n pub fn unpack_into<T, N>(self) -> T where T: Deserialize<N> {\n let unpacked: [Field; N] = self.unpack();\n Deserialize::deserialize(unpacked)\n }\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private<N>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<N>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n\n" }, "93": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", "source": "use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n" } } }
|