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