Substreams驱动的子图
2 分钟
Substreams触发器
使用自定义触发器并启用完全使用GraphQL。
概述
自定义触发器允许您将数据直接发送到子图映射文件和实体中,这些文件和实体类似于表和字段。这使您能够充分使用GraphQL层。
通过导入Substreams模块发出的Protobuf定义,您可以在子图的处理程序中接收和处理这些数据。这确保了子图框架内高效和简化的数据管理。
定义处理交易
以下代码演示了如何在子图处理程序中定义handleTransactions
函数。此函数接收原始Substreams字节作为参数,并将其解码为Transactions
对象。对于每个交易,都会创建一个新的子图实体。
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}
以下是您在mappings.ts
文件中看到的内容:
- 包含Substreams数据的字节被解码为生成的
交易
对象,该对象与任何其他AssemblyScript对象一样使用 - 循环交易
- 为每笔交易创建一个新的子图实体
要查看基于触发器的子图的详细示例,单击此处。
知识拓展
要在开发容器中构建你的第一个项目,请查看操作指南。