WEB3DEV

Cover image for Criando um token na Solana
Paulo Gio
Paulo Gio

Posted on • Atualizado em

Criando um token na Solana

Crie um token na blockchain Solana sem necessidade de codificação

Introdução

Neste tutorial, criaremos um token na blockchain Solana sem necessidade de codificação. Os tokens têm muitas funcionalidades, como os tokens sociais, os tokens utilitários ou as moedas.

Solana tem um Programa de Tokens, escrito em Rust, que nos permitirá criar nosso próprio token. Só precisaremos usar uma simples interface de linha de comando para criar e enviar nossos tokens.

Este tutorial mostrará uma chamada para ação na forma de um marcador. Observe que, se você precisar de ajuda ou quiser explorar o uso de qualquer comando mencionado neste tutorial, adicione o sinalizador --help após o comando.

  • Por exemplo:
solana --help
Enter fullscreen mode Exit fullscreen mode

Se você tiver alguma dificuldade em seguir este tutorial ou simplesmente quiser discutir a tecnologia Solana conosco, você pode se juntar à nossa comunidade hoje!

Pré-requisitos

  • Familiaridade básica com uma interface de linha de comando;
  • Familiaridade básica com Git e GitHub;
  • Cerca de $1 USD de SOL acessível. Obtenha SOL por meio de uma exchange, como a FTX, ou fazendo swap de tokens no Serum.
    • NOTA: A FTX e a Solana estão intimamente ligadas. A empresa irmã da FTX, Alameda Research, é uma investidora na Solana, e a FTX também opera sua própria exchange descentralizada chamada Serum na blockchain da Solana.

Requisitos

Crie uma carteira SOL

Primeiro vamos criar uma carteira SOL para lidar com nossas transações, usando a linha de comando.

  • Crie uma nova carteira, que retornará a chave pública (pubkey):
solana-keygen new
Enter fullscreen mode Exit fullscreen mode

Se você já tem um par de chaves local da Solana, mas deseja gerar um novo para este tutorial: Certifique-se de fazer backup de todas as chaves públicas e frases iniciais antes de realizar esta etapa, ou você pode perder o acesso aos ativos na Solana! Verifique ~/.config/solana/id.json para quaisquer chaves públicas. Use o sinalizador --force para gerar um par de chaves existente:

solana-keygen new --force
Enter fullscreen mode Exit fullscreen mode

A saída deve se parecer com:

Generating a new keypair

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):
Enter fullscreen mode Exit fullscreen mode

Você pode inserir uma senha ou deixar em branco. O comando solana-keygen agora produzirá a chave pública e a frase-semente:

Wrote new keypair to /.config/solana/id.json
========================================================================
pubkey: 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
========================================================================
Save this seed phrase and your BIP39 passphrase to recover your new keypair:
still auto damp sphere silly remain first utility announce material luxury robe
========================================================================
Enter fullscreen mode Exit fullscreen mode

O arquivo JSON da carteira que foi criado está localizado em ~/.config/solana/id.json em seu sistema de arquivos.

Escreva a frase-semente em algum lugar seguro!

Deposite dinheiro na carteira

Agora usaremos aquela chave pública (pubkey) para depositar SOL em nossa carteira. O SOL é necessário para pagar as transações e quaisquer alterações que fizermos na blockchain, por exemplo, a transação que cria nosso token.

Precisaremos colocar SOL nesta carteira a partir de uma carteira como aquela do navegador Sollet, após adquirir SOL da FTX (ou fazer swap de tokens no Serum).

  • Envie 0.1 SOL para nossa carteira de linha de comando

https://github.com/figment-networks/learn-tutorials/raw/master/assets/sendToCLIWallet.png

  • Verifique o saldo da carteira, com a chave pública nesta entrada sendo a chave pública da sua carteira
solana balance 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Enter fullscreen mode Exit fullscreen mode

O saldo devolvido deve corresponder ao valor exato que você enviou para a carteira.

Crie o token

  • Instale a CLI do spl-token
