@aztec/protocol-contracts 0.27.1 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- { "noir_version": "0.24.0+1507b546af5aba243d40442e4f8ba892b7181aea", "name": "ContractClassRegisterer", "functions": [{ "name": "broadcast_unconstrained_function", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::unconstrained_function_broadcasted::UnconstrainedFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 35, "end": 40 }], "artifact_metadata_hash": [{ "start": 33, "end": 34 }], "contract_class_id": [{ "start": 32, "end": 33 }], "function_data": [{ "start": 40, "end": 542 }], "inputs": [{ "start": 0, "end": 32 }], "private_functions_artifact_tree_root": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773] }, "bytecode": "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", "debug_symbols": "1ZjdasJAEIXfZa+DzJzd2Z+8SvEibS0IoqKhUCTv3gSzptIFYQVhrpKF84VvyCYn5GJ2h4+u3x72Z9NeDJNp3y7mfOz20/Lcd6fetNSYzf5zPA6N+druNqaFC0PzL8eS5iRHvmWjL0SBFOcsrMgtzCkW0jFJdkjE7i69bgyzSmuotLYqrZ1Ka1Fp7VVaB5XWUaV10mgNld0Ild0Ild0Ild0Ild0Ild0Ild2Il3Wjs8jWLuFJ66e6UZjDHBWWsHhzaUSi7M2EZUgWFNLjZPnKWC7Mo8ZknTRaW1JpXexGxzaLO5f4zn2CitXkhDhD4sPDR8LaPIMnvwzsrlorV3y7hSAzFdKy3UHIlK+iQhUVq6ji7ubo88uK05/blPyMCT3ELAoY12Gow2wFhlX5U+fBDhkxW4cVy55BN0mEuDwnJMN6XH13p233vttM/4jGZf9zvJ4Ovw==" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "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": 20, "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": [{ "start": 4, "end": 24 }], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [24, 25, 26, 27] }, "bytecode": "H4sIAAAAAAAA/+2YzW6DMAyATYECBbq/bmXrJnHcsUg99MhD7AWqDmm9tFNhe/xpuIuFoesuMwdLtRQlhBB/dkKwmQGABT9i18WFY6H7uann/5NMcK55n5yWEs6BEk5bkBPZJtDvPnV68Ks0o6uAcaiA0VPA6CtgDBQwjhQwhgoYIwWMsQLGsQLGCwWMlwoYrxQwXitgvFHAOFHAeKuA8U4B41SQ0WKMjmkndbmvy0NdZnVZmn4fGsmlGBbZGmN2Up5AWzA2GdCF0/TZxM36iH/A+ugfg+00NgzFbZgvcF5Pel6TKyTM/468/5c+85Mge18+OexZ2ouU75Eel/kqMG3BfysZ122ZEjCdYNaI2lM2lsaRP2hfE3sEzd4M/njO6TwXszHDX+zPQdZ+r8PjdZhdYwsKxkmJ0/ilyyb53wvnHcnP21pzt7MmpI+v+ZOpL0xfJL8OixDa5zHZzCVn7Yj5PpTnyXqy87CmsZnrC2TPkHHHV37HVzEbEzP/jXvwn8X00tx0TfrOzGfmU8whtN9x6uP3qR50bOHxFI0P4Pg8ETWIFPKAzzJweA8PVDxs8YPmQfPRGDFjaRHwoMUPDSa8mFBiwoYJESYcGNBPmY5TQS4PhEkeTf1s6pe3TZmud9tqv1pX6euuKNPtrko/yiJ9328+V1WB10UJ3zr8F0fqGgAA", "debug_symbols": "ndBBCoAgEIXhu8xaIkLTvEq0mMpAEBWVIMS7p3SC3P1v4NtMBuMOTNrZCDLDOEwU5JoherTtEBOGBHISjICyZ61lLAQubVRtystGGmI9aO5BvAeJn6iuG4PG3aj2ljrT478sLw==" }, { "name": "broadcast_private_function", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "unconstrained_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::private_function_broadcasted::PrivateFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "vk_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 40, "end": 45 }], "artifact_metadata_hash": [{ "start": 33, "end": 34 }], "contract_class_id": [{ "start": 32, "end": 33 }], "function_data": [{ "start": 45, "end": 548 }], "inputs": [{ "start": 0, "end": 32 }], "private_function_tree_sibling_path": [{ "start": 35, "end": 40 }], "unconstrained_functions_artifact_tree_root": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780] }, "bytecode": "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", "debug_symbols": "1ZjdaoMwGIbvJcdS8r1ffr2V0QO3dVAobWllMIr3vkiNriwgpFD4jjTwPvJEE1/xpg6nj67fn45X1d4UadW+3dT13B3H4bXvLr1qdaN2x890HBr1tT/sVAvjh+ZfjmyckhRozgZXiAIxTFmwtXOYYiikQ7TZIWoyD+lto4hEWkOkNYu0NiKtrUhrJ9Lai7QOIq2jRGuI7EaI7EaI7EaI7EaI7EaI7EaI7EaI7Ea8rBsNI1ubiCetn+pGS+SnqCXrF28qTVHr7E0ayyTJopBOM8tXxnJhShrJmrVIaxJpXexG1sg2bMAP7iNUrCY2zDMU4+qWmNPktFsmbO5aGy6uXe/tRPm4LHdoTJTRVRRVUaiiijePgssvK4p/HlN0GTOrGKOA2TrM1WG+AuNN+QNtZYUkjOuw8p2EniXhw7JPtB22afTdXfbd+2E3/tlKw/7nfD8dfgE=" }, { "name": "constructor", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }], "param_witnesses": { "inputs": [{ "start": 0, "end": 32 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244] }, "bytecode": "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", "debug_symbols": "1dJBCsMgEAXQu8zahV8iNl6ldDFtLQhiQpRCEe9eQ9NkkVwgq5kPj+EvplAYHpz9EBPZQj3Za6E0cpxTyjxlslKQi882q6CXD46s6kwVO6cBs1ANbVZ9wQGGlGrBkAorhlYHuuv/WKvtMFqNmyDIU7bG+Vq39ObJ8z24+V1azJ/xt9Yv" }, { "name": "register", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "artifact_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "public_bytecode_commitment", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "artifact_hash": [{ "start": 32, "end": 33 }], "inputs": [{ "start": 0, "end": 32 }], "private_functions_root": [{ "start": 33, "end": 34 }], "public_bytecode_commitment": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [15045, 15046, 15047, 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, 15056, 15057, 15058, 15059, 15060, 15061, 15062, 15063, 15064, 15065, 15066, 15067, 15068, 15069, 15070, 15071, 15072, 15073, 15074, 15075, 15076, 15077, 15078, 15079, 15080, 15081, 15082, 15083, 15084, 15085, 15086, 15087, 15088, 15089, 15090, 15091, 15092, 15093, 15094, 15095, 15096, 15097, 15098, 15099, 15100, 15101, 15102, 15103, 15104, 15105, 15106, 15107, 15108, 15109, 15110, 15111, 15112, 15113, 15114, 15115, 15116, 15117, 15118, 15119, 15120, 15121, 15122, 15123, 15124, 15125, 15126, 15127, 15128, 15129, 15130, 15131, 15132, 15133, 15134, 15135, 15136, 15137, 15138, 15139, 15140, 15141, 15142, 15143, 15144, 15145, 15146, 15147, 15148, 15149, 15150, 15151, 15152, 15153, 15154, 15155, 15156, 15157, 15158, 15159, 15160, 15161, 15162, 15163, 15164, 15165, 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15173, 15174, 15175, 15176, 15177, 15178, 15179, 15180, 15181, 15182, 15183, 15184, 15185, 15186, 15187, 15188, 15189, 15190, 15191, 15192, 15193, 15194, 15195, 15196, 15197, 15198, 15199, 15200, 15201, 15202, 15203, 15204, 15205, 15206, 15207, 15208, 15209, 15210, 15211, 15212, 15213, 15214, 15215, 15216, 15217, 15218, 15219, 15220, 15221, 15222, 15223, 15224, 15225, 15226, 15227, 15228, 15229, 15230, 15231, 15232, 15233, 15234, 15235, 15236, 15237, 15238, 15239, 15240, 15241, 15242, 15243, 15244, 15245, 15246, 15247, 15248, 15249, 15250, 15251, 15252, 15253] }, "bytecode": "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", "debug_symbols": "1ZbdasJAEEbfZa9D2ZnZn5m8SulF2loQREVDoYjv3qQ6ibZjgysteGUWvpM5k82s2bnF6qVp56vl1tU7J65+3Lntuln2q23bbFpX+8rNlq/d775yb/PFzNUY8r76kYMoxyQwDFlORhRR+JhFinEIg7CRZonqIB7CWfqpcuDv0hr+yzoQqnUQvNEab7GOAPkYjRDz6A1Wi96rN3gcm4SIRrrrTO+M442h0+it6S6tw11aR8saUKIWIM9n7j2UTIgkKBQJJhoOoFaJRiv0+FUgmwWyjGMUeaoAo/YQONLpE+0r8J9XME9nENR9RvT0/cmieTgiAg1QlsnDhjQNyadRKxw2/MHunbKKkZxsSIhKSQllNzRJQRGF11PyQGBPAOvodpcnI+YHDgs5KuRCIWdPOCf9c+xfyYGTpFiaxAgNLJdhXIbJ9Rj6Cy/K73PTY1SGXdg4P0hi5vON61bvzWbePC9m/Ydet2w/1ofL/Sc=" }], "events": [], "file_map": { "81": { "source": "use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n key::nullifier_key::validate_nullifier_key_against_address, messaging::process_l1_to_l2_message,\n oracle::{\n arguments, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, context::get_portal_address,\n header::get_header_at, nullifier_key::{get_nullifier_key_pair, NullifierKeyPair},\n debug_log::debug_log\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector,\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 side_effect::{SideEffect, SideEffectLinkedToNoteHash}\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, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::is_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_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\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<SideEffect, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, 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_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeyPair>,\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 this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\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 pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_note_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: nullified_commitment, counter: self.side_effect_counter };\n self.new_nullifiers.push(side_effect);\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.call_context.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_values: BoundedVec::new(),\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_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\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 finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\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 return_values: self.return_values.storage,\n // TODO(fees): start this from 0 and test the following:\n // - in the private circuit init that it gets set correctly\n // - in the private circuit inner that it remains 0\n // I've had to initialize the counter here so that it would work for contract deployments\n // the above checks should be doable after we figure out fee payments for contract deployments\n // TO(fees): there are no more contract deployments at the protocol level\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\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 end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash,\n unencrypted_logs_hash,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version\n };\n priv_circuit_pub_inputs\n }\n\n pub fn capture_min_revertible_side_effect_counter(&mut self) {\n self.min_revertible_side_effect_counter = self.side_effect_counter;\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_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinPrivateKey {\n let key_pair = if self.nullifier_key.is_none() {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key);\n let request = NullifierKeyValidationRequest { public_key: key_pair.public_key, secret_key: key_pair.secret_key };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(key_pair);\n key_pair\n } else {\n let key_pair = 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(\n key_pair.account == account, \"Cannot query nullifier key for more than one account per call\"\n );\n key_pair\n };\n key_pair.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 accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\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 ) -> [Field; RETURN_VALUES_LENGTH] {\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(\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 ) -> [Field; RETURN_VALUES_LENGTH] {\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.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\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 item.public_inputs.return_values\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(args);\n assert(args_hash == arguments::pack_arguments(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(args);\n assert(args_hash == arguments::pack_arguments(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(args);\n assert(args_hash == arguments::pack_arguments(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 return_values: [0; RETURN_VALUES_LENGTH],\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: [SideEffect::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash: [0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n reverted: false\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.start_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", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr" }, "84": { "source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n log\n );\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\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.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/log.nr" }, "86": { "source": "use dep::protocol_types::{hash::hash_args, traits::Hash};\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hash for Hasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl Hasher {\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", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hasher.nr" }, "96": { "source": "// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle<T, N>(_msg: T, _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_format_oracle<T, N>(_msg: T, _args: [Field; N], _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_field_oracle(_field: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_array_oracle<T, N>(_arbitrary_array: [T; N]) -> Field {}\n#[oracle(debugLogWithPrefix)]\nfn debug_log_array_with_prefix_oracle<S, T, N>(_prefix: S, _arbitrary_array: [T; N]) -> Field {}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<T>(msg: T) {\n assert(debug_log_oracle(msg, 0) == 0);\n}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\nunconstrained pub fn debug_log_format<T, N>(msg: T, args: [Field; N]) {\n assert(debug_log_format_oracle(msg, args, args.len() as Field) == 0);\n}\n\n/// Example:\n/// `debug_log_field(my_field);`\nunconstrained pub fn debug_log_field(field: Field) {\n assert(debug_log_field_oracle(field) == 0);\n}\n\n/// Example:\n/// `debug_log_array(my_array);`\nunconstrained fn debug_log_array<T, N>(arbitrary_array: [T; N]) {\n assert(debug_log_array_oracle(arbitrary_array) == 0);\n}\n\n/// Example:\n/// `debug_log_array_with_prefix(\"Prefix\", my_array);`\nunconstrained pub fn debug_log_array_with_prefix<S, T, N>(prefix: S, arbitrary_array: [T; N]) {\n assert(debug_log_array_with_prefix_oracle(prefix, arbitrary_array) == 0);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/debug_log.nr" }, "105": { "source": "use dep::protocol_types::{address::AztecAddress, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [\n emit_encrypted_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage\n ), 0\n ]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr" }, "147": { "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},\n contract_class_id::ContractClassId, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, 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 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 AztecAddress::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute_from_public_key(\n pub_key: GrumpkinPoint,\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n portal_contract_address: EthAddress\n ) -> AztecAddress {\n AztecAddress::compute(\n PublicKeysHash::compute(pub_key),\n PartialAddress::compute(\n contract_class_id,\n salt,\n initialization_hash,\n portal_contract_address\n )\n )\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\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() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let contract_address_salt = 3;\n let contract_class_id = ContractClassId::from_field(4);\n let initialization_hash = 5;\n let portal_contract_address = EthAddress::from_field(6);\n\n let address = AztecAddress::compute_from_public_key(\n point,\n contract_class_id,\n contract_address_salt,\n initialization_hash,\n portal_contract_address\n );\n\n assert(address.to_field() == 0x2fd71a4f0742364f194dd16d0ae32d2f47845ddc7f5d328f37d4148b565c4123);\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let partial_address = PartialAddress::from_field(3);\n\n let address = AztecAddress::compute(PublicKeysHash::compute(point), partial_address);\n assert(address.to_field() == 0x0447f893197175723deb223696e2e96dbba1e707ee8507766373558877e74197);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "152": { "source": "use dep::std::cmp::Eq;\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 U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\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" }, "198": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT, ARGS_HASH_CHUNK_LENGTH, FUNCTION_TREE_HEIGHT, NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR, GENERATOR_INDEX__PARTIAL_ADDRESS, GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__FUNCTION_ARGS\n};\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\n\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\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 + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < args.len() {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < args.len() {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\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\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\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\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\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//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\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 // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\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 compute_unique_siloed_note_hashes<N>(\n first_nullifier: Field,\n siloed_note_hashes: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_note_hashes = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_note_hash = siloed_note_hashes[i];\n if siloed_note_hash.value != 0 {\n let nonce = compute_note_hash_nonce(first_nullifier, i);\n unique_siloed_note_hashes[i] = SideEffect {\n value: compute_unique_siloed_note_hash(nonce, siloed_note_hash.value),\n counter: siloed_note_hash.counter\n };\n }\n }\n unique_siloed_note_hashes\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\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 assert(result == 0x142a6d57007171f6eaa33d55976d9dbe739c889c8e920f115f7808dea184c718);\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = [0; 800];\n for i in 0..800 {\n input[i] = i as Field;\n }\n let hash = hash_args(input);\n assert(hash == 0x371960dd84ed3445ab099ac4c1af5ba90e0c713b593e0ca52ee532087c7f097);\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 == 0x2266ac2f9f0c19c015239ef5ea85862fc6fac00db73779b220a4d49c4856c2e1);\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 == 0x0f24729168d4450a5681beafa5e3a899ac28bd17bf5a4877dab37bcd834e1634);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "202": { "source": "use crate::constants::{GENERATOR_INDEX__CONTRACT_LEAF};\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr" }, "245": { "source": "// Copied from noir-contracts/contracts/slow_tree_contract/src/capsule.nr\n// We should extract this to a shared lib in aztec-nr once we settle on a design for capsules\n\n#[oracle(popCapsule)]\nfn pop_capsule_oracle<N>() -> [Field; N] {}\n\n// A capsule is a \"blob\" of data that is passed to the contract through an oracle.\nunconstrained pub fn pop_capsule<N>() -> [Field; N] {\n pop_capsule_oracle()\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/capsule.nr" }, "247": { "source": "mod events;\nmod capsule;\n\ncontract ContractClassRegisterer {\n use dep::aztec::prelude::{AztecAddress, EthAddress, FunctionSelector, emit_unencrypted_log};\n use dep::aztec::protocol_types::{\n contract_class_id::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::{Serialize}\n };\n\n use dep::aztec::log::{emit_unencrypted_log_from_private};\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n use crate::capsule::pop_capsule;\n\n #[aztec(private)]\n fn constructor() {}\n\n #[aztec(private)]\n fn register(artifact_hash: Field, private_functions_root: Field, public_bytecode_commitment: Field) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = pop_capsule();\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ContractClassRegistered\",\n [\n contract_class_id.to_field(),\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassPrivateFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.vk_hash,\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassUnconstrainedFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr" } } }
1
+ { "noir_version": "0.25.0+b11911b9d664d37ba21edaee99d4e027e25a9d70", "name": "ContractClassRegisterer", "functions": [{ "name": "broadcast_private_function", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "unconstrained_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::private_function_broadcasted::PrivateFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "vk_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 40, "end": 45 }], "artifact_metadata_hash": [{ "start": 33, "end": 34 }], "contract_class_id": [{ "start": 32, "end": 33 }], "function_data": [{ "start": 45, "end": 548 }], "inputs": [{ "start": 0, "end": 32 }], "private_function_tree_sibling_path": [{ "start": 35, "end": 40 }], "unconstrained_functions_artifact_tree_root": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780] }, "bytecode": "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", "debug_symbols": "1ZjhasMgFIXfxd+heM/VqHmV0R9Z10GhpKXNBqPk3WdoTFYmBCwU7q8gniOfN9ec4E0dT7u2P5y6q2puirRq3m7qem67cXjt20uvGl2pffcRn0OlPg/HvWpg/FD905ENk5I8zVrvMlIg+EkLtnYWUwgZtQ82MQRN5kG9rRSRSGqIpGaR1EYktRVJXYukdiKpvUjqIJEaIrMRIrMRIrMRIrMRIrMRIrMRIrMRIrMRL8tGw0jUJuBJ6qey0ZK3k9QCSwE9clvUOnGTxrJJspxRx53NK7tFGzEiNWuR1CSSOpuNrOEmDxvwA/toykYTG+bZNHbrypGY1VTretmwvWNtONu7zqUyubC0OzRPLqOLXFTkQpErWzzydfpYUfjzmoJLNrNqY2RstsxWl9lcgY03+R+0lQ6JNi6z5SsJPUPC+eWcxCW2cfTdXg7t+3E/3myNk1/dLl10xWH/c77PDL8=" }, { "name": "constructor", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }], "param_witnesses": { "inputs": [{ "start": 0, "end": 32 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244] }, "bytecode": "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", "debug_symbols": "1dJBCsMgEAXQu8zahTON1HiV0oVNLQhiQrSFIt69ShOzSC6Q1fCZx/AXk8CNg4529AFUgh7ULUGYtK8pRD1HUJyB8c8yM4OXdQYUdTKznRMoxUIFkWha0gFGzmnByAkbRnE50F1P7fJ1s6XGnQHyU7bG87Uu6aNnqx/O1Hepy7cf1u8pMX6n/yb/AA==" }, { "name": "broadcast_unconstrained_function", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::unconstrained_function_broadcasted::UnconstrainedFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 35, "end": 40 }], "artifact_metadata_hash": [{ "start": 33, "end": 34 }], "contract_class_id": [{ "start": 32, "end": 33 }], "function_data": [{ "start": 40, "end": 542 }], "inputs": [{ "start": 0, "end": 32 }], "private_functions_artifact_tree_root": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773] }, "bytecode": "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", "debug_symbols": "1ZjRisMgEEX/xedQnNGJTn5l6UO224VASEuTXVhC/n0NjcmWFQIWCvMUxHvljFGvOKr2cqqH5tL1qhoVaFW9jaq/1t3c7If6NqhKF+rcfYTvVKjPpj2rCq2fin86IF6U4GHVepeQIrJftGiIVjEwJ9SeKTKwBvugPhYKQCQ1iqQ2IqmtSGoSSV2KpHYiqb1IapZIjSKzEUVmI4rMRhSZjSgyG1FkNqLIbMSXZaM1GKkt45PUT2UjgadFSojbBHpMlah15AaNW5FAJqEOla0ju00bMGZqlkhttEjqZDZaMBHcWoYH9tmUjCZLGqKJSre7JYyJNZS63AqmO9bBJk835+I0Od6WO2oTXWWWy2W5fJYrubrBl/GwAv7zm9gtNtK7NoMJG+TZMM9mMmx4SF91dlZIsJk8WzLsAfUKic5v+yQMcQyt7/rW1O/teX4jmju/ulN8MgrN4ed675l+AQ==" }, { "name": "register", "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": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "artifact_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "public_bytecode_commitment", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "artifact_hash": [{ "start": 32, "end": 33 }], "inputs": [{ "start": 0, "end": 32 }], "private_functions_root": [{ "start": 33, "end": 34 }], "public_bytecode_commitment": [{ "start": 34, "end": 35 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "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": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "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": "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": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "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": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "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": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "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": "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": "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": "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": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [15045, 15046, 15047, 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, 15056, 15057, 15058, 15059, 15060, 15061, 15062, 15063, 15064, 15065, 15066, 15067, 15068, 15069, 15070, 15071, 15072, 15073, 15074, 15075, 15076, 15077, 15078, 15079, 15080, 15081, 15082, 15083, 15084, 15085, 15086, 15087, 15088, 15089, 15090, 15091, 15092, 15093, 15094, 15095, 15096, 15097, 15098, 15099, 15100, 15101, 15102, 15103, 15104, 15105, 15106, 15107, 15108, 15109, 15110, 15111, 15112, 15113, 15114, 15115, 15116, 15117, 15118, 15119, 15120, 15121, 15122, 15123, 15124, 15125, 15126, 15127, 15128, 15129, 15130, 15131, 15132, 15133, 15134, 15135, 15136, 15137, 15138, 15139, 15140, 15141, 15142, 15143, 15144, 15145, 15146, 15147, 15148, 15149, 15150, 15151, 15152, 15153, 15154, 15155, 15156, 15157, 15158, 15159, 15160, 15161, 15162, 15163, 15164, 15165, 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15173, 15174, 15175, 15176, 15177, 15178, 15179, 15180, 15181, 15182, 15183, 15184, 15185, 15186, 15187, 15188, 15189, 15190, 15191, 15192, 15193, 15194, 15195, 15196, 15197, 15198, 15199, 15200, 15201, 15202, 15203, 15204, 15205, 15206, 15207, 15208, 15209, 15210, 15211, 15212, 15213, 15214, 15215, 15216, 15217, 15218, 15219, 15220, 15221, 15222, 15223, 15224, 15225, 15226, 15227, 15228, 15229, 15230, 15231, 15232, 15233, 15234, 15235, 15236, 15237, 15238, 15239, 15240, 15241, 15242, 15243, 15244, 15245, 15246, 15247, 15248, 15249, 15250, 15251, 15252, 15253] }, "bytecode": "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", "debug_symbols": "1ZZha8IwEIb/Sz4Xyd0lzV3/ytiHzjkQpIp2gyH+9yWzSXWLK0Ym+ElD36d5Luml3avVet72y3W3U81eiWqe9mq3absw2vXttleNrtSie/W/h0q9LVcL1aDhQ/UrB1aGJDCkLLtMFFF4yCJZm8Igkkmz2OggGsxZ+rlSoB/SGu5lbQijtRG80RpvsbbAdohaxHEBGXMlah29QeNYJFjKpH1l6c5uzHqNYE0PaW0e0trmrAEl2gBpPnMPUJ2FSEyELMFEwQaiVU2jFWr6nsBlJ3AytpHlqQlYaEj7FYDTFQ0z8L/PkD2dQdDF9g7F/lhZzB6OiEAJcjJ52FBMQ63rUcseN3yWr51cFCM52RBTR0pKqHxBkxQUUXg9JTOCfAdwbF3/96TFdOKwkKNCzhRy+Q7nOr4cwyOZOL9EA1ZPYoQZzJVhXIbJ9RjqCw/K330TMCrDLmycTpLo+Hzj/Oij3S7bl9UifOiFi+/dPH73+WH/uTleOXwB" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "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": 20, "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": [{ "start": 4, "end": 24 }], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [24, 25, 26, 27] }, "bytecode": "H4sIAAAAAAAA/+2YzW6DMAyATYECBbq/bmXrJnHcsUg99MhD7AWqDmm9tFNhe/xpuIuFoesuMwdLtRQlhBB/dkKwmQGABT9i18WFY6H7uann/5NMcK55n5yWEs6BEk5bkBPZJtDvPnV68Ks0o6uAcaiA0VPA6CtgDBQwjhQwhgoYIwWMsQLGsQLGCwWMlwoYrxQwXitgvFHAOFHAeKuA8U4B41SQ0WKMjmkndbmvy0NdZnVZmn4fGsmlGBbZGmN2Up5AWzA2GdCF0/TZxM36iH/A+ugfg+00NgzFbZgvcF5Pel6TKyTM/468/5c+85Mge18+OexZ2ouU75Eel/kqMG3BfysZ122ZEjCdYNaI2lM2lsaRP2hfE3sEzd4M/njO6TwXszHDX+zPQdZ+r8PjdZhdYwsKxkmJ0/ilyyb53wvnHcnP21pzt7MmpI+v+ZOpL0xfJL8OixDa5zHZzCVn7Yj5PpTnyXqy87CmsZnrC2TPkHHHV37HVzEbEzP/jXvwn8X00tx0TfrOzGfmU8whtN9x6uP3qR50bOHxFI0P4Pg8ETWIFPKAzzJweA8PVDxs8YPmQfPRGDFjaRHwoMUPDSa8mFBiwoYJESYcGNBPmY5TQS4PhEkeTf1s6pe3TZmud9tqv1pX6euuKNPtrko/yiJ9328+V1WB10UJ3zr8F0fqGgAA", "debug_symbols": "nZBLCoAgFEX38sYSEX3MrUSDlxkIoqIWhLj3lGgBObsfzuREUIZjkEZ7YBHapuuBLRG8RV0GH9AFYB0dCAi95zS3icAhlci5p2klBRpqoLEGmmog+hPK7UIncVOiaCnnqflnKddw2/dJDw==" }], "events": [], "file_map": { "82": { "source": "use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n key::nullifier_key::validate_nullifier_key_against_address, messaging::process_l1_to_l2_message,\n oracle::{\n arguments, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, context::get_portal_address,\n header::get_header_at, nullifier_key::{get_nullifier_key_pair, NullifierKeyPair},\n debug_log::debug_log\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector,\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 side_effect::{SideEffect, SideEffectLinkedToNoteHash}\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, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::is_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_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\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<SideEffect, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, 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_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeyPair>,\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 this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.private_global_variables.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 // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_note_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: nullified_commitment, counter: self.side_effect_counter };\n self.new_nullifiers.push(side_effect);\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.call_context.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_values: BoundedVec::new(),\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_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\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 finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\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 return_values: self.return_values.storage,\n // TODO(fees): start this from 0 and test the following:\n // - in the private circuit init that it gets set correctly\n // - in the private circuit inner that it remains 0\n // I've had to initialize the counter here so that it would work for contract deployments\n // the above checks should be doable after we figure out fee payments for contract deployments\n // TO(fees): there are no more contract deployments at the protocol level\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\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 end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash,\n unencrypted_logs_hash,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version\n };\n priv_circuit_pub_inputs\n }\n\n pub fn capture_min_revertible_side_effect_counter(&mut self) {\n self.min_revertible_side_effect_counter = self.side_effect_counter;\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_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinPrivateKey {\n let key_pair = if self.nullifier_key.is_none() {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key);\n let request = NullifierKeyValidationRequest { public_key: key_pair.public_key, secret_key: key_pair.secret_key };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(key_pair);\n key_pair\n } else {\n let key_pair = 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(\n key_pair.account == account, \"Cannot query nullifier key for more than one account per call\"\n );\n key_pair\n };\n key_pair.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 accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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 ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\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 ) -> [Field; RETURN_VALUES_LENGTH] {\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(\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 ) -> [Field; RETURN_VALUES_LENGTH] {\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.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\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 item.public_inputs.return_values\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(args);\n assert(args_hash == arguments::pack_arguments(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(args);\n assert(args_hash == arguments::pack_arguments(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(args);\n assert(args_hash == arguments::pack_arguments(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 return_values: [0; RETURN_VALUES_LENGTH],\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: [SideEffect::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash: [0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n reverted: false\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.start_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", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr" }, "85": { "source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n log\n );\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\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.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/log.nr" }, "87": { "source": "use dep::protocol_types::{hash::hash_args, traits::Hash};\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hash for Hasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl Hasher {\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", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hasher.nr" }, "97": { "source": "// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle<T, N>(_msg: T, _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_format_oracle<T, N>(_msg: T, _args: [Field; N], _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_field_oracle(_field: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_array_oracle<T, N>(_arbitrary_array: [T; N]) -> Field {}\n#[oracle(debugLogWithPrefix)]\nfn debug_log_array_with_prefix_oracle<S, T, N>(_prefix: S, _arbitrary_array: [T; N]) -> Field {}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<T>(msg: T) {\n assert(debug_log_oracle(msg, 0) == 0);\n}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\nunconstrained pub fn debug_log_format<T, N>(msg: T, args: [Field; N]) {\n assert(debug_log_format_oracle(msg, args, args.len() as Field) == 0);\n}\n\n/// Example:\n/// `debug_log_field(my_field);`\nunconstrained pub fn debug_log_field(field: Field) {\n assert(debug_log_field_oracle(field) == 0);\n}\n\n/// Example:\n/// `debug_log_array(my_array);`\nunconstrained fn debug_log_array<T, N>(arbitrary_array: [T; N]) {\n assert(debug_log_array_oracle(arbitrary_array) == 0);\n}\n\n/// Example:\n/// `debug_log_array_with_prefix(\"Prefix\", my_array);`\nunconstrained pub fn debug_log_array_with_prefix<S, T, N>(prefix: S, arbitrary_array: [T; N]) {\n assert(debug_log_array_with_prefix_oracle(prefix, arbitrary_array) == 0);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/debug_log.nr" }, "106": { "source": "use dep::protocol_types::{address::AztecAddress, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [\n emit_encrypted_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage\n ), 0\n ]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr" }, "148": { "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},\n contract_class_id::ContractClassId, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, 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 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 AztecAddress::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute_from_public_key(\n pub_key: GrumpkinPoint,\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n portal_contract_address: EthAddress\n ) -> AztecAddress {\n AztecAddress::compute(\n PublicKeysHash::compute(pub_key),\n PartialAddress::compute(\n contract_class_id,\n salt,\n initialization_hash,\n portal_contract_address\n )\n )\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\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() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let contract_address_salt = 3;\n let contract_class_id = ContractClassId::from_field(4);\n let initialization_hash = 5;\n let portal_contract_address = EthAddress::from_field(6);\n\n let address = AztecAddress::compute_from_public_key(\n point,\n contract_class_id,\n contract_address_salt,\n initialization_hash,\n portal_contract_address\n );\n\n assert(address.to_field() == 0x2fd71a4f0742364f194dd16d0ae32d2f47845ddc7f5d328f37d4148b565c4123);\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let partial_address = PartialAddress::from_field(3);\n\n let address = AztecAddress::compute(PublicKeysHash::compute(point), partial_address);\n assert(address.to_field() == 0x0447f893197175723deb223696e2e96dbba1e707ee8507766373558877e74197);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "153": { "source": "use dep::std::cmp::Eq;\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 U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\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" }, "199": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT, ARGS_HASH_CHUNK_LENGTH, FUNCTION_TREE_HEIGHT, NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR, GENERATOR_INDEX__PARTIAL_ADDRESS, GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__FUNCTION_ARGS\n};\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\n\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\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 + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < args.len() {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < args.len() {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\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\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\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\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\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//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\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 // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\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 compute_unique_siloed_note_hashes<N>(\n first_nullifier: Field,\n siloed_note_hashes: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_note_hashes = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_note_hash = siloed_note_hashes[i];\n if siloed_note_hash.value != 0 {\n let nonce = compute_note_hash_nonce(first_nullifier, i);\n unique_siloed_note_hashes[i] = SideEffect {\n value: compute_unique_siloed_note_hash(nonce, siloed_note_hash.value),\n counter: siloed_note_hash.counter\n };\n }\n }\n unique_siloed_note_hashes\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\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 assert(result == 0x142a6d57007171f6eaa33d55976d9dbe739c889c8e920f115f7808dea184c718);\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = [0; 800];\n for i in 0..800 {\n input[i] = i as Field;\n }\n let hash = hash_args(input);\n assert(hash == 0x371960dd84ed3445ab099ac4c1af5ba90e0c713b593e0ca52ee532087c7f097);\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 == 0x2266ac2f9f0c19c015239ef5ea85862fc6fac00db73779b220a4d49c4856c2e1);\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 == 0x0f24729168d4450a5681beafa5e3a899ac28bd17bf5a4877dab37bcd834e1634);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "203": { "source": "use crate::constants::{GENERATOR_INDEX__CONTRACT_LEAF};\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr" }, "246": { "source": "// Copied from noir-contracts/contracts/slow_tree_contract/src/capsule.nr\n// We should extract this to a shared lib in aztec-nr once we settle on a design for capsules\n\n#[oracle(popCapsule)]\nfn pop_capsule_oracle<N>() -> [Field; N] {}\n\n// A capsule is a \"blob\" of data that is passed to the contract through an oracle.\nunconstrained pub fn pop_capsule<N>() -> [Field; N] {\n pop_capsule_oracle()\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/capsule.nr" }, "248": { "source": "mod events;\nmod capsule;\n\ncontract ContractClassRegisterer {\n use dep::aztec::prelude::{AztecAddress, EthAddress, FunctionSelector, emit_unencrypted_log};\n use dep::aztec::protocol_types::{\n contract_class_id::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::{Serialize}\n };\n\n use dep::aztec::log::{emit_unencrypted_log_from_private};\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n use crate::capsule::pop_capsule;\n\n #[aztec(private)]\n fn constructor() {}\n\n #[aztec(private)]\n fn register(artifact_hash: Field, private_functions_root: Field, public_bytecode_commitment: Field) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = pop_capsule();\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ContractClassRegistered\",\n [\n contract_class_id.to_field(),\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassPrivateFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.vk_hash,\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassUnconstrainedFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr" } } }