如何通过简单的 API 完成 zkSync 链的交易信息可视化

  • Chainbase
  • 更新于 2023-10-12 18:05
  • 阅读 2076

这段时间,我们好些社区用户开始自发地写数据面板,做链上数据的整合分析,而且常常会用到 LiveQuery 来做面板的展示。于是我们写了这系列的教程,希望能帮大家简单地可视化数据。

本文作者: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 可视化数据

1-Diving Deep into zkSync Data.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/ 分析地址活跃度

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

2-Diving Deep into zkSync Data.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)

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

3-Diving Deep into zkSync Data.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 数据的案例。你应该可以找到更多的运用方法,都可以点击这里直接开始

4-Diving Deep into zkSync Data.png

后言

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

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

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

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

关于Chainbase

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

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

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Chainbase
Chainbase
0x7C46...d02D
Chainbase 是领先的 Web3 数据基础设施,帮助开发者轻松访问加密数据,并支持对数据的大规模索引、转换和使用。