dune-analytics

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Dune Analytics

Dune 数据分析

Query live on-chain data via the Dune REST API. Pair with MoonPay to create and fund the wallets you analyze.
通过Dune REST API查询实时链上数据。搭配MoonPay使用,创建并充值你要分析的钱包。

Setup

配置步骤

Get a Dune API Key

获取Dune API密钥

  1. Sign up at https://dune.com
  2. Go to Settings → API Keys → Create new key
bash
export DUNE_API_KEY="your-api-key"
Base URL:
https://api.dune.com/api/v1

Auth header:
X-Dune-API-Key: $DUNE_API_KEY

  1. https://dune.com注册账号
  2. 进入设置 → API密钥 → 创建新密钥
bash
export DUNE_API_KEY="your-api-key"
基础URL:
https://api.dune.com/api/v1

认证请求头:
X-Dune-API-Key: $DUNE_API_KEY

Key Endpoints

核心接口

ActionMethodEndpoint
Execute a saved queryPOST
/query/{query_id}/execute
Get execution status + resultsGET
/execution/{execution_id}/results
Execute raw SQL directlyPOST
/sql/execute
Cancel executionPOST
/execution/{execution_id}/cancel
Get query definitionGET
/query/{query_id}

操作请求方法接口地址
执行已保存的查询POST
/query/{query_id}/execute
获取执行状态与结果GET
/execution/{execution_id}/results
直接执行原生SQLPOST
/sql/execute
取消执行POST
/execution/{execution_id}/cancel
获取查询定义GET
/query/{query_id}

Common Workflows

常见工作流

Run a Saved Query

运行已保存的查询

bash
undefined
bash
undefined

1. Execute

1. 执行查询

EXEC=$(curl -s -X POST "https://api.dune.com/api/v1/query/3237661/execute"
-H "X-Dune-API-Key: $DUNE_API_KEY"
-H "Content-Type: application/json"
-d '{"performance": "medium"}')
EXEC_ID=$(echo $EXEC | jq -r '.execution_id') echo "execution_id: $EXEC_ID"
EXEC=$(curl -s -X POST "https://api.dune.com/api/v1/query/3237661/execute"
-H "X-Dune-API-Key: $DUNE_API_KEY"
-H "Content-Type: application/json"
-d '{"performance": "medium"}')
EXEC_ID=$(echo $EXEC | jq -r '.execution_id') echo "execution_id: $EXEC_ID"

2. Poll until complete

2. 轮询直到完成

while true; do STATUS=$(curl -s "https://api.dune.com/api/v1/execution/$EXEC_ID/results"
-H "X-Dune-API-Key: $DUNE_API_KEY") STATE=$(echo $STATUS | jq -r '.state') echo "State: $STATE" if [[ "$STATE" == "QUERY_STATE_COMPLETED" || "$STATE" == "QUERY_STATE_FAILED" ]]; then echo $STATUS | jq '.result.rows[:5]' break fi sleep 3 done
undefined
while true; do STATUS=$(curl -s "https://api.dune.com/api/v1/execution/$EXEC_ID/results"
-H "X-Dune-API-Key: $DUNE_API_KEY") STATE=$(echo $STATUS | jq -r '.state') echo "State: $STATE" if [[ "$STATE" == "QUERY_STATE_COMPLETED" || "$STATE" == "QUERY_STATE_FAILED" ]]; then echo $STATUS | jq '.result.rows[:5]' break fi sleep 3 done
undefined

Execute Raw DuneSQL

执行原生DuneSQL

bash
curl -s -X POST "https://api.dune.com/api/v1/sql/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sql": "SELECT block_time, hash, value/1e18 AS eth FROM ethereum.transactions WHERE lower(\"from\") = lower('0xYOUR_WALLET') ORDER BY block_time DESC LIMIT 20",
    "performance": "medium"
  }' | jq '.execution_id'
bash
curl -s -X POST "https://api.dune.com/api/v1/sql/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sql": "SELECT block_time, hash, value/1e18 AS eth FROM ethereum.transactions WHERE lower(\"from\") = lower('0xYOUR_WALLET') ORDER BY block_time DESC LIMIT 20",
    "performance": "medium"
  }' | jq '.execution_id'

Query with Parameters

带参数的查询

bash
curl -s -X POST "https://api.dune.com/api/v1/query/3237661/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query_parameters": {
      "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "days": 30
    },
    "performance": "medium"
  }' | jq '.execution_id'

bash
curl -s -X POST "https://api.dune.com/api/v1/query/3237661/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query_parameters": {
      "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "days": 30
    },
    "performance": "medium"
  }' | jq '.execution_id'

