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>
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.-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.
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 porbincode. 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 assinaturapreconfSubscribe 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.
Relacionados
Preconfirmations Overview
O que são Preconfirmations e onde elas se encontram no pipeline do validador.
preconfUnsubscribe
Interrompa uma assinatura pelo ID.