Struct chia_sdk_driver::NftStateLayer
source · pub struct NftStateLayer<M, I> {
pub metadata: M,
pub metadata_updater_puzzle_hash: Bytes32,
pub inner_puzzle: I,
}
Expand description
The NFT state Layer
keeps track of the current metadata of the NFT and how to change it.
It’s typically an inner layer of the SingletonLayer
.
Fields§
§metadata: M
The NFT metadata. The standard metadata type is NftMetadata
.
metadata_updater_puzzle_hash: Bytes32
The tree hash of the metadata updater puzzle.
inner_puzzle: I
The inner puzzle layer. Typically, this is the NftOwnershipLayer
.
However, for the NFT0 standard this can be the p2 layer itself.
Implementations§
source§impl<M, I> NftStateLayer<M, I>
impl<M, I> NftStateLayer<M, I>
pub fn new( metadata: M, metadata_updater_puzzle_hash: Bytes32, inner_puzzle: I, ) -> Self
pub fn with_metadata<N>(self, metadata: N) -> NftStateLayer<N, I>
source§impl<M, I> NftStateLayer<M, I>
impl<M, I> NftStateLayer<M, I>
pub fn get_next_metadata( allocator: &mut Allocator, current_metadata: &M, curent_metadata_updater_puzzle_hash: Bytes32, condition: UpdateNftMetadata<NodePtr, NodePtr>, ) -> Result<M, DriverError>
Trait Implementations§
source§impl<M: Clone, I: Clone> Clone for NftStateLayer<M, I>
impl<M: Clone, I: Clone> Clone for NftStateLayer<M, I>
source§fn clone(&self) -> NftStateLayer<M, I>
fn clone(&self) -> NftStateLayer<M, I>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<M, I> Layer for NftStateLayer<M, I>
impl<M, I> Layer for NftStateLayer<M, I>
§type Solution = NftStateLayerSolution<<I as Layer>::Solution>
type Solution = NftStateLayerSolution<<I as Layer>::Solution>
Most of the time, this is an actual CLVM type representing the solution.
However, you can also use a helper struct and customize
Layer::construct_solution
and Layer::parse_solution
.source§fn parse_puzzle(
allocator: &Allocator,
puzzle: Puzzle,
) -> Result<Option<Self>, DriverError>
fn parse_puzzle( allocator: &Allocator, puzzle: Puzzle, ) -> Result<Option<Self>, DriverError>
Parses this layer from the given puzzle, returning
None
if the puzzle doesn’t match.
An error is returned if the puzzle should have matched but couldn’t be parsed.source§fn parse_solution(
allocator: &Allocator,
solution: NodePtr,
) -> Result<Self::Solution, DriverError>
fn parse_solution( allocator: &Allocator, solution: NodePtr, ) -> Result<Self::Solution, DriverError>
Parses the
Layer::Solution
type from a CLVM solution pointer.source§fn construct_puzzle(
&self,
ctx: &mut SpendContext,
) -> Result<NodePtr, DriverError>
fn construct_puzzle( &self, ctx: &mut SpendContext, ) -> Result<NodePtr, DriverError>
Constructs the full curried puzzle for this layer.
Ideally, the puzzle itself should be cached in the
SpendContext
.source§fn construct_solution(
&self,
ctx: &mut SpendContext,
solution: Self::Solution,
) -> Result<NodePtr, DriverError>
fn construct_solution( &self, ctx: &mut SpendContext, solution: Self::Solution, ) -> Result<NodePtr, DriverError>
Constructs the full solution for this layer.
Can be used to construct the solution from a helper struct, if it’s not directly a CLVM type.
It’s also possible to influence the solution based on the puzzle, if needed.
source§fn construct_spend(
&self,
ctx: &mut SpendContext,
solution: Self::Solution,
) -> Result<Spend, DriverError>
fn construct_spend( &self, ctx: &mut SpendContext, solution: Self::Solution, ) -> Result<Spend, DriverError>
Creates a spend for this layer.
source§fn construct_coin_spend(
&self,
ctx: &mut SpendContext,
coin: Coin,
solution: Self::Solution,
) -> Result<CoinSpend, DriverError>
fn construct_coin_spend( &self, ctx: &mut SpendContext, coin: Coin, solution: Self::Solution, ) -> Result<CoinSpend, DriverError>
Creates a coin spend for this layer.
source§impl<M, I> ToTreeHash for NftStateLayer<M, I>where
M: ToTreeHash,
I: ToTreeHash,
impl<M, I> ToTreeHash for NftStateLayer<M, I>where
M: ToTreeHash,
I: ToTreeHash,
impl<M: Copy, I: Copy> Copy for NftStateLayer<M, I>
impl<M: Eq, I: Eq> Eq for NftStateLayer<M, I>
impl<M, I> StructuralPartialEq for NftStateLayer<M, I>
Auto Trait Implementations§
impl<M, I> Freeze for NftStateLayer<M, I>
impl<M, I> RefUnwindSafe for NftStateLayer<M, I>where
M: RefUnwindSafe,
I: RefUnwindSafe,
impl<M, I> Send for NftStateLayer<M, I>
impl<M, I> Sync for NftStateLayer<M, I>
impl<M, I> Unpin for NftStateLayer<M, I>
impl<M, I> UnwindSafe for NftStateLayer<M, I>where
M: UnwindSafe,
I: UnwindSafe,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)