如何使用SQL分析Web3中的数据​

22-05-22 13:06
阅读本文需 20 分钟
总结 AI 总结
看总结 收起
原文标题:《Analysing Data In Web3 with SQL》  
原文作者:GOKE ADEKUNLE
原文编译:老雅痞
本文来自微信公众号:老雅痞


你想知道如何在 Web3 中成为一名高效的数据分析师吗?还是,你只想构建一个 Web3 分析仪来对感兴趣的 Web3 数据感进行分析?不管怎样,欢迎你阅读本文。


作为一个数据人,Web3 数据中最具挑战性的部分是理解数据本身。根据我的经验,有一件事让我觉得很容易,那就是把每个人都看作是一个巨大的数据仓库和以太坊区块链上面的协议,作为仓库中包含多个表和视图的各种模式。PS:这也适用于其他区块链。


对于这篇文章,我将努力使事情变得简洁,并使用这些主题突出它们:


·Web3 数据流和景观。了解 Web3,去中心化的数据存储。 


·用于解码交易数据的工具:与 Web3 数据栈一起的工具概述,以及如何利用它们


让我们开始吧!


Web3 的数据流和景观


Web3 的关键在于变得更加独立和自主。这是通过区块链和分布式对等网络而不是服务器-客户端关系来实现的。这使得数据流和格式与我们在 Web2 中习惯的不同。通过研究,我发现了像 Dune Analytics 和 Flipside Crypto 这样的数据映射器,它们具有解码的区块链数据和内置的可视化工具,供对 Web3 感兴趣的数据科学家使用和构建。


图片来源


上面的图片显示了从不同的区块链模式中提取数据进行分析的不同方式,在此以以太坊为例。


如果你曾经在以太坊(或任何启用智能合约的区块链)上进行过交易,那么你可能已经在区块资源管理器上查找过它,并看到了这种信息:


通过 Etherscan 区块浏览器看到的以太坊区块链上的交易示例


学会阅读交易细节将是所有以太坊数据分析和知识的基础,但了解 Token 和交易数据的流向也很重要。


解读 Web3 数据


我可能偏向于使用以太坊区块链来解释解密区块链数据,但根据经验,当你了解数据在智能合约上的存储和管理方式时,以太坊更容易理解。既然如此,重要的是要注意,我将谈论的许多概念将广泛适用于所有与 EVM 兼容的链和智能合约,例如 Polygon、Fantom Opera、BSC、Arbitrum One 等。


一个智能合约交易相当于智能合约驱动的 web3 应用程序中的后台 API 调用。智能合约上的活动细节及其产生的应用状态变化被记录在称为交易、调用和日志的数据元素中。交易数据元素代表由用户(或更准确的说是 EOA)发起的功能调用,调用数据元素代表智能合约在交易中发起的额外功能调用,而日志数据元素代表交易执行期间发生的事件。


为了了解以太坊区块链上的交易数据,我们可以尝试使用 Etherscan(作为交易实例的基础,我使用了一个 Mirror Crowdfund 合约)。这就像检查你的汽车仪表盘,以寻找修复汽车问题的指针,但作为一个数据科学家,我们必须打开汽车的引擎盖,了解幕后发生了什么。通常情况下,有 3 种不同类型的交易


·以基础货币的形式从一个用户(EOA)转移到另一个用户,例如,张三在以太坊网络上给李四发送了 3 个 ETH 


·由一个 EOA 创建一个智能合约,例如,张三将代码提交给区块链上的一个地址,创建一个智能合约,一旦一定数量的资源被转移到卖方的账户(或钱包),智能合约就会转移 NFT 的所有权。 


·EOA 对智能合约的调用,例如,张三调用李四的智能合约,用 999ETH 交换 NFT。


当用户在区块链上提出请求时,在引擎盖下发生的事情是:


·与用户相关的 EOA 发起一项交易,指定目标智能合约地址、目标功能、该功能的参数、交易付款(如果有)以及它愿意支付的 gas 费用(如果有)。 


·该交易被广播到网络上,并由愿意执行目标智能合约中指定功能的矿工拾取。 


·如果执行成功,智能合约会发出事件,标志着某些里程碑的完成。由此产生的事件数据结构被称为「日志」。 


·目标智能合约可以向其他智能合约发起内部交易(额外调用)。这些内部事务创建的数据结构被称为 "轨迹",也可能在各自的执行过程中发出额外的日志事件。


Token 传输的数据生命周期


数据是如何结构化的


现在,你已经了解了发生在幕后的活动和相应的数据元素。现在是时候逐项列出构成 web3 景观的各种元素了。交易和跟踪数据结构包含了智能合约函数调用的细节,按照这个顺序:


·在区块链上,每笔交易都有一个独特的哈希值`交易哈希值`,其中有各种交易细节。例如,我们可以在这里查询这个交易哈希值 0xbe3b109b857e8897cbe3c2a261d8072546ae693662422a1b93fe1a3a990dfded 


·`From`是交易的发送方,`To`是交易的接收方,也可以是一个合约地址。在这个例子中,它是从`0x83ebd57bf4f22cba9c4a624a69c910d7c8619ee2`转移到 CROWDFUND_EDITIONS Token 的。


