Skip to main content

WalletCoinSpendParams

Struct WalletCoinSpendParams 

Source
pub struct WalletCoinSpendParams {
    pub coin_id: String,
}
Expand description

control.wallet.coinSpend params: WHICH coin’s spend to read, named by that coin’s own id.

§Why the spend and the coin record are separate methods

WalletCoinByIdParams answers what is this coin, and was it spent? — an id, an amount, a puzzle HASH and two heights. None of that reveals what the spend DID. Reconstructing a lineage (which is how a dig-profile’s DID singleton is followed forward) needs the puzzle REVEAL and the solution, and those exist only in the spend. A caller holding a coin record alone can see that a coin is gone and cannot see what it became.

§The id names the SPENT coin, not the spend

A spend has no id of its own on chain; it is identified by the coin it consumed. So the parameter is the same 64-hex coin id WalletCoinByIdParams takes, validated by the same rule, and the two methods are asked with the identical value.

Fields§

§coin_id: String

The SPENT coin’s id: lowercase 64-hex, unprefixed. A 0x prefix is TOLERATED on input and normalized away by Self::validated; it is never emitted.

Implementations§

Source§

impl WalletCoinSpendParams

Source

pub fn validated(self) -> Result<Self, ControlError>

Normalize and check the coin id, or reject the request as -32602 INVALID_PARAMS.

A malformed id is a malformed REQUEST, and the node refuses it here — before consulting any chain. That ordering is normative rather than an optimisation: were a bad id allowed through, the read would come back empty, and the caller would be told the honest-looking answer the chain holds nothing about a coin it never actually asked after. An unanswerable question and a chain that answered “no” must never wear the same shape.

Accepts exactly two spellings — 64 lowercase hex characters, or the same 64 preceded by 0x. Uppercase, whitespace and every other length are refused, because the contract’s hex wire form is lowercase and unprefixed everywhere else in this crate.

Trait Implementations§

Source§

impl Clone for WalletCoinSpendParams

Source§

fn clone(&self) -> WalletCoinSpendParams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl ControlCall for WalletCoinSpendParams

Source§

const METHOD: ControlMethod = ControlMethod::WalletCoinSpend

The wire method this call invokes.
Source§

type Output = WalletCoinSpendResult

The typed result this call returns on success.
Source§

impl Debug for WalletCoinSpendParams

Source§

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

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

impl<'de> Deserialize<'de> for WalletCoinSpendParams

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for WalletCoinSpendParams

Source§

impl PartialEq for WalletCoinSpendParams

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for WalletCoinSpendParams

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for WalletCoinSpendParams

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, dest: *mut u8)

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.