跳到正文
← 使用教程

Snapshot 导出投票记录对不上:核 proposal、choice序号与分页覆盖

链小知 · 进阶 · 核验 · 依官方文档整理

读取已有Hub记录,排查提案混用、选项错位和只取第一页造成的统计缺口。

开始前准备

  • 准备有权查看的已有提案、原时点设置或脱敏记录;只核对材料,不连接钱包、投票、签名或更改配置。
  • 官方说明用于解释记录;未访问本人账户或请求业务API,未知字段和运行状态保留未知。

1. 核提案与查询环境

官方Hub文档分别列生产hub.snapshot.org/graphql和演示testnet.hub.snapshot.org/graphql。检查已有记录来自哪一个端点,proposal.id和space.id对应哪份提案,示例里的旧提案不是本人的实时记录。

单提案材料可包含choices、snapshot、network、strategies、scores、scores_by_strategy、scores_total和scores_updated;保留实际返回的字段,缺失不补零。

检查结果:端点、空间、提案和结果更新时间可对应。

2. 检查筛选和分页

Get votes支持first、skip、where中的proposal/space/voter及排序。官方示例first:1000、skip:0仅展示一个请求,不是全量证明或保证的最大上限。检查已有每页条件和排序是否一致。

仅有第一页或同页重复保存就标部分覆盖;按vote.id去重,保留每页数量、读取时点和缺页情况。活跃投票的新增记录会影响基于skip的页位,跨时点材料不能自动当一次完整快照。

检查结果:统计带过滤条件、页位和覆盖边界。

3. 核选项身份和票权

官方文档规定choice索引从1开始,第一项对应choices[0];只在该投票类型确实返回单一序号时这样对应。多选、权重或排名形式按实际类型解读,不能强制转成一个整数。

vote.id是记录身份,voter是地址;vp、vp_by_strategy与vp_state分别保留。不能用记录条数替代票权,也不能把地址去重后声称独立人数。

检查结果:选项序号、原choice形式和vp状态均保留。

4. 对齐汇总范围

将同一提案、同一读取范围的投票材料与scores相关汇总并列,按实际投票类型解释差异。记录页没带vp或完整choice时,不能凭示例response缺字段推不存在。

文档中vp示例出现final,本文只记录实际vp_state,未独立重算票权或调用Score API;局部记录无法解释差异就保留待核。

检查结果:局部数据与汇总不一致时保留原因及未知项。

怎样确认完成

  • 保存端点、提案、条件、页覆盖、vote.id与choice映射的核对表。
  • 不补发API、不签名,也不从缺失记录得出零参与。

常见错误与边界

  • 示例里的first:1000和旧时间不代表当前服务限额或当日提案。
  • 网页/API示例可读不证明本人导出完整或投票结果已执行。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据