---
title: "Cómo crear un token en Solana paso a paso (SPL y Token-2022)"
url: "https://www.unknowngravity.com/articulos/como-crear-token-solana"
site: Unknown Gravity
published: "2026-10-16T15:25:43+00:00"
modified: "2026-10-16T15:25:47+00:00"
language: es
description: "Tutorial con la CLI de Solana y spl-token: mint, cuentas, acuñación, transferencia, autoridades y Token-2022 con metadatos, congelación y delegado."
section: "Inicio > Blog > Cómo crear un token en Solana paso a paso (SPL y Token-2022)"
---

# Cómo crear un token en Solana paso a paso (SPL y Token-2022)

> Para crear un token en Solana no despliegas un contrato: creas una cuenta «mint» en uno de los dos programas de tokens oficiales, el original (SPL) o Token-2022. Con la CLI de Solana y spl-token bastan cuatro comandos: crear el mint, abrir una cuenta de token, acuñar y transferir. Token-2022 añade controles de emisor.

**Para crear un token en Solana no despliegas un contrato: creas una cuenta «mint» en uno de los dos programas de tokens oficiales, el original (SPL) o Token-2022.** Con la CLI de Solana y `spl-token` bastan cuatro comandos: crear el mint, abrir una cuenta de token, acuñar y transferir. Token-2022 añade controles de emisor.

Esta guía va de un token de prueba en devnet a un token con controles de emisor. Los comandos están comprobados el 16 de octubre de 2026 con solana-cli 4.3.1 y spl-token-cli 5.6.1 (las versiones que instalaba ese día el canal estable) contra un validador local; en devnet solo cambia la URL. Si buscas el contexto de la red y de nuestros servicios, empieza por la página de [desarrollo en Solana](/blockchain/desarrollo-blockchain-solana).

## Antes de empezar: SOL, tokens SPL y los dos programas de tokens

SOL es el token nativo de la red: con él pagas comisiones y depósitos. Un lamport es 0,000000001 SOL. Los tokens que crea cualquiera se llaman tokens SPL (de Solana Program Library) y no son contratos propios: son cuentas de datos que pertenecen a un programa de tokens ya desplegado. Tres piezas:

- **Mint.** Identifica el token y guarda el suministro, los decimales, la autoridad de acuñación (quién puede crear unidades nuevas) y la autoridad de congelación (quién puede bloquear cuentas). Su dirección es el identificador del token en carteras y exploradores.
- **Cuenta de token.** Guarda el saldo de un titular para un mint concreto. Una cartera necesita una por cada token que tenga.
- **Cuenta de token asociada (ATA).** Es la cuenta «por defecto» de una cartera para un mint, con una dirección derivada de las dos. La CLI la usa cuando no le indicas otra.

Hay dos programas de tokens oficiales. El original es inmutable y muy usado. Token Extensions, conocido como Token-2022, incluye todo lo del original y añade funciones opcionales llamadas extensiones. Cada mint pertenece a uno de los dos, y la mayoría de las extensiones no se pueden añadir después de crearlo: decide antes del primer comando. Si necesitas repasar la red, tienes la ficha de [Solana](/glosario/solana) en el glosario.

## Paso 1: instala la CLI de Solana y prepara una cartera en devnet

La documentación oficial ofrece un instalador que pone Rust, la CLI de Solana, Anchor, Surfpool, Node.js y Yarn en macOS, Linux o Windows. En Windows necesitas WSL. Si solo quieres la CLI, basta el instalador de Anza; el paquete que instalaba el 16 de octubre de 2026 ya incluía `spl-token`.

```
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
solana --version
spl-token --version
```

Después, apunta la CLI a devnet, crea una cartera y pide SOL de prueba. Según la documentación, a 16 de octubre de 2026 el faucet de devnet limita cada petición a 5 SOL; si falla, usa el faucet web (faucet.solana.com). El SOL y los tokens de devnet no tienen valor.

```
solana config set --url devnet
solana-keygen new
solana address
solana airdrop 2
solana balance
```

Un aviso para cuando pases a mainnet: `solana-keygen new` guarda la clave en `~/.config/solana/id.json` como texto plano sin cifrar. Para probar vale. Para la autoridad de un token real, no: usa una cartera hardware o una multifirma (paso 4).

