Dune 零基础完全手册

原文标题:Dune零基础入门指南原文作者:gerace、huisu、zhu原文来源:notion

目录

Dune 零基础完全手册

1. Dune是什么 @Huisu2022

1.1 Dune的主要功能

Dune支持链上数据的SQL查询、数据可视化、仪表盘搭建,还支持分享与团队协作。这些功能都是免费开放给所有用户的,用户保存的SQL及dashboard也都会公开在Dune网站中,也就是说你不仅可以自己查询,还可以看看别人在关注什么以及学习他人的分析方法。Dune最核心的功能是:

SQL查询数据:区块链上的数据都已被Dune获取并清洗,你只需要用简单的SQL语句就能查到想要的区块链数据。

Dune 零基础完全手册

查询结果可视化:通过SQL查询后结果会以表格的形式展示,但有时我们想要查看某个coin的价格变化趋势,表格的呈现方式不够清晰。Dune可以实现查询结果可视化,目前支持的可视化工具类型有:柱状图、面积图、散点图、连线表、饼图、计数器、表格。

Dune 零基础完全手册搭建dashboard进行数据监控:当你需要查看多维度的变化趋势,比如说想同时查看某Token的价格以及交易用户数是如何变化的,单一查询结果就不太能满足你的需求了。此时你可以使用Dune的Dashboard功能,将多个查询结果可视化后组装成dashboard。

Dune 零基础完全手册

1.2 Dune的小历史

Dune 零基础完全手册

Dune由位创始人:Fredrik Haga, Mats Olsen创立,最初只想做出一个有用的工具,随着大家对加密货币的关注日益增长,Dune不仅成为了区块链领域的重要工具之一,还获得投资机构的青睐,目前已进行到B轮融资,估值10亿美金。

Dune的两位创始人原本是同事关系,且都很认可Web3的金融模式,平时也会写智能合约等参与web3建设。Web2时代获取信息的成本很高,大公司以及投资机构除了在季度or年度披露一些信息外基本无法获取其他数据,而Web3数据具有open to everyone的特点。但是在日常查询、使用数据时,他们发现Etherscan展示的数据基本围绕在单笔交易,Uniswap也是如此:数据复杂度较高、单次操作可获取的信息很有限,很难追踪到数据的变化趋势。基于此,他们最初的想法是搭建类似google analytics的仪表盘,商业模式是售卖成品dashboard, 他们希望实现用户只需要点击几次就能获得想要的数据。创始人相继辞职后决定开始做产品,并在初期经常飞往各地去见那些在做cool stuff的人。

Dune问世2周时创始人就飞去ETH Berlin进行宣讲,在3个月后获得了首位客户:Dharma. 超出他们预期的是:**原本要出售的产品是成品dashboard,而客户只想要他们清洗过的数据,搭建看板等分析的过程由客户自行完成。**创始人表示:你想买什么我们就卖什么。最终交易内容是Dune每月发送清洗过的ETH数据给客户,获得$600的报酬。这笔交易让创始人更有动力做好产品了,因为在当时的加密领域里几乎没什么付费服务。

收获第一位客户之后创始人开始寻求融资,但一直在被拒绝,投资人认为,1) 目前加密行业不大,可使用这个工具的数据源很少; 2) Web3的数据本来就是公开的,你只是在公开数据的基础上搭了个看板而已,从商业模式上好像没有什么盈利点。在经历50+次被拒绝、创始人都准备开始找其他工作的时候,终于遇到了币安,将Dune纳入了孵化项目。Fredrik Haga在blog中写道:“在连续7个月没收入后,收到的四千美元工资是让我最激动的一次。”

Dune的成功与刚刚过去的牛市息息相关,把Dune的融资历程与BTC的价格曲线相对照,牛市情绪对它的融资帮助极大:

Dune 零基础完全手册

1.3 重视社区建设的Dune

Dune不仅是数据查询平台,社区建设也是非常重要的一部分。与用户建立连接,并通过自身功能让用户创作价值,最终不断吸引区块链数据分析爱好者共享知识、共同成长,同时也能不断提升产品自身的口碑。

Dune 零基础完全手册

“其实很长时间 Dune 是没有物质层面激励给到创作者的(有些项目方会有做 Dune 看板的诉求,项目方会给激励),在这种情况下社区建设做得很棒,这也是我认为 Dune 在社区建设上很牛逼的地方。” by @pandajackson42

在获得B轮融资后,Dune将加倍致力于实现加密数据的可访问性,并致力于为web3带来100万个Dune Wizards。(注:Dune Wizard是Dune对区块链分析师的称呼)

