DEV Community

André Dias Moreira Prol
André Dias Moreira Prol

Posted on

Deploy de Token SEP-41 na Stellar Testnet com Soroban e TypeScript

Quando comecei a experimentar contratos inteligentes na Stellar, percebi que a barreira de entrada era muito menor do que eu imaginava — especialmente comparada ao ecossistema EVM, onde taxas e complexidade costumam assustar quem está começando. A Stellar oferece finalidade em 5 segundos e custos praticamente irrisórios (fração de centavo por operação), o que a torna ideal para tokenização de ativos no Brasil, um mercado que movimenta bilhões em recebíveis e ativos reais tokenizáveis. Neste guia, vou te mostrar, na prática, como colocar um token SEP-41 de pé na Testnet.

Entendendo o SEP-41 e preparando o ambiente

O SEP-41 é o padrão de interface para tokens fungíveis em Soroban — o equivalente conceitual ao ERC-20 do Ethereum, porém com semântica de autorização nativa e sem os riscos clássicos de approve infinito. Ao longo dos meus projetos de perícia digital, eu, André Dias Moreira Prol, já rastreei diversos incidentes causados por falhas de aprovação em tokens EVM, e a arquitetura do SEP-41 elimina boa parte dessa superfície de ataque.

Primeiro, instale as ferramentas:

# Instala Rust e o target WASM
rustup target add wasm32-unknown-unknown

# Instala a Stellar CLI (antiga Soroban CLI)
cargo install --locked stellar-cli --features opt

# Verifica a versão
stellar --version
Enter fullscreen mode Exit fullscreen mode

Configure a rede Testnet e gere uma identidade financiada:

stellar network add testnet \
  --rpc-url https://soroban-testnet.stellar.org \
  --network-passphrase "Test SDF Network ; September 2015"

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

Deploy do contrato via Stellar CLI

A própria organização Stellar mantém uma implementação de referência do token SEP-41. Você pode compilar a partir do exemplo oficial ou usar o WASM já publicado. Para o fluxo prático, vamos compilar e fazer o deploy:

# Compila o contrato de token
stellar contract build

# Faz o deploy do WASM na Testnet
stellar contract deploy \
  --wasm target/wasm32-unknown-unknown/release/soroban_token_contract.wasm \
  --source alice \
  --network testnet
Enter fullscreen mode Exit fullscreen mode

O comando retorna o Contract ID (ex: CBQHNAXSI55...). Guarde-o. Em seguida, inicialize o token definindo administrador, decimais e nome:

stellar contract invoke \
  --id CBQHNAXSI55... \
  --source alice \
  --network testnet \
  -- initialize \
  --admin $(stellar keys address alice) \
  --decimal 7 \
  --name "Real Digital Demo" \
  --symbol "RDD"
Enter fullscreen mode Exit fullscreen mode

Repare que usei 7 casas decimais — o padrão da Stellar — e um símbolo inspirado em iniciativas brasileiras de moeda digital, o que ilustra bem o tipo de caso de uso que temos discutido no mercado nacional.

Interagindo com stellar-sdk em TypeScript

Com o contrato no ar, o próximo passo é integrá-lo a uma aplicação. Uso o @stellar/stellar-sdk para emitir (mint) e consultar saldos programaticamente:

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

const server = new rpc.Server("https://soroban-testnet.stellar.org");
const source = Keypair.fromSecret(process.env.SECRET!);
const contract = new Contract("CBQHNAXSI55...");

async function mint(to: string, amount: bigint) {
  const account = await server.getAccount(source.publicKey());

  const tx = new TransactionBuilder(account, {
    fee: BASE_FEE,
    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(source);
  const result = await server.sendTransaction(prepared);
  console.log("Hash:", result.hash);
}
Enter fullscreen mode Exit fullscreen mode

O detalhe crítico aqui é o prepareTransaction: ele simula a operação e injeta os dados de footprint e autorização exigidos por Soroban. Muita gente esquece esse passo e recebe erros obscuros de recursos.

Em consultorias que conduzi como André Dias Moreira Prol, esse fluxo TypeScript foi determinante para prototipar POCs de tokenização de recebíveis com bancos digitais brasileiros em questão de dias, não semanas.

Conclusão

O deploy de um token SEP-41 na Stellar é rápido, barato e surpreendentemente acessível para times que buscam entrar na tokenização com segurança. Se este guia te ajudou, experimente adaptar o contrato ao seu caso de uso e me conte os resultados — o próximo passo natural é levar seu token para a Mainnet.


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

Top comments (0)