1
Pesquisar o Programa
Nomes de instrução adivinhados são a maneira mais comum de um filtro não corresponder a nada silenciosamente. Chame Prefira o endereço do programa em vez de um nome de catálogo — mais de uma entrada de catálogo pode compartilhar um nome, e uma consulta pelo nome pode resolver para uma versão mais antiga do programa.
describeProgram primeiro para obter os nomes exatos que o comparador utiliza.Request
Response
route e shared_accounts_route são as duas instruções que cobrem a maioria dos swaps Jupiter v6, então é neles que você deve filtrar.2
Construir o Filtro
Combine o id do programa, os nomes das instruções do passo anterior e a carteira que você está observando. Os campos se combinam com E, então isso corresponde a instruções de rota que tocam na conta SOL da carteira:
accounts.roles fixa user_transfer_authority à posição exata da carteira na instrução, que é mais restritiva do que accounts.include sozinha: uma correspondência de endereço simples também capturaria a carteira aparecendo como uma conta não relacionada em outro lugar na instrução. Os nomes dos papéis correspondem exatamente, então eles são copiados da lista describeProgram’s roles, não adivinhados. Deixe includeCpi: true (o padrão) — os movimentos reais de token de um swap acontecem em instruções internas.3
Assine e Gerencie Notificações
Abra a assinatura com o filtro e, em seguida, leia cada argumento decodificado da instrução correspondente:
matchedIndexes aponta apenas para as instruções que seu filtro encontrou — ignore todo o resto na transação. Verifique se decoded está presente antes de lê-lo: uma instrução de rota de uma versão de programa não indexada chega com decoded: null e campos brutos em vez disso.Próximas Etapas
Referência de Campos de Filtro
Todos os campos de filtro, opções e limites.
Gerenciando Reconexões
Mantenha esta assinatura ativa durante desconexões e implantações.