跳转到主要内容
本教程将以太坊主网的 USDC 转账整理成事件表,记录发送方、接收方、金额和交易哈希。
chain.event.eth → 筛选 USDC Transfer 事件 → 提取转账字段 → 转账事件表

开始前

登录 Chaintable 控制台。如果还没有 Space,在 Spaces 页面点击 New Space,填写 Id 后点击 Create space。
在 New Space 对话框中填写 Id 并创建 Space
进入新建或已有的 Space。本文使用 demo,操作时替换为你的 Space ID。

1. 创建转账事件表

在 Tables 中创建表,名称填 usdc_transfers,类型选择 Block Event,链选择 Ethereum。创建后的表 ID 为 demo.usdc_transfers.eth。
在 Tables 页面创建 Ethereum 区块事件表
在表的 Schema 中添加以下字段,保留系统预置字段和其他默认配置:
新建转账表的字段结构,保留默认配置

2. 创建 Function

在 Functions 中创建 parse_usdc_transfer,输入以下代码:
在编辑器下方添加参数 event,类型选择 JSON,然后保存 Function。具体操作见创建 Function。 Function 从事件的 params 提取发送方、接收方和金额,返回要写入转账表的记录。返回记录同时带上事件的区块字段,回填范围较大时需要它们,见结果处理器。
配置接收 event 参数的 parse_usdc_transfer Function

3. 运行 Pipeline

配置 Pipeline

在 Notebooks 中创建 backfill_usdc_transfers,输入以下代码,将 SPACE 改为你的 Space ID:
sources 指定源表和已保存的 Function;operator 筛选事件,ROW 将每条源记录作为参数传入。Function 返回的记录由 Pipeline 写入 target 指定的表。

运行回填

保存并点击 Run,在 Output 或 Instance detail 中查看回填进度和处理结果。 backfill() 处理指定的 10 个区块,包含起止高度,完成后自动结束。
backfill_usdc_transfers 实例的区块处理日志和完成结果

4. 查看转账数据

回到 usdc_transfers.eth,在 Overview 查看已处理区块。本次只回填了一个局部区间,更早的历史尚未补齐。
默认配置下转账表的处理进度和 event 子表入口
打开 Subtables 下的 event,查看转账记录。
event 子表中的真实 USDC 转账记录
每条记录使用源事件的 id,区块字段由 Pipeline 自动补齐。 amount 保留原始整数值,除以 10^6 即为 USDC 数量。

可选:持续更新

新建 Notebook update_usdc_transfers,复制前面的代码,将最后一行 pipeline.backfill(...) 替换为以下调用,保存并运行:
update() 默认从最小未完成区块开始补齐历史,追上最新区块后持续更新。只需要某个高度之后的数据时,可先设置起始高度。 历史区块较多时,也可以在另一个 Notebook 中同时运行 backfill(),加快回填。
update_usdc_transfers Notebook 的持续更新调用和历史区块处理日志
选择 Switch to Background 可转为后台运行。在账户的 Instances 中取消实例即可停止,已写入的数据会保留。