Dune接下来的计划主要有三点:

  1. 教学:我们将在教育资源上投入大量资金,以确保任何人都可以学习分析区块链数据所需的宝贵技能。
  2. 奖励:通过创建Dune dashboard等作品来为社区增加价值的个人或团队,会得到相应的奖励。
  3. 赋能:不断迭代Dune的功能,包括但不局限于更强大的搜索引擎、Dune API等,赋予分析师更强大分析工具及分析能力。

1.4 Dune的收费

Dune平台的基础查询功能都是免费的,同时也有付费版本来支持有额外需求的用户。会员价格为$390 Per month Per user, 功能明细见下表:

Dune 零基础完全手册

2. 如何在Dune进行数据查询 @GerGrace

2.1 Dune的数据源

Dune帮助你获取链上数据并生成数据看板的主要流程如下图。Dune完成了数据抓取、解析、标准化存储的部分,并且提供了自助的查询和可视化平台,而你需要使用SQL语言编写查询语句(query),利用你的查询结果生成数据图表(chart),然后把你生成的数据图表组合成数据看板(dashboard)。

Dune 零基础完全手册

对于链上数据(Public Blockchain),Dune的长远目标是支持所有的公共区块链数据,但是由于不同的链数据结构不同,处理新的链需要额外的时间。目前Dune主要支持两大生态:

  1. Ethereum,以及主要的EVM兼容链, 例如:polygon, BNB chain, Arbitrium, Optimism, Fantom, Avanlanche C-chain
  2. Solana

对于第三方数据(Third Party Data),目前主要是分析必备的价格数据,根据不同市场的实时价格按照交易量权重得出的平均值,以美元计价。该数据由 coinpaprika 提供,详见prices文档

2.2 Dune数据表详解

按照数据来源和数据处理程度,Dune目前提供的数据表主要有以下五类:

官方文档:https://dune.com/docs/tables/

Dune 零基础完全手册

普通用户通常不需要使用Raw Tables,因为未经整理。普通用户最容易理解的就是Abstractions数据表,例如查询erc20.view_token_balances_latest,可以直接得到每一个钱包里的每一个erc20 token的最新余额数据。Dune会不断的增加这类方便使用的抽象表。关于有哪些抽象表以及表的生成逻辑、字段含义,可查阅官方文档。这类抽象表,在Dune提供的最新V2数据库中,升级成了Spellbook。

Dune V2 升级了数据查询引擎,让查询速度更快,并且还提供了更合理的数据表目录,尤其是支持同一主题下的跨链数据查询。由于V2刚上线不久,数据内容还在完善中,本文主要仍然基于Dune V1介绍核心功能,关于V2的详细解释参见V2文档

Decoded Tables是数据表最核心的部分,Dune的核心价值就在于它们把链上数据进行了解析和标准化整理。如果最方便的Abstractions抽象表无法满足你的需求,你就需要进一步探索Decoded Tables。以下内容以Ethereum生态为例,讲解Dune的Decoded Tables。Dune通过调用智能合约的数据接口提取数据,然后把这些数据整理成为两大类:

  1. Call tables 合约函数调用表
  2. Event logs 合约事件日志表

2.2.1 Call Tables 合约函数调用表

在Ethereum,以及所有的EVM兼容链环境中,所有的token、dapp都是以智能合约的形式运行在链上,通过查询合约地址,你可以在etherscan上直观地看到每一个合约的接口内容。我们以uniswap为例:

1.在uniswap的官方文档中,我们可以看到uniswapV3包含多个智能合约如下:

Dune 零基础完全手册

2.我们复制”Quoter”这个合约的地址,在etherscan中查询,可看到所有接口:

Dune 零基础完全手册

3.我们发现其中一个接口叫做WETH9,相应的,在Dune中有一张数据表uniswap_v3.Quoter_call_WETH9, 它记录的就是这个接口的调用记录。

Dune 零基础完全手册

你会发现,Dune通过数据表命名的固定格式,帮助你快速定位到自己想查找的数据。这个格式的规律是:ProjectName.ContractName_call_FunctionName。所有的合约调用表,都会在表名中带有call标记。

对于这个示例来说,从字面意思上很容易可以推断出,这个接口记录的是WETH的报价。但并不是每个合约都能一眼看出用途,合约执行的函数也不会总是恰好跟接口一致。理解这些数据表最准确的信息还是需要详细查看合约代码(或者项目的官方文档提供了详细说明)。更多详情参见官方文档

2.2.2 Event logs 合约事件日志表

