Enum chia_sdk_driver::Puzzle
source · pub enum Puzzle {
Curried(CurriedPuzzle),
Raw(RawPuzzle),
}
Variants§
Curried(CurriedPuzzle)
Raw(RawPuzzle)
Implementations§
source§impl Puzzle
impl Puzzle
pub fn parse(allocator: &Allocator, puzzle: NodePtr) -> Self
pub fn curried_puzzle_hash(&self) -> TreeHash
pub fn mod_hash(&self) -> TreeHash
pub fn ptr(&self) -> NodePtr
pub fn is_curried(&self) -> bool
pub fn is_raw(&self) -> bool
pub fn as_curried(&self) -> Option<CurriedPuzzle>
pub fn as_raw(&self) -> Option<RawPuzzle>
Trait Implementations§
source§impl Layer for Puzzle
impl Layer for Puzzle
§type Solution = NodePtr
type Solution = NodePtr
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>where
Self: Sized,
fn parse_puzzle(
_allocator: &Allocator,
puzzle: Puzzle,
) -> Result<Option<Self>, DriverError>where
Self: Sized,
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.
impl Copy for Puzzle
Auto Trait Implementations§
impl Freeze for Puzzle
impl RefUnwindSafe for Puzzle
impl Send for Puzzle
impl Sync for Puzzle
impl Unpin for Puzzle
impl UnwindSafe for Puzzle
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
)