SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Lição: 028: Implementando Programas de Token na Solana

Nesta aula, vamos explorar como implementar programas de token na blockchain Solana. Programas de token permitem que desenvolvedores criem e gerenciem tokens personalizados, facilitando uma variedade de casos de uso, como tokens fungíveis, tokens não fungíveis (NFTs) e mais.

O que é um Programa de Token?

Um programa de token na Solana é um contrato inteligente que define as propriedades e o comportamento de um token. O programa de token mais comumente usado na Solana é o SPL Token Program, que permite criar tokens fungíveis que podem ser transferidos entre usuários.

Preparando o Ambiente

Antes de mergulharmos na implementação, certifique-se de que você tenha os seguintes pré-requisitos configurados:

  1. Rust: Verifique se você tem o Rust instalado. Você pode instalá-lo usando rustup.
  2. Solana CLI: Instale as ferramentas de linha de comando da Solana seguindo o guia oficial.
  3. Anchor Framework: Instale o Anchor para facilitar o desenvolvimento de programas Solana. Você pode encontrar instruções de instalação na página de documentação do Anchor.

Criando um Novo Projeto

Vamos criar um novo projeto Rust usando o framework Anchor.

anchor init meu_programa_token
cd meu_programa_token

Isso irá configurar um novo projeto Anchor com a estrutura de diretórios e arquivos necessária.

Definindo o Programa de Token

Em seu novo projeto, navegue até o arquivo programs/meu_programa_token/src/lib.rs. É aqui que definiremos nosso programa de token.

use anchor_lang::prelude::*;
use anchor_spl::token::{self, Mint, TokenAccount, Token};

declare_id!("SEU_ID_DO_PROGRAMA_AQUI");

#[program]
pub mod meu_programa_token {
    use super::*;

    pub fn criar_token(ctx: Context<CriarToken>, quantidade_inicial: u64) -> ProgramResult {
        let mint = &mut ctx.accounts.mint;
        let conta_token = &mut ctx.accounts.conta_token;

        // Inicializa mint
        token::initialize_mint(
            ctx.accounts.into(),
            &ctx.accounts.usuario.key(),
            None,
            0,
        )?;

        // Cria conta de token
        token::initialize_account(
            ctx.accounts.into(),
            &ctx.accounts.usuario.key(),
        )?;

        // Mint tokens iniciais
        token::mint_to(
            ctx.accounts.into(),
            quantidade_inicial,
        )?;

        Ok(())
    }
}

#[derive(Accounts)]
pub struct CriarToken<'info> {
    #[account(init)]
    pub mint: Account<'info, Mint>,
    #[account(init)]
    pub conta_token: Account<'info, TokenAccount>,
    pub usuario: Signer<'info>,
    pub rent: Sysvar<'info, Rent>,
    pub programa_token: Program<'info, Token>,
}

Explicação do Código

  1. Imports: Os módulos necessários são importados. Estamos utilizando anchor_lang para funcionalidades específicas do Anchor e anchor_spl::token para operações de token SPL.

  2. Declaração do Programa: Declaramos nosso módulo de programa principal com declare_id!, especificando o ID do programa.

  3. Função criar_token: Esta função inicializa um mint de token e cria uma conta de token para um usuário:

    • initialize_mint: Esta função inicializa o mint para um token.
    • initialize_account: Esta inicializa a conta de token para o usuário.
    • mint_to: Esta minta a quantidade especificada de tokens para a conta do usuário.
  4. Struct de Contexto: A struct CriarToken define as contas necessárias para nossa instrução criar_token, incluindo o mint, conta de token, usuário, aluguel e instância do Programa Token SPL.

Compilando o Programa

Para compilar seu programa de token, execute o seguinte comando:

anchor build

Se tudo estiver configurado corretamente, você deverá ver o processo de compilação ser concluído sem erros.

Implantando o Programa

Em seguida, implante seu programa de token na blockchain Solana:

anchor deploy

Este comando irá implantar seu programa no cluster Solana definido em sua configuração do Anchor.

Interagindo com o Programa de Token

Uma vez que o programa esteja implantado, você pode interagir com ele através da Solana CLI ou via uma aplicação front-end. Veja como você pode chamar a função criar_token a partir da CLI:

solana program invoke --program-id SEU_ID_DO_PROGRAMA_AQUI --data '{"criar_token": {"quantidade_inicial": 1000}}'

Certifique-se de substituir SEU_ID_DO_PROGRAMA_AQUI pelo seu ID de programa implantado real.

Conclusão

Nesta aula, aprendemos como implementar um programa básico de token na blockchain Solana usando o framework Anchor. Abordamos as funções essenciais para criar e gerenciar um mint de token e contas. Esse conhecimento básico ajudará você a construir aplicações relacionadas a tokens mais complexas no futuro.

Sinta-se à vontade para aprimorar essa implementação básica, adicionando mais recursos, como transferir tokens, queimar tokens e criar contas de token derivadas para diferentes usuários. Boa codificação!

Did you like this article? Rate it from 1 to 5:

Thank you for voting!