对于普通用户来说,很少需要用到Call tables, 因为调用合约时会登记该行为的日志记录,日志记录中的数据更加容易理解,并且也很完整。例如,在上文中提到的uniswapV3合约地址中,有一个”UniswapV3Factory”,在etherscan中查询它的代码中有一段如下,开头定义了function名为createPool, 末尾记录了一个行为 emit PoolCreated

Dune 零基础完全手册

执行这段代码会有两个标准行为,1. 调用函数 call function ,2. emit 产出的结果就是该事件的日志记录 event logs. 对应在Dune中,我们会找到两个数据表:

  1. 一个Call table , 名为 uniswap_v3.Factory_call_createPool
  2. 一个Event log 表,名为 uniswap_v3.Factory_evt_PoolCreated

仔细对比观察etherscan上的code内容,和Dune上的event数据表,你会发现:

  1. Event表命名的标准格式是ProjectName.ContractName_evt_EventName 。所有事件表中都带有evt字样。
  2. 这个事件表的字段(data field),与上图合约代码中,emit行为后括号中列出的字段基本一致,只是增加了contract_address, evet_block_number, evt_time, evt_index, evt_tx_hash这五个字段。而这五个字段都是通用型的标记信息:contract_address里面标记的就是factory这个合约的地址,其余的字段登记交易发生的block信息等。
  3. 对于evt_tx_hash这个字段,从字面含义我们可以知道,它就是这笔交易的hash值。每一条交易都会产生一个hash值,hash是通过一种算法随机生成的一串数字,算法保证了每一次生成的数字都是独一无二的,不会重复,因此hash值就是查询交易记录的唯一标识。在事件表中随便挑一个hash,把前面的””改成”0″, 再粘贴到etherscan里,可以在你熟悉的界面上对照查看这笔交易的信息,方便你快速理解这张数据表的其它字段(data field)。

以上是关于事件表的基本逻辑解释,在实际录入数据时还会有一些复杂的细节处理,详情参见官方文档

2.3 Query和SQL

2.3.1 找到你需要的数据表

打开查询页面,在左上角首先需要选择数据库。图上的1-6选项,都是DuneV1数据库,7是V2数据库,还在测试状态中。

Dune 零基础完全手册

对于V1数据库,你需要先选择想查询的链,然后依靠搜索表名关键词找到你想要的数据表。所以理解2.2中的标准化表名命名规则很重要。

而V2 数据库对数据表做了更清晰的分组,更容易阅读。不过在decoded类别中的数据表同样遵循2.2中解释的标准化表名命名规则。

Dune 零基础完全手册

2.3.2 运用SQL编写Query

如果你已经很熟悉如何运用SQL进行数据查询,那么Dune提供的Query查询界面与主流产品非常一致。如果完全不懂SQL语言,如何能够在Dune上查到自己想要的数据呢?首先,在完全不理解SQL语言的情况之下,基本只能直接运行别人写好的sql语句,想要自己创建新的查询恐怕是不太可能的。但是,好在SQL是一门非常贴近自然语言的编程语言,花一点时间学会使用基础的SQL语言是完全可行的。

Dune V1使用postgreSQL,V2使用Databricks SQL。所有的SQL语言都是高度相似的,只是不同的数据库软件平台运用的语法规则有细微的差别,就好像英国英语和美国英语的差别一样,你学会任意一种SQL就有能力运用所有类型的SQL。

SQL查询的基本原理,是使用一段查询语句,从一个或多个源数据表,提取数据进行重新排列组合,并得到一张结果数据表。你查询的数据表可以有多个,但是你得到的结果数据表只有一个,就如我们的流程图中所示:

Dune 零基础完全手册

下文将以V1的postgreSQL为例简介基本原理。postgreSQL适用于查询关系型数据库(relational database)。如果你要同时查询多个数据表,那么这些数据表必然是存在某种联系,才能让数据整合在一起。

Sample 1 单表查询

我们在2.2示范过, uniswap V3的factory合约里,一条PoolCreated事件的记录,该事件的基本信息如下:

hash: 0xd8e3f5f4c49462ba320052c678bdc56751f1d30147a01007b5f110783b43e381

etherscan显示结果:https://etherscan.io/tx/0xd8e3f5f4c49462ba320052c678bdc56751f1d30147a01007b5f110783b43e381

我们通过以下这条SQL在Dune的事件表中找到这条记录(记得把hash前面的”0″改成””):

Dune 零基础完全手册

  1. SELECT 动作指明了我要求查询结果要展示四个字段,分别是事件的hash,时间发生的时间,事件涉及的两个token
  2. FROM 动作指明了我要求查询的数据表名称
  3. WHERE 动作指明了我查询时的筛选条件:只想找到evt_tx_hash等于我想要的那一条