## Paso 2: crea el mint de un token SPL

Con el programa original, un solo comando crea el mint. Si no indicas decimales, la CLI usa 9; aquí fijamos 2, como un importe con céntimos. Tu cartera queda como autoridad de acuñación y paga el depósito de la cuenta.

```
spl-token create-token --decimals 2 --enable-freeze
# Address:  <MINT>   (guarda esta dirección)
spl-token supply <MINT>
spl-token display <MINT>
```

El suministro de un mint nuevo es cero. Fíjate en `--enable-freeze`: sin esa opción, el mint nace sin autoridad de congelación. Como cualquier cambio de autoridad lo firma la autoridad actual, una que no existe no se puede asignar después. Si algún día vas a necesitar bloquear cuentas, actívala ahora.

## Paso 3: abre una cuenta de token, acuña y transfiere

Tu cartera necesita una cuenta de token para ese mint antes de recibir saldo. Luego acuñas: firma la autoridad de acuñación y suben a la vez tu saldo y el suministro total.

```
spl-token create-account <MINT>
spl-token mint <MINT> 1000
spl-token balance <MINT>
```

Para enviar tokens a otra cartera, la opción `--fund-recipient` crea su cuenta asociada si no existe, y el depósito lo pagas tú. Con spl-token-cli 5.6.1, si la cartera de destino no tiene SOL, la CLI se niega a transferir y pide además `--allow-unfunded-recipient`. Revisa la dirección antes de añadirla.

```
spl-token transfer <MINT> 10 <CARTERA_DESTINO> --fund-recipient --allow-unfunded-recipient
spl-token accounts --owner <CARTERA_DESTINO>
```

Una transferencia mueve saldo entre cuentas de token; no cambia el suministro. Para retirar unidades de circulación, el titular las quema con `spl-token burn <CUENTA> <CANTIDAD>`, que reduce su saldo y el suministro. Lo que cuesta cada paso en SOL, con su fórmula, está en [cuánto cuesta crear un token en Solana](/articulos/cuanto-cuesta-crear-token-solana).

## Paso 4: decide las autoridades (y revócalas si toca)

Las autoridades son lo que más le importa a un emisor y lo que menos explican los generadores de tokens. Cada cambio lo firma la autoridad actual, y fijarla a «ninguna» la elimina para siempre.

- **Suministro fijo.** Si retiras la autoridad de acuñación, nadie puede crear más unidades. Es irreversible.
- **Congelación.** La autoridad de congelación puede bloquear una cuenta concreta. Mientras lo esté, no se puede transferir ni quemar desde ella, y tampoco recibe.
- **Multifirma.** Cualquier autoridad de un mint o de una cuenta puede ser una cuenta multifirma de SPL, con hasta 11 firmantes y un mínimo M de N. Los firmantes pueden ser carteras hardware.

```
# mint controlado por 2 de 3 firmantes
spl-token create-multisig 2 <CLAVE_A> <CLAVE_B> <CLAVE_C>
spl-token authorize <MINT> mint <DIRECCION_MULTISIG>
spl-token mint <MINT> 1 --owner <DIRECCION_MULTISIG> 
  --multisig-signer firmante-a.json --multisig-signer firmante-b.json

# después, suministro cerrado para siempre (firman 2 de los 3)
spl-token authorize <MINT> mint --disable --owner <DIRECCION_MULTISIG> 
  --multisig-signer firmante-a.json --multisig-signer firmante-b.json
spl-token display <MINT>
```

Con una sola firma de la multifirma, la acuñación falla; con dos, pasa. `spl-token display` enseña el estado real del mint: suministro, decimales y autoridades. Tras `--disable` verás «Mint authority: (not set)». Es lo primero que conviene revisar en cualquier token antes de integrarlo.

## Paso 5: crea el token con Token-2022 y extensiones de emisor

Token-2022 se usa con la misma CLI, indicando su programa al crear el mint. Después, la CLI detecta el programa sola. Las extensiones no siempre se combinan: por ejemplo, un token intransferible no admite comisiones de transferencia. Este ejemplo junta tres extensiones pensadas para un emisor que solo quiere titulares verificados:

