风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

Dune 零基础完全手册

区块链最大的特点之一就是数据公开透明,然而普通用户想要自行分析链上数据仍然很难,好在有链上数据分析神器Dune.com提供了基础的数据服务。本文旨在提供完全零基础的Dune入门指南,让所有人都能把Dune用起来。

gerace、huisu、zhu
gerace、huisu、zhu
热度 ...

原文标题:Dune零基础入门指南

原文作者:gerace、huisu、zhu

原文来源:notion

目录

分析

1. Dune是什么 @Huisu2022

1.1 Dune的主要功能

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

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

分析

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

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

分析

1.2 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的价格曲线相对照,牛市情绪对它的融资帮助极大:

分析

1.3 重视社区建设的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, 功能明细见下表:

分析

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

2.1 Dune的数据源

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

分析

对于链上数据(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/

分析

普通用户通常不需要使用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包含多个智能合约如下:

分析

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

分析

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

分析

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

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

2.2.2 Event logs 合约事件日志表

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

分析

执行这段代码会有两个标准行为,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数据库,还在测试状态中。


分析

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

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

分析

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 零基础完全手册】的延伸阅读

  • 走近BTC:理解BitVM所需的背景知识(1)

    Delphi Digital发布了比特币二层技术研报,介绍了比特币Rollup和四大采用BitVM的项目。BitVM利用MATT思想,将复杂程序和数据存储在链下的Merkle树中,只发布Merkle Root到链上,实现比特币原生的验证欺诈证明。比特币脚本和Taproot以及预签名是实现这一方案的重要技术。P2SH交易类型中可以添加Script,比特币节点会验证公钥和公钥hash是否匹配,以及数字签名是否正确。隔离见证/SegWit升级解决了交易延展性问题,P2WSH功能与P2SH相似。Taproot可精简脚本内容,BitVM基于此构建复杂方案。下一篇文章将详细介绍Taproot、预签名等技术。

  • 一张蛋糕蜡烛图,带你快速了解链抽象的关键要素

    本文介绍了链抽象的概念,旨在为用户提供无缝的跨链操作体验。该框架由四部分组成,涉及复杂的技术以确保可靠性、成本效益、安全性、速度和隐私。作者提出了六种设计方案来解决跨链三难困境,并介绍了CAKE框架的三个基础设施层。最后,作者强调了实现链抽象的关键设计决策,包括谁控制执行意图的权力、向求解器披露什么信息以及有哪些结算路径可供求解器使用。钱包、求解器层和跨链预言机是实现链抽象的关键组成部分。为了解决跨链三难问题,需要统一的跨链意图表达标准。

下文将以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"改成"\"):

分析

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

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

分析

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

Sample 2 多表查询

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

分析

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

分析

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

分析

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

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

分析

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

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

3.1 Defi主题看板

dex上交易池的相关数据

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

分析

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

分析

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

分析

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

3.2 NFT主题看板

opensea市场概览

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

分析

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

分析

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

分析

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

单个nft项目分析

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

分析

分析

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

分析

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

分析

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

3.3 常用基础查询

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

分析

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

分析

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

查询不同dex的交易量

分析

责编:Lynn

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:gerace、huisu、zhu,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1691116758.html

下一篇:

Bankless:空投终极指南

DeFi协议正逐步地转向代币空投,以使治理去中心化,并推动早期用户的参与。项目经常 " 追溯性 "地进行这些空投,这意味着他们根据你过去与系统交互的多少来发放空投。所以,本文会介绍一些新的协议。

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5