欧易交易所官网推荐的链上数据分析工具Dune Analytics进阶教程,编写SQL查询

admin 欧易中心 1

目录导读

  1. Dune Analytics与区块链数据生态
  2. SQL查询基础:从零到一的链上数据探索
  3. 核心进阶技巧:掌握Dune SQL的强大功能
  4. 实战案例:构建自己的链上数据仪表盘
  5. 常见问题与解答(FAQ)

Dune Analytics与区块链数据生态

在加密世界,数据即价值,当我们在欧易交易所官网进行交易时,每一笔链上行为都在生成不可篡改的数据,但如何从海量区块链数据中提取洞见?Dune Analytics给出了答案——它是目前最受欢迎的链上数据分析平台,让用户通过编写SQL查询来解析以太坊等区块链的原始数据。

欧易交易所官网推荐的链上数据分析工具Dune Analytics进阶教程,编写SQL查询-第1张图片-欧易交易所

为什么选择Dune Analytics?

对于欧易交易所下载用户而言,Dune Analytics提供了一个独特视角:你可以直接查询链上交易数据,分析DeFi协议的资金流动、NFT市场的成交趋势,甚至追踪巨鲸地址的买卖行为,其核心优势在于:

  • 预解码数据:无需理解复杂的原始十六进制数据
  • 社区驱动:超过100万+的社区查询,可学习和复用
  • 可视化能力:支持创建交互式图表和仪表盘

数据架构理解

Dune数据模型分为三层:

  • raw_表:保存原始区块链事件,字段为十六进制
  • decoded_表:已解码的事件,可直接读取函数参数
  • view_表:聚合视图,适合快速查询

SQL查询基础:从零到一的链上数据探索

掌握SQL是解锁Dune潜力的第一步,以下是进阶用户必须了解的三大基础模式。

查询交易数据

查询某地址的近期交易:

SELECT 
  block_time,
  tx_hash,
  value / 1e18 AS eth_value
FROM ethereum.transactions
WHERE "from" = '0xYourAddressHere'
ORDER BY block_time DESC
LIMIT 20

统计ERC-20代币转移

查看USDT最近1000笔转账:

SELECT 
  block_time,
  "from",
  to,
  value / 1e6 AS usdt_amount
FROM erc20_ethereum.evt_Transfer
WHERE contract_address = '0xdAC17F958D2ee523a2206206994597C13D831ec7'
ORDER BY block_time DESC
LIMIT 1000

聚合分析:每小时交易量

SELECT 
  date_trunc('hour', block_time) AS hour,
  COUNT(*) AS tx_count
FROM ethereum.transactions
WHERE block_time >= now() - interval '7 days'
GROUP BY 1
ORDER BY 1

核心进阶技巧:掌握Dune SQL的强大功能

1 理解表结构与解密模式

关键点:Dune中的evt_前缀代表事件表,call_前缀代表函数调用表,Uniswap V3的 Swap 事件位于uniswap_v3_ethereum.Pair_evt_Swap

2 使用WITH子句构建模块化查询

这是提升代码复用的核心:

WITH active_traders AS (
  SELECT 
    "from" AS trader,
    COUNT(*) AS trade_count
  FROM ethereum.transactions
  WHERE block_time >= now() - interval '30 days'
  GROUP BY 1
  HAVING COUNT(*) > 100
)
SELECT 
  AVG(trade_count) AS avg_trades,
  COUNT(DISTINCT trader) AS total_traders
FROM active_traders

3 窗口函数:计算累计值和排名

重要操作:使用ROW_NUMBER()追踪同一区块内的交易顺序:

SELECT 
  block_time,
  tx_hash,
  value / 1e18 AS eth_value,
  ROW_NUMBER() OVER (PARTITION BY DATE(block_time) ORDER BY value DESC) AS rank_in_day
FROM ethereum.transactions
WHERE block_time >= now() - interval '7 days'

4 跨链查询与联合数据