```
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token 
  --decimals 0 
  --enable-metadata 
  --enable-freeze 
  --default-account-state frozen 
  --enable-permanent-delegate

spl-token initialize-metadata <MINT_2022> "Bono Ejemplo 2027" "BEJ27" "https://example.com/bej27.json"
spl-token display <MINT_2022>
```

- **Metadatos en el mint** (`--enable-metadata`). Un token del programa original no guarda nombre ni símbolo: necesita una cuenta aparte del programa Token Metadata de Metaplex. En Token-2022, el nombre, el símbolo y la URI viven en el propio mint, y la CLI añade el «metadata pointer» apuntando al mint. La URI debe devolver un documento JSON público. Quien integre tu token debe comprobar que el mint y los metadatos se apuntan mutuamente, para no aceptar un mint falso que se haga pasar por otro.
- **Cuentas congeladas por defecto** (`--enable-freeze --default-account-state frozen`). Toda cuenta nueva nace congelada y solo opera cuando la autoridad de congelación la descongela. Encaja con dar de alta a cada inversor después del KYC. Si más adelante quieres relajarlo, `spl-token update-default-account-state <MINT_2022> initialized` cambia el estado inicial de las cuentas nuevas.
- **Permanent delegate** (`--enable-permanent-delegate`). Una autoridad que puede transferir o quemar desde cualquier cuenta del token sin la firma del titular, y que el titular no puede revocar. La CLI la asigna a la autoridad de acuñación; se cambia con `spl-token authorize <MINT_2022> permanent-delegate <NUEVA_DIRECCION>`.

Así se da de alta a un inversor. Acuñar en una cuenta congelada falla con «Account is frozen»: primero se descongela.

```
spl-token create-account <MINT_2022>
spl-token thaw <TU_CUENTA>
spl-token mint <MINT_2022> 100

# alta del inversor, después de verificar su identidad
spl-token create-account <MINT_2022> --owner <CARTERA_INVERSOR> --fee-payer ~/.config/solana/id.json
spl-token thaw <CUENTA_INVERSOR>
spl-token transfer <MINT_2022> 10 <CARTERA_INVERSOR> --allow-unfunded-recipient
```

Para crear la cuenta de otra cartera, spl-token-cli 5.6.1 pide `--fee-payer` de forma explícita. Y si alguien muestra con la CLI una cuenta de un token con permanent delegate, la propia CLI le avisa de que el mint puede retirar todos sus fondos en cualquier momento. Tu documentación tiene que explicarlo antes de que lo lea ahí.

Con el permanent delegate, la autoridad quema o mueve saldo de la cuenta del inversor. Si esa cuenta está congelada, ni siquiera ella puede moverlo:

```
spl-token burn <CUENTA_INVERSOR> 1
spl-token transfer --from <CUENTA_INVERSOR> <MINT_2022> 2 <TU_CUENTA>   # el destino debe estar descongelado
spl-token freeze <CUENTA_INVERSOR>
```

Otras dos extensiones que un emisor suele valorar:

- **Pausable** (`--enable-pause`, al crear el mint; el del ejemplo no la lleva). `spl-token pause <MINT_PAUSABLE>` detiene las transferencias, las emisiones y las quemas de todo el token; `spl-token resume` las reanuda.
- **Transfer hook** (`--transfer-hook <ID_DEL_PROGRAMA>`). Ejecuta un programa tuyo en cada transferencia, por ejemplo para admitir solo receptores de una lista blanca. Es la opción más flexible y la más cara: tienes que escribir, desplegar y auditar ese programa, que implementa la interfaz de transfer hook y recibe las cuentas de la transferencia en solo lectura y sin los privilegios de firma del remitente. No se ejecuta cuando una cuenta se transfiere a sí misma. Si tu regla es «solo inversores verificados», las cuentas congeladas por defecto ya la cubren sin programa propio, porque una cuenta congelada no puede enviar ni recibir.

## SPL o Token-2022: diferencias que importan a un emisor

