Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk5 min

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

Exemplos de consultas HTTP à Horizon API em Python e JavaScript, com notas práticas sobre respostas HAL, paginação, streaming, retenção e migração.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A Horizon API permite consultar dados da rede Stellar por HTTP, incluindo contas, saldos, transações e ativos. Abaixo estão exemplos em Python e JavaScript para fazer essas leituras e percorrer resultados paginados. Eles servem para entender os endpoints e manter código existente: a documentação da Stellar informa que Horizon está perto do fim de vida e será eventualmente descontinuada em favor de Stellar RPC e Portfolio APIs.

O que é a Horizon API

Horizon é uma interface HTTP para consultar recursos da rede Stellar, como contas, ativos, operações e transações. Suas respostas são JSON estruturado no formato HAL, não JSON:API. Em respostas de coleções, _embedded.records contém os registros; _links oferece links relacionados e de navegação.

Os exemplos a seguir fazem requisições HTTP diretas. Defina HORIZON_URL como o endereço-base da instância que você escolheu e ACCOUNT_ID como o identificador da conta que deseja consultar. Não há um endereço único adequado para todos os casos: instâncias próprias e provedores podem diferir em disponibilidade, limites e retenção.

Consultar uma conta e seus saldos

O endpoint /accounts/{account_id} retorna os dados da conta. A resposta inclui uma coleção balances; cada item descreve um saldo, que pode corresponder ao ativo nativo ou a um ativo emitido.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python

import os
import requests

horizon_url = os.environ["HORIZON_URL"].rstrip("/")
account_id = os.environ["ACCOUNT_ID"]

response = requests.get(
    f"{horizon_url}/accounts/{account_id}",
    timeout=20,
)
response.raise_for_status()
account = response.json()

print("Conta:", account["account_id"])
for balance in account.get("balances", []):
    print(balance)

JavaScript

const horizonUrl = process.env.HORIZON_URL.replace(//$/, "");
const accountId = process.env.ACCOUNT_ID;

const response = await fetch(
  `${horizonUrl}/accounts/${encodeURIComponent(accountId)}`
);
if (!response.ok) {
  throw new Error(`Horizon respondeu HTTP ${response.status}`);
}
const account = await response.json();

console.log("Conta:", account.account_id);
for (const balance of account.balances ?? []) {
  console.log(balance);
}

Esses trechos ilustram o formato da chamada HTTP e o acesso à resposta; não são uma validação de versões específicas do SDK Stellar. Se optar por usar stellar-sdk, confira os imports e as assinaturas correspondentes à versão instalada antes de integrar o código.

Consultar transações, operações e ativos

Horizon disponibiliza recursos para transações e ativos, além dos dados de conta. Para consultar uma transação pelo hash, construa a requisição com o endpoint de transação documentado pela instância e passe o hash como segmento de caminho. Para pesquisar ativos, use o endpoint de ativos com os parâmetros de consulta compatíveis com a pesquisa desejada. Em ambos os casos, trate a resposta como JSON e verifique o status HTTP antes de usar os campos.

As coleções podem retornar vários registros. Não presuma que uma única resposta contém todos os resultados: use os links HAL e os cursores de paginação para avançar. A forma concreta dos parâmetros de pesquisa e dos campos retornados depende do endpoint consultado; consulte a referência atual do endpoint ao adaptar essas chamadas.

Percorrer páginas de resultados

Nas coleções, Horizon aceita cursor, order (asc ou desc) e limit. O cursor deriva do paging_token de um registro. A documentação da Stellar estabelece um limite de 1 a 200 registros por página e um padrão de 10. Aumentar limit não elimina a paginação nem garante que todo o histórico venha numa chamada.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Faça a consulta inicial da coleção com o limite e a ordenação adequados ao seu caso.
  2. Leia os registros em _embedded.records e processe-os antes de avançar.
  3. Use o link de próxima página em _links quando disponível; se construir a próxima consulta, use o paging_token do último registro como cursor.
  4. Continue até não haver próxima página ou até alcançar o intervalo de dados necessário.

Seguir o link fornecido pela resposta reduz o risco de reconstruir incorretamente os parâmetros da consulta. Se a aplicação optar por montar a URL, preserve o filtro original e altere o cursor de forma consistente.

Receber atualizações por streaming

Em vez de repetir consultas para descobrir se há dados novos, Horizon pode manter uma conexão aberta e transmitir atualizações à medida que a rede avança. A documentação descreve streaming para recursos como ledgers, transações, operações, pagamentos, efeitos, contas, trades e order books. Isso pode ser útil para monitoramento orientado a eventos e evita chamadas de busca que não encontram novidades.

Streaming não implica uma latência garantida nem uma economia quantificada: o resultado depende da instância, da conexão e do desenho do cliente. Planeje reconexões e recuperação de estado para que a aplicação possa retomar o processamento após uma desconexão.

Limites, retenção e escolha da instância

A referência de estrutura do Horizon descreve 3.600 requisições por hora por IP como valor padrão configurável. Isso não é uma garantia do limite aplicado por toda instância pública ou provedor; confirme as condições do endpoint que sua aplicação realmente usa. Não trate um limiar genérico de requisições por minuto como regra universal.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

O histórico também depende da instância. A documentação da Stellar Development Foundation registra que, em 1º de agosto de 2024, os dados históricos do Horizon público operado pela SDF foram truncados para um ano. Uma consulta bem-sucedida, portanto, não significa que a instância ofereça todo o histórico da rede. Se o caso de uso exige uma janela maior, verifique a política de retenção do provedor ou avalie operar uma instância adequada.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Horizon, Stellar RPC e alternativas de dados

A Stellar Developers descreve Horizon como perto do fim de vida: ele continuará recebendo atualizações de compatibilidade necessárias para acompanhar mudanças futuras do protocolo, mas não novos recursos. A documentação aponta Stellar RPC e Portfolio APIs como alternativas a considerar. A escolha depende dos dados e do comportamento de que a aplicação precisa.

Aspecto Horizon Stellar RPC e outras APIs de dados
Interface API HTTP com endpoints de estilo REST e respostas JSON HAL. Stellar RPC usa JSON-RPC; Portfolio APIs são também indicadas pela documentação como alternativas, mas não se deve presumir que compartilhem a mesma interface.
Compatibilidade de recursos Oferece recursos de contas, transações, ativos, operações e outros dados. Há mapeamentos de endpoints Horizon para métodos RPC, mas alguns recursos Horizon não têm substituição direta.
Histórico e retenção A retenção varia por instância; o Horizon público SDF truncou dados históricos para um ano em 1º de agosto de 2024. Confirme a retenção do produto ou provedor escolhido; não presuma que a migração preserve a mesma janela histórica.
Streaming Oferece streaming para vários recursos documentados. Verifique se a API escolhida atende à necessidade de atualização contínua; não presuma equivalência funcional.

Antes de migrar, liste os endpoints efetivamente usados, os dados históricos exigidos e a necessidade de streaming. Para analytics ou consultas históricas sem substituição direta, pode ser necessário um indexador ou outro produto de dados. Migrar não é apenas trocar o endereço-base: formatos, métodos disponíveis e política de retenção também importam.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.