2 minutos
Gatilhos do Substreams
Use Gatilhos Personalizados e ative o uso completo da GraphQL.
Visão geral
Com Gatilhos Personalizados, é possível enviar dados diretamente ao arquivo de mapeamento do seu subgraph e às suas entidades; sendo esses aspetos parecidos com tabelas e campos. Assim, é possível usar a camada da GraphQL livremente.
Estes dados podem ser recebidos e processados no handler do seu subgraph ao importar as definições do Protobuf emitidas pelo seu módulo do Substreams. Assim, o tratamento de dados na estrutura do subgraph fica mais simples e eficiente.
Como definir handleTransactions
O código a seguir demonstra como definir uma função handleTransactions
num handler de subgraph. Esta função recebe bytes brutos do Substreams como um parâmetro e os descodifica num objeto Transactions
. Uma nova entidade de subgraph é criada para cada transação.
1export function handleTransactions(bytes: Uint8Array): void {2 let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.3 if (transactions.length == 0) {4 log.info('No transactions found', [])5 return6 }78 for (let i = 0; i < transactions.length; i++) {9 // 2.10 let transaction = transactions[i]1112 let entity = new Transaction(transaction.hash) // 3.13 entity.from = transaction.from14 entity.to = transaction.to15 entity.save()16 }17}
Você verá isto no arquivo mappings.ts
:
- Os bytes contendo dados do Substreams são descodificados no objeto
Transactions
gerado; este é usado como qualquer outro objeto AssemblyScript - Um loop sobre as transações
- Uma nova entidade de subgraph é criada para cada transação
Para ver um exemplo detalhado de um subgraph baseado em gatilhos, clique aqui.
Outros Recursos
Para estruturar o seu primeiro projeto no Recipiente de Programação, confira este guia.