Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Aztec prelude #4496

Closed
wants to merge 48 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
bebf5b5
add initial work for inserting an aztec prelude and remove imports fr…
vezenovm Feb 7, 2024
db50e56
merge conflicts w/ master
vezenovm Feb 7, 2024
e67eb78
delete more aztec deps in the contracts
vezenovm Feb 7, 2024
537c3d2
update methods in e2e tests
vezenovm Feb 8, 2024
4c3d679
fix macro imports and merge conflicts w/ master
vezenovm Feb 8, 2024
54d0be2
remove remaining imports from ecdsa_account_contract
vezenovm Feb 8, 2024
ceaba2c
fix e2e test and move prelude source to bottom of file
vezenovm Feb 8, 2024
188ffe7
update benchmarks e2e
vezenovm Feb 8, 2024
a117ec3
stateful test create_new_note
vezenovm Feb 8, 2024
4012615
format
vezenovm Feb 8, 2024
d91f69c
run tests on single thread
vezenovm Feb 8, 2024
1dbf3d5
missing maxWorkers
vezenovm Feb 8, 2024
8aa6ad8
fix stateful constructor and run tests on many threads
vezenovm Feb 8, 2024
fc01877
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 8, 2024
f03ca68
fix get public key test
vezenovm Feb 8, 2024
d584abc
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 8, 2024
f834222
update e2e_deploy_contract test after master merge
vezenovm Feb 8, 2024
65bb865
merge conflcits w/ master
vezenovm Feb 15, 2024
423e23c
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 15, 2024
87bdde6
all contracts working with new prelde
vezenovm Feb 15, 2024
159980d
fix e2e tests
vezenovm Feb 15, 2024
872d70e
cargo fmt
vezenovm Feb 15, 2024
8f96895
remove changes to slow_map.nr
vezenovm Feb 15, 2024
33a2d9c
cleanup has_aztec_dep func
vezenovm Feb 15, 2024
d795c27
use prelude.nr inside of aztec-nr
vezenovm Feb 15, 2024
9d4844f
cargo fmt
vezenovm Feb 15, 2024
f8467e7
rename process_crate_prelude to fetch_crate_prelude
vezenovm Feb 15, 2024
84b2c24
add note imports to prelude
vezenovm Feb 15, 2024
30b8ef7
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 15, 2024
187b17e
remove more imports due to prelude
vezenovm Feb 16, 2024
701519b
remove PrivateContext import
vezenovm Feb 16, 2024
cf6d1e5
resolve master merge conflicts
vezenovm Feb 16, 2024
9b919f6
dont edit test_contract autogen file
vezenovm Feb 16, 2024
ed10939
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 19, 2024
3ccd7dc
remove unused method
vezenovm Feb 19, 2024
82d889b
merge conflcits w/ master
vezenovm Feb 19, 2024
359f259
cargo fmt
vezenovm Feb 19, 2024
a160e92
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 19, 2024
2e3bd3b
Merge branch 'master' into mv/aztec-prelude
vezenovm Feb 19, 2024
b3cefdf
Merge branch 'master' into mv/aztec-prelude
benesjan Feb 29, 2024
266c2b9
fixes after merge
benesjan Feb 29, 2024
4b80987
import cleanup
benesjan Feb 29, 2024
a687f68
Merge branch 'master' into mv/aztec-prelude
benesjan Feb 29, 2024
7328b80
Merge branch 'master' into mv/aztec-prelude
TomAFrench Mar 4, 2024
5e30067
chore: undo unwanted formatting changes
TomAFrench Mar 4, 2024
1269ed7
chore: prevent formatter from running
TomAFrench Mar 4, 2024
35a1472
chore: revert more formatting changes
TomAFrench Mar 4, 2024
3a0796c
chore: one more
TomAFrench Mar 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,4 @@ template class ExecutionTrace_<GoblinUltraFlavor>;
template class ExecutionTrace_<plonk::flavor::Standard>;
template class ExecutionTrace_<plonk::flavor::Ultra>;

} // namespace bb
} // namespace bb
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,4 @@ template <class Flavor> class ExecutionTrace_ {
requires IsGoblinFlavor<Flavor>;
};

} // namespace bb
} // namespace bb
Original file line number Diff line number Diff line change
Expand Up @@ -297,4 +297,4 @@ void Poseidon2Permutation<Params, Builder>::matrix_multiplication_external(
template class Poseidon2Permutation<crypto::Poseidon2Bn254ScalarFieldParams, GoblinUltraCircuitBuilder>;
template class Poseidon2Permutation<crypto::Poseidon2Bn254ScalarFieldParams, UltraCircuitBuilder>;

} // namespace bb::stdlib
} // namespace bb::stdlib
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,9 @@ They can be emitted by both public and private functions.
- Unencrypted events are currently **NOT** linked to the contract emitting them, so it is practically a [`debug_log`](../oracles/main.md#a-few-useful-inbuilt-oracles).
:::

### Import library

To emit unencrypted logs first import the `emit_unencrypted_log` utility function inside your contract:

#include_code unencrypted_import /noir-projects/noir-contracts/contracts/test_contract/src/main.nr rust

### Call emit_unencrypted_log

After importing, you can call the function:
To emit unencrypted log you can call:

#include_code emit_unencrypted /noir-projects/noir-contracts/contracts/test_contract/src/main.nr rust

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,6 @@ contract Voting {

This defines a contract called `Voter`. Everything will sit inside this block.

Inside this, paste these imports:

#include_code imports noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr rust

We are using various utils within the Aztec library:

- `context` - exposes things such as the contract address, msg_sender, etc
Expand Down
1 change: 1 addition & 0 deletions noir-projects/aztec-nr/aztec/src/lib.nr
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ mod log;
mod messaging;
mod note;
mod oracle;
mod prelude;
mod state_vars;
use dep::protocol_types;
14 changes: 14 additions & 0 deletions noir-projects/aztec-nr/aztec/src/prelude.nr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use dep::protocol_types::{address::{AztecAddress, EthAddress}, abis::function_selector::FunctionSelector};
use crate::{
state_vars::{
map::Map, private_immutable::PrivateImmutable, private_mutable::PrivateMutable,
public_immutable::PublicImmutable, public_mutable::PublicMutable, private_set::PrivateSet,
shared_immutable::SharedImmutable
},
log::{emit_unencrypted_log, emit_encrypted_log}, context::PrivateContext,
note::{
note_header::NoteHeader, note_interface::NoteInterface, note_getter_options::NoteGetterOptions,
note_viewer_options::NoteViewerOptions,
utils::compute_note_hash_and_nullifier as utils_compute_note_hash_and_nullifier
}
};
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
use dep::aztec::context::PrivateContext;
use dep::aztec::protocol_types::{
constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize},
address::AztecAddress
};
use dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};

