如何通过SQL查询获取NEAR区块链验证者数量?现有查询存疑
NEAR验证者数量统计的正确方法及原查询问题分析
原查询的核心问题
- 统计范围偏差:你的查询统计的是所有历史上收到过质押交易的地址,而非当前活跃参与PoS共识的验证者,结果会包含已解绑、退出共识的无效地址。
- 数据来源不够精准:依赖交易表+函数调用事件表手动解析质押操作,容易遗漏批量质押、合约发起的质押场景,且通过
tx:actions[0]解析金额的方式,若交易包含多操作会直接出错。 - 未利用结构化维度表:NEAR数据仓库提供了专门的验证者维度表,无需自行拼接零散的交易数据。
推荐的正确查询
场景1:统计当前活跃的质押验证者(正在参与PoS共识)
直接使用经过清洗的验证者维度表,这是最准确的方式:
SELECT COUNT(DISTINCT account_id) AS active_validators FROM near.core.dim_validators WHERE is_active = TRUE AND staked_balance > 0;
场景2:统计历史上所有参与过质押的验证者(含已退出的)
用专门的质押事件表,覆盖所有质押类操作:
SELECT COUNT(DISTINCT receiver_account_id) AS historical_validators FROM near.core.fact_staking_actions WHERE action_type IN ('STAKE', 'DEPOSIT_AND_STAKE');
关键表和字段说明
near.core.dim_validators:核心验证者维度表,包含account_id(验证者官方地址)、is_active(是否处于活跃共识状态)、staked_balance(当前质押余额)等关键字段,是统计验证者状态的首选。near.core.fact_staking_actions:全量质押操作事件表,包含action_type(操作类型:STAKE/UNSTAKE等)、receiver_account_id(验证者地址)、amount(质押金额)等字段,适合分析历史质押行为。
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

