如何用Dune Analytics追踪特定协议的用户增长
用 Dune 追踪特定协议的用户增长,关键在于把\"用户\"这个抽象概念转化成可量化的定义——新用户、活跃用户还是留存用户。然后从 SQL 查询入手,先看懂别人的代码,再改出你自己要的数据。
第一步:把\"用户增长\"拆成可查的指标
在开始写查询之前,先明确你想看什么。Dune 社区积累了大量的用户增长模板,核心指标通常包括这几个维度:
新用户(New Users):第一次与协议交互的地址数,反映获客能力。
日活/周活用户(DAU/WAU):特定时间段内有过交互的独立地址数,反映用户粘性。
留存率(Retention Rate):某一批用户在一段时间后仍然活跃的比例,反映产品是否留得住人。
累计用户(Cumulative Users):从上线至今的独立用户总数,反映整体采用规模。
这类查询的核心逻辑是先定义\"用户的第一笔交互\",然后按时间聚合。Dune 的官方文档中提供了完整的用户增长查询模板,你可以直接 Fork 后使用。
第二步:从哪里开始——先找现成看板,再 Fork
新手最有效的路径是\"站在别人肩膀上\"。在 Dune 的 Discover 页面搜索协议名称,大概率已经有人建好了用户相关的看板。
操作路径:
登录 Dune,进入 Discover 页面。
搜索你要追踪的协议名称(如 Uniswap、Aave 或某个新项目的合约名)。
找到一个包含\"Users\"、\"Growth\"或\"Retention\"指标的看板。
点击任意图表,然后点击\"Edit Query\"查看背后的 SQL。
点击\"Fork\"按钮,把这个查询复制到你的工作区。
Fork 之后你就可以修改代码中的合约地址或日期范围,生成你自己的数据。
第三步:从模板开始,修改成你的协议
以 Dune 官方提供的用户增长模板为例,追踪一个协议的累计用户数,核心查询结构如下:
-- 定义你的协议合约地址(替换成你的) WITH my_protocol_contracts AS ( SELECT address FROM UNNEST(ARRAY[ 0xYOUR_CONTRACT_ADDRESS_1, -- 填入你的合约地址 0xYOUR_CONTRACT_ADDRESS_2 ]) AS _u(address) ), -- 找出每个用户第一次与合约交互的时间 user_first_seen AS ( SELECT t.\"from\" AS user_address, MIN(t.block_date) AS first_interaction_date FROM sei.transactions AS t JOIN my_protocol_contracts AS c ON t.\"to\" = c.address WHERE t.success = TRUE GROUP BY 1 ) -- 按天统计新用户数和累计用户数 SELECT first_interaction_date, COUNT(user_address) AS new_users, SUM(COUNT(user_address)) OVER (ORDER BY first_interaction_date) AS cumulative_users FROM user_first_seen GROUP BY 1 ORDER BY 1 DESC
关键调整点:
把
0xYOUR_CONTRACT_ADDRESS_1替换成协议的实际合约地址。把
sei.transactions换成对应的链表,比如以太坊用ethereum.transactions,Solana 用solana.transactions。如果协议有多个合约地址(比如工厂合约+路由合约),全部放进
ARRAY里。
第四步:进阶——追踪留存和用户质量
单纯的\"用户总数\"不足以说明健康度,还需要看留存。Dune 的社区查询提供了\"Quick Ratio\"指标——用(新用户+回流用户)/流失用户来判断用户基础是否在健康增长。
另一个指标是\"用户活动多样性\":关注用户是否参与了多种类型的链上活动,而不是只重复单一行为。一个用户既在 DEX 交易又参与流动性挖矿,质量通常高于只转账的地址。
Dune 免费版能查多少数据?
免费版每月有 2,500 个积分额度,足够日常学习和轻度查询。如果只是浏览公共看板,不消耗积分。超过额度后需要升级到 Analyst 或 Plus 计划。
我不会写 SQL,还能用 Dune 追踪用户增长吗?
可以。Dune 2023 年推出的Wand AI工具支持用自然语言描述需求(比如\"给我看 X 协议每周的新用户数\"),AI 会帮你生成 SQL。你也可以 Fork 已有的查询,只改合约地址,不用从头写代码。
