pub struct UnifiedIncomingViewingKey { /* private fields */ }Expand description
A ZIP 316 unified incoming viewing key.
Implementations§
Source§impl UnifiedIncomingViewingKey
impl UnifiedIncomingViewingKey
Sourcepub fn new(
transparent: Option<ExternalIvk>,
sapling: Option<IncomingViewingKey>,
orchard: Option<IncomingViewingKey>,
unknown: Vec<(u32, Vec<u8>)>,
expiry_height: Option<BlockHeight>,
expiry_time: Option<u64>,
unknown_metadata: Vec<(u32, Vec<u8>)>,
) -> UnifiedIncomingViewingKey
Available on crate features test-dependencies only.
pub fn new( transparent: Option<ExternalIvk>, sapling: Option<IncomingViewingKey>, orchard: Option<IncomingViewingKey>, unknown: Vec<(u32, Vec<u8>)>, expiry_height: Option<BlockHeight>, expiry_time: Option<u64>, unknown_metadata: Vec<(u32, Vec<u8>)>, ) -> UnifiedIncomingViewingKey
test-dependencies only.Construct a new unified incoming viewing key.
This method is only available when the test-dependencies feature is enabled,
as derivation from the UFVK or deserialization from the serialized form should
be used instead.
Sourcepub fn decode<P>(
params: &P,
encoding: &str,
) -> Result<UnifiedIncomingViewingKey, UnifiedDecodingError>where
P: Parameters,
pub fn decode<P>(
params: &P,
encoding: &str,
) -> Result<UnifiedIncomingViewingKey, UnifiedDecodingError>where
P: Parameters,
Parses a UnifiedIncomingViewingKey from its ZIP 316 string encoding at any
revision.
§Errors
UnifiedDecodingError::Parseif the string is not a valid UIVK.UnifiedDecodingError::NetworkMismatchif the key is for a network other than that ofparams.UnifiedDecodingError::InvalidItemif an item’s data is not a valid key of its type.
Sourcepub fn encode_revision<P>(
&self,
params: &P,
revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
pub fn encode_revision<P>(
&self,
params: &P,
revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
Returns the ZIP 316 string encoding of this UnifiedIncomingViewingKey for the
given network at the given revision.
Returns UnifiedEncodingError::NotRepresentable if this key has no encoding at
revision: Revision::R0 cannot encode expiry metadata, a P2SH viewing key
item, or a key whose only data items are transparent.
Sourcepub fn encode<P>(&self, params: &P) -> Result<String, UnifiedEncodingError>where
P: Parameters,
pub fn encode<P>(&self, params: &P) -> Result<String, UnifiedEncodingError>where
P: Parameters,
Returns the ZIP 316 string encoding of this UnifiedIncomingViewingKey for the
given network at the most widely supported revision that can represent it:
Revision::R0 if possible, and Revision::R2 otherwise. Use
encode_revision to encode at a specific revision.
Returns UnifiedEncodingError::NotRepresentable if this key has no encoding at
either revision.
Sourcepub fn has_transparent(&self) -> bool
pub fn has_transparent(&self) -> bool
Returns whether this uivk has a transparent key item.
This method is available irrespective of whether the transparent-inputs feature flag is enabled.
Sourcepub fn transparent(&self) -> Option<&ExternalIvk>
👎Deprecated: Use UnifiedIncomingViewingKey::p2pkh instead.
Available on crate feature transparent-inputs only.
pub fn transparent(&self) -> Option<&ExternalIvk>
Use UnifiedIncomingViewingKey::p2pkh instead.
transparent-inputs only.Returns the transparent external IVK, if present.
Sourcepub fn p2pkh(&self) -> Option<&ExternalIvk>
Available on crate feature transparent-inputs only.
pub fn p2pkh(&self) -> Option<&ExternalIvk>
transparent-inputs only.Returns the transparent external IVK, if present.
Returns None if the key has no transparent component, or carries a P2SH viewing
key item instead; the two are mutually exclusive.
Sourcepub fn p2sh(&self) -> Option<&P2shIncomingViewingKey>
Available on crate feature transparent-inputs only.
pub fn p2sh(&self) -> Option<&P2shIncomingViewingKey>
transparent-inputs only.Returns the P2SH viewing key item of this key, if present.
Returns None if the key has no transparent component, or carries a P2PKH
viewing key instead; the two are mutually exclusive.
Sourcepub fn has_sapling(&self) -> bool
pub fn has_sapling(&self) -> bool
Returns whether this uivk has a Sapling key item.
This method is available irrespective of whether the sapling feature flag is enabled.
Sourcepub fn sapling(&self) -> &Option<IncomingViewingKey>
Available on crate feature sapling only.
pub fn sapling(&self) -> &Option<IncomingViewingKey>
sapling only.Returns the Sapling IVK, if present.
Sourcepub fn has_orchard(&self) -> bool
pub fn has_orchard(&self) -> bool
Returns whether this uivk has an Orchard key item.
This method is available irrespective of whether the orchard feature flag is enabled.
Sourcepub fn orchard(&self) -> &Option<IncomingViewingKey>
Available on crate feature orchard only.
pub fn orchard(&self) -> &Option<IncomingViewingKey>
orchard only.Returns the Orchard IVK, if present.
Sourcepub fn expiry_height(&self) -> Option<BlockHeight>
pub fn expiry_height(&self) -> Option<BlockHeight>
Returns the expiry height metadata for this key, if present.
Sourcepub fn expiry_time(&self) -> Option<u64>
pub fn expiry_time(&self) -> Option<u64>
Returns the expiry time metadata for this key, if present.
Sourcepub fn subsumes(&self, other: &UnifiedIncomingViewingKey) -> bool
pub fn subsumes(&self, other: &UnifiedIncomingViewingKey) -> bool
Returns true if this UIVK subsumes other: every IVK item present in other
has a matching item in self. This key may have additional items representing
capabilities not present in other.
For unknown items, exact equality of (typecode, data) is required. Future revisions may apply more specific semantics for known metadata typecodes.
Sourcepub fn address(
&self,
_j: DiversifierIndex,
request: UnifiedAddressRequest,
) -> Result<UnifiedAddress, AddressGenerationError>
pub fn address( &self, _j: DiversifierIndex, request: UnifiedAddressRequest, ) -> Result<UnifiedAddress, AddressGenerationError>
Attempts to derive the Unified Address for the given diversifier index and receiver types.
Returns an error if the this key does not produce a valid receiver for a required receiver type at the given diversifier index.
Sourcepub fn find_address(
&self,
j: DiversifierIndex,
request: UnifiedAddressRequest,
) -> Result<(UnifiedAddress, DiversifierIndex), AddressGenerationError>
pub fn find_address( &self, j: DiversifierIndex, request: UnifiedAddressRequest, ) -> Result<(UnifiedAddress, DiversifierIndex), AddressGenerationError>
Searches the diversifier space starting at diversifier index j for one which will produce
a valid address that conforms to the provided request, and returns that Unified Address
along with the index at which the valid diversifier was found.
If None is specified for the request parameter, a default request that Requires a
receiver be present for each key item enabled by the feature flags in use will be used to
search the diversifier space.
Returns an Err(AddressGenerationError) if no valid diversifier exists or if the features
required to satisfy the unified address request are not enabled.
Sourcepub fn default_address(
&self,
request: UnifiedAddressRequest,
) -> Result<(UnifiedAddress, DiversifierIndex), AddressGenerationError>
pub fn default_address( &self, request: UnifiedAddressRequest, ) -> Result<(UnifiedAddress, DiversifierIndex), AddressGenerationError>
Find the Unified Address corresponding to the smallest valid diversifier index, along with that index.
Returns an error if the this key does not produce a valid receiver for a required receiver type at any diversifier index.
Sourcepub fn decrypt_diversifiers(
&self,
ua: &UnifiedAddress,
) -> BTreeSet<DiversifierIndex>
pub fn decrypt_diversifiers( &self, ua: &UnifiedAddress, ) -> BTreeSet<DiversifierIndex>
Attempts to recover a diversifier index for each of the receivers of the given
UnifiedAddress.
Returns the empty set if no shielded receiver of ua can be attributed to this key.
Transparent receivers are not considered here, as recovering a diversifier index from a
transparent receiver alone is not possible without additional context.
Sourcepub fn receiver_requirements(
&self,
request: UnifiedAddressRequest,
) -> Result<ReceiverRequirements, AddressGenerationError>
pub fn receiver_requirements( &self, request: UnifiedAddressRequest, ) -> Result<ReceiverRequirements, AddressGenerationError>
Convenience method for choosing a set of receiver requirements based upon the given unified address request and the available items of this key.
Returns an error if the provided request cannot be satisfied in address generation using this key.
Sourcepub fn to_receiver_requirements(
&self,
) -> Result<ReceiverRequirements, ReceiverRequirementError>
pub fn to_receiver_requirements( &self, ) -> Result<ReceiverRequirements, ReceiverRequirementError>
Constructs the ReceiverRequirements that requires a receiver for each data item of this UIVK.
A key that has nothing but a transparent item describes a transparent-only account, and
yields ReceiverRequirements::TRANSPARENT_ONLY; addresses generated from it are
representable as ZIP 316 Revision 2 transparent-including (tu) unified addresses.
Returns an error if this key has no item for which a receiver can be derived, and also if the only receiver it can derive is transparent but the key has a data item that this build cannot interpret. A metadata item never prevents address generation.
Sourcepub fn default_transparent_address(
&self,
) -> Option<(TransparentAddress, NonHardenedChildIndex)>
Available on crate feature transparent-inputs and (crate features test-dependencies) only.
pub fn default_transparent_address( &self, ) -> Option<(TransparentAddress, NonHardenedChildIndex)>
transparent-inputs and (crate features test-dependencies) only.Returns the default external transparent address using the transparent account pubkey.
See ExternalIvk::default_address for more information.
Trait Implementations§
Source§impl Clone for UnifiedIncomingViewingKey
impl Clone for UnifiedIncomingViewingKey
Source§fn clone(&self) -> UnifiedIncomingViewingKey
fn clone(&self) -> UnifiedIncomingViewingKey
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UnifiedIncomingViewingKey
impl Debug for UnifiedIncomingViewingKey
impl Eq for UnifiedIncomingViewingKey
Auto Trait Implementations§
impl Freeze for UnifiedIncomingViewingKey
impl RefUnwindSafe for UnifiedIncomingViewingKey
impl Send for UnifiedIncomingViewingKey
impl Sync for UnifiedIncomingViewingKey
impl Unpin for UnifiedIncomingViewingKey
impl UnsafeUnpin for UnifiedIncomingViewingKey
impl UnwindSafe for UnifiedIncomingViewingKey
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PossiblyOption<T> for T
impl<T> PossiblyOption<T> for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.