Visão geral
Você já percebeu que alguns endereços de conta Solana têm prefixos ou sufixos definidos (por exemplo, DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ)?
Isso não pode ser aleatório, certo? Correto! A Solana CLI tem algumas ferramentas poderosas para gerar seu próprio endereço de carteira personalizado. Neste guia, você criará seu próprio endereço de carteira personalizado usando a Solana CLI e a ferramenta grind.
Do que você precisará:
- Um terminal de linha de comando
- A Solana CLI instalada
Configure seu projeto
Crie um novo diretório de projeto em seu terminal com:
mkdir custom-wallet
cd custom-wallet
Verifique se a ferramenta “Solana CLI” está instalada e atualizada. No seu terminal, digite:
solana --version
Para verificar e instalar atualizações, em seu terminal, digite:
solana-install update
Você deve ver algo assim:
Vamos começar.
Usando Solana-Keygen
A Solana CLI tem um comando nativo para criar novos pares de chaves, o Solana-Keygen. Os comandos do Solana-Keygen seguem o seguinte formato:
solana-keygen [OPTIONS] <SUBCOMMAND>
Options (opções) e subcommands (subcomandos) são descritos no menu de ajuda. Você pode verificá-los e todas as funcionalidades do Solana-Keygen inserindo o subcomando help (ajuda) em seu terminal:
solana-keygen --help
Você deve ver um menu de ajuda semelhante a este:
Você deve ver um subcomando, grind. Nós o usaremos para gerar sua carteira personalizada. Esse subcomando gera chaves até encontrar uma que atenda aos seus critérios de pesquisa. Vamos testar!
solana-keygen grind --starts-with a23:1
Você deve ver uma resposta como esta em seu terminal:
custom-wallet % solana-keygen grind --starts-with a23:1
Searching with 10 threads for:
1 pubkey that starts with 'a23' and ends with ''
Wrote keypair to a23...mgr.json
Épico! Você acabou de criar seu primeiro endereço de carteira personalizado, que começa com 1 instância (definida pelo ":1") de "a23". Você deve ver um arquivo .json na pasta do seu projeto com a chave privada do novo endereço. Isso pode ser importado em seu projeto Solana ao usar o Solana JS SDK utilizando:
const keypair = Keypair.fromSecretKey(Uint8Array.from(ARRAY_IN_JSON FILE));
Antes de verificar alguns outros recursos do solana-keygen, vamos aplicar o grind em uma carteira que começa com 123456789. No seu terminal, digite:
solana-keygen grind --starts-with 123456789:1
Sua CLI deve mostrar uma atualização a cada alguns segundos, informando que a pesquisa continua e que nenhuma correspondência foi encontrada:
custom-wallet % solana-keygen grind --starts-with 123456789:1
Searching with 10 threads for:
1 pubkey that starts with '123456789' and ends with ''
Searched 1000000 keypairs in 1s. 0 matches found.
Searched 2000000 keypairs in 3s. 0 matches found.
Searched 3000000 keypairs in 5s. 0 matches found.
etc.
Pressione Ctrl + C para cancelar sua pesquisa, ou você poderá ficar esperando por muito tempo. Este é um bom exemplo de como o subcomando grind funciona. Ele procura um par de chaves (keypair), verificando se ele corresponde a seus critérios e tentando novamente até que seus critérios sejam atendidos. Essa ilustração mostra que é significativamente mais difícil encontrar um endereço com nove variáveis definidas pelo usuário do que três. Dito isto, é comum aplicar o grind em endereços com apenas 2-5 caracteres definidos. Além disso, você irá utilizar uma quantidade incrível de poder computacional e esperar muito tempo.
Agora vamos explorar alguns dos outros recursos do solana-keygen. No seu terminal, digite:
solana-keygen grind --help
Observe o comando acima, pois é sempre um ótimo ponto de referência se você esquecer como usar o comando!
Você verá três seções: Usage (uso), Flags (sinalizadores) e Options (sinceramente, eu vejo os sinalizadores como apenas um tipo diferente de opções, mas a Solana CLI os separa):
Usage mostra o formato de nossos comandos. Nós sempre começamos solana-keygen grind seguido de quaisquer sinalizadores e opções: solana-keygen grind [FLAGS] [OPTIONS]
Sua consulta de busca:
- --starts-with PREFIX:COUNT, onde PREFIX é o prefixo personalizado desejado que você está procurando e COUNT é o número de pares de chaves a serem geradas (por exemplo, --starts-with first:2 irá gerar dois pares de chaves com um endereço de carteira que comece com quick).
- --ends-with SUFFIX:COUNT, onde SUFFIX é o sufixo personalizado desejado que você está procurando e COUNT é o número de pares de chaves a serem geradas (por exemplo, --starts-with node:1 gerará um par de chaves com um endereço de carteira que termine com node).
- --starts-and-ends-with PREFIX:SUFFIX:COUNT, onde PREFIX é o prefixo personalizado desejado que você está procurando, SUFFIX é o sufixo personalizado desejado que você está procurando e COUNT é o número de pares de chaves a serem geradas (por exemplo, --starts-and-ends-with quick:node:3 gerará três pares de chaves com um endereço de carteira que comece com quick e termine com node).
- Nota: PREFIX e SUFFIX devem ser do tipo Base58 (A-Z, a-z, 0-9) exceto caracteres fáceis de se confundir (zeros (0), i (I) e o (O) maiúsculos, is (I) minúsculos).
Outras opções:
- --ignore-case fará sua pesquisa não sensível a maiúsculas e minúsculas (sensível por padrão)
- --use-mnemonic - por padrão, a função grind salva uma chave privada, e não uma frase-chave mnemônica. Este sinalizador será gerado usando uma frase-chave mnemônica. Espere uma desaceleração significativa neste modo.
- --no-outfile (deve ser usado em conjunto com --use-mnemonic). Imprime apenas uma frase-semente e pubkey. Não gera um arquivo de par de chaves.
- --no-bip39-passphrase (deve ser usado em conjunto com --use-mnemonic). Não solicita uma senha BIP39 (esta senha melhora a segurança da frase-semente de recuperação, NÃO do próprio arquivo do par de chaves, que é armazenado como texto simples inseguro)
- --word-count (deve ser usado em conjunto com --use-mnemonic). Especifica o número de palavras que estarão na frase-semente gerada (padrão: 12)
- --language <LANGUAGE> (deve ser usado em conjunto com --use-mnemonic) especifique o idioma para a frase mnemônica (inglês, chinês simplificado, chinês tradicional, japonês, espanhol, coreano, francês, italiano)
- --num-threads <NUMBER> Especifica o número de threads do grind [padrão: 10]
- -C, --config <FILEPATH> Arquivo de configuração a ser usado
Há muita informação nisso, então não se preocupe se não fizer muito sentido. A melhor forma de aprender é testando!
Criar uma carteira personalizada
Hora de testar! Você pode procurar acima se precisar de ajuda. Gere um único endereço que comece com a inicial do seu primeiro nome e termine com a inicial do seu último nome (não sensível a maiúsculas e minúsculas). Crie uma frase mnemônica japonesa de 24 palavras que não tenha saída .json ou senha bip39.
Depois de ter tentado sozinho, você pode dar uma olhada em como fizemos abaixo:
solana-keygen grind --starts-and-ends-with A:M:1 --ignore-case --use-mnemonic --word-count 24 --language japanese --no-outfile --no-bip39-passphrase
Como você se saiu? Se tudo deu certo, você deve ver uma resposta em seu terminal que diz "Found matching key” (Chave correspondente encontrada) com o endereço da sua carteira e a frase inicial! Muito legal, não é mesmo?
Se desejar, você pode fazer uma pesquisa reversa com sua frase inicial usando este comando:
solana-keygen pubkey prompt://
Recomendo experimentar cada opção para entender como tudo funciona e assim fazer o endereço dos seus sonhos!
Fique seguro lá fora!
Lembre-se, independentemente de como você cria novas sementes ou carteiras, pratique as melhores práticas de segurança de carteira. Publicamos um Guia: Uma introdução às carteiras criptográficas e como mantê-las seguras para ajudá-lo.
Sua carteira personalizada está apenas te dando um gostinho do que você está buscando? Confira nosso Guia: Como criar um domínio .sol usando o Solana Naming Service para criar um nome de domínio .sol personalizado.
Criou uma carteira bacana? Envie-nos uma nota no Discord ou no Twitter e compartilhe!
Nós adoramos feedback!
Se você tiver algum feedback ou perguntas sobre este guia, deixe-nos saber. Adoraríamos ouvir de você!
Este guia foi publicado por Quicknode. Traduzido por Paulinho Giovannini.
Latest comments (0)