Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Log Trigger: Fluxos Orientados a Eventos

O conceito novo de hoje: Log Triggers.

Eles permitem que seu workflow reaja a eventos on-chain automaticamente.

Familiarize-se com a capability

O EVM Log Trigger dispara quando um smart contract emite um evento específico. Você cria um Log Trigger chamando EVMClient.logTrigger() com uma configuração que especifica quais endereços de contrato e tópicos de evento monitorar.

Isso é poderoso porque:

  • Reativo: Seu workflow executa apenas quando algo acontece on-chain
  • Eficiente: Não precisa fazer polling ou verificar periodicamente
  • Preciso: Filtra por endereço do contrato, assinatura do evento e tópicos

Entendendo o código do Log trigger

import { cre, getNetwork } from "@chainlink/cre-sdk";
import { keccak256, toHex } from "viem";

// Obter a rede
const network = getNetwork({
  chainFamily: "evm",
  chainSelectorName: "ethereum-testnet-sepolia",
  isTestnet: true,
});

const evmClient = new cre.capabilities.EVMClient(network.chainSelector.selector);

// Calcular o hash da assinatura do evento
const eventHash = keccak256(toHex("Transfer(address,address,uint256)"));

// Criar o trigger
const trigger = evmClient.logTrigger({
  addresses: ["0x..."], // Endereços de contrato para monitorar
  topics: [{ values: [eventHash] }], // Assinaturas de evento para filtrar
  confidence: "CONFIDENCE_LEVEL_FINALIZED", // Aguardar finalidade
});

Configuração

O método logTrigger() aceita um objeto de configuração:

CampoTipoDescrição
addressesstring[]Endereços de contrato para monitorar (pelo menos um obrigatório)
topicsTopicValues[]Opcional. Filtrar por assinatura de evento e parâmetros indexados
confidencestringNível de confirmação de bloco: CONFIDENCE_LEVEL_LATEST, CONFIDENCE_LEVEL_SAFE (padrão), ou CONFIDENCE_LEVEL_FINALIZED

Log Trigger vs CRON Trigger

PadrãoLog TriggerCRON Trigger
QuandoEvento on-chain emitidoAgendamento (a cada hora, etc.)
TipoReativoProativo
Caso de uso“Quando X acontecer, faça Y”“Verificar a cada hora se X”
ExemploLiquidação solicitada → LiquidarA cada hora → Verificar todos os mercados

Entendendo o Payload EVMLog

Quando o CRE aciona o callback do logTrigger, ele fornece:

PropriedadeTipoDescrição
topicsUint8Array[]Tópicos do evento (parâmetros indexados)
dataUint8ArrayDados não indexados do evento
addressUint8ArrayEndereço do contrato que emitiu
blockNumberbigintBloco onde o evento ocorreu
txHashUint8ArrayHash da transação