pub struct ASPMembership;Expand description
ASP Membership contract
Implementations§
Source§impl ASPMembership
impl ASPMembership
Sourcepub fn __constructor(env: Env, admin: Address, levels: u32) -> Result<(), Error>
pub fn __constructor(env: Env, admin: Address, levels: u32) -> Result<(), Error>
Constructor: initialize the ASP Membership contract
Creates a new Merkle tree with the specified number of levels and sets the admin address. The tree is initialized with zero hashes at each level.
§Arguments
env- The Soroban environmentadmin- Address of the contract administratorlevels- Number of levels in the Merkle tree (must be in range [1..32])
§Returns
Returns Ok(()) on success, or an error if already initialized
§Panics
Panics if levels is 0 or greater than 32
Sourcepub fn update_admin(env: Env, new_admin: Address) -> Result<(), Error>
pub fn update_admin(env: Env, new_admin: Address) -> Result<(), Error>
Update the contract administrator
Changes the admin address to a new address. Only the current admin can call this function.
§Arguments
env- The Soroban environmentnew_admin- Address of the new administrator
Sourcepub fn set_admin_insert_only(env: Env, admin_only: bool) -> Result<(), Error>
pub fn set_admin_insert_only(env: Env, admin_only: bool) -> Result<(), Error>
Set whether admin permission is required to insert a leaf
When admin_only is true (default), only the admin can insert leaves.
When false, anyone can insert leaves. Only the admin can change this
setting.
§Arguments
env- The Soroban environmentadmin_only- Whether admin permission is required for leaf insertion
Sourcepub fn hash_pair(env: &Env, left: U256, right: U256) -> U256
pub fn hash_pair(env: &Env, left: U256, right: U256) -> U256
Hash two U256 values using Poseidon2 compression
Computes the Poseidon2 hash of two field elements in compression mode. This is the core hashing function used for Merkle tree operations.
§Arguments
env- The Soroban environmentleft- Left input valueright- Right input value
§Returns
The Poseidon2 hash result as U256
Sourcepub fn insert_leaf(env: Env, leaf: U256) -> Result<(), Error>
pub fn insert_leaf(env: Env, leaf: U256) -> Result<(), Error>
Insert a new leaf into the Merkle tree
Adds a new member to the Merkle tree and updates the root. The leaf is
inserted at the next available index and the tree is updated efficiently
by only recomputing the hashes along the path to the root. If
admin_insert_only is enabled (the default), only the admin can insert
leaves; otherwise, anyone can call this function.
§Arguments
env- The Soroban environmentleaf- The leaf value to insert (typically a commitment or hash)
§Returns
Returns Ok(()) on success, or MerkleTreeFull if the tree is at
capacity
Source§impl ASPMembership
impl ASPMembership
Sourcepub const fn spec_xdr___constructor() -> [u8; 588]
pub const fn spec_xdr___constructor() -> [u8; 588]
Constructor: initialize the ASP Membership contract
Creates a new Merkle tree with the specified number of levels and sets the admin address. The tree is initialized with zero hashes at each level.
§Arguments
env- The Soroban environmentadmin- Address of the contract administratorlevels- Number of levels in the Merkle tree (must be in range [1..32])
§Returns
Returns Ok(()) on success, or an error if already initialized
§Panics
Panics if levels is 0 or greater than 32
Source§impl ASPMembership
impl ASPMembership
Sourcepub const fn spec_xdr_update_admin() -> [u8; 292]
pub const fn spec_xdr_update_admin() -> [u8; 292]
Update the contract administrator
Changes the admin address to a new address. Only the current admin can call this function.
§Arguments
env- The Soroban environmentnew_admin- Address of the new administrator
Source§impl ASPMembership
impl ASPMembership
Sourcepub const fn spec_xdr_set_admin_insert_only() -> [u8; 408]
pub const fn spec_xdr_set_admin_insert_only() -> [u8; 408]
Set whether admin permission is required to insert a leaf
When admin_only is true (default), only the admin can insert leaves.
When false, anyone can insert leaves. Only the admin can change this
setting.
§Arguments
env- The Soroban environmentadmin_only- Whether admin permission is required for leaf insertion
Source§impl ASPMembership
impl ASPMembership
Source§impl ASPMembership
impl ASPMembership
Sourcepub const fn spec_xdr_hash_pair() -> [u8; 412]
pub const fn spec_xdr_hash_pair() -> [u8; 412]
Hash two U256 values using Poseidon2 compression
Computes the Poseidon2 hash of two field elements in compression mode. This is the core hashing function used for Merkle tree operations.
§Arguments
env- The Soroban environmentleft- Left input valueright- Right input value
§Returns
The Poseidon2 hash result as U256
Source§impl ASPMembership
impl ASPMembership
Sourcepub const fn spec_xdr_insert_leaf() -> [u8; 632]
pub const fn spec_xdr_insert_leaf() -> [u8; 632]
Insert a new leaf into the Merkle tree
Adds a new member to the Merkle tree and updates the root. The leaf is
inserted at the next available index and the tree is updated efficiently
by only recomputing the hashes along the path to the root. If
admin_insert_only is enabled (the default), only the admin can insert
leaves; otherwise, anyone can call this function.
§Arguments
env- The Soroban environmentleaf- The leaf value to insert (typically a commitment or hash)
§Returns
Returns Ok(()) on success, or MerkleTreeFull if the tree is at
capacity
Auto Trait Implementations§
impl Freeze for ASPMembership
impl RefUnwindSafe for ASPMembership
impl Send for ASPMembership
impl Sync for ASPMembership
impl Unpin for ASPMembership
impl UnwindSafe for ASPMembership
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> DowncastSync for T
impl<T> DowncastSync for T
§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