
先明确筛选对象与判断目标
区块链筛选方案设计可以围绕区块、交易或事件日志展开。设计时首先要说明筛选对象和匹配条件,例如查找某段区块范围内的交易,或定位与特定合约相关的日志。条件匹配、数据被区块收录、交易符合协议规则,是不同层次的判断,需要分别定义。
区块、状态与执行顺序
以太坊开发文档中的区块说明强调:区块通过父块引用连接,块内交易按照顺序执行并更新状态。执行回退的交易仍可保留在区块中。因而,筛选到一笔交易后,还需要区分它是否被收录、执行是否成功以及产生了什么状态变化。

区块高度适合表达链上位置,时隙表达协议中的出块机会,二者不能简单等同。若按时间筛选,方案应明确使用时间戳还是区块范围,避免把空时隙当成缺失数据。

布隆过滤器与误报率
比特币开发指南介绍了全节点、简化支付验证(SPV)和布隆过滤器:全节点验证区块及交易规则;SPV利用区块头和默克尔分支核验收录关系;布隆过滤器则以较小空间进行概率性的集合查询。
误报表示实际不属于目标集合的数据被判为可能匹配。标准布隆过滤器在正确构建、完整插入且不错误修改的前提下,不会漏掉已插入的元素;但这不意味着整个筛选系统不会漏数据,数据源遗漏或索引更新不完整仍会影响结果。它适合用于初筛,命中后还应检查具体内容。
收录证明与有效性验证
默克尔证明用于核验某项数据是否属于指定根所承诺的集合。用于交易查询时,它能够支持收录关系判断,但不能独立证明交易满足全部协议规则。方案应明确区块头依据来自哪里,以及是否需要进一步执行规则验证。
全节点适合需要独立验证协议规则、且能够承担相应计算和数据处理成本的场景。SPV适合资源受限的客户端,但需要接受其验证范围和网络连接方面的限制。两者代表不同验证能力,不能只按查询速度选择。
常见问题与方案边界
过滤器命中是否就是业务命中?仍需对候选记录执行精确条件检查。提高误报率是否一定改善隐私?不能据此保证隐私,额外候选数据也会增加传输和处理量。
设计说明可以依次写清数据范围、初筛条件、精确核验方式和异常处理。尤其要区分“未发现匹配记录”和“已证明不存在匹配记录”:前者可能受数据覆盖范围或节点返回内容限制,不能自动推导出后者。