Pular para o conteúdo principal
Inicie uma assinatura de Preconfirmations — transações entregues antes de serem agrupadas em entradas e convertidas em shreds. Esse é o sinal de transação com a menor latência oferecido pela Helius. Uma única assinatura transmite tanto as pré-confirmações da Helius, emitidas no instante em que o líder executa a transação e contendo o status de execução, quanto as pré-confirmações BAM, emitidas quando o validador se compromete a executá-la. Use includeSource para selecionar qualquer uma das fontes.

Endpoints

preconfSubscribe é servido a partir do endpoint Helius Gatekeeper:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
O hostname beta refere-se à implantação do Gatekeeper, não à maturidade das Pré-confirmações — ele se tornará o endpoint padrão à medida que o tráfego migrar para o Gatekeeper.
O fluxo não é contínuo. A cobertura escala com a participação da rede enviando para Helius ou executando BAM, então espere slots sem mensagens — lide com essas lacunas de maneira adequada. Veja Cobertura.

Autorizações

string
obrigatório
Sua chave de API da Helius, transmitida como o parâmetro de consulta api-key. As pré-confirmações estão disponíveis em todos os planos pagos.

Corpo

array
Opcional. Omitir params para receber todas as transações tanto da Helius quanto do BAM. Para restringir o fluxo, passe um objeto de filtro como o primeiro elemento — o filtragem acontece no lado do servidor, então você só paga e recebe as transações que lhe interessam.
Uma fonte, chave pública, assinatura, filtro de instrução ou código de região inválido retorna o erro JSON-RPC -32602 (parâmetros inválidos). Combinar includeSource com o campo obsoleto includeBam também retorna -32602. Os filtros de instrução inspecionam somente instruções de nível superior. Eles não correspondem a instruções invocadas por meio de invocação entre programas (CPI). Um deslocamento final memcmp e dataSize não deve exceder 4.096 bytes. Os filtros de conta correspondem a mais do que as chaves de conta estáticas da transação — a Helius resolve as tabelas de consulta de endereços v0 no servidor. Portanto, accountInclude, accountExclude e accountRequired também correspondem às contas carregadas por uma transação por meio de uma ALT.

Códigos de região

Para as pré-confirmações da Helius, a região é o local onde a Helius recebeu a transação. Para as pré-confirmações BAM, é o endpoint BAM regional que emitiu a pré-confirmação, não o local onde a Helius a recebeu. Os endpoints de Singapura e Dallas da BAM são mapeados para sgp e dal.

Resposta

integer
ID da assinatura (necessário para cancelar a assinatura)

Notificações

Após a confirmação JSON, as notificações são entregues como frames WebSocket binários (não JSON). As pré-confirmações da Helius e da BAM usam o mesmo layout. Cada frame é uma estrutura compactada de bytes que contém uma única transação: O payload não tem um campo de fonte. Não deduza uma origem BAM com base em tx_index = 0, pois outras fontes também podem informar 0.
Sempre leia e verifique primeiro o byte version. Atualmente, ele é 1. Se a Helius precisar atualizar o formato do payload, a versão será incrementada — crie uma ramificação com base nela para que seu decodificador continue funcionando após alterações no esquema.
Uma pré-confirmação é um sinal antecipado, não uma garantia. A transação ainda não foi registrada on-chain e ainda pode falhar ou ser descartada. Confirme o registro por meio das verificações padrão de compromisso antes de tratá-la como final.

Como decodificar a transação

Os bytes da transação são encaminhados exatamente como foram serializados pelo validador, na codificação de transmissão padrão da versão da transação. As transações legadas e v0 usam o layout com as assinaturas primeiro produzido por bincode. A transação v1 (SIMD-0385) usa um layout com a mensagem primeiro e as assinaturas no final. Portanto, bincode falha em payloads v1. Use um decodificador compatível com todas as versões. Em Rust, agave-transaction-view analisa transações legadas, v0 e v1 no próprio local e é a opção recomendada; wincode com um VersionedTransaction de um SDK atual da Solana também funciona. Em JavaScript, verifique se a versão da sua biblioteca é compatível com a transação v1. Consulte o guia para ver um exemplo em Rust.

Notificações duplicadas

As pré-confirmações da Helius e da BAM são desduplicadas por fonte, não entre fontes. Uma pequena parcela das transações chega à Helius por ambas, então você pode receber a mesma assinatura duas vezes, e as duas cópias podem informar slots diferentes. Faça a desduplicação por assinatura no cliente e torne idempotentes as ações acionadas por transações. Consulte o guia.

Preços

As Preconfirmations estão disponíveis em todos os planos pagos: Developer, Business, Professional e Enterprise. Os planos gratuitos não são elegíveis. Consulte Créditos para obter detalhes. Slots sem nenhuma mensagem entregue custam zero crédito, mesmo quando o slot tem cobertura de pré-confirmação. Quando um slot entrega pelo menos uma mensagem, cada assinatura preconfSubscribe ativa é cobrada pelo maior valor entre 300 créditos e 10 créditos por mensagem entregue. Slots sem cobertura não geram custos. Consulte Preços para verificar a elegibilidade de cobrança por origem e região. Cada assinatura simultânea é cobrada de forma independente quando recebe pelo menos uma mensagem. Feche as assinaturas que você não precisa mais com preconfUnsubscribe. Com includeSource: ["helius"], os slots cobertos somente pelo BAM são excluídos da cobrança. Quando regionInclude está definido, os slots cobertos fora das regiões selecionadas não geram custos para essa assinatura; os slots correspondentes são cobrados somente quando a assinatura recebe pelo menos uma mensagem. A cobrança é feita por mensagem, não por assinatura única. Uma transação entregue tanto pela Helius quanto pelo BAM conta duas vezes. Defina includeSource: ["helius"] se você quiser apenas pré-confirmações da Helius.
Para controlar os custos, consolide os filtros de conta em uma única assinatura quando possível, use regionInclude para limitar a cobrança às regiões necessárias, defina includeSource: ["helius"] quando você não precisar do BAM e monitore os créditos no Painel da Helius.

Relacionados

Preconfirmations Overview

O que são Preconfirmations e onde elas se encontram no pipeline do validador.

preconfUnsubscribe

Interrompa uma assinatura pelo ID.