¿Cómo mintear NFTs en Solana?
Tags: tutorial, blockchain, spanish, node
Published: 2022-09-19 13:59:05

En el siguiente post explicaré paso a paso a como "mintear" un NFT en Solana.

Para seguir este post no es necesario utilizar el CLI de Metaplex, *en caso de contar con una alternativa, te agradeceria mucho que me la comentaras*
 
 
## Prerrequisitos
 
- [Node.js](https://nodejs.org/en/download/)
- [Solana CLI](https://docs.solana.com/cli/install-solana-cli-tools)
- [Typescript](https://www.typescriptlang.org/download)
- [ts-node](https://www.npmjs.com/package/ts-node#installation)
- [arloader CLI](https://github.com/CalebEverett/arloader/releases/tag/v0.1.61)
- [metaplex CLI](https://github.com/metaplex-foundation/deprecated-clis) 
 

*El equipo de Metaplex ha dejado de actualizar el CLI, pero sigue funcionando y no tendrás ningún problema para seguir este post. Planeo incluir otra opción si puedo encontrarla más adelante*
 
## Metaplex CLI
 
Para instalar Metaplex CLI debemos hacer lo siguiente:
 
1. Dirigirnos al siguiente [link](https://github.com/metaplex-foundation/deprecated-clis)
2. Clonar el proyecto con `$ git clone https://github.com/metaplex-foundation/deprecated-clis.git`
3. Ubicarnos en la carpeta del proyecto e instalar las dependencias
 
 
## Tabla de Contenido
 
1. [Creación de cartera local](#local-wallet)
2. [Agregar saldo a nuestra cartera](#add-funds-to-wallet)
3. [Subir la imagen que usaremos como NFT](#upload-image)
4. [Crear y Subir la metadata de nuestro NFT ](#create-nft-metadata)
5. [Mintear el Token](#minting)
6. [Agregar nuestra cartera local a Phantom](#local-wallet-to-phantom-wallet)
7. [Quemar NFTs en Phantom](#burn-nfts)
8. [Conclusion](#conclusion)
 
---
 
## 1. Creación de cartera local <a name="prerrequisitos"></a>
 
Asumiendo que ya instalaste [Solana CLI](https://docs.solana.com/cli/install-solana-cli-tools), lo primero que debemos hacer es apuntar a la mainnet con el siguiente comando:
 
`$ solana config set --url https://api.mainnet-beta.solana.com`
 
Obtendremos un mensaje similar al siguiente:
 
```console
Config File: C:\Users\Rob\.config\solana\cli\config.yml
RPC URL: https://api.mainnet-beta.solana.com
WebSocket URL: wss://api.mainnet-beta.solana.com/ (computed)
```
 
Una vez hecho esto procederemos a crear la cartera local con el siguiente comando:
 
`$ solana-keygen new --outfile ~/.solana/tu-cartera.json`
 
A continuación nos pedirá que ingresemos una frase de acceso (passphrase) que usaremos para recuperar la cartera.
 
```console
For added security, enter a BIP39 passphrase
 
NOTE! This passphrase improves security of the recovery seed phrase NOT the
keypair file itself, which is stored as insecure plain text
 
BIP39 Passphrase (empty for none):
```
 
 
Una vez ingresada obtendremos el siguiente mensaje:
 
```console
Wrote new keypair to /Users/Rob/.config/solana/[wallet_name].json ==================================================================== pubkey: [wallet_pub_key] ==================================================================== Save this seed phrase and your BIP39 passphrase to recover your new keypair:
[REDACTED] ====================================================================
```
 
*La pubkey sera nuestra wallet address*
 
Ahora procederemos a asignarla como nuestra cartera predeterminada con el siguiente comando:
 
`$ solana config set --keypair ~/.solana/tu-cartera.json`
 
## 2. Agregar saldo a nuestra cartera <a name="add-funds-to-wallet"></a>
 
 
*Para poder realizar todo el proceso necesitaremos menos de 2 USD en SOL*
 
**En caso de tener una cartera con SOL en Phantom podemos simplemente enviar SOL a la nueva cartera**.

Caso contrario podemos adquirir SOL usando [FTX](https://ftx.com/) siguiendo los siguientes pasos:
 
### 1. [Crear una cuenta](https://ftx.com/#a=codenjobs)
### 2. [Dirigirnos a la página de wallet](https://ftx.com/wallet)
### 3. Depositar USD o EUR
 
En la página de Wallet nos ubicamos en la moneda (USD o EUR) que deseemos depositar y haremos click en **DEPOSIT**
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107296/user/file/czncbscjcmvyjkzbofxv.png)
 
Seguido de esto Seleccionaremos tarjeta de débito, seguiremos los pasos y confirmaremos el depósito
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107376/user/file/dh10kwjoggkkwczp2mro.png)
 
 
 
### 4. Convertir a SOL
 
Una vez realizado el paso anterior y que ya tengamos disponible el saldo en USD o EUR, podemos convertirlo a SOL haciendo click en **CONVERT**
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107384/user/file/qfyf2hueeehbeqh5y2yt.png)
 
Seguido de esto seleccionaremos la moneda a la que deseemos convertir, en este caso **SOL**
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107390/user/file/fzre5fucjfugg4ezdeoy.png)
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107397/user/file/okwco2umydbkddf6veff.png)
 
 
### 5. Pasaremos la cantidad que convertimos a SOL a nuestra cartera local
 
Ahora nos ubicamos en el icono de búsqueda y buscaremos *SOL*, y procederemos a hacer clic en retirar **WITHDRAW**, colocaremos el monto que deseemos retirar y la pubkey que es nuestra wallet address
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107404/user/file/kz0bxohctwwsyog78vc8.png)
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661107412/user/file/zmxc3lzfw9wxzptbunfk.png)
 
 
 
- - -
 
Una vez hayamos pasado fondos a nuestra cartera local podemos chequearlos haciendo uso del siguiente comando:
 
`$ solana balance pubkey`
 
## 3. Subir la imagen que usaremos como NFT <a name="upload-image"></a>
 
*Para este ejemplo usaremos el Logo de Code&Jobs, siéntete libre de usar o crear la imagen que desees*

![codenjobs-logo](https://www.codenjobs.com/static/logo.png)
 
Subiremos la imagen haciendo uso de [arloader CLI](https://github.com/CalebEverett/arloader/blob/master/README.md#installation), pero en caso de que desees hacerlo manualmente puedes seguir las instrucciones en el siguiente [post](https://www.codenjobs.com/blog?&title=%C2%BFC%C3%B3mo-subir-archivos-con-ardrive-manualmente-y-con-ardrive-CLI?&id=2fd45e9f-37cc-4018-81d8-3c1ba6006d54)
 
Con el siguiente comando especificaremos la ruta de la imagen que vamos a subir, y que realizaremos el pago con nuestra cartera de Solana:
 
`$ arloader upload <logo-de-codenjobs.png> --with-sol --sol-keypair-path ~/.config/solana/tu-cartera.json --ar-default-keypair --no-bundle`
 
Vamos a obtener el siguiente mensaje por consola:
 
```console
id:             [tx_id]
status:         Submitted
file_path:      [ruta/de/la/imagen.png]
created_at:     2022-08-21 15:43:13
last_modified:  2022-08-21 15:43:13
Uploaded 1 files. Run `arloader update-status  --file-paths ` to confirm transaction(s).
```
 
*Asegurate de guardar el tx_id*
 
Una vez hecho esto tendremos que esperar un poco para que el archivo esté disponible, podemos revisar el estado con el siguiente comando `$ arloader get-status [tx_id]` o con la siguiente URL https://arweave.net/tx_id (en caso de estar confirmada podremos obtener la imagen)
 
*Mientras esperamos podemos avanzar con el siguiente paso*
 
 
 
## 4. Crear y Subir la metadata de nuestro NFT <a name="create-nft-metadata"></a>
 
A continuación crearemos la metadata de nuestro NFT utilizando el estándar de [METAPLEX](). Para esto debemos abrir un editor de código y crear un archivo que llevará por nombre *metadata.json*, copiaremos lo siguiente dentro de ese archivo.
 
 
 
```json
{
    "name": "NFT MINT TEST",
    "symbol": "ANYSYMBOL",
    "description": "TEST NFT",
    "seller_fee_basis_points": 1000,
    "image": "https://arweave.net/[tx_id]?ext=png",
    "external_url": "https://www.codenjobs.com/user/rtagliavia",
    "attributes":
    [
        {
            "trait_type": "Whatever Trait 1",
            "value": "Fire"
        },
        {
            "trait_type": "Whatever Trait 2",
            "value": "Sunglasses"
        }
    ],
    "properties":
    {
        "files":
        [
            {
                "uri": "https://arweave.net/[tx_id]?ext=png",
                "type": "image/png"
            }
        ],
        "category": "image",
        "creators":
        [
            {
                "address": "[pub_key]",
                "share": 100
            }
        ]
    }
}
```
 
**En esta línea colocaremos el transaction ID que recibimos en el paso anterior, y  la estension puede ser .jpg o .png**
 
```json
"image": "https://arweave.net/[tx_id]?ext=png",
```
 
**Igualmente en la siguientes**
 
```json
"uri": "https://arweave.net/[arweave_img_tx_id]?ext=png",
"type": "image/png"
```
 
**En esta línea debemos agregar el pubKey de nuestra cartera local**
 
```json
"address": "[pub_key]",
```
 
Una vez que se hayan llenado debidamente los campos y guardado nuestro archivo, procederemos a subirlo de la misma manera que subimos la imagen en el paso anterior.
 
`$ arloader upload [ruta/de/la/metadata.json] --with-sol --sol-keypair-path ~/.config/solana/tu-cartera.json --ar-default-keypair --no-bundle`
 
Obtendremos un mensaje similar a este:
 
```console
id:             [tx_id]
status:         Submitted
file_path:      [ruta/de/la/metadata.json]
created_at:     2022-08-21 15:48:49
last_modified:  2022-08-21 15:48:49
Uploaded 1 files. Run `arloader update-status  --file-paths ` to confirm transaction(s).
```
 
Nuevamente debemos esperar por las confirmaciones, podremos chequear el avance con el siguiente comando `$ arloader get-status [tx_id]` o con la siguiente URL https://arweave.net/tx_id (si se muestra la metadata quiere decir que ya esta listo)
 
## 5. Mintear el Token <a name="minting"></a>
 
Finalmente para *mintear* nuestro token vamos a usar MetaPlex CLI (*como mencione anteriormente esta obsoleto pero funciona perfectamente*) una vez instalado nos ubicamos en la carpeta del proyecto
 
`C:\Users\User\deprecated-clis`
 
Una vez en el proyecto debemos ir a la carpeta src y ejecutar los siguiente comandos
 
```
$ cd src
$ ts-node cli-nft.ts mint --env mainnet-beta --keypair ~/.config/solana/tu-cartera.json --url https://arweave.net/[tx_id] --max-supply 1
```
 
*En esta linea debemos agregar el tx-id que obtuvimos al subir la metadata*
 
`https://arweave.net/[tx_id] `
 
Obtendremos dos URL una nos mostrará los detalles de la transacción y la otra el Token que acabamos de *mintear*:
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661204706/user/file/zk1tkxblfyzly7biijyd.png)

 
## 6. Agregar nuestra cartera local a Phantom <a name="local-wallet-to-phantom-wallet"></a>
 
En caso de que deseemos añadir nuestra cartera local a Phantom, el proceso es muy sencillo, basta con seguir estos sencillos pasos:
 
1. Abrir la extensión de Phantom en nuestro navegador
2. Hacer clic en el botón de la esquina superior izquierda

![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661204751/user/file/qg2n8im5demxar1hpcgk.png)


3. Hacer clic en "Add / Connect Wallet"

![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661204770/user/file/m1toj2emvgelffhxfxmz.png)


4. Ahora haremos clic en import private key

![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661204782/user/file/kroqjmcrrzql82jipjjb.png)


5. Por último abriremos nuestra cartera local dirigiéndonos a la carpeta donde esta ubicada y abriendo el archivo .json con un editor de código, copiaremos todo el contenido y lo pegaremos en el campo *private key*
 

![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661204806/user/file/a8fh6ahzu9poqtmupuri.png)


Con esto podremos visualizar nuestros NFT desde la extensión de wallet, así como poder incluirlos en la sección de crypto de [Code&Jobs](https://www.codenjobs.com/) y escoger uno para mostrarlo en nuestro perfil de usuario.

Te dejo información mas detallada de como realizar esto en la [documentacion oficial](https://docs.codenjobs.com/es/guides/account/settings.html)
 

## 7. Quemar NFTs en Phantom <a name="burn-nfts"></a>
 
Phantom cuenta con la opción de poder *quemar* nuestros NFTs, con esto eliminaremos el nft y obtendremos el reembolso del dinero al momento de mintear el Token, para esto debemos seguir los siguientes pasos
 
1. Abrir la extensión de Phantom Wallet.
2. Hacer click en el botón de *Your Collectibles* en la barra inferior.
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295024/user/file/mzaznnstgoyik6jld8sp.png)
 
3. Seguido de esto seleccionaremos el NFT que queramos *quemar*.
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295040/user/file/kgl9pqcxumhvxo9wawzb.png)
 
4. Haremos clic en el botón con los tres puntos *...*.
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295050/user/file/r4vsxmvsss7ktlgk3u8e.png)
 
5. Ahora clic en *burn all tokens tokens*.
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295059/user/file/ptuzwox7njzsvyesr3xc.png)
 
6. Aparecerá una ventana de confirmación, tendremos que tildar la casilla seguido de hacer clic en *Burn*.
 
![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295068/user/file/hrb5okpwntenkwi8hri0.png)
 
7. Veremos un mensaje diciendo que el token fue quemado y el importe en SOL que fue depositado en la cartera.

![Alt text](https://res.cloudinary.com/codenjobs/image/upload/v1661295077/user/file/bacqxjahknu73n949pan.png)

 
## 8. Conclusión <a name="conclusion"></a>
 
Aprendimos a mintear un NFT en la red SOLANA manualmente con ayuda de varias herramientas.
 
Realmente espero que hayas podido llegar hasta aquí sin ningún problema, en caso de que hayas encontrado algún obstáculo por favor házmelo saber con un comentario o sientete libre de contactarme por [telegram](https://t.me/rtagliajs) o agregandome a Discord como **Appu#9136**
 
Muchas gracias por tu tiempo