Struct ZewifWallet

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

A complete Zcash wallet with multiple accounts and cryptographic key material.

ZewifWallet represents an entire wallet consisting of multiple accounts, all operating on the same Zcash network. It can optionally include seed material for generating keys. This structure is the primary container for user wallet data but is not the top level of the interchange format hierarchy (that’s Zewif).

§Zcash Concept Relation

In Zcash wallet architecture:

  • Network Context: Wallets operate within a specific Zcash network environment (mainnet, testnet, regtest)
  • Multi-Account Organization: A single wallet can contain multiple accounts for different purposes or users
  • HD Wallet Structure: When a seed is present, the wallet follows hierarchical deterministic (HD) principles for key derivation

§Data Preservation

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

  • Network: The Zcash network context (mainnet, testnet, regtest)
  • Seed Material: When available, the cryptographic material used for key generation
  • Accounts: All accounts contained within the wallet, with their full structure
  • Vendor-Specific Information: Custom metadata stored in attachments

§Examples

// Create a new wallet for the Zcash mainnet
let mut wallet = ZewifWallet::new(Network::Main);

// Add a new account to the wallet
let account = Account::new();
wallet.add_account(account);

// Access the wallet's network
assert_eq!(wallet.network(), Network::Main);

// If seed material were available, you could add it:
// wallet.set_seed_material(seed_material);

Implementations§

Source§

impl ZewifWallet

Source

pub fn new(network: Network) -> Self

Source

pub fn network(&self) -> Network

Source

pub fn seed_material(&self) -> Option<&SeedMaterial>

Source

pub fn set_seed_material(&mut self, seed_material: SeedMaterial)

Source

pub fn accounts(&self) -> &Vec<Account>

Source

pub fn add_account(&mut self, account: Account)

Trait Implementations§

Source§

impl Attachable for ZewifWallet

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 ZewifWallet

Source§

fn clone(&self) -> ZewifWallet

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 ZewifWallet

Source§

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

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

impl From<ZewifWallet> for Envelope

Source§

fn from(value: ZewifWallet) -> Self

Converts to this type from the input type.
Source§

impl Indexed for ZewifWallet

Source§

fn index(&self) -> usize

Source§

fn set_index(&mut self, index: usize)

Source§

impl PartialEq for ZewifWallet

Source§

fn eq(&self, other: &ZewifWallet) -> 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 ZewifWallet

Source§

type Error = Error

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

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

Performs the conversion.
Source§

impl StructuralPartialEq for ZewifWallet

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