# Local scripts for Solana actions This directory contains scripts for performing actions on the Solana blockchain. ## Docker ```bash 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 ```bash root@d8bdd9efc445:/solana-dev# spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata --decimals 6 root@d8bdd9efc445:/solana-dev# spl-token initialize-metadata "" "" "https://gateway.pinata.cloud/ipfs/ root@d8bdd9efc445:/solana-dev# spl-token create-account root@d8bdd9efc445:/solana-dev# spl-token mint 1000000000 root@d8bdd9efc445:/solana-dev# spl-token accounts root@d8bdd9efc445:/solana-dev# spl-token authorize mint --disable root@d8bdd9efc445:/solana-dev# spl-token accounts ``` Exemple: ```bash # 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 `, 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 ```bash # 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 ```bash # 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 "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 100 # 4. Créer votre exemplaire unique et bloquer la création spl-token create-account spl-token mint 1 spl-token authorize mint --disable ``` ### Créer les enfants ```bash # 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 "PSIT #1" "PSIT" "https://ipfs.../1.json" # 3. LIER ce NFT au parent # On indique que ce NFT appartient au groupe spl-token initialize-group-member # 4. Créer l'exemplaire et bloquer spl-token create-account spl-token mint 1 spl-token authorize mint --disable ```