查询得出的结果如下,我们把这个表命名为 table1

Dune 零基础完全手册

这条数据表示,在“2021-07-29 10:25”,在uniswap V3创建了一个pool,token0, token1记录了组成这个pool的两个token。现在,我们还想知道,在创建这个pool的时刻,token0的价格多少?

Sample 2 多表查询

首先,我们把token0的地址放入价格表中,查询它是什么token,以及它在“2021-07-29 10:25”的价格。

Dune 零基础完全手册

查询得出结果如下,我们把这个表命名为 table2

Dune 零基础完全手册

如果我想要通过一次查询,同时得出创建pool的记录,并附上token0的价格。此时,在查询前,我只知道evt_tx_hash值,其余信息未知,我需要把table1 和 table2 关联起来同时查询。关联的条件是,table1的token0 = table2的contract_address, 并且,table1的evt_block_time = table2的minute。

Dune 零基础完全手册

  1. WITH…AS 定义了table1 和 table2
  2. LEFT JOIN…ON 把table1 和table2 用两个条件关联起来。在关联evt_block_time和minute时,使用date_trunc()函数首先统一了它们的数据格式。通常时间类型的数据都需要特别注意数据格式。

于是我们得到下表,其中前三个字段来自table1,后两个字段来自table2。查看Query

Dune 零基础完全手册

以上是基本概念的简介,其它详细的SQL语法、用法,包括关于数据库和数据表的基础知识等,都可以在postgresql的官方文档中找到。通常普通用户不需要了解如何管理数据库、删除数据等内容,只需要了解如何查询,尤其是其中的query一节

3. 常用看板和查询Tips @ZHUZHOU13

3.1 Defi主题看板

dex上交易池的相关数据

在界面上方输入池子的合约,可以看到池子的相关数据:交易量/交易费/无常损失/流动性挖矿净利率等,以usdc-weth池子为例:

Dune 零基础完全手册

usdc-weth交易池的情况,左图为池子的总锁仓量,右图为两个代币的价格。随着weth价格的下跌,池子锁仓量也下降。在六月份的时候锁仓量加速下降,说明有人赎回提供的usdc-weth代币对并且卖出weth,抛压得到缓解,weth暂时止跌。

Dune 零基础完全手册

左图为池子里usdc的数量,右图为weth的数量。6月之后,在weth横盘的期间,池子的锁仓量上涨了。图中显示池子中的weth数量越来越多,在市场上的流通量减少,能防止价格进一步下跌。

Dune 零基础完全手册

当前池子流动性挖矿的净利率,如果数值大于weth在链上其他投资的收益就可以决定为这个池子提供流动性。

3.2 NFT主题看板

opensea市场概览

在不同链上opensea的交易量/用户数/nft项目数量

Dune 零基础完全手册

图中数据为opensea在ethereum上的月交易量。六月份opensea在ethereum上的交易量大幅下降,市场进入熊市。

Dune 零基础完全手册

左图为opensea上nft项目在ethereum上的月销售量,右图为交易费用。六月份的时候交易费/销售量的大幅下降,说明在熊市期间大多数项目的单价下降,用户会购买更便宜的nft。

Dune 零基础完全手册

左图opensea在solana上的日交易量,右图为交易次数。交易量/交易次数的上涨说明solana上的nft价格是上涨的。

单个nft项目分析

输入项目的合约地址,可以看到项目的基本数据:交易量/nft数量/地板价/mint价格/交易版税/持有人

Dune 零基础完全手册

Dune 零基础完全手册

单个nft出售的具体数据,点击buyer/seller前面的黄圈,可以查看此钱包持有的nft和erc20代币/mint过的nft/买卖nft的交易数据/在defi上的交易数据/花费的gas。点击token前面的小船,可以看见此nft在交易平台上的信息。TX是交易哈希。

Dune 零基础完全手册

该项目的平均获利额以及平均持有时间。

Dune 零基础完全手册

该项目持有者和BAYC持有者的重叠情况,重叠人数越多,价格上涨可能性就比较大。

3.3 常用基础查询

查询价格一般用prices.usd这个表格

Dune 零基础完全手册

如果要查询的代币不在prices.usd表格里,则用dex.view_token_prices

Dune 零基础完全手册

使用dex.trades表格可以查看dex交易的相关数据:

查询不同dex的交易量

Dune 零基础完全手册