| Aspecto | Token Program (original) | Token-2022 (Token Extensions) |
| --- | --- | --- |
| Dirección del programa | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb |
| Funciones | Acuñar, transferir, congelar, quemar, delegar y multifirma | Todo lo del original más extensiones opcionales |
| Metadatos (nombre, símbolo, URI) | En una cuenta aparte (Metaplex Token Metadata) | En el propio mint (Metadata Pointer y Token Metadata) |
| Controles de emisor | Autoridad de congelación por cuenta | Además: cuentas congeladas por defecto, permanent delegate, pausable y transfer hook |
| Cerrar el mint | No se puede | Sí, si se activa MintCloseAuthority al crearlo |
| Tamaño de la cuenta de token asociada | 165 bytes | 170 bytes (con «immutable owner» automático) o más, según las extensiones |
| Tamaño del mint | 82 bytes | Según las extensiones: 411 bytes en el ejemplo de esta guía |
| Añadir funciones después | No aplica | La mayoría de las extensiones no se pueden añadir tras crear el mint |

Regla práctica: si el token no necesita ningún control más allá de la congelación, el programa original es más simple y está muy extendido. Si necesitas metadatos en el mint, altas controladas o la posibilidad de rectificar saldos, Token-2022 te lo da sin programa propio. La comparación extensión por extensión con el estándar ERC-3643 está en [Token-2022 para tokens regulados](/articulos/token-2022-solana-tokens-regulados).

## Si el token es un valor: Ley 6/2023, ERIR y MiFID II

Todo lo anterior crea un token. No decide qué es jurídicamente. Antes de acuñar en mainnet, clasifícalo; el [clasificador MiCA / MiFID](/clasificador-mica-mifid) te da una primera orientación.

- **Si es un instrumento financiero**, MiCA no se aplica (art. 2.4.a del Reglamento (UE) 2023/1114). Rige la normativa de valores: MiFID II para los servicios de inversión y, en España, la Ley 6/2023. Lo explicamos en [MiCA vs MiFID II](/articulos/mica-vs-mifid-ii).
- **La Ley 6/2023 permite representar valores negociables con tecnología de registros distribuidos** (art. 6.1), sin nombrar ninguna red. La norma no excluye Solana, pero exige que el sistema garantice la integridad e inmutabilidad de la emisión e identifique a los titulares (art. 6.5), y eso la red no lo aporta por sí sola.
- **Documento de la emisión y ERIR.** El emisor elabora un documento de la emisión que identifica a la entidad responsable del registro (art. 7) y designa una o varias [ERIR](/glosario/erir-entidad-de-registro-e-identificacion-registral) (art. 8.4). Debe ser una entidad autorizada para la custodia y administración de instrumentos financieros (art. 126.a), y entre sus funciones está la identificación de los titulares y la gestión de los eventos corporativos.
- **Folleto.** Una oferta pública de valores exige folleto conforme al Reglamento (UE) 2017/1129, salvo exención (art. 35.1 de la Ley 6/2023).
- **Si es una ficha de dinero electrónico (EMT)**, el emisor debe estar autorizado como entidad de crédito o de dinero electrónico (art. 48 de MiCA).

Token-2022 aporta la herramienta, no el permiso. Las cuentas congeladas por defecto encajan con que solo operen titulares identificados, el permanent delegate es un mecanismo con el que ejecutar una rectificación del registro y la pausa permite una suspensión. Quién los usa y cuándo lo fija la documentación de la emisión, y para el inversor son un riesgo de contraparte que debe constar en ella. Desplegar en Solana no hace que una emisión cumpla la Ley 6/2023: la norma se aplica al valor, al emisor y a la ERIR, no a la red. Lo desarrollamos en [Ley 6/2023 y la tokenización de valores](/articulos/lmvsi-ley-6-2023-tokenizacion).

## Cómo lo abordamos en Unknown Gravity

Unknown Gravity es una empresa española de tecnología de tokenización e infraestructura blockchain. En un token sobre Solana revisamos primero lo que no se puede cambiar después: el programa de tokens, las extensiones, quién tiene cada autoridad y con qué multifirma. Después lo probamos en devnet y lo integramos con el KYC, la ERIR que designe el emisor y su plataforma. Si el token necesita lógica propia, ese programa se audita antes de llegar a mainnet.

## Preguntas frecuentes

