Um endereço personalizado (vanity address) dá alguma capacidade de legibilidade humana à string aleatória de letras e números conhecida como um endereço de carteira Solana.
Se você já fez uma única transação na blockchain Solana, há uma grande chance de que tenha interagido com um desses endereços personalizados anteriormente. Alguns dos programas mais conhecidos usam um endereço personalizado, como estes:
- TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA - SPL Token program
- TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb - SPL Token 2022 program
- whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc - Orca Whirlpools
-
srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX - Openbook
- antigo Serum, agora melhor! Mais aberto e sem a FTX.
Você notará que cada um dos endereços de conta começa com algumas palavras legíveis (ou partes delas). Todos eles são "Endereço Personalizados".
Mergulho Técnico Profundo?
Você pode ler tudo sobre como os endereços Solana são derivados e gerados em meu mergulho técnico profundo sobre ele. Incluindo a compreensão do "caminho de derivação", usado para gerar um endereço personalizado com a CLI da Solana. Coisas bastante interessantes 😀
Como gerar um endereço personalizado
A maneira mais fácil e mais comum de gerar endereços personalizados é usando a CLI da Solana. Portanto, é isso que também vou demonstrar aqui.
Instalar a CLI da Solana
Se você não tem a CLI da Solana já instalada e configurada em seu computador, então você pode ler meu outro artigo em Como Instalar e configurar a CLI da Solana.
Certifique-se de ter o programa solana-keygen
instalado e funcionando, executando:
1solana-keygen --version
2
3# output (observe a versão)
4# solana-keygen 1.14.11 (src:61876755; feat:3036606309)
Observe a versão que você tem instalada. Isto será importante se você quiser gerar endereços personalizados para uso em carteiras da web/browser como Phantom ou Solflare. Mais sobre isso daqui a pouco.
Usando o programa solana keygen, podemos usar grind
(também conhecido como gerar força bruta) para novos endereços personalizados que começam com, terminam com, ou começam E terminam com certos caracteres.
Para ver todas as opções que você pode usar para gerar endereços personalizados Solana aleatórios, consulte a ajuda (help) para o comando grind.
1solana-keygen grind --help
Caracteres não Suportados
Os endereços públicos e as transações do Solana funcionam sobre o conjunto de caracteres de base 58. Isso essencialmente significa que existem apenas 58 caracteres possíveis:
- incluindo maiúsculas A-Z, excluindo maiúsculas
O
eI
(como emOscar
eIndia
) - letras minúsculas A-Z, excluindo letras minúsculas
l
(como emletter
) - dígitos 1-9, (que não inclui
0
)
Estas letras específicas são excluídas do conjunto de caracteres de base58, pois podem ser facilmente confundidas com outros caracteres. E se o caractere errado for usado, então o endereço da blockchain fica completamente diferente!
Portanto, quando você tenta gerar endereços personalizados usando um dos 4 caracteres não suportados, a CLI da Solana lançará um erro.
Velocidade de geração de endereços personalizados
Atualmente, a CLI da Solana só suporta este método de força bruta para gerar endereços personalizados com todos os threads de CPUs de seu computador. Portanto, quanto mais poderosa for sua CPU, menor será o tempo necessário.
Ponto de dados: meu laptop de alcance médio com uma CPU Intel i7 de 8 núcleos pode gerar 1,000,000
de endereços de chave privada a cada ~6.3 seconds
.
O outro grande fator sobre quão rápido você pode gerar endereços, é a correspondência de strings que você está procurando. Quanto mais longa a string corresponder (por exemplo, 4 caracteres vs 8 caracteres) e se você estiver ignorando ou não o tipo da letra (por exemplo, "nick" vs "NicK"), mais tempo pode levar.
O último grande fator é se você estiver tentando gerar a frase mnemônica ou apenas a chave privada. A geração da frase mnemônica levará CONSIDERAVELMENTE MAIS TEMPO.
Ponto de dados: o mesmo computador do ponto de dados acima pode gerar 1,000,000
de endereços de frase mnemônica a cada ~15-20 minutes
. Muito mais tempo.
Grinding básico
Para iniciar seu processo grind
buscando por um endereço que comece com uma string definida:
1solana-keygen grind --starts-with nick:1 --ignore-case
Este comando simples será executado até encontrar 1
endereço personalizado que começa com nick (ignorando o tipo da letra). Suficientemente simples.
Também observe que, uma vez encontrado um endereço correspondente, a chave privada (na forma de um array de bytes) será salva no diretório de trabalho atual do seu terminal com o arquivo chamado
<GENERATED_PUBKEY>.json
Correspondência de várias strings
O comando grind
também permite especificar várias strings que você deseje pesquisar e combinar. Esta é normalmente uma maneira mais eficiente de pesquisar se você estiver procurando por mais de um possível endereço personalizado.
Para pesquisar e combinar várias strings, basta especificar o sinalizador (com seu valor) --starts-with
(começa-com) ou --ends-with
(termina-com) ou --starts-and-ends-with
(inicia-e-termina com) várias vezes. Assim:
1solana-keygen grind --ignore-case --starts-with nick:2 --starts-with burn:2 --ends-with frost:2
Este processo continuará a ser executado até que sejam encontradas 2
correspondências para CADA uma das comparações de strings dadas. Assim, no final, isto acabará gerando 6 endereços.
Gerar com frase mnemônica
Usar um endereço personalizado em uma carteira de navegador
Como discuti em meu mergulho técnico profundo em como funcionam a derivação de endereços Solana, a CLI da Solana por padrão, não é configurada para gerar uma frase mnemônica para um endereço a ser usado em uma carteira de navegador da web. Isto porque o derivation path
é diferente das configurações padrão na CLI e do que as carteiras dos navegadores da web (como Phantom e Solflare) usam.
Assim, para usar um endereço personalizado Solana em uma carteira de navegador, é necessário alterar o caminho de derivação usado no grind
.
MÁS NOTÍCIAS...
No momento em que escrevi isto (27 de dezembro de 2022), a versão atual da CLI da Solana v1.14.11 não suporta a mudança do caminho de derivação. Portanto, não se pode gerar um endereço personalizado compatível com a carteira do navegador. Desculpe… 😑
BOAS NOTÍCIAS!
Uma pessoa maravilhosa submeteu e obteve aprovação de uma mudança para o programa keygen que acrescenta a possibilidade de mudar o caminho de derivação para um utilizável por carteiras de navegador. Espera-se que ele saia na versão 1.15.0.
Portanto, você pode esperar que essa versão seja oficialmente publicada.... ou...
Você pode baixar o código fonte oficial da Solana, compilar da fonte e obter acesso a esta maravilhosa adição agora.
Isto foi o que fiz para começar a usar o novo recurso. Abaixo está como.
PS: Vou atualizar este artigo quando o sinalizador do derivation-path
estiver disponível na CLI regular da Solana.
Compilar a partir da fonte
Esta seção será curta e direta. Suponho que você tenha o compilador Rust instalado e o git
. Se você é um desenvolvedor, especialmente um dev Solana, então você provavelmente tem. (Eu executei isto no Linux, mas também deve funcionar no Mac. Windows? Simplesmente pare).
Estes são os comandos completos que eu executei para compilar o programa solana-keygen
a partir da fonte, diretamente do repositório da Solana:
1mkdir solana && cd solana
2git clone https://github.com/solana-labs/solana.git ./
3cd keygen && ./cargo build --release && cd
4./solana/target/release/solana-keygen --version
Depois de executar todos estes comandos, você deve ver uma saída final da versão solana-keygen
:
1#output (só realmente importa a versão)
2solana-keygen 1.15.0 (src:devbuild; feat:3921999736)
Agora você pode usar o sinalizador --derivation-path
para gerar endereços personalizados compatíveis com carteiras de navegador:
1./solana/target/release/solana-keygen grind --use-mnemonic --derivation-path
Endereços personalizados com mnemônico e caminho de derivação
O uso do sinalizador --derivation-path
lhe permitirá definir um caminho de derivação personalizado dentro da CLI da Solana. Se você não especificar um caminho de derivação personalizado, este sinalizador usará um caminho codificado de m/44'/501'/0'/0'
(que está pronto para ser usado tanto com Phantom quanto com Solflare).
Em comparação com o caminho de derivação padrão da CLI da Solana o caminho de derivação m/44'/501'
NÃO é compatível com carteiras de navegador).
1./solana/target/release/solana-keygen grind --use-mnemonic --derivation-path --starts-with nick:1 --no-passphrase
Se você quiser, você também pode definir um caminho de derivação personalizado como este:
1./solana/target/release/solana-keygen grind --use-mnemonic --derivation-path m/44/117/0/0 --starts-with nick:1 --no-passphrase
Adicione seu endereço personalizado em sua carteira de navegador
O mnemônico que é emitido por este comando pode ser inserido na carteira do navegador de sua escolha e vai funcionar!
Você pode então usar qualquer um dos outros sinalizadores grind
para personalizar os endereços personalizados que você esteja procurando e ser mais aplicável no resto da blockchain Solana. 🙃
Como eu crio endereços personalizados
A maneira como eu gosto de gerar endereços personalizados com mnemônicos é criando uma pasta separada grind_keys
no meu computador. Em seguida, emito os mnemônicos gerados para um arquivo de texto no meu computador.
Eu então envio o output do processo para um arquivo de texto (também conhecido como mnemônico) para uso posterior.
Assim:
1mkdir grinder_keys && cd grind_keys
2mkdir keys && cd keys
3./solana/target/release/solana-keygen grind --no-passphrase --use-mnemonic --derivation-path --ignore-case --starts-with nick:100 --starts-with more:100 >> ../mnemonics.txt
Isto permite que eu simplesmente execute o mesmo comando grind
toda vez que inicio meu computador. Assim, posso gerar endereços por períodos mais longos, como dias e semanas, em meu computador de mesa. Sem medo de perder o mnemônico gerado.
Em seguida, escolho e pego o melhor endereço personalizado dentre os que encontrei. Como agora, estou executando isso à procura de um bom endereço nick
para usar no meu Smartphone Solana Saga (lançamento em breve) como meu novo endereço!
Esse artigo foi escrito por Nick Frostbutter
e traduzido por Fátima Lima. O original pode ser lido aqui.
Latest comments (0)