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"])
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()
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);
},
});
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)