Manual sobre a criação de tokens na rede Solana Palavras-chave: Tokens. Solana.
Introdução
Este procedimento foi testado no Debian GNU/Linux 12 e não envolve a listagem do token em corretoras. Algum entendimento no uso do Linux é recomendado.
Antes de começar
Atualização do sistema
Antes de mais nada, vamos atualizar o sistema, para garantir que tudo corra bem.
sudo apt update && sudo apt upgrade -y
Instalação das dependências
Agora vamos instalar as dependências necessárias.
sudo apt install -y libudev-dev libssl-dev pkg-config build-essential llvmi
libclang-dev protobuf-compiler
Instalação da linguagem de programação da Solana (RUST)
Vamos instalar a linguagem de programação usada pela Solana com o comando:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
Você deve ver a seguinte mensagem depois que a instalação terminar:
Rust is installed now. Great!
To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).
To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.
This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env" # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish" # For fish
Atualize o PATH (preste atenção no ponto no início da linha).
. "$HOME/.cargo/env"
Verifique se a instalação foi bem sucedida.
rustc --version
Você deve ver algo parecido com isso:
rustc 1.80.1 (3f5fd8dd4 2024-08-06)
Instalação das ferramentas da Solana
Agora vamos instalar as ferramentas para interagir com a rede Solana.
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
Atualize o PATH.
export PATH="/Users/test/.local/share/solana/install/active_release/bin:$PATH"
Atualize a variável PATH no arquivo de configurações do shell.
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
Verifique a instalação.
solana --version
Você deve ver algo similar a isso:
solana-cli 1.18.22 (src:9efdd74b; feat:4215500110, client:Agave)
Atualize as ferramentas Solana.
agave-install update
Instalação do framework ANCHOR
cargo install --git https://github.com/coral-xyz/anchor avm --force
Teste a instalação.
avm --version
Atualize para a última versão.
avm install latest
avm use latest
Verifique se tudo deu certo.
anchor --version
Você deve ver algo como:
anchor-cli 0.30.1
Últimas providências
Para ver as configurações atuais, use:
solana config get
A saída deve ser similar a:
Config File: /Users/test/.config/solana/cli/config.yml
RPC URL: https://api.mainnet-beta.solana.com
WebSocket URL: wss://api.mainnet-beta.solana.com/ (computed)
Keypair Path: /Users/test/.config/solana/id.json
Commitment: confirmed
Se a saída acima mostrar o uso da rede devnet, certifique-se de estar usando a mainnet da Solana com o comando:
solana config set --url mainnet-beta
Outros comandos que serão usados adiante são:
solana address
e
solana balance
Crie um diretório onde serão armazenados os arquivos do token e vá para lá.
mkdir new-token
cd new-token
Criando os pares de chave
Crie um par de chaves para a autoridade emissora. Usaremos um início de chave personalizado para facilitar a identificação depois. Aqui serão usadas as letras ’bos’ de chefe, em inglês (boss). Você pode usar qualquer combinação de letras, mas o uso de mais de 3 letras faz com que a criação das chaves demore muito, porque o comando a seguir vai buscar chaves públicas que contenham estes caracteres no início da chave.
solana-keygen grind --starts-with bos:1
Este comando vai salvar o par de chaves em um arquivo JSON. O nome do arquivo gerado, sem a extensão ’.json’ é a sua chave pública e o endereço que deve receber algumas solanas para a criação do token. $3 é mais do que suficiente. A chave privada está dentro do arquivo e pode ser importada para a Phantom wallet, se você quiser ver o saldo por lá e retirar o que sobrar depois.
O arquivo será parecido com isso:
bosy1VC2BH2gh5fdXA3oKn53EuATLwapLWC4VR2sGHJ.json
No caso acima a chave pública é
bosy1VC2BH2gh5fdXA3oKn53EuATLwapLWC4VR2sGHJ
.
Salve ela em algum lugar (em um arquivo txt, por exemplo).
Configure a Solana CLI para usar o par de chaves que você acabou de criar. IMPORTANTE: substitua o arquivo json pelo seu.
solana config set --keypair bosy1VC2BH2gh5fdXA3oKn53EuATLwapLWC4VR2sGHJ.json
Verifique as configurações com o comando:
solana config get
Confirme que você está na mainnet e que a variável
Keypair Path
aponta para o arquivo com o par de chaves que
você criou.
Confirme seu endereço com:
solana address
E envie algumas solanas para ele, se você ainda não fez isso. Poucos segundos após o envio você poderá confirmar o saldo com o comando:
solana balance
Crie mais um par de chaves, para a conta de cunhagem do token. Ela começara com ’mnt’ para lembrar que é a conta de cunhagem (’mint account’ em ingês)
solana-keygen grind --starts-with mnt:1
A lógica é a mesma do primeiro par de chaves criado. O nome do arquivo sem a extensão ’.json’ é o endereço público.
O comando acima criará mais um arquivo json com o par de chaves, como o abaixo (esse arquivo será usado no comando de criação do token):
mntTymSqMU4e1NEDdxJ9XoPN4MitCgQ7xxGW6AuRAWQ.json
Salve a chave pública ’mnt’ no arquivo de texto junto com a chave ’bos’.
Agora vamos começar a criação do token propriamente dita.
Criando uma conta no GitHub e fazendo o upload dos arquivos necessários
Crie uma conta no GitHub, se você ainda não tiver uma. É interessante criar uma só para o seu token e criar uma pasta ’crypto’ nela.
Logo
Crie o logo do seu token com as seguintes regras:
a imagem deve ser quadrada, de preferência 512px x 512px, ou menor
a imagem deve ser no formato .png
o arquivo deve ter menos de 200kb
Faça o upload do arquivo para a pasta ’crypto’ da sua conta github e descubra o endereço ’raw’ da imagem. Para isso, depois de subir o arquivo ’logo.png’, clique no nome do arquivo para abrir a imagem e depois clique com o botão direito do mouse na imagem e escolha ’abrir em uma nova guia’. Vá para a guia aberta e copie o endereço que está na barra de url e que aponta diretamente para a imagem. O endereço deve parecer com isso:
https://raw.githubusercontent.com/seuusuarionogithub/suapasta/refs/heads/main/
logo.png
Anote este endereço lá no seu arquivo ’.txt’.
Metadata
Crie o arquivo ’metadata.json’ com o seguinte conteúdo (coloque os dados do SEU token – nome, simbolo e endereço da imagem do seu logo):
{
"name": "Example Token",
"symbol": "EXMPL",
"description": "Example token from Solana Making a Token guide.",
"image": "https://raw.githubusercontent.com/solana-developers/opos-asset/
main/assets/CompressedCoil/image.png"
}
Suba esse arquivo para a sua pasta no github e descubra o endereço
’raw’ do arquivo. Para isso, depois do upload concluído, clique no nome
do arquivo, ele vai abrir e no lado direito da página vai ter um botão
raw
. Clique nele e o arquivo vai abrir. Anote o endereço da
url, como você fez com o endereço do logo.
Criando o token
Agora vamos criar o token usando o par de chaves ’mnt’.
Por padrão o token é criado com 9 casas decimais, você pode
personalizar o número com a opção --decimals n
, onde ’n’ é
o número de casas decimais. Se não for usada essa opção o token será
criado com 9 casas decimais.
Use o seguinte comando:
spl-token create-token
--program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
--enable-metadata arquivodechavesmnt.json
Usando o arquivo de chaves ’mnt’ do exemplo acima, e com a opção de 6 casas decimais, o comando fica assim:
spl-token create-token
--program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --decimals 6
--enable-metadata mntTymSqMU4e1NEDdxJ9XoPN4MitCgQ7xxGW6AuRAWQ.json}
Se não for usada a opção
--program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
,
não será possível incluir metadados (nome, logo etc)
Inicializando os metadados
Agora vamos adicionar os metadados ao token.
spl-token initialize-metadata 'endereço público mnt' 'Nome do token' 'SIMBOLO'
'Endereço do seu arquivo de metadados'
Usando os exemplos que estão mais acima, o comando fica assim:
spl-token initialize-metadata mntTymSqMU4e1NEDdxJ9XoPN4MitCgQ7xxGW6AuRAWQ
'Example token' 'EXMPL' https://raw.githubusercontent.com/solana-developers/
opos-asset/main/assets/CompressedCoil/metadata.json
Você já pode ir na Solana explorer para ver seu token.
Cunhagem dos tokens
Vamos criar a conta onde os tokens serão armazenados. Coloque no comando a SUA chave pública ’mnt’
spl-token mint 'chave_publica_mnt' 'numero_de_tokens'
Exemplo de criação de 1 bilhão de tokens. Você pode cunhar quantos quiser e pode cunhar várias vezes:
spl-token mint mntTymSqMU4e1NEDdxJ9XoPN4MitCgQ7xxGW6AuRAWQ 1000000000
Agora você pode voltar no Solana explorer para ver a quantidade de tokens que você acabou de criar.
Movendo os seus tokens
Para enviar tokens para outra pessoa use:
spl-token transfer 'chave_publica_mnt' 'quantidade'
'endereço_da_carteira_de_destino' --fund-recipient
Exemplo:
spl-token transfer mntTymSqMU4e1NEDdxJ9XoPN4MitCgQ7xxGW6AuRAWQ 10
endereçopublicodacarteirasolanadedestino --fund-recipient
A opção --fund-recipient
deve ser usada para poder ser
criada uma conta no endereço de destino.
Para pegar de volta as solanas que sobraram e mandar o saldo de volta para a sua conta de solana, faça o seguinte:
Veja o saldo com:
solana balance
Transfira o saldo, menos a taxa com:
solana transfer 'seu_saldo_de_solana'
Tente mandar o saldo total, vai aparecer uma mensagem de erro informando que não há saldo para pagar a taxa da rede, refaça a transferência usando o saldo menos a taxa:
Ou você pode importar a chave privada que está dentro do arquivo ’bos….json’ na Phantom e sacar o saldo de solana por lá.
Referências
https://solana.com/pt/docs/intro/installation
https://solana.com/developers/guides/getstarted/how-to-create-a-token
Comentário de teste.