#[repr(C)]pub struct CreateMint {
pub mint_id: [u8; 32],
pub noise: [u8; 4],
pub mint: Pubkey,
pub name: [u8; 32],
pub symbol: [u8; 10],
pub uri: [u8; 128],
pub decimals: u8,
pub max_supply: [u8; 8],
pub _padding: [u8; 3],
}Expand description
CreateMint instruction data - creates a new SPL token mint with metadata This creates ONLY the mint, not a campaign. Use CreateCampaign to create campaigns.
Fields§
§mint_id: [u8; 32]Mint ID (unique identifier for this mint, max 32 bytes) Used to derive mint PDA if mint address is not provided
noise: [u8; 4]Noise for mint PDA derivation (for address grinding/pattern matching) Allows users to grind for custom mint addresses (e.g., starts-with “Kol…” or ends-with “…XYZ”) Example: [0, 0, 0, 0] = no noise (default) [174, 198, 166, 179] = noise that produces desired pattern
How it works:
- PDA seeds: [MINT, mint_id, noise] (see crate::consts::MINT)
- Users can try different noise values offline until they find one that produces desired address pattern
- This becomes a value-add service: “Custom mint addresses with patterns”
mint: PubkeyMint address (optional: if provided, use this address; if zero, create new PDA)
name: [u8; 32]Token name (truncated to 32 bytes if needed)
Padding: Trailing null bytes (\0)
Example: “My Token” -> [b’M’, b’y’, b’ ‘, b’T’, …, 0, 0, …]
symbol: [u8; 10]Token symbol (truncated to 10 bytes if needed)
Padding: Trailing null bytes (\0)
Example: “USDC” -> [b’U’, b’S’, b’D’, b’C’, 0, 0, 0, 0, 0, 0]
Example: “MAT” -> [b’M’, b’A’, b’T’, 0, 0, 0, 0, 0, 0, 0]
uri: [u8; 128]Metadata URI pointing to JSON file with token metadata
Padding: Trailing null bytes (\0)
JSON format (Metaplex standard):
{
“name”: “Token Name”,
“symbol”: “SYMBOL”,
“description”: “Token description”,
“image”: “https://example.com/icon.png”,
“category”: “image”,
“properties”: {
“files”: [{“uri”: “…”, “type”: “image/png”}]
}
}
Required fields: name, description, image, category
Recommended: symbol (should match on-chain), properties.files
decimals: u8Token decimals (0-9)
max_supply: [u8; 8]Max supply (must be > 0) All tokens up to max_supply will be minted upfront to mint treasury Mint authority will be revoked after minting (immutable cap, standard SPL way)
_padding: [u8; 3]Padding
Implementations§
Source§impl CreateMint
impl CreateMint
pub fn try_from_bytes(data: &[u8]) -> Result<&Self, ProgramError>
Trait Implementations§
Source§impl Clone for CreateMint
impl Clone for CreateMint
impl Copy for CreateMint
Source§impl Debug for CreateMint
impl Debug for CreateMint
Source§impl Discriminator for CreateMint
impl Discriminator for CreateMint
fn discriminator() -> u8
impl Pod for CreateMint
Auto Trait Implementations§
impl Freeze for CreateMint
impl RefUnwindSafe for CreateMint
impl Send for CreateMint
impl Sync for CreateMint
impl Unpin for CreateMint
impl UnsafeUnpin for CreateMint
impl UnwindSafe for CreateMint
Blanket Implementations§
Source§impl<T> AccountDeserialize for Twhere
T: Discriminator + Pod,
impl<T> AccountDeserialize for Twhere
T: Discriminator + Pod,
fn try_from_bytes(data: &[u8]) -> Result<&T, ProgramError>
fn try_from_bytes_mut(data: &mut [u8]) -> Result<&mut T, ProgramError>
Source§impl<T> AccountHeaderDeserialize for Twhere
T: Discriminator + Pod,
impl<T> AccountHeaderDeserialize for Twhere
T: Discriminator + Pod,
fn try_header_from_bytes(data: &[u8]) -> Result<(&T, &[u8]), ProgramError>
fn try_header_from_bytes_mut( data: &mut [u8], ) -> Result<(&mut T, &mut [u8]), ProgramError>
impl<T> AnyBitPattern for Twhere
T: Pod,
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
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more