Atire a primeira pedra quem nunca pensou em criar a sua própria criptomoeda. Seja por curiosidade ou de fato pelo interesse genuíno de criar uma cripto para usar na economia de seu jogo ou sistema, esta habilidade é extremamente importante para todos programadores que desejam trabalhar com blockchain e dapps web3. Isso porque compreender o processo de construção de moedas ajuda a entender todo o funcionamento do ecossistema de tokens da plataforma.
Assim, neste tutorial vamos construir um token para Solana usando a Solana Program Library (SPL), a forma mais recomendada quando o assunto é novos tokens nesta blockchain. Se você busca fazer o mesmo para outras redes, baseadas em Ethereum/EVM/Solidity, use este outro tutorial.
Mas sem mais enrolação, vamos ao conteúdo!
#1 – Criptomoeda ou Token?
A primeira coisa que você pode estar pensando é porque vamos criar um token e não uma criptomoeda? Caso já saiba a diferença, pule esta seção, mas caso contrário é importante entender a diferença. Se preferir, pode assistir ao vídeo abaixo ao invés de ler.

Uma criptomoeda é uma moeda digital protegida por criptografia em uma blockchain e lastreada via algum algoritmo de livro-razão, a exemplo do que acontece com o Bitcoin. Via de regra toda blockchain possui uma única criptomoeda que é utilizada em todas suas transações e não tenho certeza se alguém já teve a ideia de querer mudar isso e/ou se deu certo, mas o fato é esse hoje. A blockchain do Bitcoin possui o próprio BTC, a blockchain do Ethereum possui o Ether (ETH), a blockchain da Solana possui o SOL e por aí vai.
Mas e aqueles milhares de outras moedas que a gente sabe que existem, cada uma possui uma blockchain separada?
Não. Na verdade aqueles milhares de outras moedas, não são moedas, mas sim tokens.
Tokens são moedas existentes em contratos inteligentes dentro de outra blockchain. Ou seja, são criptomoedas no sentido prático, de usar em pagamentos no dia a dia, mas não no literal já que tecnicamente elas até podem estar registradas criptograficamente em uma blockchain, mas sempre dentro de transações da moeda original da blockchain (BTC, SOL, etc) e portanto envolvendo pagamento de taxas nesta moeda original.
Assim, além da vantagem óbvia de podermos ter novas moedas sem a necessidade de termos novas blockchains, a flexibilidade dos tokens permite criar facilmente variações de moedas existentes, moedas atreladas a outras moedas (wrapped tokens), moedas pareadas com outros ativos (stablecoins), moedas com características completamente únicas (fornecimento total, casas decimais, etc) e por aí vai.
E tudo isso começou com o Ethereum, a primeira blockchain de segunda geração, que nasceu como plataforma, permitindo não apenas uma economia digital peer-to-peer como o BTC já fazia, mas toda uma miríade de novos serviços e sistemas rodando sobre a blockchain de maneira descentralizada e ainda segura. Mais tarde, na terceira geração, surgiram plataformas ainda mais velozes que usavam protocolos de consenso e arquiteturas mais otimizadas para performance, como Cardano e, é claro, a Solana.
#2 – SPL e SPL-Token
A Solana Program Library (SPL) é uma coleção de programas de código-aberto que funcionam na blockchain da Solana, desenvolvidos e mantidos pela comunidade Solana e Solana Labs. Ela fornece um conjunto de componentes padronizados e pré-construídos que simplificam o desenvolvimento de aplicações descentralizadas (dApps) na blockchain Solana, funcionando como “blocos de construção” para os desenvolvedores.
Se você veio do mundo EVM, você pode criar uma associação com a biblioteca OpenZeppelin, porém é mais do que isso, já que como na Solana os programas são separados dos dados, diversos programas de SPL você pode utilizar diretamente chamando o executável do programa na Mainnet (deployado pela equipe da Solana), mas com o contexto (leia: accounts) do seu programa. Resumindo, é um OpenZeppelin com esteróides.
Um destes programas é o spl-token, que é o equivalente ao ERC-20 no mundo Solana. Ele define todo o comportamento padrão para novos tokens no ecossistema Solana incluindo questões de saldo, propriedade, transferência, mint, burn, freeze, etc. Além disso, ele faz a gestão das accounts necessárias para que um token funcione nessa rede, tais como:
- Mint Account: a account de configuração do seu token, que determina o supply, decimals e as autorities (quem pode mintar, por exemplo);
- Token Account: a account de conta de um token, que determina a quantidade que você possui dele. Pense nela como uma tabela-meio do SQL, ligando a Mint Account com a wallet e com a informação de saldo e authority;
- Associated Token Account (ATA): como uma mesma wallet pode ter várias token accounts, a ATA é uma token account especial que funciona como conta-corrente default para uma determinada wallet;
O diagrama abaixo ilustra um pouco essas relações.