·`Value`是被转移的 ETH 值。有时 ETH 值可以是 0,在这种情况下,它是。


·`交易费用=交易使用的气体*气体价格`,你可以在这里找到更多与以太坊气体有关的细节。(https://ethereum.org/en/developers/docs/gas/#post-london) 


·输入数据包含关于交易的额外信息。在这种情况下,它是一个转移函数,细节包括交易的地址和价值。



·数据本身是字节码,在 Dune 上有数据类型`bytea`。 


·前 8 个字符`0xa22cb465`是函数签名的`MethodId`,它不总是唯一的(但应该是)。 


·之后的每 64 个字符是一个不同的输入变量。这里我们有两个,分别对应于`to address`和`value`。


基于以上信息,我们可以使用以下查询来拉取 Dune 上的数据(https://dune.xyz/queries/601249)——



访问和处理 Web3 数据的工具


现在我们已经很好地理解了 Web3 数据的元素,它看起来像什么,并且已经在区块链上查询了我们的第一个交易数据,你可能想知道如何快速熟悉一个协议及其数据。有一系列很好的工具可以帮助我们做到这一点。


Block Explorers


如前所述,使用 Block Explorers 是深入了解区块链上的交易的一个好方法。Block Explorers 是在线浏览器,可以显示区块链网络上曾经发生过的所有交易的细节。以上面的截图为例,重要的是要知道所有主要的区块链都有探索器--突出的例子包括 Etherscan、Polygonscan、BSCScan、Solana beach 等。


尽管区块链探索者对于询问区块链账本内的单个记录很有帮助,但他们对于回答需要聚合或转换数据的问题并不擅长。例如,如果你想知道过去 3 个月有多少 NFT 通过 Opensea 交易所售出,或者如果有人想知道交易从 "Coinbase "流向 "Axie Infinity "的频率,只用区块探索器就很难回答。为此,人们将需要直接访问数据。这在我的上一篇文章中已经介绍过了。


分析数据


Dune analytics 是访问和分析区块链数据的一个伟大资源。在写这篇文章时,它有 Ethereum、Solana、Xdai、Polygon、Optimism 和 BSC 的原始和解码数据。它提供了一个 PostgreSQL 界面来查询数据集,以及一个简单的点选界面来在查询结果的基础上创建简单的仪表盘。Dune 上的用户社区也相当活跃,并产生了一个广泛的查询和仪表盘的例子库,供人们学习。下面是在 Dune 上创建的几个分析实例


·Solana NFT 交易概览(https://dune.xyz/sealaunch/Solana-Transactions) 


·OpenSea 市场分析(https://dune.xyz/hildobby/OpenSea-Market-Analytics) 


·Eth2 号流动性质押(https://dune.xyz/eliasimos/Eth2-Liquid-Staking)


如果你对 SQL 完全陌生,我会推荐这些有用的 Dune 分析的提示和指南:


内联 Ethereum 地址。当在 Dune 中工作时,Ethereum 地址被存储为 PostgresSQL 字节数,当你在 Etherscan 上查询时,它被编码为`x`前缀,而不是通常的`0x`。 


识别交易中的合约地址。当试图区分合约地址和普通地址时,你可以通过检查`CREATE`操作码是否在`traces`中被调用来实现,比如说



3. 充分利用 Dune 上的标签。标签是一块关于地址的元数据,如果你愿意,是一个标签或元数据。它以键-值对的形式出现。键是标签类型,而值是标签名称。从本质上讲,你可以使用标签来查找地址,看看它们是什么(见下面的标签表)。你可以在这里获得更多关于标签是什么以及如何使用它们的见解


图片来源


如果你想获取所查看地址的标签,请使用此 UDF,你可以这样做;



4. 表和列名的引号。PostgresSQL 不能识别没有引号的骆驼字母的列和表名。因此,在 Postgres 中,双引号是为表和列保留的,而单引号是为值保留的,因此,如果你查询表名中的大写字母,Dune 会抛出一个错误。



5. 去除小数。在处理 Token 金额时,记得检查`erc20. "tokens"`中的小数。



6. 生成时间序列。当处理一个具有不连续时间序列的数据集时,使用



希望这是一篇有用的讨论文章,你已经知道了足够的知识来做基本的 Web3 数据探索和分析,使用 Dune 上的 SQL,它看起来像什么,以及如何与它合作。在分析 web3 中的经济活动和用户行为时,重要的是要培养对特定智能合约工作方式的理解兴趣,这就会继续帮助你确定感兴趣的指标中涉及的关键功能和事件。


Web3 正在经历快速发展和高变异,每天都有新的想法、产品、社区和实验涌现。它目前触及生活中的方方面面,包括但不限于支付、金融、艺术、音乐、游戏、社区、治理和身份,这使得任何人都能参与其中,令人兴奋。


所以请理解,结合实际使用 Web3 产品、检查 Etherscan 等区块浏览器上的数据耗尽情况以及阅读智能合约源代码,是制定正确的数据分析策略的关键必要条件。 


原文链接


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交