pub struct WalletCoinRecord {
pub coin_id: String,
pub asset: Option<Asset>,
pub amount: u64,
pub parent_coin_info: String,
pub puzzle_hash: String,
pub created_height: Option<u32>,
pub spent_height: Option<u32>,
}Expand description
One coin, as the node’s chain read saw it (control.wallet.coins / control.wallet.coinById).
The first three fields are byte-identical to dig-app’s frozen CoinRecord, so its
CoinsResponse deserializes this losslessly and ignores the rest. The rest is what a spend
actually needs: a coin cannot be spent from an id and an amount alone — the parent and the
puzzle hash are what reconstruct the Coin — and the heights are how a caller tells a confirmed
coin from one it only saw in the mempool.
ONE record type serves both reads deliberately. A second coin shape would be a second thing to keep in step with dig-app’s frozen struct, and the two would drift byte-wise the first time only one of them was touched.
Fields§
§coin_id: StringThe coin id, lowercase 64-hex, unprefixed.
asset: Option<Asset>The asset this coin is denominated in, or null when THIS READ DID NOT CLASSIFY THE COIN.
null never means “no asset” and never means XCH by default. It means the answering read
had no basis to say: a singleton, a CAT and a plain XCH coin are indistinguishable from a
coin id alone — telling them apart requires inspecting the puzzle, and the node reads only
the coin record. So control.wallet.coinById MUST report null here — emitting a concrete
asset on an unclassified read would make the node assert a classification it never verified,
which a caller would then spend against.
control.wallet.coins MUST report the concrete asset it was SCOPED to and MUST NOT emit
null. This field is optional only to serve the by-id read; the coins read has no
unclassified case, and dig-app’s frozen CoinRecord requires a non-null asset there, so a
null breaks that read outright rather than degrading it. The type cannot enforce the split
because ONE record shape deliberately serves both reads (see the type docs), which is why the
rule is stated here and pinned by a KAT.
amount: u64The coin’s amount, in the asset’s base unit.
parent_coin_info: StringThe parent coin’s id, lowercase 64-hex, unprefixed.
puzzle_hash: StringThe coin’s puzzle hash, lowercase 64-hex, unprefixed.
created_height: Option<u32>The height the coin was created at, or null while it is still only in the mempool.
spent_height: Option<u32>The height the coin was spent at, or null when it is unspent.
Trait Implementations§
Source§impl Clone for WalletCoinRecord
impl Clone for WalletCoinRecord
Source§fn clone(&self) -> WalletCoinRecord
fn clone(&self) -> WalletCoinRecord
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more