Solana: Crea una colección de NFTs
Tags: blockchain, nfts, nft, solana
Published: 2021-09-17 15:32:41

---
title: Solana: Crea una colección de NFTs
published: true
description: 
tags: blockchain, nfts, nft, solana
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggl8bdrb2s0lafyadweh.png
---

El ecosistema de NFTs ha seguido creciendo y ha encontrado un nuevo hogar en Solana gracias a sus tiempos de transacción rápidos y bajo costo de gas. En este video exploramos cómo crear una colección vía Metaplex y Candy Shop, herramientas que nos facilitan la creación y venta de NFTs.

{% youtube qbABacmNtvk %}

## 1. Instala las dependencias

Instalamos Phatom, Rust, Solana CLI, SPL Token CLI, Metaplex CLI y una versión reciente de Node (yo estoy usando la 14).

Instalamos la biletera desde el siguiente enlance: https://phantom.app/

Todo lo demás desde la terminal (linux):

```bash
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/v1.7.12/install)"
# SPL Token CLI
cargo install spl-token-cli
# Metaplex
git clone git@github.com:metaplex-foundation/metaplex.git ~/metaplex-foundation/metaplex
cd ~/metaplex-foundation/metaplex/js/packages/cli
yarn install
yarn build
yarn run package:linuxb
sudo cp bin/linux/metaplex ~/usr/bin
# Node (via nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
nvm install 14
nvm use 14
```

Documentación oficial:
* https://www.rust-lang.org/tools/install
* https://docs.solana.com/cli/install-solana-cli-tools
* https://spl.solana.com/token
* https://github.com/metaplex-foundation/metaplex
* https://github.com/nvm-sh/nvm

## 2. Prepara tu billetera vía Solana CLI

```bash
solana config set --url https://api.devnet.solana.com
solana-keygen new --outfile ~/.config/solana/devnet.json
solana config set --keypair ~/.config/solana/devnet.json
solana airdrop 10
```

## 3. Crea una carpeta con tu colección

Crea una carpeta que se llame `.assets` dentro de ella coloca todas las imágenes con nombre secuencial (`1.png`, `2.png`, `3.png` etc..). Por cada imágen crea un archivo json (`1.json`, `2.json`, `3.json`, etc..) que siga el formato siguiente:

```json
{
  "name": "Mi NFT",
  "symbol": "SYM",
  "description": "Este es un ejemplo de descripción.",
  "seller_fee_basis_points": 250,
  "image": "image.png",
  "animation_url": "",
  "external_url": "",
  "attributes": [
    {
      "trait_type": "web",
      "value": "yes"
    },
    {
      "trait_type": "mobile",
      "value": "yes"
   },
   {
      "trait_type": "extension",
      "value": "yes"
    }
  ],
  "collection": {
     "name": "Mi Colección",
     "family": "Mi Familia" 
  },
  "properties": {
    "files": [
      {
        "uri": "image.png",
        "type": "image/png"
      }
    ],
    "category": "image",
    "creators": [
      {
        "address": "76ArC667SfU2iBFvV2ECLh5Fo69qfeSSBDejfzP4jwpR",
        "share": 100
      }
    ]
  }
}
```

## 4. Lanza la colección

```bash
# metaplex sign -k ~/.config/solana/devnet.json
metaplex upload ./assets -k ~/.config/solana/devnet.json
metaplex create_candy_machine -p 0.1 -k ~/.config/solana/devnet.json
metaplex update_candy_machine -d "04 Dec 1995 00:12:00 GMT" -k ~/.config/solana/devnet.json
metaplex mint_one_token -k ~/.config/solana/devnet.json
```

## 5. Crea una interfaz gráfica

Descargamos el proyecto

```bash
git clone https://github.com/exiled-apes/candy-machine-mint.git
cd candy-machine-mint
yarn install
```

Creamos un archivo llamado `.env` y lo llenamos con los siguientes valores dependiendo de los valores que generó Metaplex.

`.env`
```bash
REACT_APP_CANDY_MACHINE_CONFIG="HASHUBICADOENCACHEDEVNETTEMP"
REACT_APP_CANDY_MACHINE_ID="HASHMOSTRADOLUEGODECREATECANDYMACHINE"
REACT_APP_CANDY_START_DATE=NUMEROMOSTRADOLUEGODEUPDATECANDYMACHINE
REACT_APP_SOLANA_NETWORK=devnet
REACT_APP_SOLANA_RPC_HOST=https://explorer-api.devnet.solana.com
REACT_APP_TREASURY_ADDRESS="TUADDRESSENSOLANACLIADDRESS"
```

Corremos el proyecto y lanzamos la interfaz web.

```bash
yarn start
```

Minteamos nuestro proyecto desde `localhost:3000` y vemos la colección desde nuestra billetera de Phantom.

Documentacion no oficial (recomendada):
* https://hackmd.io/@levicook/HJcDneEWF
* https://www.youtube.com/watch?v=TjZmq1d8Nyg&list=WL

**¡Gracias por ver este tutorial!**

Sígueme en dev.to y en [Youtube](https://www.youtube.com/channel/UCNRB4tgwp09z4391JRjEsRA) para todo lo relacionado al desarrollo en Blockchain en Español.