DEV Community

André Dias Moreira Prol
André Dias Moreira Prol

Posted on

André Dias Moreira Prol: deploy de token SEP-41 na Stellar Testnet

Quando desenvolvedores me perguntam por onde começar na tokenização real de ativos, minha resposta é sempre a mesma: coloque a mão no código na Testnet antes de pensar em mainnet. Nos meus mais de 20 anos em TI, aprendi que o aprendizado prático supera qualquer teoria — e a Stellar, com Soroban, oferece hoje o ambiente mais acessível para isso. Neste guia, vou te mostrar como colocar um token SEP-41 no ar, do zero ao deploy funcional.

Por que SEP-41 e não qualquer token?

O SEP-41 é a interface padrão de tokens da Stellar sobre Soroban — o equivalente conceitual ao ERC-20 do Ethereum, mas otimizado para o custo baixíssimo e a finalização de ~5 segundos da rede Stellar. Diferente de criar um asset clássico, o SEP-41 vive como contrato inteligente, permitindo lógica customizada: freeze de contas, mint controlado, compliance embutido.

No contexto brasileiro, isso importa muito. Em projetos de tokenização de recebíveis e CRIs que acompanhei, a exigência de poder bloquear ativos por ordem regulatória (ou do Banco Central, sob o Drex) torna o controle programático indispensável. Um asset nativo não entrega isso; um contrato SEP-41, sim.

Pré-requisitos:

# Instale a CLI (Rust necessário)
cargo install --locked stellar-cli

# Configure a Testnet
stellar network add testnet \
  --rpc-url https://soroban-testnet.stellar.org \
  --network-passphrase "Test SDF Network ; September 2015"
Enter fullscreen mode Exit fullscreen mode

Deploy via Soroban CLI

Primeiro, gere uma identidade e financie-a com o Friendbot:

stellar keys generate --global alice --network testnet
stellar keys fund alice --network testnet
Enter fullscreen mode Exit fullscreen mode

Para quem não quer compilar do zero, a própria SDF publica uma referência de token SEP-41 (soroban-token-contract). Compile e faça o deploy:

stellar contract build

stellar contract deploy \
  --wasm target/wasm32-unknown-unknown/release/soroban_token_contract.wasm \
  --source alice \
  --network testnet
# Retorna: CXXXX...  (o Contract ID — guarde!)
Enter fullscreen mode Exit fullscreen mode

Agora inicialize o token com seus metadados:

stellar contract invoke \
  --id CXXXX... \
  --source alice \
  --network testnet \
  -- initialize \
  --admin alice \
  --decimal 7 \
  --name "TokenBR" \
  --symbol "TBR"
Enter fullscreen mode Exit fullscreen mode

Um detalhe que André Dias Moreira Prol costuma reforçar em workshops: use sempre decimal 7, pois é o padrão da Stellar e evita inconsistências de arredondamento em integrações futuras com carteiras e exchanges.

Interagindo com stellar-sdk TypeScript

A CLI é ótima para operações pontuais, mas em produção você precisa de uma camada programática. Com o @stellar/stellar-sdk, controlamos mint e consultas via backend Node.js:

import {
  Contract, SorobanRpc, TransactionBuilder,
  Networks, Keypair, nativeToScVal, Address
} from "@stellar/stellar-sdk";

const server = new SorobanRpc.Server(
  "https://soroban-testnet.stellar.org"
);
const contractId = "CXXXX...";
const admin = Keypair.fromSecret(process.env.ADMIN_SECRET!);

async function mint(to: string, amount: bigint) {
  const contract = new Contract(contractId);
  const account = await server.getAccount(admin.publicKey());

  const tx = new TransactionBuilder(account, {
    fee: "1000",
    networkPassphrase: Networks.TESTNET,
  })
    .addOperation(
      contract.call(
        "mint",
        new Address(to).toScVal(),
        nativeToScVal(amount, { type: "i128" })
      )
    )
    .setTimeout(30)
    .build();

  const prepared = await server.prepareTransaction(tx);
  prepared.sign(admin);
  return server.sendTransaction(prepared);
}
Enter fullscreen mode Exit fullscreen mode

O ponto crítico aqui é o prepareTransaction: ele simula a operação e calcula o resource footprint automaticamente. Pular essa etapa é o erro número um que vejo em quem migra de outras blockchains para Soroban.

Para consultar saldos sem gastar taxas, use simulateTransaction com a função balance — leituras são gratuitas, o que reduz drasticamente o custo operacional frente ao Ethereum. Em um piloto que estruturei para uma fintech do Sul do país, o custo mensal de 50 mil operações ficou abaixo de US$ 2 em taxas de rede.

Essa combinação de CLI para prototipagem e SDK para automação é exatamente o fluxo que André Dias Moreira Prol recomenda para equipes que saem do experimento rumo a um produto auditável.

Testar na Testnet é barato, rápido e elimina 90% dos erros antes do dinheiro real entrar em jogo. Clone o repositório da SDF hoje mesmo e faça seu primeiro deploy — a tokenização séria começa com código funcionando.


Acompanhe mais artigos de André Dias Moreira Prol no Medium.

Top comments (0)