责编:Lynn

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
上一篇 2022年10月5日 下午10:24
下一篇 2022年10月5日 下午10:29

相关推荐

Dune 零基础完全手册

星期三 2022-10-05 22:27:17

目录

Dune 零基础完全手册

1. Dune是什么 @Huisu2022

1.1 Dune的主要功能

Dune支持链上数据的SQL查询、数据可视化、仪表盘搭建,还支持分享与团队协作。这些功能都是免费开放给所有用户的,用户保存的SQL及dashboard也都会公开在Dune网站中,也就是说你不仅可以自己查询,还可以看看别人在关注什么以及学习他人的分析方法。Dune最核心的功能是:

SQL查询数据:区块链上的数据都已被Dune获取并清洗,你只需要用简单的SQL语句就能查到想要的区块链数据。

Dune 零基础完全手册

查询结果可视化:通过SQL查询后结果会以表格的形式展示,但有时我们想要查看某个coin的价格变化趋势,表格的呈现方式不够清晰。Dune可以实现查询结果可视化,目前支持的可视化工具类型有:柱状图、面积图、散点图、连线表、饼图、计数器、表格。

Dune 零基础完全手册搭建dashboard进行数据监控:当你需要查看多维度的变化趋势,比如说想同时查看某Token的价格以及交易用户数是如何变化的,单一查询结果就不太能满足你的需求了。此时你可以使用Dune的Dashboard功能,将多个查询结果可视化后组装成dashboard。

Dune 零基础完全手册

1.2 Dune的小历史

Dune 零基础完全手册

Dune由位创始人:Fredrik Haga, Mats Olsen创立,最初只想做出一个有用的工具,随着大家对加密货币的关注日益增长,Dune不仅成为了区块链领域的重要工具之一,还获得投资机构的青睐,目前已进行到B轮融资,估值10亿美金。

Dune的两位创始人原本是同事关系,且都很认可Web3的金融模式,平时也会写智能合约等参与web3建设。Web2时代获取信息的成本很高,大公司以及投资机构除了在季度or年度披露一些信息外基本无法获取其他数据,而Web3数据具有open to everyone的特点。但是在日常查询、使用数据时,他们发现Etherscan展示的数据基本围绕在单笔交易,Uniswap也是如此:数据复杂度较高、单次操作可获取的信息很有限,很难追踪到数据的变化趋势。基于此,他们最初的想法是搭建类似google analytics的仪表盘,商业模式是售卖成品dashboard, 他们希望实现用户只需要点击几次就能获得想要的数据。创始人相继辞职后决定开始做产品,并在初期经常飞往各地去见那些在做cool stuff的人。

Dune问世2周时创始人就飞去ETH Berlin进行宣讲,在3个月后获得了首位客户:Dharma. 超出他们预期的是:**原本要出售的产品是成品dashboard,而客户只想要他们清洗过的数据,搭建看板等分析的过程由客户自行完成。**创始人表示:你想买什么我们就卖什么。最终交易内容是Dune每月发送清洗过的ETH数据给客户,获得$600的报酬。这笔交易让创始人更有动力做好产品了,因为在当时的加密领域里几乎没什么付费服务。

收获第一位客户之后创始人开始寻求融资,但一直在被拒绝,投资人认为,1) 目前加密行业不大,可使用这个工具的数据源很少; 2) Web3的数据本来就是公开的,你只是在公开数据的基础上搭了个看板而已,从商业模式上好像没有什么盈利点。在经历50+次被拒绝、创始人都准备开始找其他工作的时候,终于遇到了币安,将Dune纳入了孵化项目。Fredrik Haga在blog中写道:“在连续7个月没收入后,收到的四千美元工资是让我最激动的一次。”

Dune的成功与刚刚过去的牛市息息相关,把Dune的融资历程与BTC的价格曲线相对照,牛市情绪对它的融资帮助极大:

Dune 零基础完全手册

1.3 重视社区建设的Dune

Dune不仅是数据查询平台,社区建设也是非常重要的一部分。与用户建立连接,并通过自身功能让用户创作价值,最终不断吸引区块链数据分析爱好者共享知识、共同成长,同时也能不断提升产品自身的口碑。

Dune 零基础完全手册

“其实很长时间 Dune 是没有物质层面激励给到创作者的(有些项目方会有做 Dune 看板的诉求,项目方会给激励),在这种情况下社区建设做得很棒,这也是我认为 Dune 在社区建设上很牛逼的地方。” by @pandajackson42

在获得B轮融资后,Dune将加倍致力于实现加密数据的可访问性,并致力于为web3带来100万个Dune Wizards。(注:Dune Wizard是Dune对区块链分析师的称呼)

