Generar direcciones personalizadas en Solana
Published: 2024-01-10 17:04:58

Las direcciones personalizadas dan cierta legibilidad a la cadena aleatoria de letras y números conocida como dirección del monedero Solana.



Si alguna vez ha realizado una sola transacción en la blockchain Solana, hay una probabilidad muy alta de que haya interactuado antes con una de estas direcciones de vanidad. Algunos de los programas más conocidos utilizan una dirección, como estás:

- [TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA](https://solscan.io/account/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)- SPL Token program

- [TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb](https://solscan.io/account/TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb)- SPL Token 2022 program

- [whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc ](https://solscan.io/account/whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc)- Orca Whirlpools

- [srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX](https://solscan.io/account/srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX)- Openbook

Observará que cada una de las direcciones de cuenta comienza con algunas palabras legibles (o partes de ellas). Todas son "Vanity Address".

> ¿Inmersión técnica?

> Puede leer todo acerca de [cómo se derivan y generan las direcciones Solana](https://nick.af/articles/derive-solana-addresses) en mi profundización técnica al respecto. Incluyendo la comprensión de la "ruta de derivación" utilizada para generar direcciones vanidad con la Solana CLI. Cosas bastante interesantes 😀.

## Cómo generar una dirección personalizada

La manera más fácil y común de generar direcciones vanity es usando el [CLI de Solana](https://dev.to/derlys/introduccion-a-la-cli-de-solana-5e1m). Así que eso es lo que voy a demostrar aquí también.

> Instale el Solana CLI

> Si usted no tiene el Solana CLI ya instalada y configurado en su computadora, entonces usted puede leer mi otro artículo sobre [Como Instalar y Configurar el Solana CLI](https://dev.to/derlys/introduccion-a-la-cli-de-solana-5e1m)

Asegúrese de que tiene el programa **solana-keygen** instalado y funcionando ejecutándolo:

```bash
solana-keygen --version

# output (note the version)
# solana-keygen 1.17.6 (src:61caae6b; feat:3073089885, client:SolanaLabs)
```

Anote la versión que tiene instalada. Esto será importante si desea generar una dirección de vanidad para su uso en carteras web/navegadores como Phantom o Solflare. Más sobre esto en un momento.

Utilizando el programa solana keygen, podemos buscar (es decir, generar por fuerza bruta) nuevas direcciones de vanidad que empiecen por, acaben por, o empiecen Y acaben por determinados caracteres.

Para ver todas las opciones que puede utilizar para generar direcciones vanity aleatorias de Solana, consulte la ayuda de grind:

```
solana-keygen grind --help
```

## Caracteres no admitidos

Las direcciones públicas y las transacciones de Solana funcionan con el juego de caracteres base-58. Es decir, solo hay 58 caracteres posibles:

- incluidas las mayúsculas A-Z, excluidas las mayúsculas **O** e **I**(como en **Oscar** e **India**)

- letras minúsculas de la A a la Z, excepto la **l** minúscula (como en **letter**)
- dígitos 1-9, (que no incluyen el **0**)

Estas letras específicas están **excluidas** del conjunto de caracteres base-58, ya que pueden confundirse fácilmente con otros caracteres. Y si se utiliza el carácter equivocado, ¡la dirección de la cadena de bloques es completamente diferente!

Así que cuando intente generar direcciones vanity usando uno de los 4 caracteres no soportados, el CLI de Solana le dará un error.

## Velocidad de generación de las direcciones de vanidad

En el momento actual, el CLI de Solana solo soporta este método de fuerza bruta para generar direcciones de vanidad con todos los hilos de las CPUs de tu ordenador. Así que cuanto más potente sea tu CPU, menos tiempo tardará.

Dato: mi portátil de gama media con una CPU Intel i7 de 8 núcleos puede generar 1.000.000 de direcciones de clave privada cada ~6,3 segundos.

El otro gran factor que influye en la velocidad de generación de direcciones es la cadena de caracteres que se busca. Cuanto más larga sea la cadena (por ejemplo, 4 caracteres frente a 8 caracteres) y si se ignoran las mayúsculas o minúsculas (por ejemplo, "n" frente a "Nnn"), más tiempo se tardará.

El último factor importante es si estás intentando generar la frase mnemotécnica o solo la clave privada. Generar la frase mnemotécnica llevará SIGNIFICATIVAMENTE MÁS TIEMPO que sin.

Dato: el mismo ordenador del dato anterior puede generar `1.000.000` de direcciones de frases mnemotécnicas cada `~15-20 minutos`. Mucho más tiempo.

## Rectificado básico

Para iniciar el proceso de `grind` buscando una dirección que empiece por una cadena establecida:

```
solana-keygen grind --starts-with nemesis:1 --ignore-case
```
Este simple comando se ejecutará hasta que se encuentre `1 `dirección de vanidad que empiece por `nemeisis` (ignorando las mayúsculas y minúsculas). Bastante simple.

También hay que tener en cuenta que, una vez encontrada una dirección que coincida, la clave privada (en forma de matriz de bytes) se guardará en el directorio de trabajo actual de su terminal con el archivo denominado `<GENERATED_PUBKEY>.json`

## Coincidencia de varias cadenas

El comando `grind` también le permite especificar múltiples cadenas que desea buscar y comparar. Esta suele ser una forma más eficaz de buscar si está buscando más de una dirección de vanidad posible.

Para buscar y hacer coincidir varias cadenas, basta con especificar varias veces el indicador `--starts-with` o `--ends-with` o `--starts-and-ends-with` (con su valor). Por ejemplo:

```bash
solana-keygen grind --ignore-case --starts-with n:2 --starts-with fress:2 --ends-with dominguez:2
```

Este proceso continuará hasta que se encuentren `2` coincidencias para **CADA** una de las comparaciones de cadena dadas. Al final, se generarán 6 direcciones.

## Generar con frase mnemotécnica



## Vanidad con ruta mnemotécnica y de derivación

El uso de la opción `--derivation-path` le permitirá establecer una ruta de derivación personalizada en la CLI de Solana. Si no especifica una ruta de derivación personalizada, este indicador utilizará una ruta codificada de `m/44'/501'/0'/0'` (que está lista para utilizarse con Phantom y Solflare).

A diferencia del valor predeterminado de la CLI de Solana, la ruta de derivación de `m/44'/501'` (que NO es compatible con los monederos de navegador).

```
./solana/target/release/solana-keygen grind --use-mnemonic --derivation-path --starts-with nick:1 --no-passphrase
```

Si lo desea, también puede establecer una ruta de derivación personalizada como esta:

```
./solana/target/release/solana-keygen grind --use-mnemonic --derivation-path m/44/117/0/0 --starts-with nick:1 --no-passphrase
```

### Añade tu dirección de vanidad en el monedero de tu navegador

El mnemotécnico resultante de este comando puede introducirse en el monedero de su navegador y funcionará.

A continuación, puede utilizar cualquiera de las otras banderas de `grind` para personalizar las direcciones de vanidad que está buscando, y ser más utilizable en el resto de la blockchain Solana 🙃

## Cómo genero las direcciones personalizadas

La forma en que me gusta generar direcciones de vanidad con mnemónicos es creando una carpeta `grind_keys` separada en mi ordenador. A continuación, la salida de los mnemónicos generados a un archivo de texto en mi ordenador.

A continuación, envío la salida del proceso a un archivo de texto (también conocido como mnemónico) para su uso posterior.

Así:

```
mkdir grinder_keys && cd grind_keys
mkdir keys && cd keys
./solana/target/release/solana-keygen grind --no-passphrase --use-mnemonic --derivation-path --ignore-case --starts-with nick:100 --starts-with more:100 >> ../mnemonics.txt
```

Esto me permite simplemente ejecutar el mismo comando `grind `cada vez que inicio mi ordenador. Así puedo generar direcciones durante periodos de tiempo más largos, como días y semanas, en mi ordenador de sobremesa. Sin miedo a perder la mnemotecnia generada.


A excepción de algunos links actualizados y párrafos, este tutorial fue creado en el idioma inglés por [Nick Frostbutter](https://twitter.com/nickfrosty). Muchas gracias por crear este tipo de contenido.

Espero esta traducción le sea de ayuda a la comunidad Hispanohablante que usa [Solana](https://solana.com/) que está creciendo enormemente.

Haz parte de la comunidad [SOLANA LATAM](https://discord.gg/sPVaqarbxY).

[HispanaSol](https://t.me/+Axat5MuV6ow5NWY0)