Local scripts for Solana actions
This directory contains scripts for performing actions on the Solana blockchain.
Docker
cd solana
# Build the image
docker build --tag solana:local .
# Launch the image
docker run -ti solana:local /bin/bash
Commands
Setup
# Vérifier les versions
solana --version
spl-token --version
# Configurer devnet
solana config set --url https://api.devnet.solana.com
# Créer un wallet
solana-keygen new --no-bip39-passphrase --outfile ~/.config/solana/id.json
solana config set --keypair ~/.config/solana/id.json
# Vérifier adresse et balance
solana address
solana balance
# Airdrop SOL sur devnet (2 SOL max par jour)
solana airdrop 2
Créer le token
root@d8bdd9efc445:/solana-dev# spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata --decimals 6
root@d8bdd9efc445:/solana-dev# spl-token initialize-metadata <TOKEN_ADDRESS> "<Name>" "<Symbol>" "https://gateway.pinata.cloud/ipfs/<PINATA_CID>
root@d8bdd9efc445:/solana-dev# spl-token create-account <TOKEN_ADDRESS>
root@d8bdd9efc445:/solana-dev# spl-token mint <TOKEN_ADDRESS> 1000000000
root@d8bdd9efc445:/solana-dev# spl-token accounts
root@d8bdd9efc445:/solana-dev# spl-token authorize <TOKEN_ADDRESS> mint --disable
root@d8bdd9efc445:/solana-dev# spl-token accounts
Exemple:
# Créer ton premier token !
root@d8bdd9efc445:/solana-dev# spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata --decimals 6
Creating token HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
To initialize metadata inside the mint, please run `spl-token initialize-metadata HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>`, and sign with the mint authority.
Address: HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM
Decimals: 9
Signature: 2hJ8f1D62Xs784w1yEyyv6QniWKsCUmU7iT2zfCPf2omxS1BJaewubLGrGMyKodmsZVrW2v6ySAoRipzUDfgSkV6
root@d8bdd9efc445:/solana-dev# spl-token initialize-metadata HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM "PSIT" "PSIT" "https://gateway.pinata.cloud/ipfs/bafkreifdhduevz3xi6hkgy7fec42flit73n2mo3itihgbiaccvgfbgiuly"
Signature: 2QwbjKCg7KVQHRthV3zRoYNCm3m9N1RFBPjWApFjh5wV7HjDysuw6jLL4FDAEZw73wZaQa7uV48hhbFRNu1WhDyN
root@d8bdd9efc445:/solana-dev# spl-token create-account HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM
Creating account Bkzb9daQK6urCH8Ff3SoYe1Lk9sECoCr1i85kEEPSkhz
Signature: vpYs1RFtAZon4q3WeLaCwbjQVTua6SgsLfjp8biJit3EaYEeM2gXzcfW7VQyPb742ffGFnCdwGFhJjdPTietp5Z
root@d8bdd9efc445:/solana-dev# spl-token mint HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM 1000000000
Minting 1000000000 tokens
Token: HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM
Recipient: Bkzb9daQK6urCH8Ff3SoYe1Lk9sECoCr1i85kEEPSkhz
Signature: 2Pz5ed7cAQpEg3CcfxZKCyAbwX7QoN1Ud6PAa9ZrddhtTcbqNUs4CZYWf2d1rkeAcmbtnAnygkaRZWTy99fXPAfV
root@d8bdd9efc445:/solana-dev# spl-token accounts
Token Balance
--------------------------------------------------------
4mookDy5M6wpzyausGhfw9EeTPpBsp9vwefb76qKBscW 100000000
HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM 1000000000
root@d8bdd9efc445:/solana-dev# spl-token authorize HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM mint --disable
Updating HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM
Current mint: 7Q9y2AUAJHSzjedDZoK3XMKuGNN6GkFTbNX6J8je4UXi
New mint: disabled
Signature: 5pZL61zAP5k3nhEUzwzd9BbddotyFA6mDBG2yY3fpxK7DzaD7wpPGVcA2kiutUA3F66c9RZgSgwSSui9ZGNhZrWz
root@d8bdd9efc445:/solana-dev# spl-token accounts
Token Balance
--------------------------------------------------------
4mookDy5M6wpzyausGhfw9EeTPpBsp9vwefb76qKBscW 100000000
HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM 1000000000
Voir le token sur la blockchain
https://explorer.solana.com/address/HnaHN6Xjvb1Kvm9y8VLYDtx2sXQseXxtaRdymBtGcdRM?cluster=devnet
Vanity mint
# Cherche une adresse qui commence par "PSIT"
# L'option --starts-with prend le format PREFIX:NOMBRE_D_OCCURENCES
solana-keygen grind --starts-with PLEXUS:1
# Utilise le programme Token-2022 et ton fichier forgé
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata PSIT7xW...json
NFT
Créer le parent
# 1. Créer le token avec l'extension "Group"
# On utilise --enable-group pour qu'il puisse être un parent
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
--enable-metadata \
--enable-group \
--decimals 0
# 2. Initialiser les metadata de la collection
spl-token initialize-metadata <ADRESSE_PARENT> "Ma Collection PSIT" "PSIT" "https://ipfs.../collection.json"
# 3. Initialiser le groupe (indiquer que ce NFT peut avoir 100 membres)
# Max-size 100 n'est pas obligatoire mais conseillé
spl-token initialize-group <ADRESSE_PARENT> <ADRESSE_PARENT> 100
# 4. Créer votre exemplaire unique et bloquer la création
spl-token create-account <ADRESSE_PARENT>
spl-token mint <ADRESSE_PARENT> 1
spl-token authorize <ADRESSE_PARENT> mint --disable
Créer les enfants
# 1. Créer le token avec l'extension "Group Member"
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
--enable-metadata \
--enable-group-member \
--decimals 0
# 2. Initialiser ses metadata propres
spl-token initialize-metadata <ADRESSE_NFT_1> "PSIT #1" "PSIT" "https://ipfs.../1.json"
# 3. LIER ce NFT au parent
# On indique que ce NFT appartient au groupe <ADRESSE_PARENT>
spl-token initialize-group-member <ADRESSE_NFT_1> <ADRESSE_PARENT> <ADRESSE_PARENT>
# 4. Créer l'exemplaire et bloquer
spl-token create-account <ADRESSE_NFT_1>
spl-token mint <ADRESSE_NFT_1> 1
spl-token authorize <ADRESSE_NFT_1> mint --disable
Description
Languages
JavaScript
71.8%
Dockerfile
28.2%