Assim, quase sempre que você quiser criar um novo token na Solana, é o spl-token que você vai usar. E a melhor parte: tudo isso a partir de um CLI no terminal, sem precisar codificar nada.
#3 – Criando um novo SPL-Token
O primeiro passo é você instalar o CLI do spl-token na sua máquina, considerando que você já tem o ambiente Solana configurado corretamente.
|
1 2 3 |
cargo install spl-token-cli |
Depois, você vai precisar adicionar saldo na sua carteira para poder pagar pelo rent da mint account que será criada para seu novo token. Você pode obter moedas de teste no faucet oficial.
O comando para criação do token é (use a flag –help para conhecer todas opções), sendo que aqui estou usando a versão mais recente do programa (2022) com enable-metadata para poder definir nome e outras informações do token mais tarde:
|
1 2 3 |
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata |
A saída irá conter o endereço do token e o número de casas decimais. Exemplo de token criado.
Na sequência, você pode cadastrar os metadados, com o comando abaixo.
|
1 2 3 |
spl-token initialize-metadata <TOKEN_MINT_ADDRESS> <TOKEN_NAME> <TOKEN_SYMBOL> <METADATA_URI> |
Onde:
- TOKEN_MINT_ADDRESS: o endereço do seu token na blockchain;
- TOKEN_NAME: o nome do seu novo token;
- TOKEN_SYMBOL: a sigla do seu token;
- METADATA_URI: a URL pública com mais metadados do seu token, veja abaixo;
O parâmetro de metadata uri te permite incluir a URL com um JSON de metadados adicionais para personalização do seu token, com o seguinte formato:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "name": "LuizCoin", "symbol": "LUC", "description": "Token example made by LuizTools", "image": "https://www.luiztools.com.br/wp-content/uploads/2023/01/icon.png", "attributes": [ { "trait_type": "Item", "value": "Developer Portal" } ] } |
O campo attributes é opcional e faz mais sentido com NFTs. Não esqueça que tanto o JSON deve estar disponibilizando em uma URL pública, quanto a imagem referenciada por ele.
Todo novo token começa com supply zerado, o que você confere com o comando abaixo.
|
1 2 3 |
spl-token supply <token_address> |
Mas para que possamos mintar tokens, precisamos antes criar token accounts para guardá-los, o que podemos fazer com o comando abaixo que cria uma ATA pra carteira default do seu sistema (a mesma que usou para o deploy).
|
1 2 3 |
spl-token create-account <TOKEN_ADDRESS> |
Opcionalmente você pode passar –owner e dizer a pubkey de quem vai ser o dono dessa account nova, mas neste caso precisa informar –fee-payer para carregar a conta pagante pela operação.
Agora para mintar unidades do token nessa nova token account que criamos, o comando é:
|
1 2 3 |
spl-token mint <token_address> 100 -- <account_address> |
Exemplo de token account já com saldo de uma moeda minha, aqui. Carteiras como a Phantom já detectam automaticamente novos tokens recebidos, veja abaixo exemplo da minha com um token que eu criei.

E com isso você aprendeu como criar seus tokens para a rede Solana usando SPL.
Se você precisar mudar o authority do programa mais tarde, o comando está abaixo (estou usando o program-id do spl-token-2022).
|
1 2 3 4 |
spl-token authorize <MINT_ACCOUNT> mint <NEW_AUTHORITY> \ --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb |
Para verificar o authority atual, use o comando abaixo.
|
1 2 3 |
spl-token display <MINT_ACCOUNT> |
Na próxima lição, eu vou te ensinar como manipular tokens na Solana, para criar protocolos DeFi interessantes.
Até a próxima!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.