cargo install spl-token-cli
Enter fullscreen mode Exit fullscreen mode
  • Crie o token, que retornará o tokenAddress
spl-token create-token
Enter fullscreen mode Exit fullscreen mode

O comando produzirá um endereço para o token e uma assinatura de transação:

Creating token B7kRCw1kiB4KxdSKveA3GW4gUc7N4PFiBZTKGRVNXtj6

Signature: 4ELSGXv7Eh6sFnzcM7XvVLmZUZrWbCsF7DoKYpj14qmMzohh9b79AqTXnUYTaLKUuFQLASBHrPMKhEbrM7h8cjMr
Enter fullscreen mode Exit fullscreen mode

Se você não tiver nenhum SOL em sua carteira para pagar a transação, receberá um erro:

Creating token AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM
Fee payer, 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi,
has insufficient balance: 0.0014716 required, 0 available
Enter fullscreen mode Exit fullscreen mode

Depois de executar o create-token acima, criamos nosso próprio token na Solana. Há muito mais que você pode fazer com isso.

  • Verifique o saldo da carteira, com a chave pública nesta entrada sendo a chave pública da sua carteira:
solana balance 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Enter fullscreen mode Exit fullscreen mode

Seu saldo diminuirá, indicando que as taxas de transação e o custo de implantação foram pagos.

Parabéns, seu token foi oficialmente criado 👍

​​Crie uma conta para lidar com os tokens

Agora precisamos criar uma conta que possa lidar com os tokens.

  • Crie uma conta, que retornará o accountAddress, com o endereço do token sendo o endereço do seu token:

Por exemplo:

spl-token create-account AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM
Enter fullscreen mode Exit fullscreen mode

A saída incluirá novamente um endereço e uma assinatura de transação:

Creating account 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Signature: 42Sa5eK9dMEQyvD9GMHuKxXf55WLZ7tfjabUKDhNoZRAxj9MsnN7omriWMEHXLea3aYpjZ862qocRLVikvkHkyfy
Enter fullscreen mode Exit fullscreen mode
  • Verifique o saldo da carteira, com a chave pública nesta entrada sendo a chave pública da sua carteira:
solana balance 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Enter fullscreen mode Exit fullscreen mode

Cunhar os tokens

É hora de cunhar alguns tokens e praticar a transferência deles para outras carteiras. Para mintAmount, você pode especificar qualquer número. Por que não tentar 💰1.000.000 💰 apenas por diversão? Normalmente, isso seria baseado em fatores como o tamanho que você espera que o valor de mercado dos tokens seja e se você planeja fazer o airdrop de qualquer quantidade para os usuários.

O recipientAddress seria a conta que você criou para lidar com os tokens na etapa anterior.

  • Cunhe os tokens
spl-token mint tokenAddress mintAmount recipientAddress
Enter fullscreen mode Exit fullscreen mode

Por exemplo:

spl-token mint AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM 100 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Enter fullscreen mode Exit fullscreen mode

A saída deve incluir um endereço de token, o endereço do destinatário e uma assinatura de transação:

Minting 100 tokens
  Token: AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM
  Recipient: 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
Signature: 41mARH42fPkbYn1mvQ6hYLjmJtjW98NXwd6pHqEYg9p8RnuoUsMxVd16RkStDHEzcS2sfpSEpFscrJQn3HkHzLaa
Enter fullscreen mode Exit fullscreen mode

Lembre-se, se você estiver perdido ou quiser explorar o que qualquer um desses comandos faz ou como usá-los, é sempre possível usar o sinalizador --help com qualquer uma das ferramentas da CLI da Solana para obter mais informações.

spl-token mint --help
Enter fullscreen mode Exit fullscreen mode

Vá em frente e verifique o saldo da sua carteira após esta transação, se desejar. Depois que os tokens forem cunhados, é hora de pensar na segurança: "O que está me impedindo de cunhar uma quantidade infinita desses tokens?"

Limite o fornecimento para evitar cunhagem ilimitada

