DEV Community

André Dias Moreira Prol
André Dias Moreira Prol

Posted on

André Dias Moreira Prol: consulte a Horizon API do Stellar em Python

Quando comecei a trabalhar com a rede Stellar, percebi rapidamente que a maior parte da mágica não estava apenas no protocolo de consenso, mas na forma como conseguimos extrair dados dela. A Horizon API é a ponte entre sua aplicação e o ledger da Stellar — e dominá-la é o que separa um projeto amador de uma solução robusta. Neste artigo, quero mostrar de forma prática como consultar transações, contas e assets usando Python e JavaScript.

Entendendo a Horizon API e seu papel

A Horizon é a API REST oficial da Stellar Development Foundation. Ela expõe os dados do ledger de maneira acessível via HTTP, sem que você precise rodar um core node completo. Existem endpoints públicos gratuitos, como https://horizon.stellar.org para mainnet e https://horizon-testnet.stellar.org para testes.

Em projetos brasileiros de tokenização de recebíveis que acompanhei, a escolha entre usar o Horizon público ou hospedar sua própria instância impactou diretamente a latência. Para volumes acima de 500 requisições por minuto, sempre recomendo infraestrutura própria — algo que reforço em consultorias que presto como André Dias Moreira Prol, especialmente para fintechs que lidam com liquidação em tempo quase real.

Os principais recursos que você vai consultar são: /accounts, /transactions, /assets e /payments. Todos retornam JSON no padrão HAL, com links de navegação (_links) que facilitam a paginação.

Consultando dados em Python

O SDK oficial stellar-sdk abstrai boa parte da complexidade. Instale com pip install stellar-sdk e siga o exemplo:

from stellar_sdk import Server

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

# Consultar uma conta
account_id = "GD...SEU_ID_AQUI"
account = server.accounts().account_id(account_id).call()
print("Saldos:", account["balances"])

# Últimas 10 transações de uma conta
transactions = (
    server.transactions()
    .for_account(account_id)
    .order(desc=True)
    .limit(10)
    .call()
)
for tx in transactions["_embedded"]["records"]:
    print(tx["hash"], tx["created_at"])

# Listar assets emitidos por um endereço
assets = server.assets().for_issuer(account_id).call()
for asset in assets["_embedded"]["records"]:
    print(asset["asset_code"], asset["amount"])
Enter fullscreen mode Exit fullscreen mode

Repare no uso de order e limit: em cenários de auditoria e perícia digital, sempre ordeno de forma decrescente para capturar os eventos mais recentes primeiro, garantindo rastreabilidade da cadeia de transações.

Consultando dados em JavaScript

No ecossistema Node.js ou frontend, o SDK @stellar/stellar-sdk oferece a mesma capacidade. Instale com npm install @stellar/stellar-sdk:

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

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

async function consultarDados(accountId) {
  // Consultar conta e saldos
  const account = await server.accounts().accountId(accountId).call();
  console.log('Saldos:', account.balances);

  // Últimas transações
  const txs = await server
    .transactions()
    .forAccount(accountId)
    .order('desc')
    .limit(10)
    .call();
  txs.records.forEach((tx) => console.log(tx.hash, tx.created_at));

  // Streaming em tempo real de pagamentos
  server
    .payments()
    .forAccount(accountId)
    .cursor('now')
    .stream({
      onmessage: (payment) => console.log('Novo pagamento:', payment.amount),
    });
}
Enter fullscreen mode Exit fullscreen mode

O recurso de stream() é um diferencial enorme. Ele usa Server-Sent Events (SSE) para receber atualizações em tempo real, ideal para dashboards de monitoramento. Em um projeto de remessas internacionais no Brasil, usamos esse recurso para notificar usuários da confirmação de pagamento em menos de 5 segundos — um ganho competitivo relevante frente aos sistemas bancários tradicionais.

Como André Dias Moreira Prol, costumo alertar as equipes: sempre trate a paginação por cursor corretamente. Ignorar o campo paging_token é um erro comum que leva a dados duplicados ou perdidos em grandes volumes.

Conclusão

A Horizon API democratiza o acesso ao ledger da Stellar, e dominar tanto Python quanto JavaScript amplia enormemente as possibilidades de integração para o mercado brasileiro de tokenização e pagamentos. Experimente os exemplos na testnet hoje mesmo e comece a construir sua primeira aplicação Web3 sobre a Stellar.


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

Top comments (0)