use dep::authwit::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,9 @@ mod dapp_payload;

contract AppSubscription {
use dep::std;
use dep::std::option::Option;
use crate::dapp_payload::DAppPayload;

use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector};

use dep::aztec::{
context::{PrivateContext, Context}, note::{note_header::NoteHeader, utils as note_utils},
oracle::get_public_key::get_public_key,
state_vars::{Map, PrivateMutable, PublicMutable, SharedImmutable}
};
use dep::aztec::{context::Context, note::utils as note_utils, oracle::get_public_key::get_public_key};
use dep::authwit::{account::AccountActions, auth_witness::get_auth_witness, auth::assert_current_call_valid_authwit};

use crate::subscription_note::{SubscriptionNote, SUBSCRIPTION_NOTE_LEN};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
use dep::aztec::{
note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption},
hash::pedersen_hash,
oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key},
log::emit_encrypted_log, context::PrivateContext, protocol_types::{address::AztecAddress}
note::utils::compute_note_hash_for_consumption, hash::pedersen_hash,
oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}
};

global SUBSCRIPTION_NOTE_LEN: Field = 3;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
contract AvmTest {
// Libs
use dep::aztec::protocol_types::address::{AztecAddress, EthAddress};

// avm lib
use dep::aztec::avm::hash::{keccak256, poseidon, sha256};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,7 @@
contract Benchmarking {
use dep::value_note::{utils::{increment, decrement}, value_note::ValueNote};

use dep::aztec::{
protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress},
context::{Context},
note::{utils as note_utils, note_getter_options::NoteGetterOptions, note_header::NoteHeader},
log::emit_unencrypted_log, state_vars::{Map, PublicMutable, PrivateSet}
};
use dep::aztec::{context::Context, note::utils as note_utils};

struct Storage {
notes: Map<AztecAddress, PrivateSet<ValueNote>>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
use dep::aztec::{
protocol_types::{address::AztecAddress, constants::{MAX_NOTES_PER_PAGE, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}},
context::{PrivateContext, PublicContext, Context},
note::{
note_getter_options::NoteGetterOptions, note_viewer_options::NoteViewerOptions,
note_getter::view_notes
},
state_vars::PrivateSet
protocol_types::constants::{MAX_NOTES_PER_PAGE, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL},
context::Context, note::note_getter::view_notes
};
use dep::std;
use dep::std::{option::Option};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use dep::aztec::protocol_types::{address::AztecAddress, traits::{Serialize, Deserialize}};
use dep::aztec::protocol_types::traits::{Serialize, Deserialize};
use crate::cards::Card;

global NUMBER_OF_PLAYERS = 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ mod cards;
mod game;

contract CardGame {
use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, constants::MAX_NOTES_PER_PAGE};
use dep::aztec::{context::Context, hash::pedersen_hash, state_vars::{Map, PublicMutable}};
use dep::aztec::protocol_types::constants::MAX_NOTES_PER_PAGE;
use dep::aztec::{context::Context, hash::pedersen_hash};

use dep::std::option::Option;
use dep::value_note::{balance_utils, value_note::{ValueNote, VALUE_NOTE_LEN}};

use dep::aztec::note::{note_header::NoteHeader, utils as note_utils};
use dep::aztec::note::utils as note_utils;

use crate::cards::{PACK_CARDS, Deck, Card, get_pack_cards, compute_deck_strength};
use crate::game::{NUMBER_OF_PLAYERS, NUMBER_OF_CARDS_DECK, PLAYABLE_CARDS, PlayerEntry, Game, GAME_SERIALIZED_LEN};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
contract Child {
use dep::std::option::Option;

use dep::aztec::{
context::{PrivateContext, PublicContext, Context}, log::emit_unencrypted_log,
state_vars::{PublicMutable, PrivateSet},
protocol_types::{abis::{function_selector::FunctionSelector, call_context::CallContext}, address::AztecAddress},
note::{note_getter_options::NoteGetterOptions, note_header::NoteHeader, utils as note_utils}
};
use dep::aztec::protocol_types::abis::call_context::CallContext;
use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN};

struct Storage {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::aztec::protocol_types;
use dep::aztec::protocol_types::{
contract_class_id::ContractClassId, abis::function_selector::FunctionSelector,
contract_class_id::ContractClassId,
constants::{
FUNCTION_TREE_HEIGHT, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT,
MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::aztec::protocol_types;
use dep::aztec::protocol_types::{
contract_class_id::ContractClassId, abis::function_selector::FunctionSelector,
contract_class_id::ContractClassId,
constants::{
ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS,
REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@ mod events;
mod capsule;

contract ContractClassRegisterer {
use dep::std::option::Option;
use dep::aztec::protocol_types::{
address::{AztecAddress, EthAddress}, contract_class_id::ContractClassId,
contract_class_id::ContractClassId,
constants::{
ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,
MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE
},
traits::{Serialize}
};

use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private};
use dep::aztec::log::emit_unencrypted_log_from_private;

use crate::events::{
class_registered::ContractClassRegistered,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use dep::aztec::protocol_types::{
contract_class_id::ContractClassId,
address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress},
contract_class_id::ContractClassId, address::{PublicKeysHash, PartialAddress},
constants::{DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE}, traits::{Serialize}
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
/* Autogenerated file, do not edit! */

use dep::std;
use dep::aztec::context::{PrivateContext, PublicContext};
use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector, constants::RETURN_VALUES_LENGTH};
use dep::aztec::protocol_types::constants::RETURN_VALUES_LENGTH;

struct ContractClassIdDeployStruct {
inner: Field,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
mod events;

contract ContractInstanceDeployer {
use dep::std::option::Option;
use dep::aztec::protocol_types::{
address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress},
contract_class_id::ContractClassId,
address::{PublicKeysHash, PartialAddress}, contract_class_id::ContractClassId,
constants::{DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE}, traits::{Serialize}
};

use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private};
use dep::aztec::log::emit_unencrypted_log_from_private;

use crate::events::{instance_deployed::ContractInstanceDeployed};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
contract Counter {
// docs:start:imports
use dep::aztec::protocol_types::address::AztecAddress;
use dep::aztec::{
context::{PrivateContext, Context}, note::{note_header::NoteHeader, utils as note_utils},
state_vars::Map
};
use dep::value_note::{balance_utils, value_note::{ValueNote, VALUE_NOTE_LEN}};
use dep::value_note::balance_utils;
use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN};
use dep::easy_private_state::EasyPrivateUint;
// docs:end:imports

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,8 @@ contract DelegatedOn {
use dep::std::option::Option;

use dep::aztec::{
context::{PrivateContext, PublicContext, Context}, log::emit_unencrypted_log,
state_vars::{PublicMutable, PrivateSet},
protocol_types::{abis::{function_selector::FunctionSelector, call_context::CallContext}, address::AztecAddress},
note::{
note_getter_options::NoteGetterOptions, note_viewer_options::NoteViewerOptions,
utils as note_utils, note_header::NoteHeader
}
context::{PublicContext, Context}, protocol_types::abis::call_context::CallContext,
note::utils as note_utils
};
use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
contract Delegator {
use dep::std::option::Option;

use dep::aztec::{
log::emit_unencrypted_log, state_vars::{PublicMutable, PrivateSet},
protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress},
note::{note_viewer_options::NoteViewerOptions, utils as note_utils, note_header::NoteHeader}
};
use dep::aztec::note::utils as note_utils;
use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN};

struct Storage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,10 @@ mod types;

contract DocsExample {
// how to import dependencies defined in your workspace
use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};
use dep::aztec::{
note::{
note_header::NoteHeader, note_getter_options::{NoteGetterOptions, Comparator},
note_viewer_options::{NoteViewerOptions}, utils as note_utils
},
context::{PrivateContext, PublicContext, Context},
state_vars::{Map, PublicMutable, PublicImmutable, PrivateMutable, PrivateImmutable, PrivateSet, SharedImmutable}
};
use dep::aztec::context::Context;
// how to import methods from other files/folders within your workspace
use crate::options::create_account_card_getter_options;
use crate::types::{card_note::{CardNote, CARD_NOTE_LEN}, leader::Leader};
use crate::types::{card_note::CardNote, leader::Leader};

struct Storage {
// Shows how to create a custom struct in PublicMutable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::types::card_note::{CardNote, CARD_NOTE_LEN};
use dep::aztec::protocol_types::{address::AztecAddress, constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL};
use dep::aztec::note::note_getter_options::{NoteGetterOptions, Sort, SortOrder};
use dep::aztec::protocol_types::constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL;
use dep::aztec::note::note_getter_options::{Sort, SortOrder};
use dep::std::option::Option;

// Shows how to use NoteGetterOptions and query for notes.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use dep::aztec::{
note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption},
note::utils::compute_note_hash_for_consumption,
oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key},
log::emit_encrypted_log, hash::pedersen_hash, context::PrivateContext,
protocol_types::{address::AztecAddress, traits::Empty}
hash::pedersen_hash,
protocol_types::traits::Empty,
};

// Shows how to create a custom note
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use dep::aztec::protocol_types::{address::AztecAddress, traits::{Serialize, Deserialize}};
use dep::aztec::protocol_types::traits::{Serialize, Deserialize};

// Shows how to create a custom struct in Public
struct Leader {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// docs:start:easy_private_token_contract
contract EasyPrivateToken {
use dep::aztec::protocol_types::address::AztecAddress;
use dep::aztec::{note::{note_header::NoteHeader, utils as note_utils}, state_vars::Map};
use dep::value_note::{balance_utils, value_note::ValueNote};
use dep::value_note::balance_utils;
use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN};
use dep::easy_private_state::EasyPrivateUint;

struct Storage {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
contract EasyPrivateVoting {
// docs:start:imports
use dep::aztec::{
protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress},
context::{PrivateContext, Context}, state_vars::{Map, PublicMutable}
};
// docs:end:imports
// docs:start:storage_struct
struct Storage {
admin: PublicMutable<AztecAddress>, // admin can end vote
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use dep::aztec::protocol_types::address::AztecAddress;
use dep::aztec::{
note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption},
note::utils::compute_note_hash_for_consumption,
oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key},
log::emit_encrypted_log, hash::pedersen_hash, context::PrivateContext
hash::pedersen_hash,
};

global ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,8 @@ mod ecdsa_public_key_note;
// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.
// The signing key is stored in an immutable private note and should be different from the signing key.
contract EcdsaAccount {
use dep::aztec::protocol_types::{abis::{call_context::CallContext, function_selector::FunctionSelector}, address::AztecAddress};
use dep::std;
use dep::std::option::Option;
use dep::aztec::{
context::{PrivateContext, PublicContext, Context},
note::{note_header::NoteHeader, utils as note_utils}, oracle::get_public_key::get_public_key,
state_vars::PrivateImmutable
};
use dep::aztec::context::Context;
use dep::authwit::{
entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,
auth_witness::get_auth_witness
Expand Down
Loading
Loading