本文介绍如何在 Dune 上使用 SQL 进行 Web3 数据的探索和分析。
用熟悉的语言学习 Web3 开发 :Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart
我想相信,你不是误会在这里。你想知道如何在 web3 中成为一名高效的数据分析师。你是在尝试构建 Web3 分析仪表板还是只是对 web3 数据感兴趣?不管怎样,欢迎!
作为数据人,Web3 数据中最具挑战性的部分是理解数据本身。根据我的经验,让我感到轻松的一件事是将每个都视为一个巨大的数据仓库,并将以太坊区块链之上的协议视为仓库中包含多个表和视图的各种模式。PS:这也适用于其他区块链。
对于本文,我将尝试使用以下主题使事情简洁并突出它们:
Web3 数据流和全景:了解 Web3、去中心化数据存储、用于解码交易数据的工具:工具概述以及 web3 数据堆栈,以及如何利用它们让我们开始吧!
1、Web3 数据流web3 的关键在于变得更加独立和自主。
这是通过区块链和分布式对等网络而不是服务器-客户端关系来实现的。这使得数据流和格式与我们在 Web2 中习惯的不同。
通过研究,我发现了像Dune Analytics和Flipside Crypto这样的数据映射器,它们具有解码的区块链数据和内置的可视化工具,供对 Web3 感兴趣的数据科学家使用和构建。
上图显示了从不同的区块链模式中提取数据进行分析的不同方式,在这种情况下以以太坊为例。
如果你曾经在以太坊(或任何支持智能合约的区块链)上进行过交易,那么可能已经在区块浏览器上查看过它并看到了以下信息:
学习阅读交易细节将是所有以太坊数据分析和知识的基础,但了解通证和交易数据的流动很重要。
2、解读 Web3 数据我可能倾向于使用以太坊区块链来解读区块链数据,但从经验来看,当你了解如何在智能合约上存储和管理数据时,以太坊更容易理解。话虽如此,重要的是要注意我将要讨论的许多概念将广泛适用于所有与 EVM 兼容的链和智能合约,例如 Polygon、Fantom Opera、BSC、Arbitrum One 等。
智能合约交易类似于智能合约驱动的 web3 应用程序中的后端 API 调用。智能合约活动的详细信息及其导致的应用程序状态更改记录在称为交易、调用和日志的数据元素中。交易数据元素代表用户发起的函数调用(或者更准确地说是EOA),调用数据元素代表智能合约在交易中发起的附加函数调用,日志数据元素代表在交易过程中发生的事件,交易执行。
要了解以太坊区块链上的交易数据,我们可以尝试使用Etherscan(作为交易示例的基础,我使用了 Mirror Crowdfund 合约)。这就像检查汽车的仪表板以寻找解决汽车问题的指针,但作为数据科学家,我们必须打开汽车的引擎盖并了解幕后发生的事情。
通常有 3 种不同类型的交易:
以基础货币形式将价值从一个用户 (EOA) 转移到另一个用户,例如 John 在以太坊网络上发送 Jane 3 ETH由 EOA 创建智能合约,例如 Jack 将代码提交到区块链上的地址,创建智能合约,一旦一定数量的资源转移到卖方的账户(或钱包), 智能合约将转移 NFT 的所有权。EOA 调用智能合约,例如 Jane 调用 Jack 的智能合约以将 999ETH 换成 NFT。当用户在区块链上发出请求时,幕后发生的事情是:
与用户关联的 EOA 启动交易,该交易指定目标智能合约地址、目标函数、该函数的参数、交易支付(如果有)以及它愿意支付 的 gas 费用(如果有)。交易被广播到网络,并由愿意执行目标智能合约中指定功能的矿工拾取。如果执行成功,智能合约会发出事件来标记某些里程碑的完成。生成的事件数据结构称为“日志”。目标智能合约可能会向其他智能合约发起内部交易(额外调用)。这些内部事务创建称为“跟踪”的数据结构,并且还可能在它们 各自的执行期间发出额外的日志事件。 3、Web3数据的结构方式现在你已经了解了幕后发生的活动和相应的数据元素。现在是详细列出构成 web3 格局的各种元素的时候了。交易和跟踪数据结构按此顺序包含智能合约函数调用的详细信息;
在区块链上,每笔交易都有一个唯一的哈希“交易哈希”,其中包含各种交易细节。例如,我们可以在此处查找哈希为0xbe3b109b857e8897cbe3c2a261d8072546ae693662422a1b93fe1a3a990dfded 交易。
From
是交易的发送方,To
是交易的接收方,也可以是合约地址。在这种情况下,它是从0x83ebd57bf4f22cba9c4a624a69c910d7c8619ee2到CROWDFUND_EDITIONSToken的转移Value是转移的 ETH 值。有时 ETH 值可以为 0。Transaction Fee = Gas Used by Transaction * Gas Price 。可以在此处找到与以太坊 gas 相关的更多详细信息。输入数据包含有关交易的附加信息。在这种情况下,它是一个传递函数,其中包含交易的地址和价值等详细信息。 数据本身是字节码,在Dune上有bytes数据类型。前 8 个字符
0xa22cb465
是函数签名的 MethodId
,它并不总是唯一的(但应该)。随后的每 64 个字符是一个不同的输入变量。这里我们有两个,对应于to address
和value
。
基于以上信息,我们可以使用以下查询来拉取Dune上的数据——
4、访问 Web3 数据现在我们已经对 Web3 数据的元素、它的外观有了很好的了解,并且已经查询了我们在区块链上的第一个交易数据,你可能想知道如何快速熟悉协议及其数据。有很多很棒的工具可以帮助解决这个问题。
如前所述,使用区块浏览器是深入了解区块链交易的好方法。区块浏览器是在线浏览器,可以显示区块链网络上曾经发生的所有交易的详细信息。参见上面的截图示例,重要的是要知道所有主要的区块链都有浏览器——突出的例子包括Etherscan、Polygonscan、BSCScan、Solana beach等
尽管区块浏览器非常适合查询区块链分类帐中的单个记录,但它们不适合回答需要聚合或转换数据的问题。例如,如果你想知道过去 3 个月通过 Opensea 交易所卖出了多少 NFT,或者想知道从 Coinbase
到 Axie Infinity
的交易流动频率,仅使用区块浏览器很难回答这个问题。为此,需要直接访问数据。这已在我之前的帖子中介绍过。
Dune分析是访问和分析区块链数据的绝佳资源。在撰写本文时,它拥有以太坊、Solana、Xdai、Polygon、Optimism 和 BSC 的原始数据和解码数据。它提供了一个用于查询数据集的 PostgreSQL 界面和一个简单的点击界面,用于在查询结果之上创建简单的仪表板。Dune 上的用户社区也非常活跃,并生成了大量示例查询和仪表板库以供学习。以下是在Dube上创建的几个示例分析:
Solana NFT 交易概述OpenSea 市场分析Eth2 流动性质押如果你是 SQL 的新手,我会推荐这些有用的技巧和指南以用于Dune分析。
5.1 内联以太坊地址在 Dune 中工作时,以太坊地址存储为 PostgresSQL 字节数组,这些字节数组使用\x前缀而不是你在
Etherscan 上查找时习惯的0x前缀。
当尝试将合约地址与普通地址区分开来时,可以通过检查在traces
中是否调用了 CREATE
*** 作码
来做到这一点,例如:
标签是关于地址、标签或元数据的元数据,如果你愿意的话。它以键值对的形式出现。键是标签类型,
值是标签名称。本质上可以使用标签来查找地址并查看它们是什么(参见下面的标签表)。你可以在
此处
获得有关标签是什么以及如何使用它们的更多见解。
如果想获取所查看地址的标签,请使用此 UDF,可以这样做;
5.4 表名和列名的引号PostgresSQL 不能识别没有引号的驼峰式列和表名。所以在 Postgres 中,双引号是为表和列保留的,
而单引号是为值保留的,因此,如果查询表名中包含大写字母的表,Dune 会抛出错误
使用代币金额时,请记住检查erc20.tokens中的小数点。
5.6 生成时间序列在处理时间序列不连续的数据集时,使用以下代码:
6、结束语希望这是一个有用的讨论,并且你已经知道了足够的知识,可以在 Dune 上使用 SQL 进行基本的 Web3 数据探索和分析,它的外观以及如何使用它。在分析 web3 中的经济活动和用户行为时,重要的是要对了解特定智能合约的工作方式产生兴趣,这有助于识别兴趣指标中涉及的关键功能和事件。
Web3 正在经历快速发展和高度变化,每天都有新的想法、产品、社区和实验涌现。它目前涉及生活的方方面面,包括但不限于支付、金融、艺术、音乐、游戏、社区、治理和身份,这让任何人参与其中都令人兴奋。
所以请理解,结合实际使用 Web3 产品、检查 Etherscan 等区块浏览器上的数据耗尽情况以及阅读智能合约源代码,是制定正确的数据分析策略的关键必要条件。
原文链接:Web3数据分析 — 汇智网
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)