Struct chia_sdk_driver::StandardLayer
source · pub struct StandardLayer {
pub synthetic_key: PublicKey,
}
Expand description
The standard Layer
is used for most coins on the Chia blockchain. It allows a single key
to spend the coin by providing a delegated puzzle (for example to output Conditions
).
There is also additional hidden puzzle functionality which can be encoded in the key. To do this, you calculate a “synthetic key” from the original key and the hidden puzzle hash. When spending the coin, you can reveal this hidden puzzle and provide the original key. This functionality is seldom used in Chia, and usually the “default hidden puzzle” is used instead. The default hidden puzzle is not spendable, so you can only spend XCH coins by signing with your key.
Fields§
§synthetic_key: PublicKey
Implementations§
source§impl StandardLayer
impl StandardLayer
pub fn new(synthetic_key: PublicKey) -> Self
pub fn spend( &self, ctx: &mut SpendContext, conditions: Conditions, ) -> Result<Spend, DriverError>
Trait Implementations§
source§impl Clone for StandardLayer
impl Clone for StandardLayer
source§fn clone(&self) -> StandardLayer
fn clone(&self) -> StandardLayer
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 Debug for StandardLayer
impl Debug for StandardLayer
source§impl Layer for StandardLayer
impl Layer for StandardLayer
§type Solution = StandardSolution<NodePtr, NodePtr>
type Solution = StandardSolution<NodePtr, 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 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 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_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 PartialEq for StandardLayer
impl PartialEq for StandardLayer
impl Copy for StandardLayer
impl Eq for StandardLayer
impl StructuralPartialEq for StandardLayer
Auto Trait Implementations§
impl Freeze for StandardLayer
impl RefUnwindSafe for StandardLayer
impl Send for StandardLayer
impl Sync for StandardLayer
impl Unpin for StandardLayer
impl UnwindSafe for StandardLayer
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
)