É crucial evitar a cunhagem infinita de nosso token, uma vez que o suficiente tenha sido criado.

  • Desativar cunhagem:
spl-token authorize tokenAddress mint --disable
Enter fullscreen mode Exit fullscreen mode

Verifique o saldo de tokens das contas existentes:

spl-token accounts
Enter fullscreen mode Exit fullscreen mode

A saída deve se parecer com:

Token                                       Balance
------------------------------------------------------------
AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM  1000000
Enter fullscreen mode Exit fullscreen mode

Verifique o saldo da carteira também, se desejar. Ele mostrará a diferença após a transação.

Transferir token para uma carteira de navegador

Esta etapa é opcional, mas agora vamos enviar todos os tokens da carteira criada pela linha de comando para a carteira do navegador. Você deve ter algum SOL na carteira do seu navegador para que ele possa adicionar o token automaticamente.

Enviar token para a carteira do navegador

spl-token transfer --fund-recipient tokenAddress transferAmount recipientAddress
Enter fullscreen mode Exit fullscreen mode

Por exemplo:

spl-token transfer AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM 1000000 vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg
Enter fullscreen mode Exit fullscreen mode

Desta vez, o recipientAddress deve ser o seu endereço da carteira do navegador.

A saída deve se parecer com:

Transfer 50 tokens
  Sender: 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi
  Recipient: vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg
  Recipient associated token account: F59618aQB8r6asXeMcB9jWuY6NEx1VduT9yFo1GTi1ks

Signature: 5a3qbvoJQnTAxGPHCugibZTbSu7xuTgkxvF4EJupRjRXGgZZrnWFmKzfEzcqKF2ogCaF4QKVbAtuFx7xGwrDUcGd
Enter fullscreen mode Exit fullscreen mode

Depois que a transação for confirmada no cluster da Solana, você deverá ver seu novo token na sua carteira do navegador! No entanto, há um problema óbvio! O token não tem nome…

Envie um pull request para a Solana para registrar o token

Nosso token é criado e vive na Solana, mas ainda não é reconhecido oficialmente. Precisamos deixar todas as informações necessárias do token prontas para envio.

  • Insira o diretório inicial do usuário, onde você pode clonar a lista de tokens em seu computador.
  • Clone a lista de tokens Solana:
git clone https://github.com/solana-labs/token-list
Enter fullscreen mode Exit fullscreen mode

Agora temos a lista de tokens token-list clonada, para que possamos adicionar a imagem e as informações do nosso token para upload.

  • Você precisará criar o diretório correspondente ao tokenAddress dentro de token-list/assets/mainnet/.
  • Copie e cole o logotipo do seu token dentro da token-list clonada, no diretório token-list/assets/mainnet/<endereço de cunhagem>/.

Vá em frente e nomeie o arquivo de logotipo logo.png para logotipos de padrão raster ou logo.svg se você estiver usando gráficos vetoriais. A Solana prefere que os logotipos sejam um desses tipos de arquivo.

  • Abra o arquivo de lista de tokens em token-list/src/tokens/solana.tokenlist.json para adicionar seu token à lista da seguinte forma:

Este token de exemplo será um token social, portanto, certifique-se de não copiá-lo, a menos que seu token também seja um token social. As informações necessárias são:

{
  "chainId": 101,
  "address": " ",
  "symbol": " ",
  "name": " ",
  "decimals": 0,
  "logoURI": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/<ADDRESS/logo.png",
  "tags": [
    "social-token",
  ],
  "extensions": {
    "website": "https://<URL DO SEU WEBSITE>.com"
  }
}
Enter fullscreen mode Exit fullscreen mode

O link para a imagem do token deve apontar para o site de conteúdo do usuário do GitHub; basta alterar o endereço do token para o endereço do seu token e o nome do arquivo do logotipo para o nome do arquivo do seu logotipo e o tipo.

  • Salve o arquivo token-list/src/tokens/solana.tokenlist.json.
  • Faça a bifurcação do repositório token-list para a sua conta do GitHub, pressionando o botão Fork no canto superior direito da página do repositório.

