@aztec/protocol-contracts 0.35.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/artifacts/ContractClassRegisterer.json +1 -1
- package/dest/artifacts/ContractInstanceDeployer.json +1 -1
- package/dest/artifacts/GasToken.json +1 -1
- package/dest/artifacts/KeyRegistry.json +1 -0
- package/dest/artifacts/MultiCallEntrypoint.json +1 -1
- package/dest/gas-token/index.d.ts.map +1 -1
- package/dest/gas-token/index.js +2 -3
- package/dest/instance-deployer/index.d.ts.map +1 -1
- package/dest/instance-deployer/index.js +6 -2
- package/dest/key-registry/artifact.d.ts +2 -0
- package/dest/key-registry/artifact.d.ts.map +1 -0
- package/dest/key-registry/artifact.js +4 -0
- package/dest/key-registry/index.d.ts +7 -0
- package/dest/key-registry/index.d.ts.map +1 -0
- package/dest/key-registry/index.js +16 -0
- package/dest/multi-call-entrypoint/index.d.ts.map +1 -1
- package/dest/multi-call-entrypoint/index.js +2 -3
- package/dest/protocol_contract.d.ts +3 -3
- package/dest/protocol_contract.d.ts.map +1 -1
- package/dest/protocol_contract.js +4 -6
- package/package.json +12 -4
- package/src/artifacts/ContractClassRegisterer.json +1 -1
- package/src/artifacts/ContractInstanceDeployer.json +1 -1
- package/src/artifacts/GasToken.json +1 -1
- package/src/artifacts/KeyRegistry.json +1 -0
- package/src/artifacts/MultiCallEntrypoint.json +1 -1
- package/src/gas-token/index.ts +2 -2
- package/src/instance-deployer/index.ts +7 -1
- package/src/key-registry/artifact.ts +6 -0
- package/src/key-registry/index.ts +22 -0
- package/src/multi-call-entrypoint/index.ts +2 -2
- package/src/protocol_contract.ts +1 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"noir_version":"0.28.0+587973ff94368b5ae6247f04c26fd0ef6a933b51","name":"KeyRegistry","functions":[{"name":"register","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"public_global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"transaction_fee","type":{"kind":"field"}}]},"visibility":"private"},{"name":"address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"partial_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nullifier_public_key","type":{"kind":"field"},"visibility":"private"},{"name":"incoming_public_key","type":{"kind":"field"},"visibility":"private"},{"name":"outgoing_public_key","type":{"kind":"field"},"visibility":"private"},{"name":"tagging_public_key","type":{"kind":"field"},"visibility":"private"}],"param_witnesses":{"address":[{"start":40,"end":41}],"incoming_public_key":[{"start":43,"end":44}],"inputs":[{"start":0,"end":40}],"nullifier_public_key":[{"start":42,"end":43}],"outgoing_public_key":[{"start":44,"end":45}],"partial_address":[{"start":41,"end":42}],"tagging_public_key":[{"start":45,"end":46}]},"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"nullifier_read_requests","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_non_existent_read_requests","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"contract_storage_update_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest","fields":[{"name":"storage_slot","type":{"kind":"field"}},{"name":"new_value","type":{"kind":"field"}}]}}},{"name":"contract_storage_reads","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::contrakt::storage_read::StorageRead","fields":[{"name":"storage_slot","type":{"kind":"field"}},{"name":"current_value","type":{"kind":"field"}}]}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}}]}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"unencrypted_log_preimages_length","type":{"kind":"field"}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"prover_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"end_gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"transaction_fee","type":{"kind":"field"}}]},"visibility":"public"},"return_witnesses":[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,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273],"error_types":{}},"bytecode":"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","debug_symbols":"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1/oyrvVlXOvLuNaXca0v41pfxrW+jGt9Gdf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V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Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPWc6Vc+ZTtVzplP1nOlUD8cnbPWc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO5jnTyTxnOpnnTCfznOlkh+MT1jxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyx5lO5XCc6XQW7/eEPYv3e8Kexfs9Yc/i/Z6wZ/F+T9izeL8n7Fm83xP2LN7vCXsW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/iEDZ4znYLnTKfgOdMpeM50CofjEzZ4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+g50yl6znSKnjOdoudMp3g4PmGj50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdEqeM52S50yn5DnTKXnOdEqH4xM2ec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTCfxnOkknjOdxHOmk3jOdJLD8QkrnjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTKfsOdMpe850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"},{"name":"compute_note_hash_and_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"param_witnesses":{"contract_address":[{"start":0,"end":1}],"nonce":[{"start":1,"end":2}],"note_type_id":[{"start":3,"end":4}],"serialized_note":[],"storage_slot":[{"start":2,"end":3}]},"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[4,5,6,7],"error_types":{}},"bytecode":"H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==","debug_symbols":"ndpBattQGIXRvWgciu+vpycpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/3l7ftse7y/Ol+37ZXgcKw/D7vhyf+qfD8Pr/rAbHmttn98e7qNZRouMVhiNGxlFRiWjUUZNRpOMpIhRihiliFGKaFJEkyKaFNGkiCZFNCmiSRFNimhSRJMiJilikiImKWKSIiYpYpIiJilikiImKWKSIroU0aWILkV0KaJLEV2K6FJElyK6FNGliFmKmKWIWYqYpYhZipiliFmKmKWIWYqYpYhFilikiEWKWKSIRYpYpIhFilikiEWKWKSIVYpYpYhVililiFWKWKWIVYpYpYhVililiGw2tAqtilYjrRqtJlp1Ws20WmhFbYTaCLURaiPURqiNUBuhNkJthNoItVHURlEbRW0UtVHURlEbxJkhzwyBZkg0Q6QZMs0QaoZUM8SaIdcMwWZINkO0GbLNEG6GdDPEmyHfDAFnSDhDxBkyzhByhpQzxJwh5wxBZ0g6Q9QZss4Qdoa0M8SdIe8MgWdIPEPkGTLPEHqG1DPEniH3DMFnSD5D9BmyzxB+hvQzxJ8h/wwBaEhAQwQaMtAQgoYUNMSgIQcNQWhIQkMUGrLQEIaGNDTEoSEPDYFoSERDJBoy0RCKhlQ0xKIhFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLbvmafc87aInuWiRixa5aJGLFrlo/beL3k4/t+/77dNhd7/Ze//4cXz+d9H3drz8evv75fbvbw=="},{"name":"rotate_nullifier_public_key","is_unconstrained":true,"custom_attributes":["aztec(public)"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::public_context_inputs::PublicContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"public_global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"transaction_fee","type":{"kind":"field"}}]},"visibility":"private"},{"name":"address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"new_nullifier_public_key","type":{"kind":"field"},"visibility":"private"}],"param_witnesses":{"address":[{"start":40,"end":41}],"inputs":[{"start":0,"end":40}],"new_nullifier_public_key":[{"start":41,"end":42}]},"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"nullifier_read_requests","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_non_existent_read_requests","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"contract_storage_update_requests","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest","fields":[{"name":"storage_slot","type":{"kind":"field"}},{"name":"new_value","type":{"kind":"field"}}]}}},{"name":"contract_storage_reads","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::contrakt::storage_read::StorageRead","fields":[{"name":"storage_slot","type":{"kind":"field"}},{"name":"current_value","type":{"kind":"field"}}]}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}}]}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"unencrypted_log_preimages_length","type":{"kind":"field"}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}},{"name":"prover_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"end_gas_left","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"transaction_fee","type":{"kind":"field"}}]},"visibility":"public"},"return_witnesses":[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,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269],"error_types":{}},"bytecode":"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","debug_symbols":"3b3vjixZctz5LvOZWIT/PX74KovFgpKoBQGCFERqgQWhd98o6Wbdbkz1ZHp0pV+z2C87pDIz3HnimFdbu/3mP/7yX/7xP/2P/+f//qd/+a//+m9/+fv/8z/+8s//+p//4d//6V//5fyf/uMvx/+h5v/rf/1v/+0f/uXjf/Nv//4P//3f//L3x9/95R//5b+c////+Xd/+a//9M//+Je/1+3/8//6u//1jWh/I9vfWO1vVPsbu/sNP9rfkPY39PVv/N1ffU4OyR8flcPk89Pi+/H79ubf9zf/frz59/PNv7/e/Pv15t/f7/39ON78+/Lm33/z/Y0339948/2NN9/f+FPvv56z6sdHz/+4fv6+2OP393t/P/XP/X7+/P1dX/2+vfn3/c2/H2/+/Xzz7683/369+ff3e39/HW/+fXnz77/5/q4/d39THj+f+vnZz9/2N/52vPG3/9ydFdmPHxf/SpPXevPv15t/f7/39+t48+/Lm39f3/z79ubf9zf/frz59998f+vN97fefH/rzfd3v/n+7jff3/3m+7vffH/3m+/vfvP93W++v/vN93e/+f7u995fO443/768+ff1zb9vb/59f/Pvx5t/P9/8++vNv19v/v0331958/2VN99fefP9lT/neW63h2e4M373+19U41GPanzZV9U4VDVrsJoQf1QTX1dTUNVspGr0gKpGoKpRqGom9SaPT/VLOb6qxqGqCahqEqqaBVVNQVWzkaqxA6oagapGoaqB0mKD0mKD0mKD0mKD0mKD0mKD0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uIFpcULSosXlBYvKC1eUFq8oLR4QWnxgtLiBaXFC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLN5QWbygt3lBavKG0eENp8YbS4g2lxRtKizeUFm8kLfYDSYv9QNJiP5C02A8kLfYDSYv9QNJiP5C02A8kLfYDSYv9gNJigdJigdJigdJigdJigdJigdJigdJigdJigdJigdJihdJihdJihdJiqNydQ+XuHCp351C5O4fK3TlU7s6hcncOlbtzqNydQ+XuHCp351C5O4fK3TlU7s6hcncOlbtz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px/904/+6Uf/9KN/+tk//eyffvZPP/unn/3Tz/7pZ//0s3/62T/97J/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p9+9U+/+qdf/dOv/ulX//Srf/rVP/3qn371T7/6p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/bpy/H0f+K9L+i/a9Y/yve/0r0v5L9r6z+V6r/lf7pS//0pX/60j996Z++9E9f+qcv/dOX/ulL//Slf/raP33tn772T1/7p6/909f+6Wv/9Pten/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/a9Pu17fdr3+rTv9Z3/hrv/leh/JftfWf2vVP8r/dPve33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbba/PjrbXd35F+l/R/les/xXvfyX6X8n+V1b/K9X/Sv/0pX/60j996Z++9E9f+qcv/dOX/ulL//Slf/rSP33tn772T1/7p6/909f+6Wv/9LV/+to/fe2fvvZP3/qnb/3Tt/7pW//0rX/61j9965++9U/f+qdv/dP3/ul7//S9f/reP33vn773T9/7p+/90/f+6Xv/9KN/+tE//eiffvRPP/qnH/3Tj/7pR//0o3/60T/97J9+9k8/+6ef/dPP/uln//Szf/rZP/3sn372T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T7/6p1/906/+6Vf/9Kt/+tU//eqffvVPv/qnX/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T73t90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7v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3njqvfHUe+Op98ZT742n3htPvTecetcBp951wKl3HXDqXce3qLc/yIb6O7LhVyXZZ/ra8jcokP3FR0s+cbQl9pvqvwzG5mewV9KOzw//5IbU4dO9fpZkab/t9VFQoBWUaAUttIIKraANVtD3xJi/syBBK0jRCjK0gtCUWtCUWtCUWtCUWtCUWtCUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUeqEp9UJT6oWm1AtNqReaUi80pV5oSr3QlHqhKfVCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+qNptQbTak3mlJvNKXeaEq90ZR6oyn1RlPqjabUG0yp9wGm1PsAU+p9gCn1PsCUeh9gSr3RMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juMEyinIcYCHFj4qwtPqjIiyx/qgIS60/KsKS64+KsPT6oyIswf6oCEuxPyrCkuyPiuA0Gyyu+FERnGaDBRY/KoLTbLDI4kdFcJoNFlr8qAhOs8Fiix8VwWk2WHDxoyI4zQaLLn5UBKfZYOHFj4rgNBssvvhREZxmgwUYPyqC02ywCONHRXCaDRZi/KgITrPBYowfFcFpNliQ8aMiOM0GizJ+VASn2WBhxo+K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"}],"outputs":{"structs":{"functions":[{"kind":"struct","path":"KeyRegistry::register_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"KeyRegistry::register_parameters","fields":[{"name":"address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"partial_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::partial_address::PartialAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"nullifier_public_key","type":{"kind":"field"}},{"name":"incoming_public_key","type":{"kind":"field"}},{"name":"outgoing_public_key","type":{"kind":"field"}},{"name":"tagging_public_key","type":{"kind":"field"}}]}}]},{"kind":"struct","path":"KeyRegistry::rotate_nullifier_public_key_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"KeyRegistry::rotate_nullifier_public_key_parameters","fields":[{"name":"address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"new_nullifier_public_key","type":{"kind":"field"}}]}}]}]},"globals":{"storage":[{"kind":"struct","fields":[{"name":"nullifier_public_key_registry","value":{"kind":"struct","fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"1"}},{"name":"typ","value":{"kind":"string","value":"Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>"}}]}}]}]}},"file_map":{"3":{"source":"use crate::cmp::Eq;\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n}\n","path":"std/collections/bounded_vec.nr"},"28":{"source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash<N>(input: [Field; N], message_size: u64) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<N>(input: [Field; N], in_len: u64, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n","path":"std/hash/poseidon2.nr"},"33":{"source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<N, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n","path":"std/option.nr"},"53":{"source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{\n prelude::Deserialize,\n context::{\n PrivateContext, PublicContext, Context, gas::GasOpts,\n interface::{ContextInterface, PublicContextInterface}\n},\n hash::hash_args_array\n};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public<TPublicContext>(\n context: &mut TPublicContext,\n on_behalf_of: AztecAddress\n) where TPublicContext: ContextInterface + PublicContextInterface {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = PublicContextInterface::call_public_function(\n context,\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash<N>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash<N>(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n","path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr"},"58":{"source":"use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::protocol_types::{hash::pedersen_hash, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()], 0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr"},"64":{"source":"use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block \n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know \n// both the current value and the smallest block number at which the value might change - this is called the \n// 'block horizon'.\nstruct ScheduledValueChange<T> {\n pre: T,\n post: T,\n block_of_change: u32,\n}\n\nimpl<T> ScheduledValueChange<T> {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public \n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current \n /// transaction will be included) and in private (where `block_number` is the historical block number that is used \n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or \n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current \n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`, \n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of \n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon \n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to \n // that one.\n //\n // block of historical \n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum \n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one. \n // This is similar to the scenario where the block of change is in the past: the time horizon is the \n // block prior to the earliest one in which a new block of change might land.\n // \n // historical \n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | | \n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case \n // the block of change would become the limiting factor for the time horizon, which would equal the \n // block right before the block of change (since by definition the value changes at the block of \n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon | \n // -----------------------------------\n // minimum delay\n // \n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for \n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates a scheduled value change by scheduling a change at the current block number. This function is only\n /// meaningful when called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl<T> Serialize<3> for ScheduledValueChange<T> {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl<T> Deserialize<3> for ScheduledValueChange<T> {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self { \n pre: FromField::from_field(input[0]), \n post: FromField::from_field(input[1]), \n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n\nfn min(lhs: u32, rhs: u32) -> u32 {\n if lhs < rhs { lhs } else { rhs }\n}\n\n#[test]\nfn test_min() {\n assert(min(3, 5) == 3);\n assert(min(5, 3) == 3);\n assert(min(3, 3) == 3);\n}\n\nmod test {\n use crate::state_vars::shared_mutable::scheduled_value_change::ScheduledValueChange;\n\n global TEST_DELAY: u32 = 200;\n\n #[test]\n fn test_get_current_at() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_current_at(0), pre);\n assert_eq(value.get_current_at(block_of_change - 1), pre);\n assert_eq(value.get_current_at(block_of_change), post);\n assert_eq(value.get_current_at(block_of_change + 1), post);\n }\n\n #[test]\n fn test_get_scheduled() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_scheduled(), (post, block_of_change));\n }\n\n fn assert_block_horizon_invariants(\n value: &mut ScheduledValueChange<Field>,\n historical_block_number: u32,\n block_horizon: u32\n ) {\n // The current value should not change at the block horizon (but it might later).\n let current_at_historical = value.get_current_at(historical_block_number);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n\n // The earliest a new change could be scheduled in would be the immediate next block to the historical one. This\n // should result in the new block of change landing *after* the block horizon, and the current value still not\n // changing at the previously determined block_horizon.\n\n let new = value.pre + value.post; // Make sure it's different to both pre and post\n value.schedule_change(\n new,\n historical_block_number + 1,\n TEST_DELAY,\n historical_block_number + 1 + TEST_DELAY\n );\n\n assert(value.block_of_change > block_horizon);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n }\n\n #[test]\n fn test_get_block_horizon_change_in_past() {\n let historical_block_number = 100;\n let block_of_change = 50;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_immediate_past() {\n let historical_block_number = 100;\n let block_of_change = 100;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_near_future() {\n let historical_block_number = 100;\n let block_of_change = 120;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n // Note that this is the only scenario in which the block of change informs the block horizon.\n // This may result in privacy leaks when interacting with applications that have a scheduled change\n // in the near future.\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, block_of_change - 1);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_far_future() {\n let historical_block_number = 100;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_schedule_change_before_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change - 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n // Because we re-schedule before the last scheduled change takes effect, the old `post` value is lost.\n assert_eq(value.pre, pre);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n\n #[test]\n fn test_schedule_change_after_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change + 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n assert_eq(value.pre, post);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr"},"65":{"source":"use dep::protocol_types::{hash::pedersen_hash, traits::FromField};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::history::public_storage::public_storage_historical_read;\nuse crate::public_storage;\nuse crate::state_vars::{storage::Storage, shared_mutable::scheduled_value_change::ScheduledValueChange};\n\nstruct SharedMutable<T, DELAY> {\n context: Context,\n storage_slot: Field,\n // The _dummy variable forces DELAY to be interpreted as a numberic value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; DELAY],\n}\n\nimpl<T, DELAY> Storage<T> for SharedMutable<T, DELAY> {}\n\n// SharedMutable<T> stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the \n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\nimpl<T, DELAY> SharedMutable<T, DELAY> {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot, _dummy: [0; DELAY] }\n }\n\n pub fn schedule_value_change(self, new_value: T) {\n let context = self.context.public.unwrap();\n let mut scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = context.block_number() as u32;\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + DELAY;\n\n scheduled_value_change.schedule_change(new_value, block_number, DELAY, block_of_change);\n\n public_storage::write(self.get_derived_storage_slot(), scheduled_value_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = self.context.public.unwrap().block_number() as u32;\n scheduled_value_change.get_current_at(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n scheduled_value_change.get_scheduled()\n }\n\n pub fn get_current_value_in_private(self) -> T where T: FromField {\n let mut context = self.context.private.unwrap();\n\n let (scheduled_value_change, historical_block_number) = self.historical_read_from_public_storage(*context);\n let block_horizon = scheduled_value_change.get_block_horizon(historical_block_number, DELAY);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the \n // historical public value matches the current one, since it can only change after the horizon.\n context.set_tx_max_block_number(block_horizon);\n scheduled_value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n context: PrivateContext\n ) -> (ScheduledValueChange<T>, u32) where T: FromField {\n let derived_slot = self.get_derived_storage_slot();\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let mut raw_fields = [0; 3];\n for i in 0..3 {\n raw_fields[i] = public_storage_historical_read(\n context,\n derived_slot + i as Field,\n context.this_address()\n );\n }\n\n let scheduled_value: ScheduledValueChange<T> = ScheduledValueChange::deserialize(raw_fields);\n let historical_block_number = context.historical_header.global_variables.block_number as u32;\n\n (scheduled_value, historical_block_number)\n }\n\n fn get_derived_storage_slot(self) -> Field {\n // Since we're actually storing three values (a ScheduledValueChange struct), we hash the storage slot to get a\n // unique location in which we can safely store as much data as we need. This could be removed if we informed\n // the slot allocator of how much space we need so that proper padding could be added.\n // See https://github.com/AztecProtocol/aztec-packages/issues/5492\n pedersen_hash([self.storage_slot, 0], 0)\n }\n}\n\nmod test {\n use dep::std::{merkle::compute_merkle_root, test::OracleMock};\n\n use crate::{\n context::{PublicContext, PrivateContext, Context},\n state_vars::shared_mutable::shared_mutable::SharedMutable,\n oracle::get_public_data_witness::PublicDataWitness\n };\n\n use dep::protocol_types::{\n constants::{GENERATOR_INDEX__PUBLIC_LEAF_INDEX, PUBLIC_DATA_TREE_HEIGHT}, hash::pedersen_hash,\n address::AztecAddress, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage\n };\n\n fn setup(private: bool) -> (SharedMutable<Field, TEST_DELAY>, Field) {\n let block_number = 40;\n let context = create_context(block_number, private);\n\n let storage_slot = 57;\n let state_var: SharedMutable<Field, TEST_DELAY> = SharedMutable::new(context, storage_slot);\n\n (state_var, block_number)\n }\n\n fn create_context(block_number: Field, private: bool) -> Context {\n if private {\n let mut private_context = PrivateContext::empty();\n private_context.historical_header.global_variables.block_number = block_number;\n Context::private(&mut private_context)\n } else {\n let mut public_context = PublicContext::empty();\n public_context.inputs.public_global_variables.block_number = block_number;\n Context::public(&mut public_context)\n }\n }\n\n global TEST_DELAY = 20;\n\n global pre = 13;\n global post = 42;\n\n #[test]\n fn test_get_current_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, current value is pre\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_current_value_in_public(), pre);\n }\n\n #[test]\n fn test_get_current_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_current_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number + 1) as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, block_number as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number - 1) as u32));\n }\n\n #[test]\n fn test_schedule_value_change_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The new scheduled change replaces the old one\n assert_eq(write_mock.get_last_params(), (slot, [pre, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_get_current_value_in_private_before_change() {\n // Here we'd want to test that the private getter returns the correct value and sets max_block_number in the\n // context to the expected block horizon, in all the possible scenarios (long before change, before near change,\n // after change).\n // However, this requires mocking the getPublicDataTreeWitness oracle so that we can convince the circuit that\n // it got a valid historical proof. Because we can set the tree root to whatever we want in the context, this is\n // trivial for a single historical value (we add a leaf and compute the root with any random path), but is quite\n // hard if we're reading more than one value for the same root (as SharedMutable does): we essentially need to\n // create an actual indexed tree and compute the correct path for each of the inserted values.\n // TODO: implement an actual tree and use it here https://github.com/AztecProtocol/aztec-packages/issues/5494\n }\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr"},"69":{"source":"use dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::oracle::storage::{storage_read, storage_write};\n\npub fn read<T, N>(storage_slot: Field) -> T where T: Deserialize<N> {\n T::deserialize(storage_read(storage_slot))\n}\n\npub fn write<T, N>(storage_slot: Field, value: T) where T: Serialize<N> {\n storage_write(storage_slot, value.serialize());\n}\n\n// Ideally we'd do the following, but we cannot because of https://github.com/noir-lang/noir/issues/4633\n// pub fn read_historical<T, N>(\n// storage_slot: Field,\n// context: PrivateContext\n// ) -> T where T: Deserialize<N> {\n// let mut fields = [0; N];\n// for i in 0..N {\n// fields[i] = public_storage_historical_read(\n// context,\n// storage_slot + i as Field,\n// context.this_address()\n// );\n// }\n// T::deserialize(fields)\n// }\n\nmod tests {\n use dep::std::test::OracleMock;\n use dep::protocol_types::traits::{Deserialize, Serialize};\n use crate::public_storage;\n\n struct TestStruct {\n a: Field,\n b: Field,\n }\n\n impl Deserialize<2> for TestStruct {\n fn deserialize(fields: [Field; 2]) -> TestStruct {\n TestStruct { a: fields[0], b: fields[1] }\n }\n }\n\n impl Serialize<2> for TestStruct {\n fn serialize(self) -> [Field; 2] {\n [self.a, self.b]\n }\n }\n\n #[test]\n fn test_read() {\n let slot = 7;\n let written = TestStruct { a: 13, b: 42 };\n\n OracleMock::mock(\"storageRead\").with_params((slot, 2)).returns(written.serialize());\n\n let read: TestStruct = public_storage::read(slot);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n\n #[test]\n fn test_write() {\n let slot = 7;\n let to_write = TestStruct { a: 13, b: 42 };\n\n let mock = OracleMock::mock(\"storageWrite\").returns([0; 2]); // The return value is unused\n\n public_storage::write(slot, to_write);\n assert_eq(mock.get_last_params(), (slot, to_write.serialize()));\n }\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/public_storage.nr"},"77":{"source":"use crate::{\n context::{\n inputs::PublicContextInputs, interface::ContextInterface, interface::PublicContextInterface,\n gas::GasOpts\n},\n messaging::process_l1_to_l2_message,\n oracle::{arguments, public_call::call_public_function_internal, returns},\n hash::{hash_args, ArgsHasher}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, side_effect::SideEffect\n},\n hash::silo_nullifier, 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_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{Deserialize, Empty}\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_hash : Field,\n\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_non_existent_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL>,\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n PublicContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter,\n args_hash,\n return_hash: 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero() // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\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<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\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<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\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<RETURNS_COUNT>(\n self: &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 ) -> FunctionReturns<RETURNS_COUNT> {\n let side_effect_counter = self.side_effect_counter;\n // TODO get next value from output of `call_public_function_internal`\n self.side_effect_counter += 1;\n\n let raw_returns = call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n FunctionReturns::new(raw_returns)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n // Keep private or ask the AVM team if you want to change it.\n 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 // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_non_existent_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_non_existent_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_log_preimages_length = 0;\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_non_existent_read_requests: self.nullifier_non_existent_read_requests.storage,\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n returns_hash: self.return_hash,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n global_variables: self.inputs.public_global_variables,\n prover_address: self.prover_address,\n revert_code: 0,\n start_gas_left: self.inputs.gas_left,\n end_gas_left: self.inputs.gas_left, // AVM should decrease this value\n transaction_fee: self.inputs.transaction_fee\n };\n pub_circuit_pub_inputs\n }\n}\n\nimpl ContextInterface for PublicContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.public_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 fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PublicContextInterface for PublicContext {\n fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n fn timestamp(self) -> u64 {\n self.inputs.public_global_variables.timestamp\n }\n\n fn coinbase(self) -> EthAddress {\n self.inputs.public_global_variables.coinbase\n }\n\n fn fee_recipient(self) -> AztecAddress {\n self.inputs.public_global_variables.fee_recipient\n }\n\n fn fee_per_da_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_da_gas\n }\n\n fn fee_per_l2_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_l2_gas\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Current public can only check for settled nullifiers, so we always silo.\n let siloed_nullifier = silo_nullifier(address, unsiloed_nullifier);\n nullifier_exists_oracle(siloed_nullifier) == 1\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // We can consume message with a secret in public context because the message cannot be modified and therefore\n // there is no front-running risk (e.g. somebody could front run you to claim your tokens to your address).\n // Leaf index is not used in public context, but it is used in the AVMContext which will replace it.\n fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress, _leaf_index: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n this,\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\n fn emit_unencrypted_log<T>(&mut self, log: T) {\n let event_selector = 5;\n let log_hash = emit_unencrypted_log_oracle(self.this_address(), event_selector, log);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // Once we hash inside circuits, this replaces push_unencrypted_log\n // For now we need an oracle to get the hash\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\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 fn static_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\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 fn delegate_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns<RETURNS_COUNT> {\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\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext {\n inputs: PublicContextInputs::empty(),\n side_effect_counter: 0 as u32,\n args_hash : 0,\n return_hash : 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n }\n }\n}\n\n#[oracle(checkNullifierExists)]\nfn nullifier_exists_oracle(nullifier: Field) -> Field {}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nstruct FunctionReturns<N> {\n values: [Field; N]\n}\n\nimpl<N> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr"},"95":{"source":"#[oracle(packArgumentsArray)]\nfn pack_arguments_array_oracle<N>(_args: [Field; N]) -> Field {}\n\n#[oracle(packArguments)]\nfn pack_arguments_oracle(_args: [Field]) -> Field {}\n\n/// - Pack arguments (array version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments_array<N>(args: [Field; N]) -> Field {\n pack_arguments_array_oracle(args)\n}\n\n/// - Pack arguments (slice version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments(args: [Field]) -> Field {\n pack_arguments_oracle(args)\n}\n\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/arguments.nr"},"106":{"source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(callPublicFunction)]\nfn call_public_function_oracle<RETURNS_COUNT>(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {}\n\nunconstrained pub fn call_public_function_internal<RETURNS_COUNT>(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {\n call_public_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/public_call.nr"},"108":{"source":"use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr"},"112":{"source":"mod globals;\nmod inputs;\n\nmod private_context;\nmod public_context;\nmod avm_context;\nmod interface;\nmod gas;\n\nuse interface::{\n ContextInterface, PrivateCallInterface, PublicCallInterface, PrivateVoidCallInterface,\n PublicVoidCallInterface, AvmCallInterface, AvmVoidCallInterface\n};\nuse private_context::PrivateContext;\nuse private_context::PackedReturns;\nuse public_context::PublicContext;\nuse public_context::FunctionReturns;\nuse avm_context::AvmContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n avm: Option<&mut AvmContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context { private: Option::some(context), public: Option::none(), avm: Option::none() }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context { public: Option::some(context), private: Option::none(), avm: Option::none() }\n }\n\n pub fn avm(context: &mut AvmContext) -> Context {\n Context { avm: Option::some(context), public: Option::none(), private: Option::none() }\n }\n\n pub fn none() -> Context {\n Context { public: Option::none(), private: Option::none(), avm: Option::none() }\n }\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/context.nr"},"113":{"source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr"},"131":{"source":"pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr"},"149":{"source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr"},"154":{"source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr"},"183":{"source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr"},"203":{"source":"use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr"},"205":{"source":"use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_tx_logs_hash<MAX_ENCRYPTED_LOGS_PER_TX>(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // TODO(Miranda): Below is flat hashing which would reduce constraints (we now only hash once in tail) - convert to this?\n\n // // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n // // Ideally we would define a new global here but for now we assert in case MAX_LOGS changes\n // assert(MAX_ENCRYPTED_LOGS_PER_TX * 32 == 256);\n // let mut hash_input_flattened = [0; 256];\n // for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // let input_as_bytes = logs[offset].value.to_be_bytes(32);\n // for byte_index in 0..32 {\n // hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n // }\n // }\n // // This differs from accumulate_sha256 as we could increase MAX_LOGS and\n // // ideally we would push to a slice then hash, but in practice compilation was very slow\n // // Hardcode to 256 bytes for now\n // sha256_to_field(hash_input_flattened)\n\n // Assuming logs are pre-sorted\n let mut accumulated_logs_hash = 0;\n for i in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n if !is_empty(logs[i]) {\n accumulated_logs_hash = accumulate_sha256([accumulated_logs_hash, logs[i].value]);\n }\n }\n\n accumulated_logs_hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr"},"294":{"source":"contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n state_vars::{\n SharedMutable,\n Map\n }, \n protocol_types::{\n address::{\n AztecAddress,\n PublicKeysHash,\n PartialAddress,\n },\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n },\n hash::poseidon2_hash,\n },\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n nullifier_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // incoming_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // outgoing_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // tagging_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n }\n\n #[aztec(public)]\n fn rotate_nullifier_public_key(\n address: AztecAddress,\n new_nullifier_public_key: Field,\n ) {\n assert(\n new_nullifier_public_key != 0,\n \"New nullifier public key must be non-zero\"\n );\n\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n }\n\n let nullifier_key_registry = storage.nullifier_public_key_registry.at(address);\n\n nullifier_key_registry.schedule_value_change(new_nullifier_public_key);\n }\n\n #[aztec(public)]\n fn register(\n address: AztecAddress,\n partial_address: PartialAddress,\n nullifier_public_key: Field,\n incoming_public_key: Field,\n outgoing_public_key: Field,\n tagging_public_key: Field,\n ) {\n assert(\n (nullifier_public_key != 0) &\n (incoming_public_key != 0) &\n (outgoing_public_key != 0) &\n (tagging_public_key != 0),\n \"All public keys must be non-zero\"\n );\n\n // TODO (ek): Do it below after refactoring all public_keys_hash_elemtns\n // let public_keys_hash = PublicKeysHash::compute(nullifier_public_key, tagging_public_key, incoming_public_key, outgoing_public_key);\n // let address = AztecAddress::compute(public_keys_hash, partial_address);\n // We could also pass in original_public_keys_hash instead of computing it here, if all we need the original one is for being able to prove ownership of address\n let public_keys_hash = poseidon2_hash([\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n ]\n );\n\n let computed_address = AztecAddress::from_field(\n poseidon2_hash([\n partial_address.to_field(),\n public_keys_hash.to_field(),\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1 as Field,\n ]\n )\n );\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let nullifier_key_registry = storage.nullifier_public_key_registry.at(address);\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n // let incoming_key_registry = storage.incoming_public_key_registry.at(address);\n // let outgoing_key_registry = storage.outgoing_public_key_registry.at(address);\n // let tagging_key_registry = storage.taggin_public_key_registry.at(address);\n\n nullifier_key_registry.schedule_value_change(nullifier_public_key);\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality // incoming_key_registry.schedule_value_change(new_incoming_public_key);\n // outgoing_key_registry.schedule_value_change(new_outgoing_public_key);\n // tagging_key_registry.schedule_value_change(new_tagging_public_key);\n }\n}\n","path":"/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr"}}}
|