Dune接下来的计划主要有三点:

  1. 教学:我们将在教育资源上投入大量资金,以确保任何人都可以学习分析区块链数据所需的宝贵技能。
  2. 奖励:通过创建Dune dashboard等作品来为社区增加价值的个人或团队,会得到相应的奖励。
  3. 赋能:不断迭代Dune的功能,包括但不局限于更强大的搜索引擎、Dune API等,赋予分析师更强大分析工具及分析能力。

1.4 Dune的收费

Dune平台的基础查询功能都是免费的,同时也有付费版本来支持有额外需求的用户。会员价格为$390 Per month Per user, 功能明细见下表:

Dune 零基础完全手册

2. 如何在Dune进行数据查询 @GerGrace

2.1 Dune的数据源

Dune帮助你获取链上数据并生成数据看板的主要流程如下图。Dune完成了数据抓取、解析、标准化存储的部分,并且提供了自助的查询和可视化平台,而你需要使用SQL语言编写查询语句(query),利用你的查询结果生成数据图表(chart),然后把你生成的数据图表组合成数据看板(dashboard)。

Dune 零基础完全手册

对于链上数据(Public Blockchain),Dune的长远目标是支持所有的公共区块链数据,但是由于不同的链数据结构不同,处理新的链需要额外的时间。目前Dune主要支持两大生态:

  1. Ethereum,以及主要的EVM兼容链, 例如:polygon, BNB chain, Arbitrium, Optimism, Fantom, Avanlanche C-chain
  2. Solana

对于第三方数据(Third Party Data),目前主要是分析必备的价格数据,根据不同市场的实时价格按照交易量权重得出的平均值,以美元计价。该数据由 coinpaprika 提供,详见prices文档

2.2 Dune数据表详解

按照数据来源和数据处理程度,Dune目前提供的数据表主要有以下五类:

官方文档:https://dune.com/docs/tables/

Dune 零基础完全手册

普通用户通常不需要使用Raw Tables,因为未经整理。普通用户最容易理解的就是Abstractions数据表,例如查询erc20.view_token_balances_latest,可以直接得到每一个钱包里的每一个erc20 token的最新余额数据。Dune会不断的增加这类方便使用的抽象表。关于有哪些抽象表以及表的生成逻辑、字段含义,可查阅官方文档。这类抽象表,在Dune提供的最新V2数据库中,升级成了Spellbook。

Dune V2 升级了数据查询引擎,让查询速度更快,并且还提供了更合理的数据表目录,尤其是支持同一主题下的跨链数据查询。由于V2刚上线不久,数据内容还在完善中,本文主要仍然基于Dune V1介绍核心功能,关于V2的详细解释参见V2文档

Decoded Tables是数据表最核心的部分,Dune的核心价值就在于它们把链上数据进行了解析和标准化整理。如果最方便的Abstractions抽象表无法满足你的需求,你就需要进一步探索Decoded Tables。以下内容以Ethereum生态为例,讲解Dune的Decoded Tables。Dune通过调用智能合约的数据接口提取数据,然后把这些数据整理成为两大类:

  1. Call tables 合约函数调用表
  2. Event logs 合约事件日志表

2.2.1 Call Tables 合约函数调用表

在Ethereum,以及所有的EVM兼容链环境中,所有的token、dapp都是以智能合约的形式运行在链上,通过查询合约地址,你可以在etherscan上直观地看到每一个合约的接口内容。我们以uniswap为例:

1.在uniswap的官方文档中,我们可以看到uniswapV3包含多个智能合约如下:

Dune 零基础完全手册

2.我们复制”Quoter”这个合约的地址,在etherscan中查询,可看到所有接口:

Dune 零基础完全手册

3.我们发现其中一个接口叫做WETH9,相应的,在Dune中有一张数据表uniswap_v3.Quoter_call_WETH9, 它记录的就是这个接口的调用记录。

Dune 零基础完全手册

你会发现,Dune通过数据表命名的固定格式,帮助你快速定位到自己想查找的数据。这个格式的规律是:ProjectName.ContractName_call_FunctionName。所有的合约调用表,都会在表名中带有call标记。

对于这个示例来说,从字面意思上很容易可以推断出,这个接口记录的是WETH的报价。但并不是每个合约都能一眼看出用途,合约执行的函数也不会总是恰好跟接口一致。理解这些数据表最准确的信息还是需要详细查看合约代码(或者项目的官方文档提供了详细说明)。更多详情参见官方文档

2.2.2 Event logs 合约事件日志表

