Crate chia_sdk_driver
source ·Expand description
§Puzzles
Chia coins have a puzzle, which controls how it can be spent.
The solution is used as the arguments to the puzzle, and the
output is a list of [Conditions
].
A puzzle consists of multiple layers composed together.
§Layers
A Layer
is a subset of the logic that makes up a smart coin in Chia.
They are also referred to as “inner puzzles”, and the solution can be broken
up into “inner solutions” as well.
Generally, you can parse and construct the individual layers separately.
This allows them to be composed together freely. However, there are sometimes
additional restraints which limit the ways they can be mixed. For example,
the CatLayer
cannot have another CatLayer
as its inner puzzle, due to the
way it’s written. This would create an error when validating the announcements.
§P2 Puzzles
A p2 puzzle (meaning “pay to”) controls the ownership of the coin.
The simplest example of this is p2_conditions.clsp
, which requires a signature
from a single public key and outputs a list of conditions from the solution.
The “standard transaction” (which is p2_delegated_puzzle_or_hidden_puzzle.clsp
)
is a kind of p2 puzzle that adds additional flexibility. Specifically, support
for an inner puzzle, and usage of a delegated puzzle instead of directly conditions.
Generally, the p2 puzzle is the base layer in a coin’s puzzle, and everything else builds on top of it to restrict the way it can be spent or attach state.
§Primitives
A Primitive
uses one or more Layer
to parse info from a parent’s coin spend.
Generally, Layer
has the ability to parse and construct individual puzzles and solutions,
and the composed Primitive
struct can parse all of the information required to spend a coin.
The Primitive
should also provide a way to spend the coin, and other utilities necessary.
Structs§
- The CAT
Layer
enforces restrictions on the supply of a token. Specifically, unless the TAIL program is run, the supply cannot change. - The DID
Layer
keeps track of metadata and handles recovery capabilities. It’s typically an inner layer of theSingletonLayer
. - An intermediate launcher is a coin that is created prior to the actual launcher coin. In this case, it automatically creates the launcher coin upon being spent.
- A singleton launcher is a coin that is spent within the same block to create a singleton. The first coin that is created is known as an “eve” singleton. The
Launcher
type allows you to get the launcher id before committing to creating the singleton. - Everything that is required to spend an NFT coin.
- The NFT ownership
Layer
keeps track of the current DID that owns the NFT. It also contains a transfer layer, which is used to transfer ownership of the NFT. The inner puzzle layer is commonly used for determining ownership (in the key sense, not DID). - 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 theSingletonLayer
. - The p2 delegated conditions
Layer
allows a certain key to spend the coin. To do so, a list of additional conditions is signed and passed in the solution. Typically, theStandardLayer
is used instead, since it adds more flexibility. - The royalty transfer
Layer
is used to transfer NFTs with royalties. When an NFT is transferred, a percentage of the transfer amount is paid to an address. This address can for example be the creator, or a royalty split puzzle. - The settlement
Layer
is used to spend coins that are part of an offer. - The singleton
Layer
enforces uniqueness on a coin, which is identified by the launcher id. It contains an inner puzzle layer, which determines the actual behavior of the coin. Only one singleton can be created when the coin is spent, preserving the lineage of the asset. - 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 outputConditions
).
Enums§
Traits§
- An individual layer in a puzzle’s hierarchy.
- A trait for defining a full primitive type that can be spent. This is made up of various puzzle layers.