### ¿Cuál es el token de Solana?

SOL es el token nativo de la red: paga las comisiones y los depósitos de las cuentas, y se divide en lamports (1 lamport = 0,000000001 SOL). Los tokens que crea cualquiera con los programas de tokens se llaman tokens SPL.

### ¿Cuánto cuesta crear un token en Solana?

En la red, poco. A 16 de octubre de 2026, el mint de un token SPL exige un depósito de 1.066.800 lamports (0,0010668 SOL) y 10.000 lamports de comisión, porque la transacción lleva dos firmas. En el programa original ese depósito no se recupera, porque el mint no se puede cerrar. Lo caro es el desarrollo, la auditoría y, si es un valor, la parte legal.

### ¿Puedo crear un token en Solana gratis o sin programar?

En devnet, sí: el SOL de prueba es gratis y no tiene valor. En mainnet necesitas SOL para depósitos y comisiones. Un generador sin código te ahorra los comandos, pero no decide quién guarda las autoridades, con qué multifirma ni qué es el token jurídicamente. Para un emisor, esas decisiones son el trabajo.

### ¿Se pueden añadir extensiones de Token-2022 a un token ya creado?

En general, no. La mayoría de las extensiones se inicializan al crear el mint y no se pueden añadir después. Por eso el diseño del token se cierra antes del primer comando en mainnet.

### ¿Cómo se queman tokens en Solana?

Con `spl-token burn <CUENTA> <CANTIDAD>`, firmado por el titular de la cuenta. Reduce su saldo y el suministro del mint. En Token-2022, el permanent delegate también puede quemar desde cualquier cuenta. Una cuenta congelada no se puede quemar.

### ¿Cómo crear una memecoin en Solana?

Con los mismos comandos; no es el caso de uso de esta guía. Ofrecerla al público en la UE exige, salvo exenciones, ser persona jurídica y elaborar, notificar y publicar un libro blanco según [MiCA](/glosario/mica-reglamento-criptoactivos) (art. 4).

## Fuentes

- [Instalación local del entorno de Solana (solana.com)](https://solana.com/docs/intro/installation)
- [Instalación de la CLI de Solana y dependencias (solana.com)](https://solana.com/docs/intro/installation/dependencies)
- [Conceptos básicos de la CLI: carteras, clústeres y airdrop (solana.com)](https://solana.com/docs/intro/installation/solana-cli-basics)
- [Tokens en Solana: programas, mint y cuentas de token (solana.com)](https://solana.com/docs/tokens)
- [Quickstart: crear un token con la CLI (solana.com)](https://solana.com/docs/tokens/quickstart)
- [Set Authority: cambiar o revocar autoridades (solana.com)](https://solana.com/docs/tokens/basics/set-authority)
- [Metadatos de Metaplex para tokens SPL (solana.com)](https://solana.com/docs/tokens/metaplex)
- [Token Extensions (Token-2022) (solana.com)](https://solana.com/docs/tokens/extensions)
- [Metadata Pointer y Token Metadata (solana.com)](https://solana.com/docs/tokens/extensions/metadata)
- [Default Account State (solana.com)](https://solana.com/docs/tokens/extensions/default-state)
- [Permanent Delegate (solana.com)](https://solana.com/docs/tokens/extensions/permanent-delegate)
- [Transfer Hook (solana.com)](https://solana.com/docs/tokens/extensions/transfer-hook)
- [Token Program: CLI y cuentas multifirma (solana-program.com)](https://www.solana-program.com/docs/token)
- [Token-2022: extensiones desde la CLI (solana-program.com)](https://www.solana-program.com/docs/token-2022/extensions)
- [Ley 6/2023, de los Mercados de Valores y de los Servicios de Inversión, texto consolidado (BOE)](https://www.boe.es/buscar/act.php?id=BOE-A-2023-7053)
- [Reglamento (UE) 2023/1114 (MiCA) (EUR-Lex)](https://eur-lex.europa.eu/legal-content/ES/TXT/?uri=CELEX:32023R1114)

*Marco verificado a 16 de octubre de 2026.* ¿Vas a emitir un token en Solana y quieres revisar su diseño antes de mainnet? [Hablemos](/meeting).