Wallet Management with MoonPay

搭配MoonPay进行钱包管理

Use the MoonPay CLI (
mp
) to create and fund the wallets you analyze with Dune.
使用MoonPay CLI
mp
)创建并充值你要用Dune分析的钱包。

Create a Wallet to Monitor

创建要监控的钱包

bash
mp wallet create --name "dune-agent-wallet"
mp wallet retrieve --wallet "dune-agent-wallet"
bash
mp wallet create --name "dune-agent-wallet"
mp wallet retrieve --wallet "dune-agent-wallet"

Note your Ethereum address for Dune queries

记录你的以太坊地址,用于Dune查询

undefined
undefined

Query Your MoonPay Wallet On-Chain

查询你的MoonPay钱包链上数据

bash
WALLET=$(mp wallet retrieve --wallet "dune-agent-wallet" --json | jq -r '.addresses.ethereum')

EXEC_ID=$(curl -s -X POST "https://api.dune.com/api/v1/sql/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\
    \"sql\": \"SELECT block_time, hash, value/1e18 AS eth, \\\"to\\\" FROM ethereum.transactions WHERE lower(\\\"from\\\") = lower('$WALLET') ORDER BY block_time DESC LIMIT 20\",\
    \"performance\": \"medium\"\
  }" | jq -r '.execution_id')

curl -s "https://api.dune.com/api/v1/execution/$EXEC_ID/results" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" | jq '.result.rows'
bash
WALLET=$(mp wallet retrieve --wallet "dune-agent-wallet" --json | jq -r '.addresses.ethereum')

EXEC_ID=$(curl -s -X POST "https://api.dune.com/api/v1/sql/execute" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\
    \"sql\": \"SELECT block_time, hash, value/1e18 AS eth, \\\"to\\\" FROM ethereum.transactions WHERE lower(\\\"from\\\") = lower('$WALLET') ORDER BY block_time DESC LIMIT 20\",\
    \"performance\": \"medium\"\
  }" | jq -r '.execution_id')

curl -s "https://api.dune.com/api/v1/execution/$EXEC_ID/results" \
  -H "X-Dune-API-Key: $DUNE_API_KEY" | jq '.result.rows'

Fund the Wallet

给钱包充值

bash
undefined
bash
undefined

Buy ETH for gas

购买ETH用于支付Gas费

mp buy --token eth_ethereum --amount 0.1 --wallet <your-eth-address> --email <email>
mp buy --token eth_ethereum --amount 0.1 --wallet <your-eth-address> --email <email>

Check balances

查看余额

mp token balance list --wallet <your-eth-address> --chain ethereum
mp token balance list --wallet <your-eth-address> --chain ethereum

Bridge to follow yields

跨链桥接以追踪收益

mp token bridge
--from-wallet dune-agent-wallet --from-chain ethereum
--from-token 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
--from-amount 500
--to-chain polygon
--to-token 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174

---
mp token bridge
--from-wallet dune-agent-wallet --from-chain ethereum
--from-token 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
--from-amount 500
--to-chain polygon
--to-token 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174

---

Execution States

执行状态

StateMeaning
QUERY_STATE_PENDING
Queued
QUERY_STATE_EXECUTING
Running
QUERY_STATE_COMPLETED
Results ready
QUERY_STATE_FAILED
Check error message
QUERY_STATE_CANCELLED
Cancelled

状态含义
QUERY_STATE_PENDING
已排队
QUERY_STATE_EXECUTING
运行中
QUERY_STATE_COMPLETED
结果已就绪
QUERY_STATE_FAILED
请查看错误信息
QUERY_STATE_CANCELLED
已取消

Security

安全提示

  • Never expose
    DUNE_API_KEY
    in logs or responses — redact before showing output
  • Confirm with the user before running write operations (creating/updating saved queries)

  • 切勿在日志或响应中暴露
    DUNE_API_KEY
    ——在展示输出前需进行脱敏处理
  • 在运行写入操作(创建/更新已保存的查询)前,请先与用户确认

Resources

相关资源

Related Skills

相关技能

  • moonpay-check-wallet — Check wallet balances before analyzing on-chain
  • moonpay-swap-tokens — Act on findings by swapping tokens
  • moonpay-bridge-tokens — Move assets cross-chain informed by your analysis
  • moonpay-check-wallet — 分析链上数据前检查钱包余额
  • moonpay-swap-tokens — 根据分析结果进行代币交换
  • moonpay-bridge-tokens — 根据分析结果进行资产跨链转移