Isso adicionará o repositório token-list ao seu GitHub, o que permitirá que você carregue suas alterações no repositório bifurcado e, em seguida, solicite que o repositório original aceite suas alterações.

  • Ainda dentro da sua pasta token-list na linha de comando, defina o url do seu repositório local para sua versão bifurcada no GitHub:
git remote set-url origin https://github.com/<NOME DE USUÁRIO DO GITHUB>/token-list
Enter fullscreen mode Exit fullscreen mode

Adicione todos os arquivos de token-list ao seu repositório local:

git add .
Enter fullscreen mode Exit fullscreen mode
  • Faça o commit dos arquivos:
git commit -m "first commit for <NOME E SÍMBOLO DO SEU TOKEN>"
Enter fullscreen mode Exit fullscreen mode
  • Envie as alterações:
git push origin main
Enter fullscreen mode Exit fullscreen mode

Agora você deve ver as alterações em seu repositório bifurcado no GitHub.

  • Vá para a página de pull request da lista de tokens;
  • Selecione o botão *New pull request *(novo pull request);

https://github.com/figment-networks/learn-tutorials/raw/master/assets/screen-shot-2021-08-12-at-12.19.19-pm.png

  • Selecione a opção destacada “compare across forks” (comparar entre bifurcações) na legenda abaixo do cabeçalho Compare changes **(Comparar alterações);**

https://github.com/figment-networks/learn-tutorials/raw/master/assets/solCompareForks.png

  • Selecione seu repositório bifurcado na lista suspensa “head repository” (repositório principal);

https://github.com/figment-networks/learn-tutorials/raw/master/assets/solHeadRepo.png

Você deverá ver 2 arquivos alterados; mudanças do seu token e a imagem do logotipo.

  • Certifique-se de que esses detalhes estejam corretos. Por exemplo, o diretório que contém a imagem do logotipo deve corresponder exatamente ao seu endereço de token na lista de tokens.

Agora estamos prontos para criar o pull request.

  • Vá em frente e clique no botão verde Create pull request (Criar pull request).
  • Quando terminar de adicionar um título e preencher os detalhes, pressione o botão verde Create pull request novamente.

Parabéns! Seu token está agora a caminho de ser oficializado. E se pudéssemos realmente negociar o token…

BÔNUS: Adicione um mercado para seu token no Serum

Você conseguiu! Seu token está ativo e tem um nome. Ele agora pode ser enviado e usado para qualquer que seja sua utilidade. Mas, não há um par de negociação para o token ser negociado. Eu não estabeleci um mercado para o meu token social, pois não quero que ele seja negociado.

Nota: Custa cerca de 10-15 SOL para criar um mercado, que agora está em torno de $330 - $490 USD.

  • Vá até o Serum e conecte sua carteira escolhida no canto superior direito.
  • Preencha o formulário

O Base Token Mint Address será o seu tokenAddress, e o Quote Token Mint Address será o token ao qual você deseja que seu token seja pareado. Eu usaria USDT para o meu exemplo.

Uma vez enviado, você deve ter um mercado ativo para negociar os tokens.

Conclusão

Woohoo! Se você passou por todas as etapas, criou com sucesso seu próprio token na blockchain Solana. Se você completou o bônus, agora você tem um token negociável 👍

Próximos passos

Neste tutorial, construímos nosso próprio token na blockchain Solana usando a interface de linha de comando da Solana ou "CLI". Sinta-se à vontade para continuar experimentando, tentando cunhar mais tokens, enviando o token para outras carteiras, criando um mercado para ele, criando um pool de liquidez no Raydium, etc. Volte no futuro para um tutorial sobre como fazer também um token não fungível na Solana.

Sobre o autor

Este tutorial foi criado por Jacob Makarsky. Ele pode ser encontrado no Github ou no Fórum do Figment. Traduzido por Paulinho Giovannini.

Referências


Decodifique as transações na rede Solana e obtenha informações valiosas. Entenda os detalhes de cada transação realizada na Solana!


Image description

Top comments (0)