对于普通用户来说,很少需要用到Call tables, 因为调用合约时会登记该行为的日志记录,日志记录中的数据更加容易理解,并且也很完整。例如,在上文中提到的uniswapV3合约地址中,有一个”UniswapV3Factory”,在etherscan中查询它的代码中有一段如下,开头定义了function名为createPool, 末尾记录了一个行为 emit PoolCreated

Dune 零基础完全手册

执行这段代码会有两个标准行为,1. 调用函数 call function ,2. emit 产出的结果就是该事件的日志记录 event logs. 对应在Dune中,我们会找到两个数据表:

  1. 一个Call table , 名为 uniswap_v3.Factory_call_createPool
  2. 一个Event log 表,名为 uniswap_v3.Factory_evt_PoolCreated

仔细对比观察etherscan上的code内容,和Dune上的event数据表,你会发现:

  1. Event表命名的标准格式是ProjectName.ContractName_evt_EventName 。所有事件表中都带有evt字样。
  2. 这个事件表的字段(data field),与上图合约代码中,emit行为后括号中列出的字段基本一致,只是增加了contract_address, evet_block_number, evt_time, evt_index, evt_tx_hash这五个字段。而这五个字段都是通用型的标记信息:contract_address里面标记的就是factory这个合约的地址,其余的字段登记交易发生的block信息等。
  3. 对于evt_tx_hash这个字段,从字面含义我们可以知道,它就是这笔交易的hash值。每一条交易都会产生一个hash值,hash是通过一种算法随机生成的一串数字,算法保证了每一次生成的数字都是独一无二的,不会重复,因此hash值就是查询交易记录的唯一标识。在事件表中随便挑一个hash,把前面的””改成”0″, 再粘贴到etherscan里,可以在你熟悉的界面上对照查看这笔交易的信息,方便你快速理解这张数据表的其它字段(data field)。

以上是关于事件表的基本逻辑解释,在实际录入数据时还会有一些复杂的细节处理,详情参见官方文档

2.3 Query和SQL

2.3.1 找到你需要的数据表

打开查询页面,在左上角首先需要选择数据库。图上的1-6选项,都是DuneV1数据库,7是V2数据库,还在测试状态中。

Dune 零基础完全手册

对于V1数据库,你需要先选择想查询的链,然后依靠搜索表名关键词找到你想要的数据表。所以理解2.2中的标准化表名命名规则很重要。

而V2 数据库对数据表做了更清晰的分组,更容易阅读。不过在decoded类别中的数据表同样遵循2.2中解释的标准化表名命名规则。

Dune 零基础完全手册

2.3.2 运用SQL编写Query

如果你已经很熟悉如何运用SQL进行数据查询,那么Dune提供的Query查询界面与主流产品非常一致。如果完全不懂SQL语言,如何能够在Dune上查到自己想要的数据呢?首先,在完全不理解SQL语言的情况之下,基本只能直接运行别人写好的sql语句,想要自己创建新的查询恐怕是不太可能的。但是,好在SQL是一门非常贴近自然语言的编程语言,花一点时间学会使用基础的SQL语言是完全可行的。

Dune V1使用postgreSQL,V2使用Databricks SQL。所有的SQL语言都是高度相似的,只是不同的数据库软件平台运用的语法规则有细微的差别,就好像英国英语和美国英语的差别一样,你学会任意一种SQL就有能力运用所有类型的SQL。

SQL查询的基本原理,是使用一段查询语句,从一个或多个源数据表,提取数据进行重新排列组合,并得到一张结果数据表。你查询的数据表可以有多个,但是你得到的结果数据表只有一个,就如我们的流程图中所示:

Dune 零基础完全手册

下文将以V1的postgreSQL为例简介基本原理。postgreSQL适用于查询关系型数据库(relational database)。如果你要同时查询多个数据表,那么这些数据表必然是存在某种联系,才能让数据整合在一起。

Sample 1 单表查询

我们在2.2示范过, uniswap V3的factory合约里,一条PoolCreated事件的记录,该事件的基本信息如下:

hash: 0xd8e3f5f4c49462ba320052c678bdc56751f1d30147a01007b5f110783b43e381

etherscan显示结果:https://etherscan.io/tx/0xd8e3f5f4c49462ba320052c678bdc56751f1d30147a01007b5f110783b43e381

我们通过以下这条SQL在Dune的事件表中找到这条记录(记得把hash前面的”0″改成””):

