pub struct ASPNonMembershipClient<'a> {
pub env: Env,
pub address: Address,
/* private fields */
}Expand description
ASPNonMembershipClient is a client for calling the contract defined in “ASPNonMembership”.
Fields§
§env: Env§address: AddressImplementations§
Source§impl<'a> ASPNonMembershipClient<'a>
impl<'a> ASPNonMembershipClient<'a>
pub fn new(env: &Env, address: &Address) -> Self
Sourcepub fn set_auths(&self, auths: &'a [SorobanAuthorizationEntry]) -> Self
pub fn set_auths(&self, auths: &'a [SorobanAuthorizationEntry]) -> Self
Set authorizations in the environment which will be consumed by
contracts when they invoke Address::require_auth or
Address::require_auth_for_args functions.
Requires valid signatures for the authorization to be successful.
To mock auth without requiring valid signatures, use mock_auths.
See soroban_sdk::Env::set_auths for more details and examples.
Sourcepub fn mock_auths(&self, mock_auths: &'a [MockAuth<'a>]) -> Self
pub fn mock_auths(&self, mock_auths: &'a [MockAuth<'a>]) -> Self
Mock authorizations in the environment which will cause matching invokes
of Address::require_auth and Address::require_auth_for_args to
pass.
See soroban_sdk::Env::set_auths for more details and examples.
Sourcepub fn mock_all_auths(&self) -> Self
pub fn mock_all_auths(&self) -> Self
Mock all calls to the Address::require_auth and
Address::require_auth_for_args functions in invoked contracts,
having them succeed as if authorization was provided.
See soroban_sdk::Env::mock_all_auths for more details and
examples.
Sourcepub fn mock_all_auths_allowing_non_root_auth(&self) -> Self
pub fn mock_all_auths_allowing_non_root_auth(&self) -> Self
A version of mock_all_auths that allows authorizations that
are not present in the root invocation.
Refer to mock_all_auths documentation for details and
prefer using mock_all_auths unless non-root authorization is
required.
See soroban_sdk::Env::mock_all_auths_allowing_non_root_auth
for more details and examples.
Source§impl<'a> ASPNonMembershipClient<'a>
impl<'a> ASPNonMembershipClient<'a>
Sourcepub fn update_admin(&self, new_admin: &Address)
pub fn update_admin(&self, new_admin: &Address)
Update the admin address
Transfers administrative control to a new address. Requires authorization from the current admin.
§Arguments
env- The Soroban environmentnew_admin- New address that will have permission to modify the tree
Sourcepub fn try_update_admin(
&self,
new_admin: &Address,
) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_update_admin( &self, new_admin: &Address, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Update the admin address
Transfers administrative control to a new address. Requires authorization from the current admin.
§Arguments
env- The Soroban environmentnew_admin- New address that will have permission to modify the tree
Sourcepub fn find_key(&self, key: &U256) -> FindResult
pub fn find_key(&self, key: &U256) -> FindResult
Find a key in the tree
Public entry point for searching the tree. Returns comprehensive information about the key including whether it exists, its value, and the Merkle path siblings required for proof generation.
§Arguments
env- The Soroban environmentkey- Key to search for in the tree
§Returns
Returns Ok(FindResult) containing whether the key was found, siblings
along the path, and collision information for non-membership proofs,
or an error if database operations fail.
§Errors
Error::KeyNotFound- Database operations failed or invalid node structure
Sourcepub fn try_find_key(
&self,
key: &U256,
) -> Result<Result<FindResult, <FindResult as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_find_key( &self, key: &U256, ) -> Result<Result<FindResult, <FindResult as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Find a key in the tree
Public entry point for searching the tree. Returns comprehensive information about the key including whether it exists, its value, and the Merkle path siblings required for proof generation.
§Arguments
env- The Soroban environmentkey- Key to search for in the tree
§Returns
Returns Ok(FindResult) containing whether the key was found, siblings
along the path, and collision information for non-membership proofs,
or an error if database operations fail.
§Errors
Error::KeyNotFound- Database operations failed or invalid node structure
Sourcepub fn insert_leaf(&self, key: &U256, value: &U256)
pub fn insert_leaf(&self, key: &U256, value: &U256)
Insert a new key-value pair into the tree
Adds a new leaf to the Sparse Merkle tree, building any missing intermediate nodes. Handles collision cases where a new key shares a path prefix with an existing leaf by extending the tree depth. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to insertvalue- Value to associate with the key
§Returns
Returns Ok(()) on success, emitting a LeafInsertedEvent with the new
root.
§Errors
Error::KeyAlreadyExists- Key already exists in the treeError::KeyNotFound- Database operations failed
Sourcepub fn try_insert_leaf(
&self,
key: &U256,
value: &U256,
) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_insert_leaf( &self, key: &U256, value: &U256, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Insert a new key-value pair into the tree
Adds a new leaf to the Sparse Merkle tree, building any missing intermediate nodes. Handles collision cases where a new key shares a path prefix with an existing leaf by extending the tree depth. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to insertvalue- Value to associate with the key
§Returns
Returns Ok(()) on success, emitting a LeafInsertedEvent with the new
root.
§Errors
Error::KeyAlreadyExists- Key already exists in the treeError::KeyNotFound- Database operations failed
Sourcepub fn delete_leaf(&self, key: &U256)
pub fn delete_leaf(&self, key: &U256)
Delete a key from the tree
Removes a leaf from the Sparse Merkle tree, handling both sparse branches (single child) and mixed branches (two populated children). When a leaf is deleted, its sibling may be promoted to replace the parent node, collapsing the tree structure. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to delete from the tree
§Returns
Returns Ok(()) on success, emitting a LeafDeletedEvent with the new
root.
§Errors
Error::KeyNotFound- Key does not exist in the tree or database operations failed
Sourcepub fn try_delete_leaf(
&self,
key: &U256,
) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_delete_leaf( &self, key: &U256, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Delete a key from the tree
Removes a leaf from the Sparse Merkle tree, handling both sparse branches (single child) and mixed branches (two populated children). When a leaf is deleted, its sibling may be promoted to replace the parent node, collapsing the tree structure. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to delete from the tree
§Returns
Returns Ok(()) on success, emitting a LeafDeletedEvent with the new
root.
§Errors
Error::KeyNotFound- Key does not exist in the tree or database operations failed
Sourcepub fn update_leaf(&self, key: &U256, new_value: &U256)
pub fn update_leaf(&self, key: &U256, new_value: &U256)
Update a key-value pair in the tree
Changes the value associated with an existing key. Recomputes all nodes along the path from the leaf to the root, removing old nodes and creating new ones. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to updatenew_value- New value to associate with the key
§Returns
Returns Ok(()) on success, emitting a LeafUpdatedEvent with the new
root.
§Errors
Error::KeyNotFound- Key does not exist in the tree or database operations failed
Sourcepub fn try_update_leaf(
&self,
key: &U256,
new_value: &U256,
) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_update_leaf( &self, key: &U256, new_value: &U256, ) -> Result<Result<(), <() as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Update a key-value pair in the tree
Changes the value associated with an existing key. Recomputes all nodes along the path from the leaf to the root, removing old nodes and creating new ones. Requires admin authorization.
§Arguments
env- The Soroban environmentkey- Key to updatenew_value- New value to associate with the key
§Returns
Returns Ok(()) on success, emitting a LeafUpdatedEvent with the new
root.
§Errors
Error::KeyNotFound- Key does not exist in the tree or database operations failed
Sourcepub fn verify_non_membership(
&self,
key: &U256,
siblings: &Vec<U256>,
not_found_key: &U256,
not_found_value: &U256,
) -> bool
pub fn verify_non_membership( &self, key: &U256, siblings: &Vec<U256>, not_found_key: &U256, not_found_value: &U256, ) -> bool
Verify non-membership proof for a key
Verifies that a key is NOT in the tree by checking the provided Merkle proof. The proof includes siblings along the path and collision information (not_found_key/value at the leaf). Reconstructs the root from the proof and compares it with the stored root.
§Arguments
env- The Soroban environmentkey- Key to verify is not in the treesiblings- Sibling hashes along the path from root to leafnot_found_key- Key at the collision point (or queried key if empty path)not_found_value- Value at the collision point (or zero if empty path)
§Returns
Returns Ok(true) if non-membership is verified, Ok(false) if the key
actually exists in the tree.
Sourcepub fn try_verify_non_membership(
&self,
key: &U256,
siblings: &Vec<U256>,
not_found_key: &U256,
not_found_value: &U256,
) -> Result<Result<bool, <bool as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
pub fn try_verify_non_membership( &self, key: &U256, siblings: &Vec<U256>, not_found_key: &U256, not_found_value: &U256, ) -> Result<Result<bool, <bool as TryFromVal<Env, Val>>::Error>, Result<Error, InvokeError>>
Verify non-membership proof for a key
Verifies that a key is NOT in the tree by checking the provided Merkle proof. The proof includes siblings along the path and collision information (not_found_key/value at the leaf). Reconstructs the root from the proof and compares it with the stored root.
§Arguments
env- The Soroban environmentkey- Key to verify is not in the treesiblings- Sibling hashes along the path from root to leafnot_found_key- Key at the collision point (or queried key if empty path)not_found_value- Value at the collision point (or zero if empty path)
§Returns
Returns Ok(true) if non-membership is verified, Ok(false) if the key
actually exists in the tree.
Auto Trait Implementations§
impl<'a> Freeze for ASPNonMembershipClient<'a>
impl<'a> !RefUnwindSafe for ASPNonMembershipClient<'a>
impl<'a> !Send for ASPNonMembershipClient<'a>
impl<'a> !Sync for ASPNonMembershipClient<'a>
impl<'a> Unpin for ASPNonMembershipClient<'a>
impl<'a> !UnwindSafe for ASPNonMembershipClient<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
impl<T, U, V, E, C> Compare<(T, U, V)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,
§impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W), ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for Cwhere
C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X), ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more