Dune支持多链(Ethereum、Polygon、BSC等),你可以通过UNION ALL合并不同链的相同类型数据:

SELECT 'ethereum' AS chain, * FROM ethereum.transactions WHERE ...
UNION ALL
SELECT 'polygon' AS chain, * FROM polygon.transactions WHERE ...

实战案例:构建自己的链上数据仪表盘

案例1:监控欧易交易所下载相关巨鲸地址

创建实时监控查询:

WITH whale_txs AS (
  SELECT 
    block_time,
    tx_hash,
    value / 1e18 AS eth_value,
    "to" AS destination
  FROM ethereum.transactions
  WHERE "from" IN (
    '0xWhaleAddress1',
    '0xWhaleAddress2'
  )
  AND block_time >= now() - interval '24 hours'
)
SELECT 
  block_time,
  tx_hash,
  eth_value,
  CASE 
    WHEN eth_value > 1000 THEN '大额交易'
    ELSE '小额交易'
  END AS transaction_type
FROM whale_txs
ORDER BY eth_value DESC

案例2:分析NFT地板价趋势

WITH recent_sales AS (
  SELECT 
    block_time,
    price / 1e18 AS eth_price
  FROM opensea_ethereum.”events”
  WHERE nft_contract = '0x...' -- NFT合约地址
  AND event_type = 'Sale'
  AND block_time >= now() - interval '30 days'
)
SELECT 
  DATE_TRUNC('day', block_time) AS day,
  AVG(eth_price) AS avg_price,
  MIN(eth_price) AS floor_price
FROM recent_sales
GROUP BY 1
ORDER BY 1

案例3:DeFi协议TVL对比

利用Dune的view_聚合表:

SELECT 
  protocol,
  date,
  total_value_locked_usd
FROM dune_user_generated.defi_lending_tvl
WHERE date >= now() - interval '30 days'
ORDER BY date, total_value_locked_usd DESC

常见问题与解答(FAQ)

Q1:Dune Analytics中的SQL与标准SQL有何不同? A:Dune基于Presto SQL,支持标准操作符,但部分函数如date_trunc使用的是Presto语法,建议查阅Dune官方文档中的函数列表。

Q2:如何获取特定合约的decode表? A:在Dune的”Schema”面板中搜索合约地址或名称,未解码的合约可使用raw_表手动解析,但这需要十六进制解码技能。

Q3:查询长时间未返回结果怎么办? A:尝试减少时间范围或增加LIMIT,大量历史数据查询建议使用分区表(如ethereum.transactions按block_number分区)。

Q4:能否在欧易交易所官网查看Dune查询? A:虽然欧易本身不集成Dune,但你可以将查询结果导出为CSV,结合交易所的API数据进行交叉分析。

Q5:如何避免查询超时? A:避免使用SELECT *,指定所需字段;减少JOIN操作;善用WITH子句模块化;对高频查询创建物化视图。

Q6:Dune查询可以设置自动刷新吗? A:可以,在仪表盘设置中,你可以将查询结果配置为每小时、每日或每周自动刷新,适合创建实时监控面板。

Q7:新手如何开始编写第一个查询? A:建议先复制社区中的热门查询,理解其逻辑后逐步修改,记得将合约地址替换为自己的目标地址。

Q8:高级用户如何优化查询性能? A:使用EXPLAIN ANALYZE查看执行计划,确保在WHERE条件中使用分区字段(如block_number),避免全表扫描。


通过本文的进阶教程,你已经掌握了从基础到高级的Dune SQL查询技巧,链上数据分析的核心在于不断实践——先从复制社区查询开始,逐步理解其数据模型,最终构建属于自己的查询库,当你在欧易交易所官网完成一笔交易后,不妨打开Dune,用刚学到的技巧分析这笔链上行为——这正是区块链世界赋予每个人的数据自主权。

标签: SQL查询

抱歉,评论功能暂时关闭!