Dune 零基础完全手册

  1. SELECT 动作指明了我要求查询结果要展示四个字段,分别是事件的hash,时间发生的时间,事件涉及的两个token
  2. FROM 动作指明了我要求查询的数据表名称
  3. WHERE 动作指明了我查询时的筛选条件:只想找到evt_tx_hash等于我想要的那一条

查询得出的结果如下,我们把这个表命名为 table1

Dune 零基础完全手册

这条数据表示,在“2021-07-29 10:25”,在uniswap V3创建了一个pool,token0, token1记录了组成这个pool的两个token。现在,我们还想知道,在创建这个pool的时刻,token0的价格多少?

Sample 2 多表查询

首先,我们把token0的地址放入价格表中,查询它是什么token,以及它在“2021-07-29 10:25”的价格。

Dune 零基础完全手册

查询得出结果如下,我们把这个表命名为 table2

Dune 零基础完全手册

如果我想要通过一次查询,同时得出创建pool的记录,并附上token0的价格。此时,在查询前,我只知道evt_tx_hash值,其余信息未知,我需要把table1 和 table2 关联起来同时查询。关联的条件是,table1的token0 = table2的contract_address, 并且,table1的evt_block_time = table2的minute。

Dune 零基础完全手册

  1. WITH…AS 定义了table1 和 table2
  2. LEFT JOIN…ON 把table1 和table2 用两个条件关联起来。在关联evt_block_time和minute时,使用date_trunc()函数首先统一了它们的数据格式。通常时间类型的数据都需要特别注意数据格式。

于是我们得到下表,其中前三个字段来自table1,后两个字段来自table2。查看Query

Dune 零基础完全手册

以上是基本概念的简介,其它详细的SQL语法、用法,包括关于数据库和数据表的基础知识等,都可以在postgresql的官方文档中找到。通常普通用户不需要了解如何管理数据库、删除数据等内容,只需要了解如何查询,尤其是其中的query一节

3. 常用看板和查询Tips @ZHUZHOU13

3.1 Defi主题看板

dex上交易池的相关数据

在界面上方输入池子的合约,可以看到池子的相关数据:交易量/交易费/无常损失/流动性挖矿净利率等,以usdc-weth池子为例:

Dune 零基础完全手册

usdc-weth交易池的情况,左图为池子的总锁仓量,右图为两个代币的价格。随着weth价格的下跌,池子锁仓量也下降。在六月份的时候锁仓量加速下降,说明有人赎回提供的usdc-weth代币对并且卖出weth,抛压得到缓解,weth暂时止跌。

Dune 零基础完全手册

左图为池子里usdc的数量,右图为weth的数量。6月之后,在weth横盘的期间,池子的锁仓量上涨了。图中显示池子中的weth数量越来越多,在市场上的流通量减少,能防止价格进一步下跌。

Dune 零基础完全手册

当前池子流动性挖矿的净利率,如果数值大于weth在链上其他投资的收益就可以决定为这个池子提供流动性。

3.2 NFT主题看板

opensea市场概览

在不同链上opensea的交易量/用户数/nft项目数量

Dune 零基础完全手册

图中数据为opensea在ethereum上的月交易量。六月份opensea在ethereum上的交易量大幅下降,市场进入熊市。

Dune 零基础完全手册

左图为opensea上nft项目在ethereum上的月销售量,右图为交易费用。六月份的时候交易费/销售量的大幅下降,说明在熊市期间大多数项目的单价下降,用户会购买更便宜的nft。

Dune 零基础完全手册

左图opensea在solana上的日交易量,右图为交易次数。交易量/交易次数的上涨说明solana上的nft价格是上涨的。

单个nft项目分析

输入项目的合约地址,可以看到项目的基本数据:交易量/nft数量/地板价/mint价格/交易版税/持有人

Dune 零基础完全手册

Dune 零基础完全手册

单个nft出售的具体数据,点击buyer/seller前面的黄圈,可以查看此钱包持有的nft和erc20代币/mint过的nft/买卖nft的交易数据/在defi上的交易数据/花费的gas。点击token前面的小船,可以看见此nft在交易平台上的信息。TX是交易哈希。

Dune 零基础完全手册

该项目的平均获利额以及平均持有时间。

Dune 零基础完全手册

该项目持有者和BAYC持有者的重叠情况,重叠人数越多,价格上涨可能性就比较大。

3.3 常用基础查询

查询价格一般用prices.usd这个表格

Dune 零基础完全手册

如果要查询的代币不在prices.usd表格里,则用dex.view_token_prices

Dune 零基础完全手册

使用dex.trades表格可以查看dex交易的相关数据:

查询不同dex的交易量

Dune 零基础完全手册

责编:Lynn