【Web3 教程】如何通过简单的 API 完成 zkSync 链的交易信息可视化

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 最近有很多社区朋友在玩可视化数据面板,用到了 Chainbase 的数据 API 和 Flipside 的 LiveQuery,于是我们写了一系列教程,希望能帮大家梳理做仪表盘时的思路,以及获取目标数据的 SQL。这次举例用的是 zkSync 的数据,抛砖引玉,欢迎大家一起玩玩看~

本文作者:Pyours

在之前的文章里,我们已经详细阐述了如何用 Chainbase 的数据 API 加上 Flipside 的 LiveQuery 工具来实现数据的可视化仪表盘。

(前文可以在这里阅读:结合 LiveQuery 和 Chainbase API 实现数据可视化

希望这些内容能对大家理解数据和创建项目起到指导作用。

今天,我们将进一步讨论这个话题,用 zkSync 举例,在区块链的浩渺海洋中寻找目标数据。本文的重点集中在获取交易和地址信息上,并仍然通过 Livequery 实现可视化。

zkSync Era 简介

基于 ZK rollup 技术的 zkSync Era 代表了一个 L2 扩展解决方案,它的出现为以太坊带来了可扩展和经济高效的交易。ZK rollup 使用加密有效性证明来确保 zkSync 上的所有交易都是有效的,其中大部分的计算和数据存储都是在链下进行的,效率和速度都有显著提高。

值得注意的是,虽然采用的是链下的方法,但所有的交易都在以太坊主链上验证,确保了与以太坊等同的安全级别。

与以太坊相比,zkSync 的一个显著特点是其地址推导和内存管理方法。

此外,zkSync 提供了与以太坊完全兼容的智能合约功能,允许开发者在两个平台之间轻松迁移。与此同时,zkSync 还引入了新的功能,如原生的账户抽象化,为用户和开发者提供了额外的便利。

👉 通过 Data-cloud API 可视化数据

image.png

上图是 Chainbase 中的 Data Cloud Studio 界面,在左上角有个下拉框,可以选择切换到 zkSync 数据库,这样可以进行更深入的探究。

不过我们今天的主要数据来源是zksync.transactions表,并且我将从两个角度来进行简单分析,即地址活跃度分析和燃料费分析。

如果你对此有兴趣,可以尝试运行一下这个 SQL 查询:

WITH address as(
    SELECT
        from_address AS exchange_address,
        date_trunc("day", block_timestamp) as date,
        COUNT(*) AS fa
    FROM
        zksync.transactions
    GROUP BY
        date,exchange_address
    UNION ALL
    SELECT
        to_address AS exchange_address,
        date_trunc("day", block_timestamp) as date,
        COUNT(*) AS fa
    FROM
        zksync.transactions
    GROUP BY
        date,exchange_address)
SELECT
    distinct exchange_address,
    SUM(fa) AS total_transactions,
    date
FROM
    address
GROUP BY
    date, exchange_address
ORDER BY
    total_transactions desc

notes:

  1. 这段SQL片段从zksync.transactions表中提取数据,重点关注交易的发送者和接收者
  2. 它通过日期截断了交易时间戳,仅考虑交易发生的日期
  3. 通过组合发送和接收的交易,我们得到了每个地址在每个日期上的总交易总数
  4. 最后,结果按总交易量降序排序,显示最活跃的地址

👉 使用 Livequery 进行数据分析

接下来,我将使用 Livequery ,抛砖引玉,从两个不同的角度对 zkSync 数据进行更深入的分析。这个分析还有很多未尽之处,欢迎大家和我一起共同探索:

1/ 分析地址活跃度

  • 通过查看地址的转账次数,以了解在过去一段时间内发生了多少交易。通常情况下,频繁进行交易的地址被认为更活跃
  • 查看特定地址最近一周内转账次数的变化

image.png

注意:调整日期和地址可以帮助您实现所需的结果。

示例 SQL :

with data as (
 SELECT
    value:exchange_address as exchange_address,
    value:total_transactions :: int as total_transactions,
    value:date as date
  FROM
    (
        SELECT
        chainbase_utils.post(
          '/v1/dw/query',
          { 'query': '
    WITH address as(
    SELECT
        from_address AS exchange_address,
        date_trunc("day", block_timestamp) as date,
        COUNT(*) AS fa
    FROM
        zksync.transactions
    GROUP BY
        date,exchange_address
    UNION ALL
    SELECT
        to_address AS exchange_address,
        date_trunc("day", block_timestamp) as date,
        COUNT(*) AS fa
    FROM
        zksync.transactions
    GROUP BY
        date,exchange_address)
SELECT
    distinct exchange_address,
    SUM(fa) AS total_transactions,
    date
FROM
    address
GROUP BY
    date, exchange_address
ORDER BY
    total_transactions desc
' }
        ) :: variant

 AS resp
    ) AS subquery,
    LATERAL FLATTEN(input => resp:data:data:result)
)

SELECT
    exchange_address,
    total_transactions,
    left(date,10) as date -- or DATE(date) or CAST(date AS DATE)
FROM
    data
WHERE left(date,10) = '{
   
   {YYYY-MM-DD}}' -- filter date

2/ 分析燃料费 (gas fee)

  • 按累积燃料使用量对地址排名 ➡️ 这使我们能够确定哪些地址在网络内表现更活跃,或者消耗更多资源
  • 燃料费排名 ➡️ 通过这种方式,我们可以确定哪些交易因其复杂性或紧急性需要更高的费用

image.png

示例SQL:

with data as (
 SELECT
    value:from_address as from_address,
    value:gas_used :: int as gas_used,
    value:gas_price :: int as gas_price,
    value:date as date
  FROM
    (
        SELECT
        chainbase_utils.post(
          '/v1/dw/query',
          { 'query': '
    SELECT
        from_address,
        date_trunc("day", block_timestamp) as date,
        gas_used,
        gas_price
    FROM
        zksync.transactions
' }
        ) :: variant AS resp
    ) AS subquery,
    LATERAL FLATTEN(input => resp:data:data:result)
)
SELECT
from_address,
sum(gas_used*gas_price/10e7) as total_gas_fee
FROM
    data
GROUP BY from_address
ORDER BY total_gas_fee desc
limit 10

好啦!按照步骤和 SQL 来运行,就是两个非常简单运用 zkSync 数据的案例。你应该可以找到更多的运用方法,都可以点击这里直接开始

image.png

后言

这段时间,我们好些社区用户开始自发地写数据面板,做链上数据的整合分析,而且常常会用到 LiveQuery 来做面板的展示,结合得很好。这也是我们写了一系列 LiveQuery x Chainbase API 教程的原因。

在深入研究的过程中,我发现数据的可视化面板让没有太多技术背景的人,也能够轻易创建、理解和分析链上数据,这对于我们数据提供方来说也挺有价值的。

这篇文章内容不长,涉及到的 SQL 和功能实现也比较单纯,希望大家都能够尝试一下,看能不能产生更多的火花,发掘更多的玩法~

感谢大家看完!有任何问题,可以在 discord 里联系我。

关于Chainbase

Chainbase是一个用于访问、组织和分析大规模链上数据的开放Web3数据基础设施。 它通过将丰富的数据集与开放计算技术结合在一个数据平台中,帮助人们更好地利用链上数据。Chainbase的最终目标是提高加密货币领域的数据自由。

原文链接:Diving Deep into zkSync Data: Unveiling Transaction Insights with Chainbase API

目录
相关文章
|
5天前
|
开发框架 监控 .NET
Visual Basic的Web服务和REST API开发指南
【4月更文挑战第27天】本文探讨了使用Visual Basic(VB.NET)构建Web服务和RESTful API的方法。首先介绍了Web服务的基础和REST API的概念,然后阐述了.NET Framework与.NET Core/.NET 5+对VB.NET的支持,以及ASP.NET Core在Web开发中的作用。接着,详细讲解了创建RESTful API的步骤,包括控制器与路由设置、模型绑定与验证,以及返回响应。此外,还讨论了安全措施、测试方法、部署选项和监控策略。最后强调,VB.NET开发者可以通过ASP.NET Core涉足现代Web服务开发,拓宽技术领域。
|
2月前
|
Linux API 数据安全/隐私保护
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
29 0
|
2天前
|
弹性计算 JSON Shell
基于Web API的自动化信息收集和整理
【4月更文挑战第30天】
9 0
|
6天前
|
缓存 前端开发 API
toapi,一个强大的 Python Web API库!
toapi,一个强大的 Python Web API库!
20 5
|
14天前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
在Python中实现Web服务(RESTful API)涉及选择框架(如Flask、Django、FastAPI),定义路由及处理函数(对应HTTP请求方法),处理请求,构建响应和启动服务器。以下是一个使用Flask的简单示例:定义用户列表,通过`@app.route`装饰器设置GET和POST请求处理函数,返回JSON响应,并用`app.run()`启动服务器。实际API会包含更复杂的逻辑和错误处理。
14 1
|
16天前
|
XML JSON API
1688商品详情API接口获取商品信息
在电商领域,商品详情页面是用户了解商品详细信息的重要途径。为了方便开发者快速获取商品信息,阿里巴巴旗下的1688平台提供了商品详情API接口。本文将介绍如何使用1688商品详情API接口获取商品信息,并通过代码示例进行详细说明。
|
2月前
|
API
2024常用Web支付开发讲解教程
本教程为web支付开发,讲解了最常用的两钟支付:支付宝支付和微信支付,服务器配置和API对接,学完本课程可以学会微信支付、和支付宝支付开发。
18 2
2024常用Web支付开发讲解教程
|
2月前
|
安全 测试技术 网络安全
Web安全基础入门+信息收集篇
学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法及实现安全测试,能独立理解WEB架构框架,树立渗透测试开展思路!
19 0
Web安全基础入门+信息收集篇
|
2月前
|
架构师 前端开发
web全栈架构师第16期教程
互联网时代已进入后半场,行业环境发生了显著变化。互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战。课程涉及了现下前端实际开发时所需要的各块内容,并深度对标 阿里 P6+级别所具备的知识储备及开发技能,奠定源码阅读基础和全栈开发能力。
19 3
web全栈架构师第16期教程
|
2月前
|
安全 API 数据安全/隐私保护
email api接口配置教程步骤详解
Email API是用于程序化访问邮件服务的工具,让开发者能集成邮件功能到应用中。配置Email API包括选择供应商(如SendGrid、Mailgun、AokSend),注册获取API密钥,配置API参数,及测试邮件发送。使用Email API能提升邮件发送的可靠性和效率,便于邮件管理及营销活动。AokSend支持大量验证码发送,适合高效邮件运营。