Struct Account

Source
pub struct Account { /* private fields */ }
Expand description

A logical grouping of addresses and transaction history within a wallet.

Account represents a distinct subdivision of wallet functionality, similar to how bank accounts work within a single banking relationship. Each account can have its own set of addresses, relevant transactions, and sent output information that cannot be recovered from the blockchain.

§Zcash Concept Relation

In Zcash’s hierarchical deterministic (HD) wallet structure:

  • Account Subdivision: Follows the BIP-44/ZIP-32 HD hierarchy model (m/44’/133’/account’/*), where each account represents a separate logical collection of funds
  • Isolation: Different accounts provide isolation for different purposes or users
  • ZIP-32 Integration: When available, accounts may include ZIP-32 account indexes to maintain the hierarchical derivation structure

§Data Preservation

During wallet migration, the following account data must be preserved:

  • Identity: The unique account identifier and human-readable name
  • Addresses: All addresses associated with the account, including metadata
  • Transaction Relationships: Which transactions are relevant to this account
  • Sent Output Information: Data that can’t be recovered from the blockchain, such as outgoing transaction metadata
  • Extended Key Information: HD wallet derivation path information when available

§Examples

// Create a new account
let mut account = Account::new();

// Set account properties
account.set_name("Savings");
account.set_zip32_account_id(0);

// In practice, you would have real addresses and transaction IDs
// Create a transparent address (as an example)
let t_addr = transparent::Address::new("t1ExampleAddress".to_string());
let address = Address::new(ProtocolAddress::Transparent(t_addr));
let txid = TxId::from_bytes([0u8; 32]);

// Add the address and transaction to the account
account.add_address(address);
account.add_relevant_transaction(txid);

Implementations§

Source§

impl Account

Source

pub fn new() -> Self

Source

pub fn name(&self) -> &str

Source

pub fn set_name(&mut self, name: impl Into<String>)

Source

pub fn birthday_height(&self) -> Option<BlockHeight>

Source

pub fn set_birthday_height(&mut self, birthday_height: Option<BlockHeight>)

Source

pub fn birthday_block(&self) -> Option<BlockHash>

Source

pub fn set_birthday_block(&mut self, birthday_block: Option<BlockHash>)

Source

pub fn zip32_account_id(&self) -> Option<u32>

Source

pub fn set_zip32_account_id(&mut self, id: u32)

Source

pub fn addresses(&self) -> &Vec<Address>

Source

pub fn addresses_len(&self) -> usize

Source

pub fn add_address(&mut self, address: Address)

Source

pub fn relevant_transactions(&self) -> &HashSet<TxId>

Source

pub fn relevant_transactions_len(&self) -> usize

Source

pub fn add_relevant_transaction(&mut self, txid: TxId)

Source

pub fn sapling_sent_outputs(&self) -> &Vec<SaplingSentOutput>

Source

pub fn sapling_sent_outputs_len(&self) -> usize

Source

pub fn add_sapling_sent_output(&mut self, output: SaplingSentOutput)

Source

pub fn orchard_sent_outputs(&self) -> &Vec<OrchardSentOutput>

Source

pub fn orchard_sent_outputs_len(&self) -> usize

Source

pub fn add_orchard_sent_output(&mut self, output: OrchardSentOutput)

Trait Implementations§

Source§

impl Attachable for Account

Source§

fn attachments(&self) -> &Attachments

Returns a reference to the attachments container.
Source§

fn attachments_mut(&mut self) -> &mut Attachments

Returns a mutable reference to the attachments container.
Source§

fn add_attachment( &mut self, payload: impl EnvelopeEncodable, vendor: &str, conforms_to: Option<&str>, )

Adds a new attachment with the specified payload and metadata. Read more
Source§

fn get_attachment(&self, digest: &Digest) -> Option<&Envelope>

Retrieves an attachment by its digest. Read more
Source§

fn remove_attachment(&mut self, digest: &Digest) -> Option<Envelope>

Removes an attachment by its digest. Read more
Source§

fn clear_attachments(&mut self)

Removes all attachments from the object.
Source§

fn has_attachments(&self) -> bool

Returns whether the object has any attachments. Read more
Source§

impl Clone for Account

Source§

fn clone(&self) -> Account

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Account

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Account

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<Account> for Envelope

Source§

fn from(value: Account) -> Self

Converts to this type from the input type.
Source§

impl Indexed for Account

Source§

fn index(&self) -> usize

Source§

fn set_index(&mut self, index: usize)

Source§

impl PartialEq for Account

Source§

fn eq(&self, other: &Account) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<Envelope> for Account

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(envelope: Envelope) -> Result<Self>

Performs the conversion.
Source§

impl StructuralPartialEq for Account

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> EnvelopeEncodable for T
where T: Into<Envelope> + Clone,

Source§

fn into_envelope(self) -> Envelope

Converts the value into an envelope by using its Into<Envelope> implementation.

Source§

fn to_envelope(&self) -> Envelope
where Self: Clone,

Converts a reference to this value into a Gordian Envelope. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T