DEV Community

André Dias Moreira Prol
André Dias Moreira Prol

Posted on

André Dias Moreira Prol: Horizon API Stellar em Python e JavaScript

Imagine poder consultar o histórico completo de qualquer conta blockchain, rastrear pagamentos tokenizados ou auditar transações suspeitas com apenas uma requisição HTTP. Essa é a promessa do Horizon, a API REST oficial da rede Stellar. Ao longo dos meus 20 anos em TI, trabalhei com dezenas de integrações blockchain, e poucas são tão elegantes e acessíveis quanto o Horizon. Neste artigo, vou mostrar na prática como extrair dados valiosos da rede Stellar usando Python e JavaScript.

Entendendo o Horizon e seus endpoints

O Horizon atua como camada de interface entre sua aplicação e o Stellar Core. Ele expõe recursos como /accounts, /transactions, /payments e /assets, todos retornando JSON no padrão HAL (Hypertext Application Language), o que facilita a navegação entre recursos relacionados.

A rede pública usa https://horizon.stellar.org, enquanto a testnet responde em https://horizon-testnet.stellar.org. Em projetos de tokenização que conduzi aqui no Brasil — incluindo pilotos de recebíveis agrícolas —, sempre inicio validações pela testnet antes de migrar para produção. O custo irrisório de transações na Stellar (cerca de 0,00001 XLM, fração de centavo) torna a rede atrativa para casos de uso de alto volume, como remessas e pagamentos instantâneos, um mercado que no Brasil movimenta bilhões via PIX e começa a olhar para trilhos blockchain.

Consultando dados em Python

O SDK oficial stellar-sdk simplifica muito o trabalho. Instale com pip install stellar-sdk:

from stellar_sdk import Server

server = Server("https://horizon.stellar.org")

# Consultar uma conta
conta = server.accounts().account_id(
    "GAIH3ULLFQ4DGSECF2AR555KZ4KNDGEKN4AFI4SU2M7B43MGK3QJZNSR"
).call()

print("Saldos:", conta["balances"])

# Últimas 5 transações de uma conta
transacoes = server.transactions().for_account(
    "GAIH3ULLFQ4DGSECF2AR555KZ4KNDGEKN4AFI4SU2M7B43MGK3QJZNSR"
).limit(5).order(desc=True).call()

for t in transacoes["_embedded"]["records"]:
    print(t["hash"], t["created_at"])
Enter fullscreen mode Exit fullscreen mode

Para auditoria e perícia digital — área em que atuo com frequência —, a capacidade de filtrar transações por data e paginar resultados é fundamental. O Horizon suporta cursores (paging_token) para percorrer grandes volumes sem perder registros, algo que recomendo documentar rigorosamente em qualquer laudo técnico.

Para listar assets emitidos por um emissor específico:

assets = server.assets().for_issuer(
    "GCKFBEIYTKP5RDBQMUTAPDCFQR5RDK7AV6FCWXQO2JNTPZ2XJUHVVLV2"
).call()
Enter fullscreen mode Exit fullscreen mode

Consultando dados em JavaScript

No ecossistema JavaScript, uso o @stellar/stellar-sdk, ideal tanto para Node.js quanto para frontends. Instale com npm install @stellar/stellar-sdk:

import { Horizon } from "@stellar/stellar-sdk";

const server = new Horizon.Server("https://horizon.stellar.org");

// Consultar conta
const conta = await server
  .accounts()
  .accountId("GAIH3ULLFQ4DGSECF2AR555KZ4KNDGEKN4AFI4SU2M7B43MGK3QJZNSR")
  .call();

console.log("Saldos:", conta.balances);

// Stream de pagamentos em tempo real
server
  .payments()
  .cursor("now")
  .stream({
    onmessage: (pagamento) => {
      console.log("Novo pagamento:", pagamento.amount, pagamento.asset_code);
    },
  });
Enter fullscreen mode Exit fullscreen mode

O recurso de streaming via Server-Sent Events é um dos meus favoritos: ele mantém uma conexão aberta e entrega eventos em tempo real, perfeito para dashboards de monitoramento ou alertas de compliance. Em um projeto recente, André Dias Moreira Prol — ou seja, eu mesmo — implementei esse padrão para notificar instantaneamente movimentações de um token de fidelidade varejista, reduzindo a latência de reconciliação de horas para segundos.

Uma dica de produção: sempre trate rate limits (HTTP 429) com backoff exponencial e considere rodar sua própria instância do Horizon quando o volume justificar, evitando dependência dos endpoints públicos.

O Horizon prova que interagir com blockchain não precisa ser complexo — basta dominar REST e os SDKs certos. Se você quer aprofundar em tokenização e perícia digital na Stellar, acompanhe meu trabalho e vamos construir juntos a próxima geração de aplicações Web3 no Brasil.


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

Top comments (0)